@weeehaoooz/talos-ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +85 -0
  3. package/fesm2022/weeehaoooz-talos-ui-button-button-group.mjs +237 -0
  4. package/fesm2022/weeehaoooz-talos-ui-button-button-group.mjs.map +1 -0
  5. package/fesm2022/weeehaoooz-talos-ui-button-button.mjs +93 -0
  6. package/fesm2022/weeehaoooz-talos-ui-button-button.mjs.map +1 -0
  7. package/fesm2022/weeehaoooz-talos-ui-core.mjs +438 -0
  8. package/fesm2022/weeehaoooz-talos-ui-core.mjs.map +1 -0
  9. package/fesm2022/weeehaoooz-talos-ui-data-display-badge.mjs +233 -0
  10. package/fesm2022/weeehaoooz-talos-ui-data-display-badge.mjs.map +1 -0
  11. package/fesm2022/weeehaoooz-talos-ui-data-display-status-tag.mjs +361 -0
  12. package/fesm2022/weeehaoooz-talos-ui-data-display-status-tag.mjs.map +1 -0
  13. package/fesm2022/weeehaoooz-talos-ui-data-display-timeline.mjs +312 -0
  14. package/fesm2022/weeehaoooz-talos-ui-data-display-timeline.mjs.map +1 -0
  15. package/fesm2022/weeehaoooz-talos-ui-data-display-trend-indicator.mjs +235 -0
  16. package/fesm2022/weeehaoooz-talos-ui-data-display-trend-indicator.mjs.map +1 -0
  17. package/fesm2022/weeehaoooz-talos-ui-data-viz-category-bar.mjs +462 -0
  18. package/fesm2022/weeehaoooz-talos-ui-data-viz-category-bar.mjs.map +1 -0
  19. package/fesm2022/weeehaoooz-talos-ui-data-viz-heatmap.mjs +805 -0
  20. package/fesm2022/weeehaoooz-talos-ui-data-viz-heatmap.mjs.map +1 -0
  21. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-donut.mjs +267 -0
  22. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-donut.mjs.map +1 -0
  23. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-gauge.mjs +351 -0
  24. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-gauge.mjs.map +1 -0
  25. package/fesm2022/weeehaoooz-talos-ui-data-viz-sparkline.mjs +566 -0
  26. package/fesm2022/weeehaoooz-talos-ui-data-viz-sparkline.mjs.map +1 -0
  27. package/fesm2022/weeehaoooz-talos-ui-feedback-alert.mjs +534 -0
  28. package/fesm2022/weeehaoooz-talos-ui-feedback-alert.mjs.map +1 -0
  29. package/fesm2022/weeehaoooz-talos-ui-feedback-dialog.mjs +446 -0
  30. package/fesm2022/weeehaoooz-talos-ui-feedback-dialog.mjs.map +1 -0
  31. package/fesm2022/weeehaoooz-talos-ui-feedback-snackbar.mjs +376 -0
  32. package/fesm2022/weeehaoooz-talos-ui-feedback-snackbar.mjs.map +1 -0
  33. package/fesm2022/weeehaoooz-talos-ui-feedback-tooltip.mjs +147 -0
  34. package/fesm2022/weeehaoooz-talos-ui-feedback-tooltip.mjs.map +1 -0
  35. package/fesm2022/weeehaoooz-talos-ui-form-affix.mjs +242 -0
  36. package/fesm2022/weeehaoooz-talos-ui-form-affix.mjs.map +1 -0
  37. package/fesm2022/weeehaoooz-talos-ui-form-autocomplete.mjs +514 -0
  38. package/fesm2022/weeehaoooz-talos-ui-form-autocomplete.mjs.map +1 -0
  39. package/fesm2022/weeehaoooz-talos-ui-form-checkbox.mjs +548 -0
  40. package/fesm2022/weeehaoooz-talos-ui-form-checkbox.mjs.map +1 -0
  41. package/fesm2022/weeehaoooz-talos-ui-form-chips.mjs +692 -0
  42. package/fesm2022/weeehaoooz-talos-ui-form-chips.mjs.map +1 -0
  43. package/fesm2022/weeehaoooz-talos-ui-form-color-picker.mjs +761 -0
  44. package/fesm2022/weeehaoooz-talos-ui-form-color-picker.mjs.map +1 -0
  45. package/fesm2022/weeehaoooz-talos-ui-form-date-picker.mjs +896 -0
  46. package/fesm2022/weeehaoooz-talos-ui-form-date-picker.mjs.map +1 -0
  47. package/fesm2022/weeehaoooz-talos-ui-form-date-range-picker.mjs +872 -0
  48. package/fesm2022/weeehaoooz-talos-ui-form-date-range-picker.mjs.map +1 -0
  49. package/fesm2022/weeehaoooz-talos-ui-form-date-time-picker.mjs +119 -0
  50. package/fesm2022/weeehaoooz-talos-ui-form-date-time-picker.mjs.map +1 -0
  51. package/fesm2022/weeehaoooz-talos-ui-form-date-time-range-picker.mjs +135 -0
  52. package/fesm2022/weeehaoooz-talos-ui-form-date-time-range-picker.mjs.map +1 -0
  53. package/fesm2022/weeehaoooz-talos-ui-form-drop-zone.mjs +666 -0
  54. package/fesm2022/weeehaoooz-talos-ui-form-drop-zone.mjs.map +1 -0
  55. package/fesm2022/weeehaoooz-talos-ui-form-form-field.mjs +147 -0
  56. package/fesm2022/weeehaoooz-talos-ui-form-form-field.mjs.map +1 -0
  57. package/fesm2022/weeehaoooz-talos-ui-form-input.mjs +33 -0
  58. package/fesm2022/weeehaoooz-talos-ui-form-input.mjs.map +1 -0
  59. package/fesm2022/weeehaoooz-talos-ui-form-otp.mjs +455 -0
  60. package/fesm2022/weeehaoooz-talos-ui-form-otp.mjs.map +1 -0
  61. package/fesm2022/weeehaoooz-talos-ui-form-password-input.mjs +379 -0
  62. package/fesm2022/weeehaoooz-talos-ui-form-password-input.mjs.map +1 -0
  63. package/fesm2022/weeehaoooz-talos-ui-form-radio.mjs +297 -0
  64. package/fesm2022/weeehaoooz-talos-ui-form-radio.mjs.map +1 -0
  65. package/fesm2022/weeehaoooz-talos-ui-form-range-input.mjs +661 -0
  66. package/fesm2022/weeehaoooz-talos-ui-form-range-input.mjs.map +1 -0
  67. package/fesm2022/weeehaoooz-talos-ui-form-rating.mjs +346 -0
  68. package/fesm2022/weeehaoooz-talos-ui-form-rating.mjs.map +1 -0
  69. package/fesm2022/weeehaoooz-talos-ui-form-select-input.mjs +896 -0
  70. package/fesm2022/weeehaoooz-talos-ui-form-select-input.mjs.map +1 -0
  71. package/fesm2022/weeehaoooz-talos-ui-form-slide-toggle.mjs +252 -0
  72. package/fesm2022/weeehaoooz-talos-ui-form-slide-toggle.mjs.map +1 -0
  73. package/fesm2022/weeehaoooz-talos-ui-form-transfer-list.mjs +916 -0
  74. package/fesm2022/weeehaoooz-talos-ui-form-transfer-list.mjs.map +1 -0
  75. package/fesm2022/weeehaoooz-talos-ui-layout.mjs +851 -0
  76. package/fesm2022/weeehaoooz-talos-ui-layout.mjs.map +1 -0
  77. package/fesm2022/weeehaoooz-talos-ui-nav.mjs +897 -0
  78. package/fesm2022/weeehaoooz-talos-ui-nav.mjs.map +1 -0
  79. package/fesm2022/weeehaoooz-talos-ui.mjs +17058 -0
  80. package/fesm2022/weeehaoooz-talos-ui.mjs.map +1 -0
  81. package/package.json +203 -0
  82. package/schematics/collection.json +10 -0
  83. package/schematics/ng-add/index.d.ts +3 -0
  84. package/schematics/ng-add/index.js +99 -0
  85. package/schematics/ng-add/schema.d.ts +10 -0
  86. package/schematics/ng-add/schema.js +2 -0
  87. package/schematics/ng-add/schema.json +52 -0
  88. package/styles/_alert.scss +56 -0
  89. package/styles/_badge.scss +279 -0
  90. package/styles/_button-group.scss +470 -0
  91. package/styles/_buttons.scss +442 -0
  92. package/styles/_card.scss +18 -0
  93. package/styles/_dialog.scss +116 -0
  94. package/styles/_drop-zone.scss +19 -0
  95. package/styles/_form-controls.scss +660 -0
  96. package/styles/_slide-toggle.scss +171 -0
  97. package/styles/_status-tag.scss +108 -0
  98. package/styles/_timeline.scss +19 -0
  99. package/styles/_tooltip.scss +32 -0
  100. package/styles/_typography.scss +279 -0
  101. package/styles/_variables.scss +590 -0
  102. package/styles/index.scss +15 -0
  103. package/types/weeehaoooz-talos-ui-button-button-group.d.ts +59 -0
  104. package/types/weeehaoooz-talos-ui-button-button-group.d.ts.map +1 -0
  105. package/types/weeehaoooz-talos-ui-button-button.d.ts +38 -0
  106. package/types/weeehaoooz-talos-ui-button-button.d.ts.map +1 -0
  107. package/types/weeehaoooz-talos-ui-core.d.ts +95 -0
  108. package/types/weeehaoooz-talos-ui-core.d.ts.map +1 -0
  109. package/types/weeehaoooz-talos-ui-data-display-badge.d.ts +119 -0
  110. package/types/weeehaoooz-talos-ui-data-display-badge.d.ts.map +1 -0
  111. package/types/weeehaoooz-talos-ui-data-display-status-tag.d.ts +135 -0
  112. package/types/weeehaoooz-talos-ui-data-display-status-tag.d.ts.map +1 -0
  113. package/types/weeehaoooz-talos-ui-data-display-timeline.d.ts +144 -0
  114. package/types/weeehaoooz-talos-ui-data-display-timeline.d.ts.map +1 -0
  115. package/types/weeehaoooz-talos-ui-data-display-trend-indicator.d.ts +83 -0
  116. package/types/weeehaoooz-talos-ui-data-display-trend-indicator.d.ts.map +1 -0
  117. package/types/weeehaoooz-talos-ui-data-viz-category-bar.d.ts +255 -0
  118. package/types/weeehaoooz-talos-ui-data-viz-category-bar.d.ts.map +1 -0
  119. package/types/weeehaoooz-talos-ui-data-viz-heatmap.d.ts +204 -0
  120. package/types/weeehaoooz-talos-ui-data-viz-heatmap.d.ts.map +1 -0
  121. package/types/weeehaoooz-talos-ui-data-viz-mini-donut.d.ts +101 -0
  122. package/types/weeehaoooz-talos-ui-data-viz-mini-donut.d.ts.map +1 -0
  123. package/types/weeehaoooz-talos-ui-data-viz-mini-gauge.d.ts +138 -0
  124. package/types/weeehaoooz-talos-ui-data-viz-mini-gauge.d.ts.map +1 -0
  125. package/types/weeehaoooz-talos-ui-data-viz-sparkline.d.ts +161 -0
  126. package/types/weeehaoooz-talos-ui-data-viz-sparkline.d.ts.map +1 -0
  127. package/types/weeehaoooz-talos-ui-feedback-alert.d.ts +212 -0
  128. package/types/weeehaoooz-talos-ui-feedback-alert.d.ts.map +1 -0
  129. package/types/weeehaoooz-talos-ui-feedback-dialog.d.ts +259 -0
  130. package/types/weeehaoooz-talos-ui-feedback-dialog.d.ts.map +1 -0
  131. package/types/weeehaoooz-talos-ui-feedback-snackbar.d.ts +147 -0
  132. package/types/weeehaoooz-talos-ui-feedback-snackbar.d.ts.map +1 -0
  133. package/types/weeehaoooz-talos-ui-feedback-tooltip.d.ts +32 -0
  134. package/types/weeehaoooz-talos-ui-feedback-tooltip.d.ts.map +1 -0
  135. package/types/weeehaoooz-talos-ui-form-affix.d.ts +88 -0
  136. package/types/weeehaoooz-talos-ui-form-affix.d.ts.map +1 -0
  137. package/types/weeehaoooz-talos-ui-form-autocomplete.d.ts +113 -0
  138. package/types/weeehaoooz-talos-ui-form-autocomplete.d.ts.map +1 -0
  139. package/types/weeehaoooz-talos-ui-form-checkbox.d.ts +165 -0
  140. package/types/weeehaoooz-talos-ui-form-checkbox.d.ts.map +1 -0
  141. package/types/weeehaoooz-talos-ui-form-chips.d.ts +152 -0
  142. package/types/weeehaoooz-talos-ui-form-chips.d.ts.map +1 -0
  143. package/types/weeehaoooz-talos-ui-form-color-picker.d.ts +144 -0
  144. package/types/weeehaoooz-talos-ui-form-color-picker.d.ts.map +1 -0
  145. package/types/weeehaoooz-talos-ui-form-date-picker.d.ts +138 -0
  146. package/types/weeehaoooz-talos-ui-form-date-picker.d.ts.map +1 -0
  147. package/types/weeehaoooz-talos-ui-form-date-range-picker.d.ts +148 -0
  148. package/types/weeehaoooz-talos-ui-form-date-range-picker.d.ts.map +1 -0
  149. package/types/weeehaoooz-talos-ui-form-date-time-picker.d.ts +44 -0
  150. package/types/weeehaoooz-talos-ui-form-date-time-picker.d.ts.map +1 -0
  151. package/types/weeehaoooz-talos-ui-form-date-time-range-picker.d.ts +48 -0
  152. package/types/weeehaoooz-talos-ui-form-date-time-range-picker.d.ts.map +1 -0
  153. package/types/weeehaoooz-talos-ui-form-drop-zone.d.ts +227 -0
  154. package/types/weeehaoooz-talos-ui-form-drop-zone.d.ts.map +1 -0
  155. package/types/weeehaoooz-talos-ui-form-form-field.d.ts +42 -0
  156. package/types/weeehaoooz-talos-ui-form-form-field.d.ts.map +1 -0
  157. package/types/weeehaoooz-talos-ui-form-input.d.ts +15 -0
  158. package/types/weeehaoooz-talos-ui-form-input.d.ts.map +1 -0
  159. package/types/weeehaoooz-talos-ui-form-otp.d.ts +111 -0
  160. package/types/weeehaoooz-talos-ui-form-otp.d.ts.map +1 -0
  161. package/types/weeehaoooz-talos-ui-form-password-input.d.ts +145 -0
  162. package/types/weeehaoooz-talos-ui-form-password-input.d.ts.map +1 -0
  163. package/types/weeehaoooz-talos-ui-form-radio.d.ts +84 -0
  164. package/types/weeehaoooz-talos-ui-form-radio.d.ts.map +1 -0
  165. package/types/weeehaoooz-talos-ui-form-range-input.d.ts +181 -0
  166. package/types/weeehaoooz-talos-ui-form-range-input.d.ts.map +1 -0
  167. package/types/weeehaoooz-talos-ui-form-rating.d.ts +110 -0
  168. package/types/weeehaoooz-talos-ui-form-rating.d.ts.map +1 -0
  169. package/types/weeehaoooz-talos-ui-form-select-input.d.ts +195 -0
  170. package/types/weeehaoooz-talos-ui-form-select-input.d.ts.map +1 -0
  171. package/types/weeehaoooz-talos-ui-form-slide-toggle.d.ts +79 -0
  172. package/types/weeehaoooz-talos-ui-form-slide-toggle.d.ts.map +1 -0
  173. package/types/weeehaoooz-talos-ui-form-transfer-list.d.ts +192 -0
  174. package/types/weeehaoooz-talos-ui-form-transfer-list.d.ts.map +1 -0
  175. package/types/weeehaoooz-talos-ui-layout.d.ts +286 -0
  176. package/types/weeehaoooz-talos-ui-layout.d.ts.map +1 -0
  177. package/types/weeehaoooz-talos-ui-nav.d.ts +384 -0
  178. package/types/weeehaoooz-talos-ui-nav.d.ts.map +1 -0
  179. package/types/weeehaoooz-talos-ui.d.ts +5050 -0
  180. package/types/weeehaoooz-talos-ui.d.ts.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weeehaoooz-talos-ui.mjs","sources":["../../../projects/talos-ui/layout/layout.service.ts","../../../projects/talos-ui/layout/side-panel/side-panel.component.ts","../../../projects/talos-ui/layout/side-panel/side-panel.component.html","../../../projects/talos-ui/layout/main-layout/main-layout.component.ts","../../../projects/talos-ui/layout/main-layout/main-layout.component.html","../../../projects/talos-ui/layout/card/card.directives.ts","../../../projects/talos-ui/layout/card/card.component.ts","../../../projects/talos-ui/layout/card/card.component.html","../../../projects/talos-ui/layout/card/card-header.component.ts","../../../projects/talos-ui/layout/card/card-header.component.html","../../../projects/talos-ui/layout/card/card-body.component.ts","../../../projects/talos-ui/layout/card/card-body.component.html","../../../projects/talos-ui/layout/card/card-footer.component.ts","../../../projects/talos-ui/layout/card/card-footer.component.html","../../../projects/talos-ui/layout/card/card.module.ts","../../../projects/talos-ui/layout/expansion-panel/expansion-panel.directives.ts","../../../projects/talos-ui/layout/expansion-panel/expansion-panel-body.component.ts","../../../projects/talos-ui/layout/expansion-panel/expansion-panel-body.component.html","../../../projects/talos-ui/layout/expansion-panel/expansion-panel-group.component.ts","../../../projects/talos-ui/layout/expansion-panel/expansion-panel-group.component.html","../../../projects/talos-ui/layout/expansion-panel/expansion-panel.component.ts","../../../projects/talos-ui/layout/expansion-panel/expansion-panel.component.html","../../../projects/talos-ui/layout/expansion-panel/expansion-panel-header.component.ts","../../../projects/talos-ui/layout/expansion-panel/expansion-panel-header.component.html","../../../projects/talos-ui/layout/expansion-panel/expansion-panel.module.ts","../../../projects/talos-ui/nav/nav-group/nav-group.component.ts","../../../projects/talos-ui/nav/nav-item/nav-item.component.ts","../../../projects/talos-ui/nav/theme-toggle/theme-toggle.component.ts","../../../projects/talos-ui/nav/side-nav/side-nav.component.ts","../../../projects/talos-ui/nav/side-nav/side-nav.component.html","../../../projects/talos-ui/nav/top-nav/top-nav.component.ts","../../../projects/talos-ui/nav/top-nav/top-nav.component.html","../../../projects/talos-ui/nav/top-nav/top-nav.module.ts","../../../projects/talos-ui/nav/side-nav.module.ts","../../../projects/talos-ui/form/select-input/option/option.component.ts","../../../projects/talos-ui/form/select-input/option/option.component.html","../../../projects/talos-ui/form/select-input/option-group/option-group.component.ts","../../../projects/talos-ui/form/select-input/option-group/option-group.component.html","../../../projects/talos-ui/form/select-input/select-input/select-input.component.ts","../../../projects/talos-ui/form/select-input/select-input/select-input.component.html","../../../projects/talos-ui/form/select-input/cascade-select/cascade-select.component.ts","../../../projects/talos-ui/form/select-input/cascade-select/cascade-select.component.html","../../../projects/talos-ui/form/select-input/select-input.module.ts","../../../projects/talos-ui/button/button/button.directive.ts","../../../projects/talos-ui/button/button-group/button-group-item/button-group-item.directive.ts","../../../projects/talos-ui/button/button-group/button-group/button-group.component.ts","../../../projects/talos-ui/button/button-group/button-group.module.ts","../../../projects/talos-ui/feedback/tooltip/tooltip.directive.ts","../../../projects/talos-ui/form/input/input.directive.ts","../../../projects/talos-ui/form/affix/affix.directives.ts","../../../projects/talos-ui/form/affix/affix.module.ts","../../../projects/talos-ui/form/password-input/password-input.types.ts","../../../projects/talos-ui/form/password-input/password-input.component.ts","../../../projects/talos-ui/form/password-input/password-input.component.html","../../../projects/talos-ui/form/password-input/password-input.directive.ts","../../../projects/talos-ui/form/password-input/password-input.module.ts","../../../projects/talos-ui/form/form-field/form-field.component.ts","../../../projects/talos-ui/form/form-field/form-field.component.html","../../../projects/talos-ui/form/form-field/form-field.module.ts","../../../projects/talos-ui/form/checkbox/checkbox-group/checkbox-group.directive.ts","../../../projects/talos-ui/form/checkbox/checkbox/checkbox.directive.ts","../../../projects/talos-ui/form/checkbox/checkbox-group/checkbox-group.component.ts","../../../projects/talos-ui/form/checkbox/checkbox-parent/checkbox-parent.directive.ts","../../../projects/talos-ui/form/checkbox/checkbox/checkbox.component.ts","../../../projects/talos-ui/form/checkbox/checkbox.module.ts","../../../projects/talos-ui/core/date-utils.ts","../../../projects/talos-ui/form/date-picker/date-picker.component.ts","../../../projects/talos-ui/form/date-picker/date-picker.component.html","../../../projects/talos-ui/form/date-time-picker/date-time-picker.component.ts","../../../projects/talos-ui/form/date-time-picker/date-time-picker.component.html","../../../projects/talos-ui/form/date-range-picker/date-range-picker.component.ts","../../../projects/talos-ui/form/date-range-picker/date-range-picker.component.html","../../../projects/talos-ui/form/date-time-range-picker/date-time-range-picker.component.ts","../../../projects/talos-ui/form/date-time-range-picker/date-time-range-picker.component.html","../../../projects/talos-ui/form/radio/radio/radio.directive.ts","../../../projects/talos-ui/form/radio/radio/radio.component.ts","../../../projects/talos-ui/form/radio/radio-group/radio-group.component.ts","../../../projects/talos-ui/form/radio/radio.module.ts","../../../projects/talos-ui/feedback/snackbar/snackbar/snackbar.component.ts","../../../projects/talos-ui/feedback/snackbar/snackbar/snackbar.component.html","../../../projects/talos-ui/feedback/snackbar/snackbar-container/snackbar-container.component.ts","../../../projects/talos-ui/feedback/snackbar/snackbar.service.ts","../../../projects/talos-ui/feedback/snackbar/snackbar.module.ts","../../../projects/talos-ui/form/slide-toggle/slide-toggle.directive.ts","../../../projects/talos-ui/form/slide-toggle/slide-toggle.component.ts","../../../projects/talos-ui/form/slide-toggle/slide-toggle.module.ts","../../../projects/talos-ui/form/autocomplete/autocomplete.component.ts","../../../projects/talos-ui/form/autocomplete/autocomplete.component.html","../../../projects/talos-ui/form/autocomplete/autocomplete.module.ts","../../../projects/talos-ui/data-viz/heatmap/heatmap.component.ts","../../../projects/talos-ui/data-viz/heatmap/heatmap.component.html","../../../projects/talos-ui/data-viz/heatmap/heatmap.module.ts","../../../projects/talos-ui/data-viz/category-bar/category-bar.types.ts","../../../projects/talos-ui/data-viz/category-bar/category-bar.component.ts","../../../projects/talos-ui/data-viz/category-bar/category-bar.component.html","../../../projects/talos-ui/data-viz/category-bar/category-bar.module.ts","../../../projects/talos-ui/form/range-input/range-input.directive.ts","../../../projects/talos-ui/form/range-input/range-input.component.ts","../../../projects/talos-ui/form/range-input/range-input.component.html","../../../projects/talos-ui/form/range-input/range-input.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/form/chips/chip/chip.component.ts","../../../projects/talos-ui/form/chips/chip/chip.component.html","../../../projects/talos-ui/form/chips/chips/chips.component.ts","../../../projects/talos-ui/form/chips/chips/chips.component.html","../../../projects/talos-ui/form/chips/chips.module.ts","../../../projects/talos-ui/feedback/dialog/dialog.types.ts","../../../projects/talos-ui/feedback/dialog/dialog-ref.ts","../../../projects/talos-ui/feedback/dialog/dialog.directives.ts","../../../projects/talos-ui/feedback/dialog/dialog-header/dialog-header.component.ts","../../../projects/talos-ui/feedback/dialog/dialog-header/dialog-header.component.html","../../../projects/talos-ui/feedback/dialog/dialog-content/dialog-content.component.ts","../../../projects/talos-ui/feedback/dialog/dialog-content/dialog-content.component.html","../../../projects/talos-ui/feedback/dialog/dialog-footer/dialog-footer.component.ts","../../../projects/talos-ui/feedback/dialog/dialog-footer/dialog-footer.component.html","../../../projects/talos-ui/feedback/dialog/confirm-dialog/confirm-dialog.component.ts","../../../projects/talos-ui/feedback/dialog/confirm-dialog/confirm-dialog.component.html","../../../projects/talos-ui/feedback/dialog/dialog.service.ts","../../../projects/talos-ui/feedback/dialog/dialog.module.ts","../../../projects/talos-ui/form/drop-zone/drop-zone.directive.ts","../../../projects/talos-ui/form/drop-zone/drop-zone.component.ts","../../../projects/talos-ui/form/drop-zone/drop-zone.component.html","../../../projects/talos-ui/form/drop-zone/drop-zone.module.ts","../../../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/feedback/alert/alert.service.ts","../../../projects/talos-ui/feedback/alert/alert.directives.ts","../../../projects/talos-ui/feedback/alert/alert/alert.component.ts","../../../projects/talos-ui/feedback/alert/alert/alert.component.html","../../../projects/talos-ui/feedback/alert/alert-container/alert-container.component.ts","../../../projects/talos-ui/feedback/alert/alert.module.ts","../../../projects/talos-ui/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-viz/sparkline/sparkline.types.ts","../../../projects/talos-ui/data-viz/sparkline/sparkline.component.ts","../../../projects/talos-ui/data-viz/sparkline/sparkline.component.html","../../../projects/talos-ui/data-viz/sparkline/sparkline.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-viz/mini-donut/mini-donut.types.ts","../../../projects/talos-ui/data-viz/mini-donut/mini-donut.component.ts","../../../projects/talos-ui/data-viz/mini-donut/mini-donut.component.html","../../../projects/talos-ui/data-viz/mini-donut/mini-donut.module.ts","../../../projects/talos-ui/data-viz/mini-gauge/mini-gauge.types.ts","../../../projects/talos-ui/data-viz/mini-gauge/mini-gauge.component.ts","../../../projects/talos-ui/data-viz/mini-gauge/mini-gauge.component.html","../../../projects/talos-ui/data-viz/mini-gauge/mini-gauge.module.ts","../../../projects/talos-ui/core/color-utils.ts","../../../projects/talos-ui/form/color-picker/color-picker.types.ts","../../../projects/talos-ui/form/color-picker/color-picker.component.ts","../../../projects/talos-ui/form/color-picker/color-picker.component.html","../../../projects/talos-ui/form/color-picker/color-picker.module.ts","../../../projects/talos-ui/form/otp/otp.component.ts","../../../projects/talos-ui/form/otp/otp.component.html","../../../projects/talos-ui/form/otp/otp.module.ts","../../../projects/talos-ui/form/transfer-list/transfer-list.component.ts","../../../projects/talos-ui/form/transfer-list/transfer-list.component.html","../../../projects/talos-ui/form/transfer-list/transfer-list.module.ts","../../../projects/talos-ui/form/rating/rating.component.ts","../../../projects/talos-ui/form/rating/rating.component.html","../../../projects/talos-ui/form/rating/rating.module.ts","../../../projects/talos-ui/public-api.ts","../../../projects/talos-ui/weeehaoooz-talos-ui.ts"],"sourcesContent":["import { Injectable, Type, computed, signal } from '@angular/core';\n\nexport interface RightPanelOptions {\n /** Title displayed in the panel header shell */\n title?: string;\n /** Custom width for the panel (e.g. '400px', '500px') */\n width?: string;\n /** Panel rendering mode: 'overlay' (floating over content) or 'inline' (pushes content) */\n mode?: 'overlay' | 'inline';\n /** Whether to blur and lock background interactions on main content area */\n blurBackdrop?: boolean;\n /** Whether clicking backdrop closes panel (defaults to true if blurBackdrop is enabled) */\n closeOnBackdropClick?: boolean;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LayoutService {\n // Reactive Signals for layout state\n readonly isLeftNavCollapsed = signal<boolean>(false);\n readonly isRightPanelOpen = signal<boolean>(false);\n readonly isMainContentExpanded = signal<boolean>(false);\n\n // Dynamic component injection signals\n readonly rightPanelComponent = signal<Type<unknown> | null>(null);\n readonly rightPanelInputs = signal<Record<string, unknown>>({});\n readonly rightPanelOptions = signal<RightPanelOptions>({});\n\n // Computed state for backdrop blur\n readonly shouldBlurMainContent = computed(() => {\n return (\n this.isRightPanelOpen() &&\n (this.rightPanelOptions().mode ?? 'overlay') === 'overlay' &&\n !!this.rightPanelOptions().blurBackdrop\n );\n });\n\n // Computed state for inline panel mode\n readonly isRightPanelInline = computed(() => {\n return this.isRightPanelOpen() && this.rightPanelOptions().mode === 'inline';\n });\n\n // Action methods\n toggleLeftNav(): void {\n this.isLeftNavCollapsed.update((state) => !state);\n }\n\n setLeftNavCollapsed(collapsed: boolean): void {\n this.isLeftNavCollapsed.set(collapsed);\n }\n\n toggleMainContentExpanded(): void {\n this.isMainContentExpanded.update((state) => !state);\n }\n\n setMainContentExpanded(expanded: boolean): void {\n this.isMainContentExpanded.set(expanded);\n }\n\n private closeTimeout: ReturnType<typeof setTimeout> | null = null;\n\n /**\n * Dynamically open the right side panel with a specified component and inputs.\n */\n openRightPanel<T>(\n component: Type<T>,\n inputs: Record<string, unknown> = {},\n options: RightPanelOptions = {}\n ): void {\n if (this.closeTimeout) {\n clearTimeout(this.closeTimeout);\n this.closeTimeout = null;\n }\n\n this.rightPanelComponent.set(component as Type<unknown>);\n this.rightPanelInputs.set(inputs);\n this.rightPanelOptions.set({\n mode: 'overlay',\n closeOnBackdropClick: true,\n ...options\n });\n this.isRightPanelOpen.set(true);\n }\n\n /**\n * Close the right side panel and clear injected component state after animation completes.\n */\n closeRightPanel(): void {\n this.isRightPanelOpen.set(false);\n\n if (this.closeTimeout) {\n clearTimeout(this.closeTimeout);\n }\n\n this.closeTimeout = setTimeout(() => {\n this.rightPanelComponent.set(null);\n this.rightPanelInputs.set({});\n this.rightPanelOptions.set({});\n this.closeTimeout = null;\n }, 300);\n }\n}\n","import { Component, Type, input, output } from '@angular/core';\nimport { NgComponentOutlet } from '@angular/common';\nimport { TalosButtonDirective } from '@weeehaoooz/talos-ui/button/button';\n\nimport { LucideX } from '@lucide/angular';\n\n@Component({\n selector: 'talos-side-panel',\n imports: [NgComponentOutlet, TalosButtonDirective, LucideX],\n templateUrl: './side-panel.component.html',\n styleUrl: './side-panel.component.scss',\n host: {\n 'role': 'complementary',\n 'class': 'side-panel-host',\n '[class.is-open]': 'isOpen()',\n '[class.is-overlay]': 'mode() === \"overlay\"',\n '[class.is-inline]': 'mode() === \"inline\"',\n '[style.--panel-width]': 'width()',\n '[attr.aria-label]': 'title() || \"Details Panel\"'\n }\n})\nexport class SidePanelComponent {\n /** Whether the panel is currently open and visible */\n readonly isOpen = input<boolean>(true);\n\n /** Panel title displayed in header */\n readonly title = input<string>('Details');\n\n /** Custom panel width (e.g. '380px', '500px', '100%') */\n readonly width = input<string>('380px');\n\n /** Panel mode: 'overlay' (floating) or 'inline' (push content) */\n readonly mode = input<'overlay' | 'inline'>('overlay');\n\n /** Dynamic component to instantiate via NgComponentOutlet */\n readonly component = input<Type<unknown> | null>(null);\n\n /** Inputs object to pass to the dynamically injected component */\n readonly componentInputs = input<Record<string, unknown>>({});\n\n /** Event emitted when the close button is clicked */\n readonly close = output<void>();\n\n onClose(): void {\n this.close.emit();\n }\n}\n","<div class=\"side-panel-inner\">\n <div class=\"side-panel-header\">\n <h3 class=\"side-panel-title\">\n {{ title() }}\n </h3>\n <button type=\"button\" talosButton variant=\"ghost\" size=\"sm\" [iconOnly]=\"true\" class=\"side-panel-close-btn\"\n (click)=\"onClose()\" aria-label=\"Close details panel\">\n <svg lucideX [size]=\"16\"></svg>\n </button>\n </div>\n <div class=\"side-panel-body\">\n @if (component()) {\n <ng-container *ngComponentOutlet=\"component()!; inputs: componentInputs()\" />\n }\n <ng-content />\n </div>\n</div>","import { Component, inject } from '@angular/core';\nimport { LayoutService } from '../layout.service';\nimport { SidePanelComponent } from '../side-panel/side-panel.component';\n\n@Component({\n selector: 'talos-main-layout',\n imports: [SidePanelComponent],\n templateUrl: './main-layout.component.html',\n styleUrl: './main-layout.component.scss',\n host: {\n 'class': 'talos-main-layout-host',\n '[class.left-nav-collapsed]': 'layoutService.isLeftNavCollapsed()',\n '[class.right-panel-open]': 'layoutService.isRightPanelOpen()',\n '[class.right-panel-inline]': 'layoutService.isRightPanelInline()',\n '[class.main-content-expanded]': 'layoutService.isMainContentExpanded()',\n '[class.blur-backdrop]': 'layoutService.shouldBlurMainContent()'\n }\n})\nexport class MainLayoutComponent {\n protected readonly layoutService = inject(LayoutService);\n\n onBackdropClick(): void {\n if (this.layoutService.rightPanelOptions().closeOnBackdropClick) {\n this.layoutService.closeRightPanel();\n }\n }\n}\n","<!-- Top Header Slot (Spanning 100% full width across top of viewport) -->\n<ng-content select=\"talos-top-nav, app-header, header, [top-nav], [header]\" />\n\n<div class=\"layout-body-wrapper\">\n <!-- Side Nav Slot (Accepts talos-side-nav, app-side-nav, or elements with [side-nav]) -->\n <ng-content select=\"talos-side-nav, app-side-nav, [side-nav]\" />\n\n <!-- Main Content Container Area -->\n <div class=\"main-content-wrapper\">\n <main class=\"main-content-container\" role=\"main\">\n <ng-content />\n </main>\n\n <!-- Optional Blur Backdrop Overlay -->\n @if (layoutService.shouldBlurMainContent()) {\n <div class=\"main-backdrop-overlay\" (click)=\"onBackdropClick()\" aria-hidden=\"true\"></div>\n }\n </div>\n\n <!-- Dynamic Right Side Panel Drawer Component -->\n <talos-side-panel [isOpen]=\"layoutService.isRightPanelOpen()\"\n [title]=\"layoutService.rightPanelOptions().title ?? 'Details'\"\n [width]=\"layoutService.rightPanelOptions().width ?? '380px'\"\n [mode]=\"layoutService.rightPanelOptions().mode ?? 'overlay'\" [component]=\"layoutService.rightPanelComponent()\"\n [componentInputs]=\"layoutService.rightPanelInputs()\" (close)=\"layoutService.closeRightPanel()\" />\n</div>","import { Directive } from '@angular/core';\n\n@Directive({\n selector: 'talos-card-title, [talosCardTitle]',\n host: {\n 'class': 'talos-card-title'\n }\n})\nexport class TalosCardTitleDirective { }\n\n@Directive({\n selector: 'talos-card-subtitle, [talosCardSubtitle]',\n host: {\n 'class': 'talos-card-subtitle'\n }\n})\nexport class TalosCardSubtitleDirective { }\n\n@Directive({\n selector: '[talosCardAvatar], [talosCardIcon]',\n host: {\n 'class': 'talos-card-avatar'\n }\n})\nexport class TalosCardAvatarDirective { }\n\n@Directive({\n selector: 'talos-card-actions, [talosCardActions]',\n host: {\n 'class': 'talos-card-actions'\n }\n})\nexport class TalosCardActionsDirective { }\n\n@Directive({\n selector: 'talos-card-media, [talosCardMedia]',\n host: {\n 'class': 'talos-card-media'\n }\n})\nexport class TalosCardMediaDirective { }\n","import {\n Component,\n computed,\n input,\n output\n} from '@angular/core';\nimport { TalosCardPadding, TalosCardVariant } from './card.types';\n\n@Component({\n selector: 'talos-card, [talosCard]',\n templateUrl: './card.component.html',\n styleUrl: './card.component.scss',\n host: {\n 'class': 'talos-card-host',\n '[class.talos-card-elevated]': 'variant() === \"elevated\"',\n '[class.talos-card-outlined]': 'variant() === \"outlined\"',\n '[class.talos-card-flat]': 'variant() === \"flat\"',\n '[class.talos-card-filled]': 'variant() === \"filled\"',\n '[class.talos-card-padding-none]': 'padding() === \"none\"',\n '[class.talos-card-padding-sm]': 'padding() === \"sm\"',\n '[class.talos-card-padding-md]': 'padding() === \"md\"',\n '[class.talos-card-padding-lg]': 'padding() === \"lg\"',\n '[class.is-hoverable]': 'hoverable()',\n '[class.is-clickable]': 'isClickable()',\n '[class.is-selected]': 'selected()',\n '[class.is-disabled]': 'disabled()',\n '[attr.role]': 'role()',\n '[attr.tabindex]': 'tabIndex()',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\n '[attr.aria-selected]': 'selected() ? \"true\" : null',\n '(click)': 'onClick($event)',\n '(keydown.enter)': 'onKeydown($event)',\n '(keydown.space)': 'onKeydown($event)'\n }\n})\nexport class TalosCardComponent {\n /** Visual style variant of the card */\n readonly variant = input<TalosCardVariant>('elevated');\n\n /** Inner padding size of the card container */\n readonly padding = input<TalosCardPadding>('md');\n\n /** Adds hover elevation lift and animated border glow */\n readonly hoverable = input<boolean>(false);\n\n /** Enables interactive pointer cursor, active state, and keyboard focus */\n readonly clickable = input<boolean>(false);\n\n /** Indicates if card is in an active selected state */\n readonly selected = input<boolean>(false);\n\n /** Disables interactions and reduces opacity */\n readonly disabled = input<boolean>(false);\n\n /** Emitted when the card is clicked or triggered via keyboard */\n readonly cardClick = output<MouseEvent | KeyboardEvent>();\n\n protected readonly isClickable = computed(() => this.clickable() && !this.disabled());\n\n protected readonly role = computed(() => {\n if (this.clickable()) {\n return 'button';\n }\n return undefined;\n });\n\n protected readonly tabIndex = computed(() => {\n if (this.disabled()) {\n return -1;\n }\n if (this.clickable()) {\n return 0;\n }\n return null;\n });\n\n protected onClick(event: MouseEvent): void {\n if (this.disabled()) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n if (this.clickable()) {\n this.cardClick.emit(event);\n }\n }\n\n protected onKeydown(event: Event): void {\n if (this.disabled() || !this.clickable()) {\n return;\n }\n const key = event instanceof KeyboardEvent ? event.key : '';\n if (key === 'Enter' || key === ' ') {\n event.preventDefault();\n this.cardClick.emit(event as KeyboardEvent);\n }\n }\n}\n","<ng-content />\n","import {\n Component,\n input\n} from '@angular/core';\n\n@Component({\n selector: 'talos-card-header, [talosCardHeader]',\n templateUrl: './card-header.component.html',\n styleUrl: './card-header.component.scss',\n host: {\n 'class': 'talos-card-header-host',\n '[class.is-bordered]': 'bordered()'\n }\n})\nexport class TalosCardHeaderComponent {\n /** Optional title text displayed in the header */\n readonly title = input<string>('');\n\n /** Optional subtitle text displayed beneath the title */\n readonly subtitle = input<string>('');\n\n /** Adds a divider border beneath the header */\n readonly bordered = input<boolean>(false);\n}\n","<div class=\"talos-card-header-main\">\n <div class=\"talos-card-header-leading\">\n <ng-content select=\"[talosCardAvatar], [talosCardIcon], [avatar], [icon]\" />\n </div>\n\n @if (title() || subtitle()) {\n <div class=\"talos-card-header-titles\">\n @if (title()) {\n <h3 class=\"talos-card-title\">{{ title() }}</h3>\n }\n @if (subtitle()) {\n <p class=\"talos-card-subtitle\">{{ subtitle() }}</p>\n }\n </div>\n }\n\n <div class=\"talos-card-header-custom-titles\">\n <ng-content select=\"talos-card-title, [talosCardTitle], [title]\" />\n <ng-content select=\"talos-card-subtitle, [talosCardSubtitle], [subtitle]\" />\n </div>\n\n <div class=\"talos-card-header-content\">\n <ng-content />\n </div>\n</div>\n\n<div class=\"talos-card-header-actions\">\n <ng-content select=\"talos-card-actions, [talosCardActions], [actions]\" />\n</div>\n","import {\n Component,\n input\n} from '@angular/core';\nimport { TalosCardPadding } from './card.types';\n\n@Component({\n selector: 'talos-card-body, talos-card-content, [talosCardBody], [talosCardContent]',\n templateUrl: './card-body.component.html',\n styleUrl: './card-body.component.scss',\n host: {\n 'class': 'talos-card-body-host',\n '[class.talos-card-body-padding-none]': 'padding() === \"none\"',\n '[class.talos-card-body-padding-sm]': 'padding() === \"sm\"',\n '[class.talos-card-body-padding-md]': 'padding() === \"md\"',\n '[class.talos-card-body-padding-lg]': 'padding() === \"lg\"'\n }\n})\nexport class TalosCardBodyComponent {\n /** Optional override for body padding */\n readonly padding = input<TalosCardPadding | null>(null);\n}\n","<ng-content />\n","import {\n Component,\n input\n} from '@angular/core';\nimport { TalosCardFooterAlign } from './card.types';\n\n@Component({\n selector: 'talos-card-footer, [talosCardFooter]',\n templateUrl: './card-footer.component.html',\n styleUrl: './card-footer.component.scss',\n host: {\n 'class': 'talos-card-footer-host',\n '[class.is-bordered]': 'bordered()',\n '[class.align-start]': 'align() === \"start\"',\n '[class.align-center]': 'align() === \"center\"',\n '[class.align-end]': 'align() === \"end\"',\n '[class.align-between]': 'align() === \"between\"'\n }\n})\nexport class TalosCardFooterComponent {\n /** Adds a divider border above the footer */\n readonly bordered = input<boolean>(false);\n\n /** Horizontal alignment of elements within the footer */\n readonly align = input<TalosCardFooterAlign>('end');\n}\n","<ng-content />\n","import { NgModule } from '@angular/core';\nimport { TalosCardComponent } from './card.component';\nimport { TalosCardHeaderComponent } from './card-header.component';\nimport { TalosCardBodyComponent } from './card-body.component';\nimport { TalosCardFooterComponent } from './card-footer.component';\nimport {\n TalosCardActionsDirective,\n TalosCardAvatarDirective,\n TalosCardMediaDirective,\n TalosCardSubtitleDirective,\n TalosCardTitleDirective\n} from './card.directives';\n\nconst CARD_DECLARATIONS = [\n TalosCardComponent,\n TalosCardHeaderComponent,\n TalosCardBodyComponent,\n TalosCardFooterComponent,\n TalosCardTitleDirective,\n TalosCardSubtitleDirective,\n TalosCardAvatarDirective,\n TalosCardActionsDirective,\n TalosCardMediaDirective\n];\n\n@NgModule({\n imports: [...CARD_DECLARATIONS],\n exports: [...CARD_DECLARATIONS]\n})\nexport class TalosCardModule { }\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: 'talos-expansion-panel-title, [talosExpansionPanelTitle], [expansionPanelTitle]',\n host: {\n 'class': 'talos-expansion-panel-title'\n }\n})\nexport class TalosExpansionPanelTitleDirective { }\n\n@Directive({\n selector: 'talos-expansion-panel-description, [talosExpansionPanelDescription], [expansionPanelDescription]',\n host: {\n 'class': 'talos-expansion-panel-description'\n }\n})\nexport class TalosExpansionPanelDescriptionDirective { }\n\n@Directive({\n selector: '[talosExpansionPanelIcon], [talosExpansionPanelAvatar], [expansionPanelIcon]',\n host: {\n 'class': 'talos-expansion-panel-icon'\n }\n})\nexport class TalosExpansionPanelIconDirective { }\n\n@Directive({\n selector: 'talos-expansion-panel-actions, [talosExpansionPanelActions], [expansionPanelActions]',\n host: {\n 'class': 'talos-expansion-panel-actions'\n }\n})\nexport class TalosExpansionPanelActionsDirective { }\n\n@Directive({\n selector: 'talos-expansion-panel-toggle, [talosExpansionPanelToggle], [expansionPanelToggle]',\n host: {\n 'class': 'talos-expansion-panel-custom-toggle'\n }\n})\nexport class TalosExpansionPanelToggleDirective { }\n\n@Directive({\n selector: 'ng-template[talosExpansionPanelContent], ng-template[expansionPanelContent]',\n})\nexport class TalosExpansionPanelContentDirective { }\n","import { Component, computed, forwardRef, inject, input } from '@angular/core';\nimport { TalosExpansionPanelPadding } from './expansion-panel.types';\nimport { TalosExpansionPanelComponent } from './expansion-panel.component';\n\n@Component({\n selector: 'talos-expansion-panel-body, [talosExpansionPanelBody], talos-expansion-panel-content',\n templateUrl: './expansion-panel-body.component.html',\n styleUrl: './expansion-panel-body.component.scss',\n host: {\n 'class': 'talos-expansion-panel-body-host',\n '[class.padding-none]': 'effectivePadding() === \"none\"',\n '[class.padding-sm]': 'effectivePadding() === \"sm\"',\n '[class.padding-md]': 'effectivePadding() === \"md\"',\n '[class.padding-lg]': 'effectivePadding() === \"lg\"'\n }\n})\nexport class TalosExpansionPanelBodyComponent {\n protected readonly panel = inject(forwardRef(() => TalosExpansionPanelComponent), { optional: true });\n\n /** Padding size inside the expansion panel body */\n readonly padding = input<TalosExpansionPanelPadding | undefined>(undefined);\n\n protected readonly effectivePadding = computed<TalosExpansionPanelPadding>(() => {\n if (this.padding() !== undefined) {\n return this.padding()!;\n }\n return this.panel ? this.panel.effectivePadding() : 'md';\n });\n}\n","<ng-content />\n","import {\n Component,\n effect,\n input\n} from '@angular/core';\nimport {\n TalosExpansionPanelPadding,\n TalosExpansionPanelVariant\n} from './expansion-panel.types';\nimport { TalosExpansionPanelComponent } from './expansion-panel.component';\n\n@Component({\n selector: 'talos-expansion-panel-group, [talosExpansionPanelGroup], talos-accordion, [talosAccordion]',\n templateUrl: './expansion-panel-group.component.html',\n styleUrl: './expansion-panel-group.component.scss',\n host: {\n 'class': 'talos-expansion-panel-group-host',\n '[class.is-separated]': 'separated() || variant() === \"separated\"',\n '[class.is-joined]': '!separated() && variant() !== \"separated\"',\n '[class.is-disabled]': 'disabled()'\n }\n})\nexport class TalosExpansionPanelGroupComponent {\n /** Whether multiple panels can be expanded simultaneously */\n readonly multi = input<boolean>(false);\n\n /** Unified visual variant for child panels */\n readonly variant = input<TalosExpansionPanelVariant | undefined>(undefined);\n\n /** Unified body padding for child panels */\n readonly padding = input<TalosExpansionPanelPadding | undefined>(undefined);\n\n /** Whether the entire group of panels is disabled */\n readonly disabled = input<boolean>(false);\n\n /** Whether panels have separation spacing instead of contiguous borders */\n readonly separated = input<boolean>(false);\n\n private readonly panels = new Set<TalosExpansionPanelComponent>();\n\n constructor() {\n // When multi mode is toggled off, ensure only at most one panel remains open\n effect(() => {\n const isMulti = this.multi();\n if (!isMulti) {\n let hasOpenPanel = false;\n for (const panel of this.panels) {\n if (panel.expanded()) {\n if (hasOpenPanel) {\n panel.close();\n } else {\n hasOpenPanel = true;\n }\n }\n }\n }\n });\n }\n\n registerPanel(panel: TalosExpansionPanelComponent): void {\n this.panels.add(panel);\n if (!this.multi() && panel.expanded()) {\n for (const existing of this.panels) {\n if (existing !== panel && existing.expanded()) {\n existing.close();\n }\n }\n }\n }\n\n unregisterPanel(panel: TalosExpansionPanelComponent): void {\n this.panels.delete(panel);\n }\n\n onPanelExpanded(expandedPanel: TalosExpansionPanelComponent): void {\n if (!this.multi()) {\n for (const panel of this.panels) {\n if (panel !== expandedPanel && panel.expanded()) {\n panel.close();\n }\n }\n }\n }\n\n /** Expand all registered panels (only valid when multi-expand is enabled) */\n expandAll(): void {\n if (this.disabled() || !this.multi()) return;\n\n for (const panel of this.panels) {\n panel.open();\n }\n }\n\n /** Collapse all registered panels */\n collapseAll(): void {\n for (const panel of this.panels) {\n panel.close();\n }\n }\n}\n","<ng-content />\n","import {\n Component,\n ContentChild,\n DestroyRef,\n computed,\n inject,\n input,\n model,\n output,\n forwardRef\n} from '@angular/core';\nimport {\n TalosExpansionPanelPadding,\n TalosExpansionPanelTogglePosition,\n TalosExpansionPanelVariant\n} from './expansion-panel.types';\nimport { TalosExpansionPanelHeaderComponent } from './expansion-panel-header.component';\nimport { TalosExpansionPanelBodyComponent } from './expansion-panel-body.component';\nimport { TalosExpansionPanelGroupComponent } from './expansion-panel-group.component';\n\nlet uniqueIdCounter = 0;\n\n@Component({\n selector: 'talos-expansion-panel, [talosExpansionPanel]',\n imports: [TalosExpansionPanelHeaderComponent],\n templateUrl: './expansion-panel.component.html',\n styleUrl: './expansion-panel.component.scss',\n host: {\n 'class': 'talos-expansion-panel-host',\n '[class.talos-expansion-panel-elevated]': 'effectiveVariant() === \"elevated\"',\n '[class.talos-expansion-panel-outlined]': 'effectiveVariant() === \"outlined\"',\n '[class.talos-expansion-panel-filled]': 'effectiveVariant() === \"filled\"',\n '[class.talos-expansion-panel-flat]': 'effectiveVariant() === \"flat\"',\n '[class.talos-expansion-panel-separated]': 'effectiveVariant() === \"separated\"',\n '[class.is-expanded]': 'expanded()',\n '[class.is-disabled]': 'effectiveDisabled()',\n '[attr.id]': 'id',\n '[attr.aria-disabled]': 'effectiveDisabled() ? \"true\" : null'\n }\n})\nexport class TalosExpansionPanelComponent {\n protected readonly group = inject(forwardRef(() => TalosExpansionPanelGroupComponent), { optional: true });\n private readonly destroyRef = inject(DestroyRef);\n\n readonly id = `talos-expansion-panel-${++uniqueIdCounter}`;\n readonly contentId = `${this.id}-content`;\n readonly headerId = `${this.id}-header`;\n\n /** Two-way bindable expanded state */\n readonly expanded = model<boolean>(false);\n\n /** Whether the panel is disabled */\n readonly disabled = input<boolean>(false);\n\n /** Visual variant of the panel */\n readonly variant = input<TalosExpansionPanelVariant | undefined>(undefined);\n\n /** Padding for the panel body */\n readonly padding = input<TalosExpansionPanelPadding | undefined>(undefined);\n\n /** Whether to hide the expand toggle indicator */\n readonly hideToggle = input<boolean>(false);\n\n /** Toggle indicator position */\n readonly togglePosition = input<TalosExpansionPanelTogglePosition>('right');\n\n /** Quick declarative title */\n readonly title = input<string>('');\n\n /** Quick declarative subtitle/description */\n readonly description = input<string>('');\n\n /** Emitted when the panel opens */\n readonly opened = output<void>();\n\n /** Emitted when the panel closes */\n readonly closed = output<void>();\n\n @ContentChild(TalosExpansionPanelHeaderComponent)\n protected readonly customHeader?: TalosExpansionPanelHeaderComponent;\n\n @ContentChild(TalosExpansionPanelBodyComponent)\n protected readonly customBody?: TalosExpansionPanelBodyComponent;\n\n readonly effectiveVariant = computed<TalosExpansionPanelVariant>(() => {\n if (this.variant() !== undefined) {\n return this.variant()!;\n }\n if (this.group && this.group.variant() !== undefined) {\n return this.group.variant()!;\n }\n return 'outlined';\n });\n\n readonly effectivePadding = computed<TalosExpansionPanelPadding>(() => {\n if (this.padding() !== undefined) {\n return this.padding()!;\n }\n if (this.group && this.group.padding() !== undefined) {\n return this.group.padding()!;\n }\n return 'md';\n });\n\n readonly effectiveDisabled = computed<boolean>(() => {\n if (this.disabled()) {\n return true;\n }\n return this.group ? this.group.disabled() : false;\n });\n\n constructor() {\n if (this.group) {\n this.group.registerPanel(this);\n this.destroyRef.onDestroy(() => {\n this.group?.unregisterPanel(this);\n });\n }\n }\n\n open(): void {\n if (!this.effectiveDisabled() && !this.expanded()) {\n this.expanded.set(true);\n this.opened.emit();\n this.group?.onPanelExpanded(this);\n }\n }\n\n close(): void {\n if (!this.effectiveDisabled() && this.expanded()) {\n this.expanded.set(false);\n this.closed.emit();\n }\n }\n\n toggle(): void {\n if (this.effectiveDisabled()) {\n return;\n }\n if (this.expanded()) {\n this.close();\n } else {\n this.open();\n }\n }\n}\n","@if (!customHeader && (title() || description())) {\n <talos-expansion-panel-header [title]=\"title()\" [description]=\"description()\" />\n} @else {\n <ng-content select=\"talos-expansion-panel-header, [talosExpansionPanelHeader]\" />\n}\n\n<div\n class=\"talos-expansion-panel-collapse\"\n [class.is-expanded]=\"expanded()\"\n [attr.id]=\"contentId\"\n role=\"region\"\n [attr.aria-labelledby]=\"headerId\">\n <div class=\"talos-expansion-panel-collapse-inner\">\n @if (customBody) {\n <ng-content select=\"talos-expansion-panel-body, [talosExpansionPanelBody], talos-expansion-panel-content\" />\n } @else {\n <div\n class=\"talos-expansion-panel-default-body\"\n [class.padding-none]=\"effectivePadding() === 'none'\"\n [class.padding-sm]=\"effectivePadding() === 'sm'\"\n [class.padding-md]=\"effectivePadding() === 'md'\"\n [class.padding-lg]=\"effectivePadding() === 'lg'\">\n <ng-content />\n </div>\n }\n </div>\n</div>\n","import {\n Component,\n computed,\n inject,\n input,\n forwardRef\n} from '@angular/core';\nimport { LucideChevronDown } from '@lucide/angular';\nimport { TalosExpansionPanelTogglePosition } from './expansion-panel.types';\nimport { TalosExpansionPanelComponent } from './expansion-panel.component';\n\n@Component({\n selector: 'talos-expansion-panel-header, [talosExpansionPanelHeader]',\n imports: [LucideChevronDown],\n templateUrl: './expansion-panel-header.component.html',\n styleUrl: './expansion-panel-header.component.scss',\n host: {\n 'class': 'talos-expansion-panel-header-host',\n '[class.is-expanded]': 'isExpanded()',\n '[class.is-disabled]': 'isDisabled()',\n '[class.toggle-position-left]': 'effectiveTogglePosition() === \"left\"',\n '[class.toggle-position-right]': 'effectiveTogglePosition() === \"right\"',\n 'role': 'button',\n '[attr.tabindex]': 'isDisabled() ? -1 : 0',\n '[attr.aria-expanded]': 'isExpanded()',\n '[attr.aria-disabled]': 'isDisabled() ? \"true\" : null',\n '(click)': 'onClick($event)',\n '(keydown.enter)': 'onKeydown($event)',\n '(keydown.space)': 'onKeydown($event)'\n }\n})\nexport class TalosExpansionPanelHeaderComponent {\n protected readonly LucideChevronDown = LucideChevronDown;\n protected readonly panel = inject(forwardRef(() => TalosExpansionPanelComponent), { optional: true });\n\n /** Optional direct title text */\n readonly title = input<string>('');\n\n /** Optional direct description/subtitle text */\n readonly description = input<string>('');\n\n /** Whether to hide the expansion toggle indicator */\n readonly hideToggle = input<boolean | undefined>(undefined);\n\n /** Toggle indicator position ('left' | 'right' | 'none') */\n readonly togglePosition = input<TalosExpansionPanelTogglePosition | undefined>(undefined);\n\n /** Whether the header is disabled */\n readonly disabled = input<boolean | undefined>(undefined);\n\n protected readonly isExpanded = computed(() => {\n return this.panel ? this.panel.expanded() : false;\n });\n\n protected readonly isDisabled = computed(() => {\n if (this.disabled() !== undefined) {\n return !!this.disabled();\n }\n return this.panel ? this.panel.disabled() : false;\n });\n\n protected readonly shouldHideToggle = computed(() => {\n if (this.hideToggle() !== undefined) {\n return !!this.hideToggle();\n }\n return this.panel ? this.panel.hideToggle() : false;\n });\n\n protected readonly effectiveTogglePosition = computed<TalosExpansionPanelTogglePosition>(() => {\n if (this.shouldHideToggle()) {\n return 'none';\n }\n if (this.togglePosition() !== undefined) {\n return this.togglePosition()!;\n }\n return this.panel ? this.panel.togglePosition() : 'right';\n });\n\n protected onClick(event: MouseEvent): void {\n if (this.isDisabled()) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n this.panel?.toggle();\n }\n\n protected onKeydown(event: Event): void {\n if (this.isDisabled()) {\n return;\n }\n event.preventDefault();\n this.panel?.toggle();\n }\n\n protected onActionsClick(event: MouseEvent): void {\n // Prevent clicking on action buttons or custom interactive controls from toggling the panel\n event.stopPropagation();\n }\n}\n","@if (effectiveTogglePosition() === 'left') {\n <div class=\"talos-expansion-panel-toggle-wrapper talos-expansion-panel-toggle-left\" [class.is-rotated]=\"isExpanded()\">\n <ng-content select=\"talos-expansion-panel-toggle, [talosExpansionPanelToggle], [expansionPanelToggle]\">\n <svg lucideChevronDown [size]=\"16\" class=\"talos-expansion-panel-chevron\" aria-hidden=\"true\"></svg>\n </ng-content>\n </div>\n}\n\n<div class=\"talos-expansion-panel-header-leading\">\n <ng-content select=\"[talosExpansionPanelIcon], [talosExpansionPanelAvatar], [expansionPanelIcon], [avatar], [icon]\" />\n</div>\n\n<div class=\"talos-expansion-panel-header-titles\">\n @if (title()) {\n <span class=\"talos-expansion-panel-title-text\">{{ title() }}</span>\n }\n <ng-content select=\"talos-expansion-panel-title, [talosExpansionPanelTitle], [expansionPanelTitle], [title]\" />\n\n @if (description()) {\n <span class=\"talos-expansion-panel-description-text\">{{ description() }}</span>\n }\n <ng-content select=\"talos-expansion-panel-description, [talosExpansionPanelDescription], [expansionPanelDescription], [description]\" />\n</div>\n\n<div class=\"talos-expansion-panel-header-custom-content\">\n <ng-content />\n</div>\n\n<div class=\"talos-expansion-panel-header-actions\" (click)=\"onActionsClick($event)\">\n <ng-content select=\"talos-expansion-panel-actions, [talosExpansionPanelActions], [expansionPanelActions], [actions]\" />\n</div>\n\n@if (effectiveTogglePosition() === 'right') {\n <div class=\"talos-expansion-panel-toggle-wrapper talos-expansion-panel-toggle-right\" [class.is-rotated]=\"isExpanded()\">\n <ng-content select=\"talos-expansion-panel-toggle, [talosExpansionPanelToggle], [expansionPanelToggle]\">\n <svg lucideChevronDown [size]=\"16\" class=\"talos-expansion-panel-chevron\" aria-hidden=\"true\"></svg>\n </ng-content>\n </div>\n}\n","import { NgModule } from '@angular/core';\nimport { TalosExpansionPanelComponent } from './expansion-panel.component';\nimport { TalosExpansionPanelHeaderComponent } from './expansion-panel-header.component';\nimport { TalosExpansionPanelBodyComponent } from './expansion-panel-body.component';\nimport { TalosExpansionPanelGroupComponent } from './expansion-panel-group.component';\nimport {\n TalosExpansionPanelActionsDirective,\n TalosExpansionPanelContentDirective,\n TalosExpansionPanelDescriptionDirective,\n TalosExpansionPanelIconDirective,\n TalosExpansionPanelTitleDirective,\n TalosExpansionPanelToggleDirective\n} from './expansion-panel.directives';\n\nconst EXPANSION_PANEL_DECLARATIONS = [\n TalosExpansionPanelComponent,\n TalosExpansionPanelHeaderComponent,\n TalosExpansionPanelBodyComponent,\n TalosExpansionPanelGroupComponent,\n TalosExpansionPanelTitleDirective,\n TalosExpansionPanelDescriptionDirective,\n TalosExpansionPanelIconDirective,\n TalosExpansionPanelActionsDirective,\n TalosExpansionPanelToggleDirective,\n TalosExpansionPanelContentDirective\n];\n\n@NgModule({\n imports: [...EXPANSION_PANEL_DECLARATIONS],\n exports: [...EXPANSION_PANEL_DECLARATIONS]\n})\nexport class TalosExpansionPanelModule { }\n","import { Component, input, model } from '@angular/core';\nimport { LucideChevronDown } from '@lucide/angular';\n\n@Component({\n selector: 'talos-nav-group',\n imports: [LucideChevronDown],\n template: `\n @if (title(); as groupTitle) {\n @if (collapsible()) {\n <button\n type=\"button\"\n class=\"nav-group-title nav-group-header-btn\"\n [attr.aria-expanded]=\"!collapsed()\"\n (click)=\"toggleCollapse()\">\n <span class=\"nav-group-title-text\">{{ groupTitle }}</span>\n <span class=\"nav-group-chevron\" [class.is-collapsed]=\"collapsed()\">\n <svg lucideChevronDown [size]=\"14\"></svg>\n </span>\n </button>\n } @else {\n <div class=\"nav-group-title\">{{ groupTitle }}</div>\n }\n }\n <div class=\"nav-group-content\" [class.is-collapsed]=\"collapsible() && collapsed()\">\n <ul class=\"nav-item-list\">\n <ng-content />\n </ul>\n </div>\n `,\n host: {\n 'class': 'nav-group talos-nav-group',\n '[class.is-collapsible]': 'collapsible()',\n '[class.is-collapsed]': 'collapsible() && collapsed()',\n 'role': 'group'\n }\n})\nexport class TalosNavGroupComponent {\n /** Optional title for the navigation group */\n readonly title = input<string | undefined>(undefined);\n\n /** Whether the navigation group is collapsible */\n readonly collapsible = input<boolean>(false);\n\n /** Two-way model signal for the collapsed state */\n readonly collapsed = model<boolean>(false);\n\n /** Toggle the collapsed state */\n toggleCollapse(): void {\n if (!this.collapsible()) return;\n this.collapsed.update((c) => !c);\n }\n}\n","import { NgComponentOutlet } from '@angular/common';\nimport { Component, ElementRef, Type, computed, inject, input, output } from '@angular/core';\nimport { LayoutService } from '@weeehaoooz/talos-ui/layout';\nimport { TalosTooltipDirective } from '@weeehaoooz/talos-ui/feedback/tooltip';\n\n@Component({\n selector: 'talos-nav-item',\n imports: [NgComponentOutlet, TalosTooltipDirective],\n template: `\n <button\n type=\"button\"\n class=\"nav-link\"\n [class.active]=\"active()\"\n [disabled]=\"disabled()\"\n (click)=\"handleClick()\"\n [attr.aria-current]=\"active() ? 'page' : null\"\n [talosTooltip]=\"computedTooltip() || ''\"\n [tooltipDisabled]=\"!isSidebarCollapsed()\"\n tooltipPosition=\"right\">\n @if (icon(); as iconComp) {\n <span class=\"nav-icon\">\n <ng-container *ngComponentOutlet=\"iconComp\" />\n </span>\n }\n <span class=\"nav-label\">\n @if (label()) {\n {{ label() }}\n } @else {\n <ng-content />\n }\n </span>\n @if (badge(); as b) {\n <span class=\"nav-badge\">{{ b }}</span>\n }\n </button>\n `,\n host: {\n 'class': 'nav-item talos-nav-item',\n 'role': 'listitem'\n }\n})\nexport class TalosNavItemComponent {\n protected readonly layoutService = inject(LayoutService, { optional: true });\n\n /** Text label for the nav item */\n readonly label = input<string>('');\n\n /** Icon component type (e.g. Lucide icon) */\n readonly icon = input<Type<unknown> | null>(null);\n\n /** Whether the item is currently active */\n readonly active = input<boolean>(false);\n\n /** Badge or counter displayed on the right */\n readonly badge = input<string | number | undefined>(undefined);\n\n /** Whether the nav item is disabled */\n readonly disabled = input<boolean>(false);\n\n /** Optional route path */\n readonly route = input<string | undefined>(undefined);\n\n /** Optional custom tooltip text when collapsed */\n readonly tooltip = input<string | undefined>(undefined);\n\n /** Optional collapsed override passed from parent side-nav */\n readonly collapsed = input<boolean | undefined>(undefined);\n\n /** Output event when the nav item is clicked */\n readonly itemClick = output<void>();\n\n /** Whether parent sidebar is in collapsed mode */\n readonly isSidebarCollapsed = computed(() => {\n const col = this.collapsed();\n if (col !== undefined) {\n return col;\n }\n return this.layoutService?.isLeftNavCollapsed() ?? false;\n });\n\n /** Computed tooltip for collapsed sidebar state */\n readonly computedTooltip = computed(() => {\n if (!this.isSidebarCollapsed()) return null;\n return this.tooltip() || this.label() || null;\n });\n\n handleClick(): void {\n if (this.disabled()) return;\n this.itemClick.emit();\n }\n}\n","import { Component, computed, inject, input, output } from '@angular/core';\nimport { LucideMonitor, LucideMoon, LucideSun } from '@lucide/angular';\nimport { LayoutService } from '@weeehaoooz/talos-ui/layout';\nimport { TalosTooltipDirective } from '@weeehaoooz/talos-ui/feedback/tooltip';\n\nexport type TalosThemeMode = 'system' | 'light' | 'dark';\n\n@Component({\n selector: 'talos-nav-theme-toggle',\n imports: [LucideSun, LucideMoon, LucideMonitor, TalosTooltipDirective],\n template: `\n <button\n type=\"button\"\n class=\"theme-toggle-btn\"\n (click)=\"handleToggle()\"\n [attr.aria-label]=\"computedAriaLabel()\"\n [talosTooltip]=\"computedTooltip() || ''\"\n [tooltipDisabled]=\"!layoutService?.isLeftNavCollapsed()\"\n tooltipPosition=\"right\">\n <span class=\"theme-toggle-icon\">\n @if (effectiveMode() === 'system') {\n <svg lucideMonitor [size]=\"16\"></svg>\n } @else if (effectiveMode() === 'dark') {\n <svg lucideMoon [size]=\"16\"></svg>\n } @else {\n <svg lucideSun [size]=\"16\"></svg>\n }\n </span>\n @if (showLabel()) {\n <span class=\"theme-toggle-label\">{{ currentModeLabel() }}</span>\n }\n <span\n class=\"theme-toggle-indicator\"\n [class.is-system]=\"effectiveMode() === 'system'\"\n [class.is-light]=\"effectiveMode() === 'light'\"\n [class.is-dark]=\"effectiveMode() === 'dark'\"\n aria-hidden=\"true\">\n <span class=\"indicator-thumb\"></span>\n </span>\n </button>\n `,\n styleUrl: './theme-toggle.component.scss',\n host: {\n 'class': 'talos-nav-theme-toggle-host',\n '[class.is-collapsed]': 'layoutService?.isLeftNavCollapsed() ?? false'\n }\n})\nexport class TalosNavThemeToggleComponent {\n protected readonly layoutService = inject(LayoutService, { optional: true });\n\n /** Explicit 3-way theme mode: 'system' | 'light' | 'dark' */\n readonly themeMode = input<TalosThemeMode | null>(null);\n\n /** Current dark mode state (boolean fallback for backward compatibility) */\n readonly isDarkMode = input<boolean>(false);\n\n /** Whether to show the text label beside the toggle */\n readonly showLabel = input<boolean>(true);\n\n /** Label shown for system mode */\n readonly systemLabel = input<string>('System Mode');\n\n /** Label shown for light mode */\n readonly lightLabel = input<string>('Light Mode');\n\n /** Label shown for dark mode */\n readonly darkLabel = input<string>('Dark Mode');\n\n /** Optional custom tooltip text when collapsed */\n readonly tooltip = input<string | undefined>(undefined);\n\n /** Output event when the toggle is clicked */\n readonly themeToggle = output<void>();\n\n /** Output event with next theme mode ('system' | 'light' | 'dark') */\n readonly themeModeChange = output<TalosThemeMode>();\n\n /** Output event with next dark mode state */\n readonly isDarkModeChange = output<boolean>();\n\n /** Computed effective theme mode */\n readonly effectiveMode = computed<TalosThemeMode>(() => {\n const mode = this.themeMode();\n if (mode) return mode;\n return this.isDarkMode() ? 'dark' : 'light';\n });\n\n /** Computed label for active mode */\n readonly currentModeLabel = computed<string>(() => {\n switch (this.effectiveMode()) {\n case 'system': return this.systemLabel();\n case 'dark': return this.darkLabel();\n default: return this.lightLabel();\n }\n });\n\n /** Computed next mode in cycle: system -> light -> dark -> system */\n readonly nextMode = computed<TalosThemeMode>(() => {\n switch (this.effectiveMode()) {\n case 'system': return 'light';\n case 'light': return 'dark';\n case 'dark': return 'system';\n default: return 'system';\n }\n });\n\n /** Computed accessible aria label */\n readonly computedAriaLabel = computed<string>(() => {\n const current = this.currentModeLabel();\n const nextModeName = this.nextMode() === 'system' ? this.systemLabel() : this.nextMode() === 'dark' ? this.darkLabel() : this.lightLabel();\n return `Current theme: ${current}. Switch to ${nextModeName}`;\n });\n\n /** Computed tooltip for collapsed sidebar state */\n readonly computedTooltip = computed(() => {\n const isCollapsed = this.layoutService?.isLeftNavCollapsed() ?? false;\n if (!isCollapsed) return null;\n return this.tooltip() || `Theme: ${this.currentModeLabel()}`;\n });\n\n handleToggle(): void {\n const next = this.nextMode();\n this.themeToggle.emit();\n this.themeModeChange.emit(next);\n this.isDarkModeChange.emit(next === 'dark');\n }\n}\n","import { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport { Component, TemplateRef, Type, ViewEncapsulation, computed, inject, input, model, output, signal } from '@angular/core';\nimport {\n LucideChevronsUpDown,\n LucideCircleHelp,\n LucidePanelLeft,\n LucidePanelLeftClose,\n LucidePanelLeftOpen,\n LucideSettings\n} from '@lucide/angular';\nimport { LayoutService } from '@weeehaoooz/talos-ui/layout';\nimport { TalosNavGroupComponent } from '../nav-group/nav-group.component';\nimport { TalosNavItemComponent } from '../nav-item/nav-item.component';\nimport { TalosNavThemeToggleComponent, TalosThemeMode } from '../theme-toggle/theme-toggle.component';\nimport { TalosTooltipDirective } from '@weeehaoooz/talos-ui/feedback/tooltip';\n\nexport interface SideNavItem {\n id?: string;\n label: string;\n icon?: any;\n route?: string;\n active?: boolean;\n badge?: string | number;\n disabled?: boolean;\n}\n\nexport interface SideNavGroup {\n title?: string;\n collapsible?: boolean;\n collapsed?: boolean;\n items: SideNavItem[];\n}\n\nexport interface SideNavUserProfile {\n name: string;\n email: string;\n avatarUrl?: string;\n}\n\n@Component({\n selector: 'talos-side-nav',\n imports: [\n NgComponentOutlet,\n NgTemplateOutlet,\n LucidePanelLeft,\n LucideChevronsUpDown,\n LucidePanelLeftOpen,\n LucidePanelLeftClose,\n TalosNavGroupComponent,\n TalosNavItemComponent,\n TalosNavThemeToggleComponent,\n TalosTooltipDirective\n ],\n templateUrl: './side-nav.component.html',\n styleUrl: './side-nav.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'talos-side-nav-host',\n '[class.is-collapsed]': 'isCollapsed()',\n '[class.dark-theme]': 'isDarkMode()',\n '[attr.data-theme]': 'isDarkMode() ? \"dark\" : \"light\"',\n '[attr.aria-hidden]': 'isCollapsed()',\n 'role': 'navigation'\n }\n})\nexport class SideNavComponent {\n protected readonly layoutService = inject(LayoutService, { optional: true });\n protected readonly LucidePanelLeftOpen = LucidePanelLeftOpen;\n protected readonly LucidePanelLeftClose = LucidePanelLeftClose;\n\n /** Optional external two-way binding for collapsed state. If omitted, syncs with LayoutService. */\n readonly collapsed = model<boolean | undefined>(undefined);\n\n /** Effective collapsed state */\n readonly isCollapsed = computed(() => {\n const ext = this.collapsed();\n if (ext !== undefined) {\n return ext;\n }\n return this.layoutService?.isLeftNavCollapsed() ?? false;\n });\n\n /** Toggle collapsed state */\n toggleCollapse(): void {\n if (this.collapsed() !== undefined) {\n this.collapsed.update((c) => !c);\n } else if (this.layoutService) {\n this.layoutService.toggleLeftNav();\n }\n }\n\n\n /** Custom header component to render entire header */\n readonly headerComponent = input<Type<unknown> | null>(null);\n\n /** Component inputs object to pass to headerComponent */\n readonly headerComponentInputs = input<Record<string, unknown>>({});\n\n /** Custom header template to render entire header */\n readonly headerTemplate = input<TemplateRef<unknown> | null>(null);\n\n /** Custom logo component to render in header */\n readonly logoComponent = input<Type<unknown> | null>(null);\n\n /** Component inputs object to pass to logoComponent */\n readonly logoComponentInputs = input<Record<string, unknown>>({});\n\n /** Custom logo template to render in header */\n readonly logoTemplate = input<TemplateRef<unknown> | null>(null);\n\n /** Custom body component to render sidebar body */\n readonly bodyComponent = input<Type<unknown> | null>(null);\n\n /** Component inputs object to pass to bodyComponent */\n readonly bodyComponentInputs = input<Record<string, unknown>>({});\n\n /** Custom body template to render sidebar body */\n readonly bodyTemplate = input<TemplateRef<unknown> | null>(null);\n\n /** Custom footer component to render sidebar footer */\n readonly footerComponent = input<Type<unknown> | null>(null);\n\n /** Component inputs object to pass to footerComponent */\n readonly footerComponentInputs = input<Record<string, unknown>>({});\n\n /** Custom footer template to render sidebar footer */\n readonly footerTemplate = input<TemplateRef<unknown> | null>(null);\n\n /** Whether to show the header in sidebar */\n readonly showHeader = input<boolean>(true);\n\n /** Whether to show the logo in header */\n readonly showLogo = input<boolean>(true);\n\n /** Whether to show the hamburger / panel toggle button in header */\n readonly showToggle = input<boolean>(true);\n\n /** Whether to show the dark mode / light mode theme toggle button in sidebar */\n readonly showThemeToggle = input<boolean>(true);\n\n /** Explicit 3-way theme mode: 'system' | 'light' | 'dark' */\n readonly themeMode = input<TalosThemeMode | null>(null);\n\n /** Current dark mode status (boolean fallback) */\n readonly isDarkMode = input<boolean>(false);\n\n /** Output event when theme toggle is clicked */\n readonly themeToggle = output<void>();\n\n /** Output event when theme mode changes */\n readonly themeModeChange = output<TalosThemeMode>();\n\n /** Track active item ID */\n readonly activeItemId = signal<string>('dashboards');\n\n /** Concise Navigation Groups for clean sidebar UI */\n readonly navGroups = input<SideNavGroup[]>([]);\n\n /** Secondary / Footer Navigation Items */\n readonly footerItems = input<SideNavItem[]>([\n { id: 'help', label: 'Help Center', icon: LucideCircleHelp },\n { id: 'settings', label: 'Settings', icon: LucideSettings }\n ]);\n\n /** User Profile Info for Bottom Footer */\n readonly userProfile = input<SideNavUserProfile>({\n name: 'Eugene Lamar',\n email: 'eugene@glan.com'\n });\n\n /** Output event when a nav item is clicked */\n readonly itemClick = output<SideNavItem>();\n\n selectItem(item: SideNavItem): void {\n if (item.disabled) return;\n if (item.id) {\n this.activeItemId.set(item.id);\n }\n this.itemClick.emit(item);\n }\n}\n","<div class=\"side-nav-inner\">\n <!-- Header -->\n @if (showHeader()) {\n <div class=\"side-nav-header\">\n @if (headerComponent(); as comp) {\n <ng-container *ngComponentOutlet=\"comp; inputs: headerComponentInputs()\" />\n } @else if (headerTemplate(); as tmpl) {\n <ng-container *ngTemplateOutlet=\"tmpl\" />\n } @else {\n <ng-content select=\"[side-nav-header]\">\n <div class=\"default-nav-header\">\n <ng-content select=\"[side-nav-brand]\">\n @if (showLogo()) {\n <div class=\"brand-wrapper\" title=\"Logo\">\n @if (logoComponent(); as comp) {\n <ng-container *ngComponentOutlet=\"comp; inputs: logoComponentInputs()\" />\n } @else if (logoTemplate(); as tmpl) {\n <ng-container *ngTemplateOutlet=\"tmpl\" />\n } @else {\n <ng-content select=\"[side-nav-logo]\" />\n }\n </div>\n }\n </ng-content>\n\n @if (showToggle()) {\n <button type=\"button\" class=\"hamburger-toggle-btn\" (click)=\"toggleCollapse()\"\n [attr.aria-label]=\"isCollapsed() ? 'Expand sidebar' : 'Collapse sidebar'\"\n [talosTooltip]=\"isCollapsed() ? 'Expand sidebar' : 'Collapse sidebar'\"\n tooltipPosition=\"right\">\n <svg lucidePanelLeft class=\"toggle-icon\" [size]=\"18\"></svg>\n </button>\n }\n </div>\n </ng-content>\n }\n </div>\n }\n\n <!-- Body Navigation Items -->\n <div class=\"side-nav-body\">\n @if (bodyComponent(); as comp) {\n <ng-container *ngComponentOutlet=\"comp; inputs: bodyComponentInputs()\" />\n } @else if (bodyTemplate(); as tmpl) {\n <ng-container *ngTemplateOutlet=\"tmpl\" />\n } @else if (navGroups().length > 0) {\n <nav class=\"nav-groups-container\" aria-label=\"Sidebar Navigation\">\n @for (group of navGroups(); track group.title || $index) {\n <talos-nav-group [title]=\"group.title\" [collapsible]=\"group.collapsible ?? false\"\n [collapsed]=\"group.collapsed ?? false\">\n @for (item of group.items; track item.id || item.label) {\n <talos-nav-item [label]=\"item.label\" [icon]=\"item.icon\" [badge]=\"item.badge\" [disabled]=\"item.disabled ?? false\"\n [collapsed]=\"isCollapsed()\"\n [active]=\"(item.id && activeItemId() === item.id) || !!item.active\" (itemClick)=\"selectItem(item)\" />\n }\n </talos-nav-group>\n }\n </nav>\n } @else {\n <!-- Projected content slot for custom body content -->\n <ng-content select=\"[side-nav-body]\" />\n <ng-content />\n }\n </div>\n\n <!-- Footer -->\n <div class=\"side-nav-footer\">\n @if (footerComponent(); as comp) {\n <ng-container *ngComponentOutlet=\"comp; inputs: footerComponentInputs()\" />\n } @else if (footerTemplate(); as tmpl) {\n <ng-container *ngTemplateOutlet=\"tmpl\" />\n } @else {\n <ng-content select=\"[side-nav-footer]\">\n <div class=\"default-nav-footer\">\n @if (footerItems().length > 0) {\n <ul class=\"footer-nav-list\">\n @for (item of footerItems(); track item.id || item.label) {\n <talos-nav-item [label]=\"item.label\" [icon]=\"item.icon\" [disabled]=\"item.disabled ?? false\"\n [collapsed]=\"isCollapsed()\"\n [active]=\"item.id ? activeItemId() === item.id : !!item.active\" (itemClick)=\"selectItem(item)\" />\n }\n </ul>\n }\n\n @if (showThemeToggle()) {\n <talos-nav-theme-toggle\n [themeMode]=\"themeMode()\"\n [isDarkMode]=\"isDarkMode()\"\n (themeToggle)=\"themeToggle.emit()\"\n (themeModeChange)=\"themeModeChange.emit($event)\"\n />\n }\n\n @if (userProfile(); as profile) {\n <div class=\"user-profile-card\"\n [talosTooltip]=\"profile.name + ' (' + profile.email + ')'\"\n [tooltipDisabled]=\"!isCollapsed()\"\n tooltipPosition=\"right\">\n <div class=\"avatar-container\">\n @if (profile.avatarUrl) {\n <img [src]=\"profile.avatarUrl\" [alt]=\"profile.name\" class=\"avatar-img\" />\n } @else {\n <div class=\"avatar-placeholder\">\n {{ profile.name.charAt(0) }}\n </div>\n }\n </div>\n <div class=\"user-info\">\n <span class=\"user-name\">{{ profile.name }}</span>\n <span class=\"user-email\">{{ profile.email }}</span>\n </div>\n <div class=\"profile-action\">\n <svg lucideChevronsUpDown class=\"profile-chevron\" [size]=\"14\"></svg>\n </div>\n </div>\n }\n\n <!-- Bottom Collapse/Expand Bar -->\n <button type=\"button\" class=\"footer-collapse-bar\" (click)=\"toggleCollapse()\"\n [attr.aria-label]=\"isCollapsed() ? 'Expand sidebar' : 'Collapse sidebar'\"\n [talosTooltip]=\"isCollapsed() ? 'Expand sidebar' : 'Collapse sidebar'\"\n [tooltipDisabled]=\"!isCollapsed()\"\n tooltipPosition=\"right\">\n <span class=\"collapse-bar-icon\">\n @if (isCollapsed()) {\n <svg lucidePanelLeftOpen [size]=\"16\"></svg>\n } @else {\n <svg lucidePanelLeftClose [size]=\"16\"></svg>\n }\n </span>\n <span class=\"collapse-bar-text\">Collapse sidebar</span>\n </button>\n </div>\n </ng-content>\n }\n </div>\n</div>","import { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n ElementRef,\n TemplateRef,\n Type,\n ViewEncapsulation,\n computed,\n inject,\n input,\n model,\n output,\n signal\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport {\n LucideChevronDown,\n LucideMonitor,\n LucideMoon,\n LucidePanelLeftClose,\n LucidePanelLeftOpen,\n LucideSearch,\n LucideSun\n} from '@lucide/angular';\nimport { LayoutService } from '@weeehaoooz/talos-ui/layout';\nimport { TalosTooltipDirective } from '@weeehaoooz/talos-ui/feedback/tooltip';\nimport { TopNavAction, TopNavItem, TopNavSize, TopNavUserProfile } from './top-nav.types';\nimport { TalosThemeMode } from '../theme-toggle/theme-toggle.component';\n\n@Component({\n selector: 'talos-top-nav, [talos-top-nav], [talosTopNav]',\n imports: [\n NgComponentOutlet,\n NgTemplateOutlet,\n LucideChevronDown,\n LucidePanelLeftOpen,\n LucidePanelLeftClose,\n LucideSearch,\n LucideSun,\n LucideMoon,\n LucideMonitor,\n TalosTooltipDirective\n ],\n templateUrl: './top-nav.component.html',\n styleUrl: './top-nav.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'talos-top-nav-host',\n '[class.is-sticky]': 'sticky()',\n '[class.is-glass]': 'glass()',\n '[class.is-bordered]': 'bordered()',\n '[class.size-sm]': 'size() === \"sm\"',\n '[class.size-md]': 'size() === \"md\"',\n '[class.size-lg]': 'size() === \"lg\"',\n '[class.dark-theme]': 'isDarkMode()',\n '[attr.data-theme]': 'isDarkMode() ? \"dark\" : \"light\"',\n 'role': 'banner',\n '(document:click)': 'onDocumentClick($event)',\n '(document:keydown.escape)': 'closeAllDropdowns()'\n }\n})\nexport class TopNavComponent {\n protected readonly layoutService = inject(LayoutService, { optional: true });\n private readonly router = inject(Router, { optional: true });\n private readonly elementRef = inject(ElementRef);\n\n /** Brand title displayed in left header */\n readonly brandTitle = input<string>('Talos');\n\n /** Brand subtitle or description */\n readonly brandSubtitle = input<string | undefined>(undefined);\n\n /** Badge displayed beside brand title */\n readonly brandBadge = input<string | undefined>(undefined);\n\n /** Icon component type for brand badge */\n readonly brandIcon = input<Type<unknown> | null>(null);\n\n /** Route link for brand header click */\n readonly brandRoute = input<string | any[] | undefined>(undefined);\n\n /** Direct href for brand header click */\n readonly brandUrl = input<string | undefined>(undefined);\n\n /** Whether to render brand title & badge */\n readonly showBrand = input<boolean>(true);\n\n /** Whether to show logo in top-nav */\n readonly showLogo = input<boolean>(true);\n\n /** Custom logo component */\n readonly logoComponent = input<Type<unknown> | null>(null);\n\n /** Inputs for custom logo component */\n readonly logoComponentInputs = input<Record<string, unknown>>({});\n\n /** Custom logo template */\n readonly logoTemplate = input<TemplateRef<unknown> | null>(null);\n\n /** Whether to show sidebar collapse toggle button */\n readonly showSidebarToggle = input<boolean>(true);\n\n /** Navigation items list with optional dropdown children */\n readonly items = input<TopNavItem[]>([]);\n\n /** Two-way active item identifier */\n readonly activeItemId = model<string | null>(null);\n\n /** Action buttons displayed in right section (e.g. notifications, docs) */\n readonly actions = input<TopNavAction[]>([]);\n\n /** Whether to show theme dark/light mode toggle button */\n readonly showThemeToggle = input<boolean>(true);\n\n /** Explicit 3-way theme mode: 'system' | 'light' | 'dark' */\n readonly themeMode = input<TalosThemeMode | null>(null);\n\n /** Current dark mode state (boolean fallback) */\n readonly isDarkMode = input<boolean>(false);\n\n /** User profile information and user dropdown items */\n readonly userProfile = input<TopNavUserProfile | null>(null);\n\n /** Whether to show search bar */\n readonly showSearch = input<boolean>(false);\n\n /** Placeholder text for search bar */\n readonly searchPlaceholder = input<string>('Search...');\n\n /** Whether top navbar is sticky at top */\n readonly sticky = input<boolean>(false);\n\n /** Whether bottom border is rendered */\n readonly bordered = input<boolean>(true);\n\n /** Whether glassmorphism backdrop blur is applied */\n readonly glass = input<boolean>(false);\n\n /** Size variant for height and spacing */\n readonly size = input<TopNavSize>('md');\n\n /** Custom left section component */\n readonly leftComponent = input<Type<unknown> | null>(null);\n readonly leftComponentInputs = input<Record<string, unknown>>({});\n readonly leftTemplate = input<TemplateRef<unknown> | null>(null);\n\n /** Custom center section component */\n readonly centerComponent = input<Type<unknown> | null>(null);\n readonly centerComponentInputs = input<Record<string, unknown>>({});\n readonly centerTemplate = input<TemplateRef<unknown> | null>(null);\n\n /** Custom right section component */\n readonly rightComponent = input<Type<unknown> | null>(null);\n readonly rightComponentInputs = input<Record<string, unknown>>({});\n readonly rightTemplate = input<TemplateRef<unknown> | null>(null);\n\n /** Optional external two-way binding for sidebar collapsed state. If omitted, syncs with LayoutService. */\n readonly sidebarCollapsed = model<boolean | undefined>(undefined);\n\n /** Effective sidebar collapsed state */\n readonly isSidebarCollapsed = computed(() => {\n const ext = this.sidebarCollapsed();\n if (ext !== undefined) {\n return ext;\n }\n return this.layoutService?.isLeftNavCollapsed() ?? false;\n });\n\n /** Output emitted when a nav item or child item is clicked */\n readonly itemClick = output<TopNavItem>();\n\n /** Output emitted when an action button is clicked */\n readonly actionClick = output<TopNavAction>();\n\n /** Output emitted when user profile is clicked */\n readonly userClick = output<TopNavUserProfile>();\n\n /** Output emitted when theme toggle button is clicked */\n readonly themeToggle = output<void>();\n\n /** Output emitted with next theme mode */\n readonly themeModeChange = output<TalosThemeMode>();\n\n /** Output emitted on search input change */\n readonly searchChange = output<string>();\n\n /** Output emitted when sidebar toggle button is clicked */\n readonly sidebarToggleClick = output<void>();\n\n /** Output emitted when brand logo or title is clicked */\n readonly brandClick = output<void>();\n\n /** Track active open dropdown item ID */\n readonly openDropdownId = signal<string | null>(null);\n\n /** Track whether user profile dropdown menu is open */\n readonly isUserDropdownOpen = signal<boolean>(false);\n\n /** Computed effective theme mode */\n readonly effectiveThemeMode = computed<TalosThemeMode>(() => {\n const mode = this.themeMode();\n if (mode) return mode;\n return this.isDarkMode() ? 'dark' : 'light';\n });\n\n /** Computed next mode in cycle: system -> light -> dark -> system */\n readonly nextThemeMode = computed<TalosThemeMode>(() => {\n switch (this.effectiveThemeMode()) {\n case 'system': return 'light';\n case 'light': return 'dark';\n case 'dark': return 'system';\n default: return 'system';\n }\n });\n\n /** Computed tooltip for theme toggle button */\n readonly themeToggleTooltip = computed<string>(() => {\n const mode = this.effectiveThemeMode();\n const label = mode === 'system' ? 'System (Auto)' : mode === 'dark' ? 'Dark' : 'Light';\n return `Theme: ${label} (Click to cycle)`;\n });\n\n /** Computed aria label for theme toggle button */\n readonly themeToggleAriaLabel = computed<string>(() => {\n const next = this.nextThemeMode();\n const nextName = next === 'system' ? 'System Mode' : next === 'dark' ? 'Dark Mode' : 'Light Mode';\n return `Switch to ${nextName}`;\n });\n\n handleThemeToggle(): void {\n const next = this.nextThemeMode();\n this.themeToggle.emit();\n this.themeModeChange.emit(next);\n }\n\n /** Handle brand click */\n handleBrandClick(): void {\n if (this.brandUrl()) {\n window.open(this.brandUrl()!, '_self');\n } else if (this.brandRoute() !== undefined && this.router) {\n const route = this.brandRoute()!;\n this.router.navigate(Array.isArray(route) ? route : [route]);\n }\n this.brandClick.emit();\n }\n\n /** Toggle sidebar collapse state via model or LayoutService */\n toggleSidebar(): void {\n if (this.sidebarCollapsed() !== undefined) {\n this.sidebarCollapsed.update((c) => !c);\n } else if (this.layoutService) {\n this.layoutService.toggleLeftNav();\n }\n this.sidebarToggleClick.emit();\n }\n\n /** Toggle dropdown state for a given item */\n toggleDropdown(itemId: string, event?: Event): void {\n if (event) {\n event.stopPropagation();\n }\n this.isUserDropdownOpen.set(false);\n this.openDropdownId.update((curr) => (curr === itemId ? null : itemId));\n }\n\n /** Toggle user profile dropdown menu */\n toggleUserDropdown(event?: Event): void {\n if (event) {\n event.stopPropagation();\n }\n this.openDropdownId.set(null);\n this.isUserDropdownOpen.update((open) => !open);\n if (this.userProfile()) {\n this.userClick.emit(this.userProfile()!);\n }\n }\n\n /** Select a navigation item */\n selectItem(item: TopNavItem, event?: Event): void {\n if (item.disabled) return;\n\n if (item.children && item.children.length > 0) {\n this.toggleDropdown(item.id || item.label, event);\n return;\n }\n\n if (item.id) {\n this.activeItemId.set(item.id);\n }\n this.closeAllDropdowns();\n\n if (item.href) {\n window.open(item.href, item.target ?? '_self');\n } else if (item.route !== undefined && this.router) {\n this.router.navigate(Array.isArray(item.route) ? item.route : [item.route]);\n }\n\n this.itemClick.emit(item);\n }\n\n /** Select a child item inside a dropdown menu */\n selectChildItem(child: TopNavItem, parent: TopNavItem, event?: Event): void {\n if (child.disabled) return;\n if (event) {\n event.stopPropagation();\n }\n if (child.id) {\n this.activeItemId.set(child.id);\n }\n this.closeAllDropdowns();\n\n if (child.href) {\n window.open(child.href, child.target ?? '_self');\n } else if (child.route !== undefined && this.router) {\n this.router.navigate(Array.isArray(child.route) ? child.route : [child.route]);\n }\n\n this.itemClick.emit(child);\n }\n\n /** Handle action button click */\n handleActionClick(action: TopNavAction, event: MouseEvent): void {\n if (action.disabled) return;\n if (action.onClick) {\n action.onClick(action, event);\n }\n if (action.href) {\n window.open(action.href, action.target ?? '_blank');\n } else if (action.route !== undefined && this.router) {\n this.router.navigate(Array.isArray(action.route) ? action.route : [action.route]);\n }\n this.actionClick.emit(action);\n }\n\n /** Handle search input changes */\n onSearchInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this.searchChange.emit(value);\n }\n\n /** Close all open dropdown menus */\n closeAllDropdowns(): void {\n this.openDropdownId.set(null);\n this.isUserDropdownOpen.set(false);\n }\n\n /** Dismiss dropdowns when clicking outside the component */\n onDocumentClick(event: MouseEvent): void {\n const target = event.target as HTMLElement | null;\n if (target && !this.elementRef.nativeElement.contains(target)) {\n this.closeAllDropdowns();\n }\n }\n}\n","<div class=\"talos-top-nav-inner\">\n <!-- Left Section: Toggle, Brand, Logo -->\n <div class=\"top-nav-left\">\n @if (leftComponent(); as comp) {\n <ng-container *ngComponentOutlet=\"comp; inputs: leftComponentInputs()\" />\n } @else if (leftTemplate(); as tmpl) {\n <ng-container *ngTemplateOutlet=\"tmpl\" />\n } @else {\n <ng-content select=\"[top-nav-left]\">\n <!-- Sidebar Collapse Toggle Button -->\n @if (showSidebarToggle()) {\n <ng-content select=\"[top-nav-toggle]\">\n <button type=\"button\" class=\"nav-toggle-btn\" (click)=\"toggleSidebar()\"\n [attr.aria-label]=\"isSidebarCollapsed() ? 'Expand sidebar' : 'Collapse sidebar'\"\n [talosTooltip]=\"isSidebarCollapsed() ? 'Expand sidebar' : 'Collapse sidebar'\">\n @if (isSidebarCollapsed()) {\n <svg lucidePanelLeftOpen [size]=\"18\"></svg>\n } @else {\n <svg lucidePanelLeftClose [size]=\"18\"></svg>\n }\n </button>\n </ng-content>\n }\n\n <!-- Brand / Logo Area -->\n @if (showLogo() || showBrand()) {\n <div class=\"brand-container\" (click)=\"handleBrandClick()\"\n [attr.tabindex]=\"(brandRoute() || brandUrl()) ? 0 : null\"\n [attr.role]=\"(brandRoute() || brandUrl()) ? 'link' : null\">\n @if (showLogo()) {\n <div class=\"brand-logo-wrapper\">\n @if (logoComponent(); as comp) {\n <ng-container *ngComponentOutlet=\"comp; inputs: logoComponentInputs()\" />\n } @else if (logoTemplate(); as tmpl) {\n <ng-container *ngTemplateOutlet=\"tmpl\" />\n } @else {\n <ng-content select=\"[top-nav-logo]\" />\n }\n </div>\n }\n\n @if (showBrand()) {\n <ng-content select=\"[top-nav-brand]\">\n <div class=\"brand-text-group\">\n <div class=\"brand-title-row\">\n @if (brandIcon(); as iconComp) {\n <span class=\"brand-icon\">\n <ng-container *ngComponentOutlet=\"iconComp\" />\n </span>\n }\n <span class=\"brand-title\">{{ brandTitle() }}</span>\n @if (brandBadge(); as badge) {\n <span class=\"brand-badge\">{{ badge }}</span>\n }\n </div>\n @if (brandSubtitle(); as subtitle) {\n <span class=\"brand-subtitle\">{{ subtitle }}</span>\n }\n </div>\n </ng-content>\n }\n </div>\n }\n </ng-content>\n }\n </div>\n\n <!-- Center Section: Navigation Links & Search -->\n <div class=\"top-nav-center\">\n @if (centerComponent(); as comp) {\n <ng-container *ngComponentOutlet=\"comp; inputs: centerComponentInputs()\" />\n } @else if (centerTemplate(); as tmpl) {\n <ng-container *ngTemplateOutlet=\"tmpl\" />\n } @else {\n <ng-content select=\"[top-nav-center]\">\n <!-- Direct Navigation Items -->\n @if (items().length > 0) {\n <nav class=\"nav-links-bar\" aria-label=\"Main Navigation\">\n @for (item of items(); track item.id || item.label) {\n @if (item.children && item.children.length > 0) {\n <!-- Item with Dropdown Menu -->\n <div class=\"nav-item-dropdown-container\" [class.is-open]=\"openDropdownId() === (item.id || item.label)\">\n <button type=\"button\" class=\"nav-link-btn has-dropdown\"\n [class.is-active]=\"activeItemId() === item.id || !!item.active\" [disabled]=\"item.disabled ?? false\"\n [attr.aria-haspopup]=\"'true'\" [attr.aria-expanded]=\"openDropdownId() === (item.id || item.label)\"\n (click)=\"toggleDropdown(item.id || item.label, $event)\">\n @if (item.icon; as itemIcon) {\n <span class=\"nav-link-icon\">\n <ng-container *ngComponentOutlet=\"itemIcon\" />\n </span>\n }\n <span class=\"nav-link-label\">{{ item.label }}</span>\n @if (item.badge) {\n <span class=\"nav-link-badge\" [class]=\"'badge-' + (item.badgeVariant ?? 'primary')\">\n {{ item.badge }}\n </span>\n }\n <svg lucideChevronDown class=\"dropdown-chevron\" [size]=\"14\"></svg>\n </button>\n\n <!-- Dropdown Panel -->\n @if (openDropdownId() === (item.id || item.label)) {\n <div class=\"top-nav-dropdown-menu\" role=\"menu\" (click)=\"$event.stopPropagation()\">\n @if (item.dropdownTemplate; as customTmpl) {\n <ng-container *ngTemplateOutlet=\"customTmpl\" />\n } @else {\n <ul class=\"dropdown-menu-list\">\n @for (child of item.children; track child.id || child.label) {\n @if (child.divider) {\n <li class=\"dropdown-divider\" role=\"separator\"></li>\n }\n <li role=\"none\">\n <button type=\"button\" class=\"dropdown-menu-item\" role=\"menuitem\"\n [class.is-active]=\"activeItemId() === child.id || !!child.active\" [disabled]=\"child.disabled ?? false\"\n (click)=\"selectChildItem(child, item, $event)\">\n @if (child.icon; as childIcon) {\n <span class=\"dropdown-item-icon\">\n <ng-container *ngComponentOutlet=\"childIcon\" />\n </span>\n }\n <div class=\"dropdown-item-content\">\n <span class=\"dropdown-item-label\">{{ child.label }}</span>\n @if (child.description) {\n <span class=\"dropdown-item-desc\">{{ child.description }}</span>\n }\n </div>\n @if (child.badge) {\n <span class=\"dropdown-item-badge\" [class]=\"'badge-' + (child.badgeVariant ?? 'subtle')\">\n {{ child.badge }}\n </span>\n }\n </button>\n </li>\n }\n </ul>\n }\n </div>\n }\n </div>\n } @else {\n <!-- Standard Single Nav Link -->\n <button type=\"button\" class=\"nav-link-btn\" [class.is-active]=\"activeItemId() === item.id || !!item.active\"\n [disabled]=\"item.disabled ?? false\" (click)=\"selectItem(item, $event)\">\n @if (item.icon; as itemIcon) {\n <span class=\"nav-link-icon\">\n <ng-container *ngComponentOutlet=\"itemIcon\" />\n </span>\n }\n <span class=\"nav-link-label\">{{ item.label }}</span>\n @if (item.badge) {\n <span class=\"nav-link-badge\" [class]=\"'badge-' + (item.badgeVariant ?? 'primary')\">\n {{ item.badge }}\n </span>\n }\n </button>\n }\n }\n </nav>\n }\n\n <!-- Search Input Slot -->\n @if (showSearch()) {\n <div class=\"search-bar-wrapper\">\n <svg lucideSearch class=\"search-icon\" [size]=\"15\"></svg>\n <input type=\"text\" class=\"top-nav-search-input\" [placeholder]=\"searchPlaceholder()\"\n (input)=\"onSearchInput($event)\" />\n </div>\n }\n\n <!-- Custom projected center content -->\n <ng-content select=\"[top-nav-links]\" />\n <ng-content />\n </ng-content>\n }\n </div>\n\n <!-- Right Section: Actions, Theme Toggle, User Profile -->\n <div class=\"top-nav-right\">\n @if (rightComponent(); as comp) {\n <ng-container *ngComponentOutlet=\"comp; inputs: rightComponentInputs()\" />\n } @else if (rightTemplate(); as tmpl) {\n <ng-container *ngTemplateOutlet=\"tmpl\" />\n } @else {\n <ng-content select=\"[top-nav-right]\">\n <!-- Action Buttons -->\n @if (actions().length > 0) {\n <div class=\"actions-group\">\n @for (action of actions(); track action.id || action.label || $index) {\n <button type=\"button\" class=\"action-btn\" [class.has-label]=\"action.showLabel && !!action.label\"\n [disabled]=\"action.disabled ?? false\" [attr.aria-label]=\"action.label || 'Action'\"\n [talosTooltip]=\"action.showLabel ? '' : (action.label || '')\" (click)=\"handleActionClick(action, $event)\">\n @if (action.icon; as actIcon) {\n <span class=\"action-btn-icon\">\n <ng-container *ngComponentOutlet=\"actIcon\" />\n </span>\n }\n @if (action.showLabel && action.label) {\n <span class=\"action-btn-label\">{{ action.label }}</span>\n }\n @if (action.badge) {\n <span class=\"action-badge\" [class]=\"'badge-' + (action.badgeVariant ?? 'danger')\">\n {{ action.badge }}\n </span>\n }\n </button>\n }\n </div>\n }\n\n <ng-content select=\"[top-nav-actions]\" />\n\n <!-- 3-Way System/Light/Dark Theme Toggle -->\n @if (showThemeToggle()) {\n <button type=\"button\" class=\"theme-toggle-btn\" (click)=\"handleThemeToggle()\"\n [attr.aria-label]=\"themeToggleAriaLabel()\"\n [talosTooltip]=\"themeToggleTooltip()\">\n @if (effectiveThemeMode() === 'system') {\n <svg lucideMonitor [size]=\"16\"></svg>\n } @else if (effectiveThemeMode() === 'dark') {\n <svg lucideMoon [size]=\"16\"></svg>\n } @else {\n <svg lucideSun [size]=\"16\"></svg>\n }\n </button>\n }\n\n <!-- User Profile & User Dropdown Menu -->\n @if (userProfile(); as user) {\n <div class=\"user-profile-container\" [class.is-open]=\"isUserDropdownOpen()\">\n <button type=\"button\" class=\"user-profile-btn\" [attr.aria-haspopup]=\"'true'\"\n [attr.aria-expanded]=\"isUserDropdownOpen()\" (click)=\"toggleUserDropdown($event)\">\n <div class=\"user-avatar-circle\">\n @if (user.avatarUrl) {\n <img [src]=\"user.avatarUrl\" [alt]=\"user.name\" class=\"user-avatar-img\" />\n } @else {\n <span class=\"avatar-initials\">{{ user.name.charAt(0) }}</span>\n }\n </div>\n <div class=\"user-profile-meta\">\n <span class=\"user-name-text\">{{ user.name }}</span>\n @if (user.role) {\n <span class=\"user-role-text\">{{ user.role }}</span>\n }\n </div>\n @if (user.menuItems && user.menuItems.length > 0) {\n <svg lucideChevronDown class=\"user-dropdown-chevron\" [size]=\"13\"></svg>\n }\n </button>\n\n <!-- User Dropdown Panel -->\n @if (isUserDropdownOpen() && user.menuItems && user.menuItems.length > 0) {\n <div class=\"top-nav-dropdown-menu user-dropdown-menu\" role=\"menu\" (click)=\"$event.stopPropagation()\">\n <div class=\"user-menu-header\">\n <span class=\"user-menu-header-name\">{{ user.name }}</span>\n @if (user.email) {\n <span class=\"user-menu-header-email\">{{ user.email }}</span>\n }\n </div>\n <div class=\"dropdown-divider\" role=\"separator\"></div>\n <ul class=\"dropdown-menu-list\">\n @for (menuItem of user.menuItems; track menuItem.id || menuItem.label) {\n @if (menuItem.divider) {\n <li class=\"dropdown-divider\" role=\"separator\"></li>\n }\n <li role=\"none\">\n <button type=\"button\" class=\"dropdown-menu-item\" role=\"menuitem\"\n [class.is-active]=\"activeItemId() === menuItem.id || !!menuItem.active\"\n [disabled]=\"menuItem.disabled ?? false\" (click)=\"selectItem(menuItem, $event)\">\n @if (menuItem.icon; as menuIcon) {\n <span class=\"dropdown-item-icon\">\n <ng-container *ngComponentOutlet=\"menuIcon\" />\n </span>\n }\n <div class=\"dropdown-item-content\">\n <span class=\"dropdown-item-label\">{{ menuItem.label }}</span>\n @if (menuItem.description) {\n <span class=\"dropdown-item-desc\">{{ menuItem.description }}</span>\n }\n </div>\n @if (menuItem.badge) {\n <span class=\"dropdown-item-badge\" [class]=\"'badge-' + (menuItem.badgeVariant ?? 'subtle')\">\n {{ menuItem.badge }}\n </span>\n }\n </button>\n </li>\n }\n </ul>\n </div>\n }\n </div>\n }\n\n <ng-content select=\"[top-nav-user]\" />\n </ng-content>\n }\n </div>\n</div>","import { NgModule } from '@angular/core';\nimport { TopNavComponent } from './top-nav.component';\n\n@NgModule({\n imports: [TopNavComponent],\n exports: [TopNavComponent]\n})\nexport class TalosTopNavModule {}\n","import { NgModule } from '@angular/core';\nimport { SideNavComponent } from './side-nav/side-nav.component';\nimport { TopNavComponent } from './top-nav/top-nav.component';\nimport { TalosNavGroupComponent } from './nav-group/nav-group.component';\nimport { TalosNavItemComponent } from './nav-item/nav-item.component';\nimport { TalosNavThemeToggleComponent } from './theme-toggle/theme-toggle.component';\nimport { TalosTopNavModule } from './top-nav/top-nav.module';\n\n@NgModule({\n imports: [\n SideNavComponent,\n TalosNavGroupComponent,\n TalosNavItemComponent,\n TalosNavThemeToggleComponent\n ],\n exports: [\n SideNavComponent,\n TalosNavGroupComponent,\n TalosNavItemComponent,\n TalosNavThemeToggleComponent\n ]\n})\nexport class TalosSideNavModule {}\n\n@NgModule({\n imports: [\n SideNavComponent,\n TopNavComponent,\n TalosNavGroupComponent,\n TalosNavItemComponent,\n TalosNavThemeToggleComponent,\n TalosTopNavModule,\n TalosSideNavModule\n ],\n exports: [\n SideNavComponent,\n TopNavComponent,\n TalosNavGroupComponent,\n TalosNavItemComponent,\n TalosNavThemeToggleComponent,\n TalosTopNavModule,\n TalosSideNavModule\n ]\n})\nexport class TalosNavModule {}\n\n","import {\n Component,\n ElementRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\n\n@Component({\n selector: 'talos-option',\n templateUrl: './option.component.html',\n styleUrl: './option.component.scss',\n host: {\n 'role': 'option',\n '[attr.aria-selected]': 'isSelected()',\n '[attr.aria-disabled]': 'disabled()',\n '[attr.tabindex]': '-1',\n '[class.talos-option]': 'true',\n '[class.app-option]': 'true',\n '[class.is-selected]': 'isSelected()',\n '[class.is-active]': 'isActive()',\n '[class.is-disabled]': 'disabled()',\n '[class.is-hidden]': 'hidden()',\n '(click)': 'onClick($event)'\n }\n})\nexport class OptionComponent {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n readonly value = input<unknown>(null);\n readonly label = input<string | undefined>(undefined);\n readonly disabled = input<boolean>(false);\n\n readonly selected = output<OptionComponent>();\n\n readonly isSelected = signal<boolean>(false);\n readonly isActive = signal<boolean>(false);\n readonly hidden = signal<boolean>(false);\n\n displayText(): string {\n const customLabel = this.label();\n if (customLabel !== undefined && customLabel !== null && customLabel !== '') {\n return customLabel;\n }\n const nativeText = this.elementRef.nativeElement.querySelector('.option-label-text')?.textContent?.trim()\n ?? this.elementRef.nativeElement.textContent?.trim();\n if (nativeText) {\n return nativeText;\n }\n const val = this.value();\n return val !== null && val !== undefined ? String(val) : '';\n }\n\n onClick(event: MouseEvent): void {\n event.stopPropagation();\n if (this.disabled() || this.hidden()) {\n return;\n }\n this.selected.emit(this);\n }\n\n scrollIntoViewIfNeeded(): void {\n if (typeof this.elementRef.nativeElement.scrollIntoView === 'function') {\n this.elementRef.nativeElement.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth'\n });\n }\n }\n}\n","<span class=\"option-label-text\">\n <ng-content>{{ label() }}</ng-content>\n</span>\n@if (isSelected()) {\n <svg class=\"option-check-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" aria-hidden=\"true\">\n <polyline points=\"20 6 9 17 4 12\"></polyline>\n </svg>\n}\n","import { Component, contentChildren, input } from '@angular/core';\nimport { OptionComponent } from '../option/option.component';\n\n@Component({\n selector: 'talos-option-group',\n templateUrl: './option-group.component.html',\n styleUrl: './option-group.component.scss',\n host: {\n 'role': 'group',\n '[attr.aria-label]': 'label()',\n '[class.talos-option-group]': 'true',\n '[class.app-option-group]': 'true',\n '[class.is-disabled]': 'disabled()'\n }\n})\nexport class OptionGroupComponent {\n readonly label = input.required<string>();\n readonly disabled = input<boolean>(false);\n\n readonly options = contentChildren(OptionComponent);\n}\n","<div class=\"option-group-label\" aria-hidden=\"true\">\n {{ label() }}\n</div>\n<div class=\"option-group-content\">\n <ng-content select=\"talos-option, app-option\"></ng-content>\n</div>\n","import {\n AfterContentChecked,\n Component,\n ElementRef,\n ViewChild,\n computed,\n contentChildren,\n effect,\n forwardRef,\n inject,\n input,\n output,\n signal\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { OptionGroupComponent } from '../option-group/option-group.component';\nimport { OptionComponent } from '../option/option.component';\n\nlet uniqueIdCounter = 0;\n\n@Component({\n selector: 'talos-select-input',\n templateUrl: './select-input.component.html',\n styleUrl: './select-input.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectInputComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'talos-select-host',\n '[class.is-open]': 'isOpen()',\n '[class.is-disabled]': 'effectiveDisabled()',\n '[class.has-label]': '!!label()',\n '[class.is-floating]': 'isFloatingMode()',\n '[class.is-floated]': 'isFloated()',\n '[class.has-prefix]': 'hasPrefix()',\n '[class.has-suffix]': 'hasSuffix()',\n '[class.select-sm]': 'size() === \"sm\"',\n '[class.select-md]': 'size() === \"md\"',\n '[class.select-lg]': 'size() === \"lg\"',\n '(keydown)': 'onKeyDown($event)',\n '(document:click)': 'onDocumentClick($event)'\n }\n})\nexport class SelectInputComponent implements ControlValueAccessor, AfterContentChecked {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n // Signal Inputs\n readonly placeholder = input<string>('Select an option');\n readonly label = input<string>('');\n readonly floatingLabel = input<boolean>(false);\n readonly floating = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly searchable = input<boolean>(false);\n readonly searchPlaceholder = input<string>('Search options...');\n readonly disabled = input<boolean>(false);\n readonly clearable = input<boolean>(false);\n readonly multiple = input<boolean>(false);\n readonly size = input<'sm' | 'md' | 'lg'>('sm');\n\n // Signal Outputs\n readonly selectionChange = output<unknown>();\n readonly opened = output<void>();\n readonly closed = output<void>();\n readonly searchChange = output<string>();\n\n // Content Queries\n readonly options = contentChildren(OptionComponent, { descendants: true });\n readonly optionGroups = contentChildren(OptionGroupComponent);\n\n // View Children\n @ViewChild('searchInput') searchInputEl?: ElementRef<HTMLInputElement>;\n @ViewChild('triggerEl') triggerEl?: ElementRef<HTMLDivElement>;\n\n // Component ID for ARIA attributes\n readonly componentId = `talos-select-${uniqueIdCounter++}`;\n readonly listboxId = `${this.componentId}-listbox`;\n\n // Internal Reactive State\n readonly value = signal<unknown>(null);\n readonly isOpen = signal<boolean>(false);\n readonly searchValue = signal<string>('');\n readonly focusedIndex = signal<number>(-1);\n readonly isDisabled = signal<boolean>(false);\n readonly isTouched = signal<boolean>(false);\n readonly hasPrefix = signal<boolean>(false);\n readonly hasSuffix = signal<boolean>(false);\n\n // Computed state\n readonly isFloatingMode = computed(() => this.floatingLabel() || this.floating());\n readonly isFloated = computed(() => {\n if (!this.isFloatingMode()) return false;\n return this.isOpen() || this.selectedOption() !== null || (this.searchable() && !!this.searchValue());\n });\n\n readonly effectiveDisabled = computed(() => this.disabled() || this.isDisabled());\n\n readonly selectedOption = computed(() => {\n const currentVal = this.value();\n if (currentVal === null || currentVal === undefined) {\n return null;\n }\n return this.options().find((opt) => opt.value() === currentVal) ?? null;\n });\n\n readonly displayLabel = computed(() => {\n const selected = this.selectedOption();\n return selected ? selected.displayText() : '';\n });\n\n readonly visibleOptions = computed(() => {\n return this.options().filter((opt) => !opt.hidden() && !opt.disabled());\n });\n\n // ControlValueAccessor Callbacks\n private onChange: (val: unknown) => void = () => { };\n private onTouched: () => void = () => { };\n\n constructor() {\n // Sync options' selected state when value or options list updates\n effect(() => {\n const opts = this.options();\n const currentVal = this.value();\n for (const opt of opts) {\n opt.isSelected.set(opt.value() === currentVal);\n }\n });\n\n\n\n // Subscribe to option click events\n effect((onCleanup) => {\n const opts = this.options();\n const subs = opts.map((opt) =>\n opt.selected.subscribe((selectedOpt) => {\n this.selectOption(selectedOpt);\n })\n );\n onCleanup(() => {\n subs.forEach((sub) => sub.unsubscribe());\n });\n });\n\n // Update active highlight when focusedIndex or options change\n effect(() => {\n const visibleOpts = this.visibleOptions();\n const index = this.focusedIndex();\n\n this.options().forEach((opt) => {\n const isActive = index >= 0 && visibleOpts[index] === opt;\n opt.isActive.set(isActive);\n if (isActive) {\n opt.scrollIntoViewIfNeeded();\n }\n });\n });\n }\n\n // --- ControlValueAccessor Interface ---\n writeValue(val: unknown): void {\n this.value.set(val);\n }\n\n registerOnChange(fn: (val: unknown) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled);\n }\n\n // --- Open / Close Controls ---\n toggleOpen(): void {\n if (this.effectiveDisabled()) return;\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open(): void {\n if (this.effectiveDisabled() || this.isOpen()) return;\n this.isOpen.set(true);\n this.opened.emit();\n\n // Set initial keyboard focus index to selected option or first option\n const visibleOpts = this.visibleOptions();\n const selected = this.selectedOption();\n const selectedIdx = selected ? visibleOpts.indexOf(selected) : -1;\n this.focusedIndex.set(selectedIdx >= 0 ? selectedIdx : visibleOpts.length > 0 ? 0 : -1);\n\n if (this.searchable()) {\n setTimeout(() => {\n this.searchInputEl?.nativeElement.focus();\n }, 50);\n }\n }\n\n close(): void {\n if (!this.isOpen()) return;\n this.isOpen.set(false);\n this.focusedIndex.set(-1);\n this.clearSearch();\n this.markAsTouched();\n this.closed.emit();\n }\n\n // --- Selection Logic ---\n selectOption(option: OptionComponent | null): void {\n const newValue = option ? option.value() : null;\n this.value.set(newValue);\n this.onChange(newValue);\n this.selectionChange.emit(newValue);\n this.close();\n }\n\n\n onClear(event: MouseEvent): void {\n event.stopPropagation();\n if (this.effectiveDisabled()) return;\n this.selectOption(null);\n }\n\n\n markAsTouched(): void {\n if (!this.isTouched()) {\n this.isTouched.set(true);\n this.onTouched();\n }\n }\n\n // --- Search / Autocomplete Logic ---\n onSearchInput(event: Event): void {\n const query = (event.target as HTMLInputElement).value;\n this.searchValue.set(query);\n this.searchChange.emit(query);\n this.filterOptions(query);\n }\n\n clearSearch(): void {\n if (this.searchValue()) {\n this.searchValue.set('');\n this.searchChange.emit('');\n this.filterOptions('');\n }\n }\n\n private filterOptions(query: string): void {\n const term = query.toLowerCase().trim();\n for (const opt of this.options()) {\n if (!term) {\n opt.hidden.set(false);\n } else {\n const matches = opt.displayText().toLowerCase().includes(term);\n opt.hidden.set(!matches);\n }\n }\n const visibleOpts = this.visibleOptions();\n this.focusedIndex.set(visibleOpts.length > 0 ? 0 : -1);\n }\n\n // --- Keyboard & Document Click Event Handlers ---\n onKeyDown(event: KeyboardEvent): void {\n if (this.effectiveDisabled()) return;\n\n const visibleOpts = this.visibleOptions();\n const count = visibleOpts.length;\n const currentIdx = this.focusedIndex();\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (!this.isOpen()) {\n this.open();\n } else if (count > 0) {\n const nextIdx = (currentIdx + 1) % count;\n this.focusedIndex.set(nextIdx);\n }\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n if (!this.isOpen()) {\n this.open();\n } else if (count > 0) {\n const prevIdx = (currentIdx - 1 + count) % count;\n this.focusedIndex.set(prevIdx);\n }\n break;\n\n case 'Enter':\n case ' ':\n if (event.key === ' ' && this.searchable() && this.isOpen()) {\n // Allow space key inside search input\n return;\n }\n event.preventDefault();\n if (!this.isOpen()) {\n this.open();\n } else if (currentIdx >= 0 && currentIdx < count) {\n this.selectOption(visibleOpts[currentIdx]);\n }\n break;\n\n case 'Escape':\n if (this.isOpen()) {\n event.preventDefault();\n this.close();\n this.triggerEl?.nativeElement.focus();\n }\n break;\n\n case 'Home':\n if (this.isOpen() && count > 0) {\n event.preventDefault();\n this.focusedIndex.set(0);\n }\n break;\n\n case 'End':\n if (this.isOpen() && count > 0) {\n event.preventDefault();\n this.focusedIndex.set(count - 1);\n }\n break;\n\n case 'Tab':\n if (this.isOpen()) {\n this.close();\n }\n break;\n }\n }\n\n ngAfterContentChecked(): void {\n this.checkAffixes();\n }\n\n private checkAffixes(): void {\n const root = this.elementRef.nativeElement as HTMLElement;\n const prefixEl = root.querySelector<HTMLElement>(\n '.select-trigger > [talosPrefix], .select-trigger > [talosTextPrefix], .select-trigger > [talos-prefix], .select-trigger > [talos-text-prefix], .select-trigger > [talosLead], .select-trigger > [talosStart], .select-trigger > [prefix], .select-trigger > .talos-input-prefix'\n );\n this.hasPrefix.set(!!prefixEl);\n\n const suffixEl = root.querySelector<HTMLElement>(\n '.select-trigger > [talosSuffix], .select-trigger > [talosPostfix], .select-trigger > [talosTextSuffix], .select-trigger > [talosTextPostfix], .select-trigger > [talos-suffix], .select-trigger > [talos-postfix], .select-trigger > [talosTrail], .select-trigger > [talosEnd], .select-trigger > [suffix], .select-trigger > .talos-input-suffix'\n );\n this.hasSuffix.set(!!suffixEl);\n\n if (prefixEl) {\n const prefixWidth = prefixEl.getBoundingClientRect().width;\n if (prefixWidth > 0) {\n root.style.setProperty('--talos-prefix-offset', `${Math.round(prefixWidth + 16)}px`);\n }\n } else {\n root.style.removeProperty('--talos-prefix-offset');\n }\n\n if (suffixEl) {\n const suffixWidth = suffixEl.getBoundingClientRect().width;\n if (suffixWidth > 0) {\n root.style.setProperty('--talos-suffix-offset', `${Math.round(suffixWidth + 16)}px`);\n }\n } else {\n root.style.removeProperty('--talos-suffix-offset');\n }\n }\n\n onDocumentClick(event: MouseEvent): void {\n if (this.isOpen() && !this.elementRef.nativeElement.contains(event.target as Node)) {\n this.close();\n }\n }\n}\n","@if (label() && !isFloatingMode()) {\n <label class=\"talos-field-label\" (click)=\"toggleOpen()\">\n {{ label() }}\n @if (required()) {\n <span class=\"required-star\" aria-hidden=\"true\">*</span>\n }\n </label>\n}\n\n<div class=\"select-control-container\">\n <!-- Select Control Trigger -->\n <div #triggerEl class=\"select-trigger\" role=\"combobox\" [attr.aria-expanded]=\"isOpen()\" [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-controls]=\"listboxId\" [attr.aria-disabled]=\"effectiveDisabled()\"\n [attr.tabindex]=\"effectiveDisabled() ? -1 : 0\" (click)=\"toggleOpen()\">\n <ng-content select=\"[prefix], [talosPrefix], [talosTextPrefix], [talosLead], [talosStart]\"></ng-content>\n\n <div class=\"select-value-container\">\n @if (selectedOption()) {\n <span class=\"select-value-label\">{{ displayLabel() }}</span>\n } @else if (!isFloatingMode() || isFloated()) {\n <span class=\"select-placeholder\">{{ placeholder() }}</span>\n }\n </div>\n\n <ng-content select=\"[suffix], [talosSuffix], [talosPostfix], [talosTextSuffix], [talosTextPostfix], [talosTrail], [talosEnd]\"></ng-content>\n\n <div class=\"select-actions\">\n @if (clearable() && selectedOption() && !effectiveDisabled()) {\n <button type=\"button\" class=\"select-clear-btn\" aria-label=\"Clear selection\" title=\"Clear selection\"\n (click)=\"onClear($event)\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n }\n\n <span class=\"select-arrow\" [class.is-open]=\"isOpen()\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\">\n <polyline points=\"6 9 12 15 18 9\"></polyline>\n </svg>\n </span>\n </div>\n </div>\n\n @if (label() && isFloatingMode()) {\n <label class=\"talos-floating-label\" [class.is-floated]=\"isFloated()\" (click)=\"toggleOpen()\">\n {{ label() }}\n @if (required()) {\n <span class=\"required-star\" aria-hidden=\"true\">*</span>\n }\n </label>\n }\n\n<!-- Dropdown Panel -->\n@if (isOpen()) {\n<div class=\"select-dropdown-panel\" [id]=\"listboxId\" role=\"listbox\">\n @if (searchable()) {\n <div class=\"select-search-container\">\n <svg class=\"search-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\">\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\n </svg>\n <input #searchInput type=\"text\" class=\"select-search-input\" [placeholder]=\"searchPlaceholder()\"\n [value]=\"searchValue()\" (input)=\"onSearchInput($event)\" aria-label=\"Search options\" />\n @if (searchValue()) {\n <button type=\"button\" class=\"select-search-clear\" aria-label=\"Clear search\" (click)=\"clearSearch()\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n }\n </div>\n }\n\n <div class=\"select-options-list\">\n <ng-content></ng-content>\n @if (visibleOptions().length === 0) {\n <div class=\"select-no-options\">\n No matching options\n </div>\n }\n </div>\n</div>\n}\n</div>","import {\n AfterContentChecked,\n Component,\n ElementRef,\n ViewChild,\n computed,\n forwardRef,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n CascadeExpandTrigger,\n CascadeOption,\n CascadeSearchMatch,\n CascadeValueMode\n} from './cascade-select.types';\n\nexport interface ColumnData {\n depth: number;\n options: CascadeOption[];\n selectedOption: CascadeOption | null;\n}\n\n@Component({\n selector: 'talos-cascade-select',\n templateUrl: './cascade-select.component.html',\n styleUrl: './cascade-select.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CascadeSelectComponent),\n multi: true\n }\n ],\n host: {\n 'role': 'combobox',\n '[attr.aria-expanded]': 'isOpen()',\n '[attr.aria-disabled]': 'disabled()',\n '[class.talos-cascade-select]': 'true',\n '[class.is-open]': 'isOpen()',\n '[class.is-disabled]': 'disabled()',\n '[class.has-prefix]': 'hasPrefix()',\n '[class.has-suffix]': 'hasSuffix()',\n '[class.cascade-sm]': 'size() === \"sm\"',\n '[class.cascade-md]': 'size() === \"md\"',\n '[class.cascade-lg]': 'size() === \"lg\"',\n '(document:click)': 'onDocumentClick($event)'\n }\n})\nexport class CascadeSelectComponent implements ControlValueAccessor, AfterContentChecked {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n // Signal Inputs\n readonly options = input<CascadeOption[]>([]);\n readonly placeholder = input<string>('Select path...');\n readonly label = input<string>('');\n readonly floatingLabel = input<boolean>(false);\n readonly floating = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly clearable = input<boolean>(false);\n readonly searchable = input<boolean>(false);\n readonly searchPlaceholder = input<string>('Search full hierarchy...');\n readonly expandTrigger = input<CascadeExpandTrigger>('click');\n readonly valueMode = input<CascadeValueMode>('path');\n readonly separator = input<string>(' / ');\n readonly size = input<'sm' | 'md' | 'lg'>('md');\n\n // Signal Outputs\n readonly pathChange = output<CascadeOption[]>();\n readonly selectionChange = output<unknown>();\n readonly opened = output<void>();\n readonly closed = output<void>();\n\n // Internal Reactive State\n readonly isOpen = signal<boolean>(false);\n readonly activePath = signal<CascadeOption[]>([]);\n readonly selectedPath = signal<CascadeOption[]>([]);\n readonly searchTerm = signal<string>('');\n readonly highlightedSearchIndex = signal<number>(0);\n readonly hasPrefix = signal<boolean>(false);\n readonly hasSuffix = signal<boolean>(false);\n\n // Form Control State\n readonly hasError = signal<boolean>(false);\n\n @ViewChild('searchInput') searchInputEl?: ElementRef<HTMLInputElement>;\n @ViewChild('triggerBox') triggerBoxEl?: ElementRef<HTMLElement>;\n\n private onChange: (val: unknown) => void = () => {};\n private onTouched: () => void = () => {};\n\n readonly isFloatingMode = computed(() => this.floatingLabel() || this.floating());\n\n readonly displayLabel = computed(() => {\n const sel = this.selectedPath();\n if (!sel || sel.length === 0) {\n return '';\n }\n return sel.map((opt) => opt.label).join(this.separator());\n });\n\n readonly isFloated = computed(() => {\n return this.isOpen() || !!this.displayLabel();\n });\n\n // Dynamic Column List for Cascade Panels\n readonly activeColumns = computed<ColumnData[]>(() => {\n const rootOptions = this.options();\n const currentActive = this.activePath();\n const columns: ColumnData[] = [];\n\n // Root column\n columns.push({\n depth: 0,\n options: rootOptions,\n selectedOption: currentActive[0] || null\n });\n\n // Sub-columns following the active path\n for (let i = 0; i < currentActive.length; i++) {\n const activeOpt = currentActive[i];\n if (activeOpt && activeOpt.children && activeOpt.children.length > 0) {\n columns.push({\n depth: i + 1,\n options: activeOpt.children,\n selectedOption: currentActive[i + 1] || null\n });\n }\n }\n\n return columns;\n });\n\n // Flat Search Index for Typeahead Search\n readonly allSearchablePaths = computed<CascadeSearchMatch[]>(() => {\n const results: CascadeSearchMatch[] = [];\n const rootOptions = this.options();\n\n const traverse = (opts: CascadeOption[], currentPath: CascadeOption[]) => {\n for (const opt of opts) {\n const nextPath = [...currentPath, opt];\n const isLeaf = !opt.children || opt.children.length === 0 || opt.leaf;\n\n if (isLeaf) {\n results.push({\n option: opt,\n path: nextPath,\n labelPath: nextPath.map((p) => p.label).join(this.separator()),\n valuePath: nextPath.map((p) => p.value),\n disabled: nextPath.some((p) => p.disabled)\n });\n }\n\n if (opt.children && opt.children.length > 0) {\n traverse(opt.children, nextPath);\n }\n }\n };\n\n traverse(rootOptions, []);\n return results;\n });\n\n readonly filteredSearchResults = computed<CascadeSearchMatch[]>(() => {\n const term = this.searchTerm().toLowerCase().trim();\n if (!term) {\n return [];\n }\n return this.allSearchablePaths().filter((match) =>\n match.labelPath.toLowerCase().includes(term)\n );\n });\n\n // ControlValueAccessor Implementation\n writeValue(value: unknown): void {\n if (value === null || value === undefined || (Array.isArray(value) && value.length === 0)) {\n this.selectedPath.set([]);\n this.activePath.set([]);\n return;\n }\n\n const matchedPath = this.findPathForValue(value, this.options());\n if (matchedPath) {\n this.selectedPath.set(matchedPath);\n this.activePath.set(matchedPath);\n }\n }\n\n registerOnChange(fn: (val: unknown) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n // Handled via input or form state\n }\n\n toggleDropdown(): void {\n if (this.disabled()) {\n return;\n }\n if (this.isOpen()) {\n this.closeDropdown();\n } else {\n this.openDropdown();\n }\n }\n\n openDropdown(): void {\n if (this.disabled()) {\n return;\n }\n this.isOpen.set(true);\n this.searchTerm.set('');\n // Sync active path with selected path on open\n this.activePath.set([...this.selectedPath()]);\n this.opened.emit();\n\n if (this.searchable()) {\n setTimeout(() => {\n this.searchInputEl?.nativeElement.focus();\n }, 50);\n }\n }\n\n closeDropdown(): void {\n if (!this.isOpen()) {\n return;\n }\n this.isOpen.set(false);\n this.searchTerm.set('');\n this.onTouched();\n this.closed.emit();\n }\n\n onDocumentClick(event: MouseEvent): void {\n if (!this.elementRef.nativeElement.contains(event.target as Node)) {\n this.closeDropdown();\n }\n }\n\n hasChildren(option: CascadeOption): boolean {\n return !!option.children && option.children.length > 0 && !option.leaf;\n }\n\n isOptionSelected(depth: number, option: CascadeOption): boolean {\n const sel = this.selectedPath();\n return sel[depth]?.value === option.value;\n }\n\n isOptionActiveBranch(depth: number, option: CascadeOption): boolean {\n const active = this.activePath();\n return active[depth]?.value === option.value;\n }\n\n onOptionHover(depth: number, option: CascadeOption): void {\n if (this.expandTrigger() !== 'hover' || option.disabled) {\n return;\n }\n this.expandOption(depth, option);\n }\n\n onOptionClick(depth: number, option: CascadeOption): void {\n if (option.disabled) {\n return;\n }\n\n if (this.hasChildren(option)) {\n this.expandOption(depth, option);\n } else {\n // Leaf Node Selection\n const newPath = [...this.activePath().slice(0, depth), option];\n this.commitSelection(newPath);\n }\n }\n\n private expandOption(depth: number, option: CascadeOption): void {\n const newActive = [...this.activePath().slice(0, depth), option];\n this.activePath.set(newActive);\n }\n\n commitSelection(path: CascadeOption[]): void {\n this.selectedPath.set(path);\n this.activePath.set(path);\n\n const emittedValue =\n this.valueMode() === 'leaf'\n ? path[path.length - 1]?.value\n : path.map((p) => p.value);\n\n this.onChange(emittedValue);\n this.selectionChange.emit(emittedValue);\n this.pathChange.emit(path);\n this.closeDropdown();\n }\n\n onClear(event: MouseEvent): void {\n event.stopPropagation();\n this.selectedPath.set([]);\n this.activePath.set([]);\n const emptyVal = this.valueMode() === 'leaf' ? null : [];\n this.onChange(emptyVal);\n this.selectionChange.emit(emptyVal);\n this.pathChange.emit([]);\n }\n\n // Search Logic\n onSearchInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n this.searchTerm.set(input.value);\n this.highlightedSearchIndex.set(0);\n }\n\n clearSearch(): void {\n this.searchTerm.set('');\n this.searchInputEl?.nativeElement.focus();\n }\n\n selectSearchResult(match: CascadeSearchMatch): void {\n if (match.disabled) {\n return;\n }\n this.commitSelection(match.path);\n }\n\n onSearchKeyDown(event: KeyboardEvent): void {\n const results = this.filteredSearchResults();\n if (results.length === 0) {\n return;\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n this.highlightedSearchIndex.update((idx) => (idx + 1) % results.length);\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n this.highlightedSearchIndex.update((idx) => (idx - 1 + results.length) % results.length);\n } else if (event.key === 'Enter') {\n event.preventDefault();\n const current = results[this.highlightedSearchIndex()];\n if (current) {\n this.selectSearchResult(current);\n }\n } else if (event.key === 'Escape') {\n event.preventDefault();\n this.closeDropdown();\n }\n }\n\n onKeyDown(event: KeyboardEvent): void {\n if (this.disabled()) {\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ' || event.key === 'ArrowDown') {\n if (!this.isOpen()) {\n event.preventDefault();\n this.openDropdown();\n }\n } else if (event.key === 'Escape') {\n if (this.isOpen()) {\n event.preventDefault();\n this.closeDropdown();\n }\n }\n }\n\n private findPathForValue(val: unknown, options: CascadeOption[]): CascadeOption[] | null {\n // If value is array of path keys: ['na', 'usa', 'sf']\n if (Array.isArray(val)) {\n let currentLevel = options;\n const resolvedPath: CascadeOption[] = [];\n\n for (const segment of val) {\n const match = currentLevel.find((o) => o.value === segment);\n if (!match) {\n return null;\n }\n resolvedPath.push(match);\n if (match.children) {\n currentLevel = match.children;\n }\n }\n return resolvedPath.length === val.length ? resolvedPath : null;\n }\n\n // If value is single leaf key: 'sf'\n const searchLeaf = (opts: CascadeOption[], path: CascadeOption[]): CascadeOption[] | null => {\n for (const opt of opts) {\n const nextPath = [...path, opt];\n if (opt.value === val) {\n return nextPath;\n }\n if (opt.children && opt.children.length > 0) {\n const res = searchLeaf(opt.children, nextPath);\n if (res) {\n return res;\n }\n }\n }\n return null;\n };\n\n return searchLeaf(options, []);\n }\n\n ngAfterContentChecked(): void {\n this.checkAffixes();\n }\n\n private checkAffixes(): void {\n const root = this.elementRef.nativeElement as HTMLElement;\n const prefixEl = root.querySelector<HTMLElement>(\n '.cascade-trigger > [talosPrefix], .cascade-trigger > [talosTextPrefix], .cascade-trigger > [talos-prefix], .cascade-trigger > [talos-text-prefix], .cascade-trigger > [talosLead], .cascade-trigger > [talosStart], .cascade-trigger > [prefix], .cascade-trigger > .talos-input-prefix'\n );\n this.hasPrefix.set(!!prefixEl);\n\n const suffixEl = root.querySelector<HTMLElement>(\n '.cascade-trigger > [talosSuffix], .cascade-trigger > [talosPostfix], .cascade-trigger > [talosTextSuffix], .cascade-trigger > [talosTextPostfix], .cascade-trigger > [talos-suffix], .cascade-trigger > [talos-postfix], .cascade-trigger > [talosTrail], .cascade-trigger > [talosEnd], .cascade-trigger > [suffix], .cascade-trigger > .talos-input-suffix'\n );\n this.hasSuffix.set(!!suffixEl);\n\n if (prefixEl) {\n const prefixWidth = prefixEl.getBoundingClientRect().width;\n if (prefixWidth > 0) {\n root.style.setProperty('--talos-prefix-offset', `${Math.round(prefixWidth + 16)}px`);\n }\n } else {\n root.style.removeProperty('--talos-prefix-offset');\n }\n\n if (suffixEl) {\n const suffixWidth = suffixEl.getBoundingClientRect().width;\n if (suffixWidth > 0) {\n root.style.setProperty('--talos-suffix-offset', `${Math.round(suffixWidth + 16)}px`);\n }\n } else {\n root.style.removeProperty('--talos-suffix-offset');\n }\n }\n}\n","@if (label() && !isFloatingMode()) {\n <label class=\"talos-field-label\" (click)=\"toggleDropdown()\">\n {{ label() }}\n @if (required()) {\n <span class=\"required-star\" aria-hidden=\"true\">*</span>\n }\n </label>\n}\n\n<div class=\"cascade-select-wrapper\" [class.is-focused]=\"isOpen()\">\n <!-- Main Select Trigger Box -->\n <div\n #triggerBox\n class=\"cascade-trigger\"\n [class.is-empty]=\"!displayLabel()\"\n [class.is-disabled]=\"disabled()\"\n [class.has-error]=\"hasError()\"\n [attr.tabindex]=\"disabled() ? -1 : 0\"\n (click)=\"toggleDropdown()\"\n (keydown)=\"onKeyDown($event)\">\n\n <ng-content select=\"[prefix], [talosPrefix], [talosTextPrefix], [talosLead], [talosStart]\"></ng-content>\n\n <!-- Display Value or Placeholder -->\n <div class=\"trigger-content\">\n @if (displayLabel()) {\n <span class=\"display-text\">{{ displayLabel() }}</span>\n } @else if (!isFloatingMode() || isFloated()) {\n <span class=\"placeholder-text\">{{ placeholder() }}</span>\n }\n </div>\n\n <ng-content select=\"[suffix], [talosSuffix], [talosPostfix], [talosTextSuffix], [talosTextPostfix], [talosTrail], [talosEnd]\"></ng-content>\n\n <!-- Actions (Clear & Chevron) -->\n <div class=\"trigger-actions\">\n @if (clearable() && displayLabel() && !disabled()) {\n <button\n type=\"button\"\n class=\"clear-button\"\n aria-label=\"Clear selection\"\n title=\"Clear selection\"\n (click)=\"onClear($event)\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n }\n\n <span class=\"chevron-icon\" [class.is-open]=\"isOpen()\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\">\n <polyline points=\"6 9 12 15 18 9\"></polyline>\n </svg>\n </span>\n </div>\n </div>\n\n @if (label() && isFloatingMode()) {\n <label class=\"talos-floating-label\" [class.is-floated]=\"isFloated()\" (click)=\"toggleDropdown()\">\n {{ label() }}\n @if (required()) {\n <span class=\"required-star\" aria-hidden=\"true\">*</span>\n }\n </label>\n }\n\n <!-- Cascading Dropdown Overlay -->\n @if (isOpen()) {\n <div class=\"cascade-dropdown-panel\" (click)=\"$event.stopPropagation()\">\n <!-- Typeahead Search Container -->\n @if (searchable()) {\n <div class=\"cascade-search-container\">\n <svg class=\"search-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\">\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\n </svg>\n <input\n #searchInput\n type=\"text\"\n class=\"cascade-search-input search-input\"\n [placeholder]=\"searchPlaceholder()\"\n [value]=\"searchTerm()\"\n (input)=\"onSearchInput($event)\"\n (keydown)=\"onSearchKeyDown($event)\"\n aria-label=\"Search cascade hierarchy\" />\n\n @if (searchTerm()) {\n <button type=\"button\" class=\"cascade-search-clear\" aria-label=\"Clear search\" (click)=\"clearSearch()\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n }\n </div>\n }\n\n <!-- Search Results View -->\n @if (searchTerm()) {\n <div class=\"search-results-list\">\n @if (filteredSearchResults().length === 0) {\n <div class=\"empty-state\">No matching paths found</div>\n } @else {\n @for (match of filteredSearchResults(); track match.labelPath; let idx = $index) {\n <div\n class=\"search-result-item\"\n [class.is-highlighted]=\"idx === highlightedSearchIndex()\"\n [class.is-disabled]=\"match.disabled\"\n (click)=\"selectSearchResult(match)\">\n <span class=\"match-path\">{{ match.labelPath }}</span>\n </div>\n }\n }\n </div>\n } @else {\n <!-- Side-by-Side Multi-Column Cascade Drilldown -->\n <div class=\"cascade-columns-container\">\n @for (col of activeColumns(); track col.depth; let colIdx = $index) {\n <div class=\"cascade-column\" [attr.data-depth]=\"colIdx\">\n @if (col.options.length === 0) {\n <div class=\"empty-column-state\">No options</div>\n } @else {\n <div class=\"column-options-list\">\n @for (opt of col.options; track opt.value; let rowIdx = $index) {\n <div\n class=\"cascade-option-item\"\n [class.is-selected]=\"isOptionSelected(colIdx, opt)\"\n [class.is-active-branch]=\"isOptionActiveBranch(colIdx, opt)\"\n [class.is-disabled]=\"opt.disabled\"\n (mouseenter)=\"onOptionHover(colIdx, opt)\"\n (click)=\"onOptionClick(colIdx, opt)\">\n \n @if (opt.icon) {\n <span class=\"option-icon\">{{ opt.icon }}</span>\n }\n \n <span class=\"option-label\">{{ opt.label }}</span>\n \n @if (hasChildren(opt)) {\n <span class=\"option-arrow\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n <polyline points=\"9 18 15 12 9 6\"></polyline>\n </svg>\n </span>\n } @else if (isOptionSelected(colIdx, opt)) {\n <span class=\"option-check\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\">\n <polyline points=\"20 6 9 17 4 12\"></polyline>\n </svg>\n </span>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { SelectInputComponent } from './select-input/select-input.component';\nimport { OptionComponent } from './option/option.component';\nimport { OptionGroupComponent } from './option-group/option-group.component';\nimport { CascadeSelectComponent } from './cascade-select/cascade-select.component';\n\n/**\n * Convenience NgModule wrapping the standalone select input, option, and cascade select components.\n * \n * Allows developers who prefer `SelectInputModule` to import it into standalone components\n * or legacy NgModule-based applications.\n */\n@NgModule({\n imports: [\n SelectInputComponent,\n OptionComponent,\n OptionGroupComponent,\n CascadeSelectComponent\n ],\n exports: [\n SelectInputComponent,\n OptionComponent,\n OptionGroupComponent,\n CascadeSelectComponent\n ]\n})\nexport class SelectInputModule { }\n","import { Directive, ElementRef, inject, input } from '@angular/core';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'subtle' | 'danger' | 'success' | 'link';\nexport type ButtonSize = 'sm' | 'md' | 'lg';\nexport type ButtonAnimation = 'spin' | 'spin-once' | 'pop' | 'shake' | 'pulse' | 'bounce' | 'none';\nexport type ButtonFeedbackState = 'success' | 'error' | null;\n\n@Directive({\n selector: 'button[talosButton], a[talosButton], button[talos-btn], a[talos-btn]',\n host: {\n 'class': 'talos-btn',\n '[class.talos-btn-primary]': 'variant() === \"primary\"',\n '[class.talos-btn-secondary]': 'variant() === \"secondary\"',\n '[class.talos-btn-outline]': 'variant() === \"outline\"',\n '[class.talos-btn-ghost]': 'variant() === \"ghost\" || variant() === \"subtle\"',\n '[class.talos-btn-danger]': 'variant() === \"danger\"',\n '[class.talos-btn-success]': 'variant() === \"success\"',\n '[class.talos-btn-link]': 'variant() === \"link\"',\n '[class.talos-btn-sm]': 'size() === \"sm\"',\n '[class.talos-btn-md]': 'size() === \"md\"',\n '[class.talos-btn-lg]': 'size() === \"lg\"',\n '[class.talos-btn-icon]': 'iconOnly()',\n '[class.talos-btn-full]': 'fullWidth()',\n '[class.talos-btn-pill]': 'pill()',\n '[class.is-loading]': 'loading()',\n '[class.talos-anim-spin]': 'animation() === \"spin\" || spinning()',\n '[class.talos-anim-spin-once]': 'animation() === \"spin-once\"',\n '[class.talos-anim-pop]': 'animation() === \"pop\" || popping()',\n '[class.talos-anim-shake]': 'animation() === \"shake\"',\n '[class.talos-anim-pulse]': 'animation() === \"pulse\"',\n '[class.talos-anim-bounce]': 'animation() === \"bounce\"',\n '[class.talos-feedback-success]': 'feedback() === \"success\"',\n '[class.talos-feedback-error]': 'feedback() === \"error\"',\n '[attr.disabled]': '(disabled() || loading()) ? true : null',\n '[attr.aria-disabled]': '(disabled() || loading()) ? \"true\" : null',\n '(pointerdown)': 'onPointerDown($event)'\n }\n})\nexport class TalosButtonDirective {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** Button visual style variant */\n readonly variant = input<ButtonVariant>('primary');\n\n /** Button size variant */\n readonly size = input<ButtonSize>('md');\n\n /** Whether button has square aspect ratio for icon-only display */\n readonly iconOnly = input<boolean>(false);\n\n /** Expand button to fill 100% width of parent container */\n readonly fullWidth = input<boolean>(false);\n\n /** Apply fully rounded pill shape */\n readonly pill = input<boolean>(false);\n\n /** Show loading spinner and disable interactive events */\n readonly loading = input<boolean>(false);\n\n /** Disable button interaction */\n readonly disabled = input<boolean>(false);\n\n /** Micro-interaction animation preset to apply */\n readonly animation = input<ButtonAnimation>('none');\n\n /** Convenience boolean signal for spinning icon / continuous refresh state */\n readonly spinning = input<boolean>(false);\n\n /** Convenience boolean signal for pop / scale bounce feedback */\n readonly popping = input<boolean>(false);\n\n /** Contextual temporary feedback state (e.g. green success pop or red error shake) */\n readonly feedback = input<ButtonFeedbackState>(null);\n\n onPointerDown(event: Event): void {\n if (this.disabled() || this.loading()) return;\n const pe = event as PointerEvent;\n const el = this.elementRef.nativeElement;\n const rect = el.getBoundingClientRect();\n const x = pe.clientX - rect.left;\n const y = pe.clientY - rect.top;\n el.style.setProperty('--ripple-x', `${x}px`);\n el.style.setProperty('--ripple-y', `${y}px`);\n }\n}\n","import { Directive, ElementRef, inject, input, signal } from '@angular/core';\n\n@Directive({\n selector: 'button[talosButtonGroupItem], a[talosButtonGroupItem], [talos-button-group-item]',\n host: {\n 'class': 'talos-button-group-item',\n '[class.is-selected]': 'selected()',\n '[class.is-active]': 'selected()',\n '[attr.aria-pressed]': 'selected() ? \"true\" : \"false\"'\n }\n})\nexport class TalosButtonGroupItemDirective {\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** Value associated with this button item in selection mode */\n readonly value = input<any>(undefined);\n\n /** Explicit selected / active state override */\n readonly selected = signal<boolean>(false);\n\n /** Focus target method */\n focus(): void {\n this.elementRef.nativeElement.focus();\n }\n}\n","import {\n Component,\n ElementRef,\n inject,\n input,\n model,\n contentChildren,\n effect,\n HostListener\n} from '@angular/core';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { TalosButtonDirective, ButtonSize } from '@weeehaoooz/talos-ui/button/button';\n\nimport { TalosButtonGroupItemDirective } from '../button-group-item/button-group-item.directive';\n\nexport type ButtonGroupOrientation = 'horizontal' | 'vertical';\nexport type ButtonGroupVariant = 'attached' | 'segmented' | 'outline' | 'subtle' | 'pill';\nexport type ButtonGroupSelectionMode = 'none' | 'single' | 'multiple';\n\n@Component({\n selector: 'talos-button-group',\n template: `<ng-content></ng-content>`,\n host: {\n 'class': 'talos-button-group',\n '[class.talos-button-group-horizontal]': 'orientation() === \"horizontal\"',\n '[class.talos-button-group-vertical]': 'orientation() === \"vertical\"',\n '[class.talos-button-group-attached]': 'variant() === \"attached\"',\n '[class.talos-button-group-segmented]': 'variant() === \"segmented\" || variant() === \"pill\"',\n '[class.talos-button-group-outline]': 'variant() === \"outline\"',\n '[class.talos-button-group-subtle]': 'variant() === \"subtle\"',\n '[class.talos-button-group-pill]': 'pill() || variant() === \"pill\"',\n '[class.talos-button-group-sm]': 'size() === \"sm\"',\n '[class.talos-button-group-md]': 'size() === \"md\"',\n '[class.talos-button-group-lg]': 'size() === \"lg\"',\n '[attr.role]': 'selectionMode() !== \"none\" ? \"radiogroup\" : \"group\"',\n '[attr.aria-orientation]': 'orientation()',\n '(keydown)': 'onKeydown($event)',\n '(click)': 'onClick($event)'\n }\n})\nexport class TalosButtonGroupComponent {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** Layout orientation: horizontal or vertical */\n readonly orientation = input<ButtonGroupOrientation>('horizontal');\n\n /** Visual variant style */\n readonly variant = input<ButtonGroupVariant>('attached');\n\n /** Button size propagation */\n readonly size = input<ButtonSize>('md');\n\n /** Selection behavior: none, single (radio), or multiple (checkbox) */\n readonly selectionMode = input<ButtonGroupSelectionMode>('none');\n\n /** Model value for single or multiple selection */\n readonly value = model<any>(undefined);\n\n /** Apply fully rounded pill shape */\n readonly pill = input<boolean>(false);\n\n /** Disable all buttons in group */\n readonly disabled = input<boolean>(false);\n\n /** Child items using TalosButtonGroupItemDirective */\n readonly items = contentChildren(TalosButtonGroupItemDirective, { descendants: true });\n\n /** Child directives using TalosButtonDirective */\n readonly buttons = contentChildren(TalosButtonDirective, { descendants: true });\n\n private selectionModel = new SelectionModel<any>(false, []);\n\n constructor() {\n // Sync SelectionModel mode when selectionMode changes\n effect(() => {\n const mode = this.selectionMode();\n const isMulti = mode === 'multiple';\n const currentVal = this.value();\n\n const initial = currentVal !== undefined\n ? (Array.isArray(currentVal) ? currentVal : [currentVal])\n : [];\n\n this.selectionModel = new SelectionModel<any>(isMulti, initial);\n this.syncChildSelectionStates();\n });\n\n // Sync external model value changes to internal selection model\n effect(() => {\n const val = this.value();\n if (val !== undefined && this.selectionMode() !== 'none') {\n const selectedValues = Array.isArray(val) ? val : [val];\n this.selectionModel.clear();\n selectedValues.forEach(v => this.selectionModel.select(v));\n this.syncChildSelectionStates();\n }\n });\n\n // Propagate item selected state changes\n effect(() => {\n const childItems = this.items();\n this.syncChildSelectionStates();\n });\n }\n\n private syncChildSelectionStates(): void {\n const childItems = this.items();\n if (!childItems || childItems.length === 0) return;\n\n childItems.forEach((item, index) => {\n const itemVal = item.value() !== undefined ? item.value() : index;\n const isSelected = this.selectionModel.isSelected(itemVal);\n item.selected.set(isSelected);\n });\n }\n\n onClick(event: MouseEvent): void {\n if (this.disabled()) return;\n const mode = this.selectionMode();\n if (mode === 'none') return;\n\n const target = event.target as HTMLElement;\n const buttonEl = target.closest('button, a') as HTMLElement;\n if (!buttonEl) return;\n\n const childItems = this.items();\n const childButtons = this.buttons();\n\n // Match clicked button to item directive or index\n let matchedValue: any = undefined;\n let matchedItem: TalosButtonGroupItemDirective | undefined = undefined;\n\n if (childItems && childItems.length > 0) {\n childItems.forEach((item, index) => {\n if (item.elementRef.nativeElement === buttonEl || item.elementRef.nativeElement.contains(buttonEl)) {\n matchedValue = item.value() !== undefined ? item.value() : index;\n matchedItem = item;\n }\n });\n }\n\n if (matchedValue === undefined && childButtons && childButtons.length > 0) {\n const allButtons = Array.from(this.elementRef.nativeElement.querySelectorAll('button, a'));\n const index = allButtons.indexOf(buttonEl);\n if (index !== -1) {\n matchedValue = index;\n }\n }\n\n if (matchedValue !== undefined) {\n if (mode === 'single') {\n this.selectionModel.clear();\n this.selectionModel.select(matchedValue);\n this.value.set(matchedValue);\n } else if (mode === 'multiple') {\n this.selectionModel.toggle(matchedValue);\n this.value.set(this.selectionModel.selected);\n }\n this.syncChildSelectionStates();\n }\n }\n\n onKeydown(event: KeyboardEvent): void {\n const isHoriz = this.orientation() === 'horizontal';\n const focusableButtons = Array.from(\n this.elementRef.nativeElement.querySelectorAll<HTMLButtonElement | HTMLAnchorElement>('button:not([disabled]), a:not([disabled])')\n );\n\n if (focusableButtons.length === 0) return;\n\n const activeEl = document.activeElement as HTMLElement;\n let currentIndex = focusableButtons.indexOf(activeEl as any);\n\n if (currentIndex === -1) return;\n\n let targetIndex = -1;\n\n if ((isHoriz && event.key === 'ArrowRight') || (!isHoriz && event.key === 'ArrowDown')) {\n targetIndex = (currentIndex + 1) % focusableButtons.length;\n } else if ((isHoriz && event.key === 'ArrowLeft') || (!isHoriz && event.key === 'ArrowUp')) {\n targetIndex = (currentIndex - 1 + focusableButtons.length) % focusableButtons.length;\n } else if (event.key === 'Home') {\n targetIndex = 0;\n } else if (event.key === 'End') {\n targetIndex = focusableButtons.length - 1;\n }\n\n if (targetIndex !== -1) {\n event.preventDefault();\n focusableButtons[targetIndex].focus();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { TalosButtonGroupComponent } from './button-group/button-group.component';\nimport { TalosButtonGroupItemDirective } from './button-group-item/button-group-item.directive';\nimport { TalosTooltipDirective, TalosTooltipComponent } from '@weeehaoooz/talos-ui/feedback/tooltip';\nimport { TalosButtonDirective } from '@weeehaoooz/talos-ui/button/button';\n\n@NgModule({\n imports: [\n TalosButtonGroupComponent,\n TalosButtonGroupItemDirective,\n TalosTooltipDirective,\n TalosTooltipComponent,\n TalosButtonDirective\n ],\n exports: [\n TalosButtonGroupComponent,\n TalosButtonGroupItemDirective,\n TalosTooltipDirective,\n TalosTooltipComponent,\n TalosButtonDirective\n ]\n})\nexport class TalosButtonGroupModule { }\n","import {\n Component,\n Directive,\n ElementRef,\n DestroyRef,\n inject,\n input,\n Injector,\n OnInit\n} from '@angular/core';\nimport { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { Overlay, OverlayRef, PositionStrategy } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\n\nexport type TooltipPosition = 'top' | 'left' | 'right' | 'bottom' | 'auto';\n\n@Component({\n selector: 'talos-tooltip-content',\n template: `<div class=\"talos-tooltip-inner\">{{ text() }}</div>`,\n host: {\n 'class': 'talos-tooltip-panel',\n 'role': 'tooltip'\n }\n})\nexport class TalosTooltipComponent {\n readonly text = input<string>('');\n}\n\n@Directive({\n selector: '[talosTooltip], [tooltip]',\n host: {\n '(mouseenter)': 'show()',\n '(mouseleave)': 'hide()',\n '(click)': 'hide()',\n '(keydown.escape)': 'hide()'\n }\n})\nexport class TalosTooltipDirective implements OnInit {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly overlay = inject(Overlay);\n private readonly destroyRef = inject(DestroyRef);\n private readonly injector = inject(Injector);\n private readonly focusMonitor = inject(FocusMonitor);\n\n readonly tooltip = input<string>('', { alias: 'talosTooltip' });\n readonly tooltipContent = input<string>('', { alias: 'tooltip' });\n readonly position = input<TooltipPosition>('top', { alias: 'tooltipPosition' });\n readonly disabled = input<boolean>(false, { alias: 'tooltipDisabled' });\n\n private overlayRef: OverlayRef | null = null;\n\n ngOnInit(): void {\n this.focusMonitor.monitor(this.elementRef).subscribe((origin: FocusOrigin) => {\n if (origin === 'keyboard') {\n this.show();\n } else if (!origin) {\n this.hide();\n }\n });\n\n this.destroyRef.onDestroy(() => {\n this.focusMonitor.stopMonitoring(this.elementRef);\n this.hide();\n });\n }\n\n get tooltipText(): string {\n return this.tooltip() || this.tooltipContent() || '';\n }\n\n show(): void {\n if (this.disabled() || !this.tooltipText || this.overlayRef?.hasAttached()) {\n return;\n }\n\n const positionStrategy = this.createPositionStrategy();\n this.overlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n hasBackdrop: false\n });\n\n const portal = new ComponentPortal(TalosTooltipComponent, null, this.injector);\n const componentRef = this.overlayRef.attach(portal);\n componentRef.setInput('text', this.tooltipText);\n }\n\n hide(): void {\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n }\n\n private createPositionStrategy(): PositionStrategy {\n const pos = this.position();\n const strategy = this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef)\n .withFlexibleDimensions(false)\n .withPush(false);\n\n const positions = {\n top: {\n originX: 'center' as const,\n originY: 'top' as const,\n overlayX: 'center' as const,\n overlayY: 'bottom' as const,\n offsetY: -8\n },\n bottom: {\n originX: 'center' as const,\n originY: 'bottom' as const,\n overlayX: 'center' as const,\n overlayY: 'top' as const,\n offsetY: 8\n },\n left: {\n originX: 'start' as const,\n originY: 'center' as const,\n overlayX: 'end' as const,\n overlayY: 'center' as const,\n offsetX: -8\n },\n right: {\n originX: 'end' as const,\n originY: 'center' as const,\n overlayX: 'start' as const,\n overlayY: 'center' as const,\n offsetX: 8\n }\n };\n\n if (pos === 'top') {\n strategy.withPositions([positions.top, positions.bottom, positions.left, positions.right]);\n } else if (pos === 'bottom') {\n strategy.withPositions([positions.bottom, positions.top, positions.left, positions.right]);\n } else if (pos === 'left') {\n strategy.withPositions([positions.left, positions.right, positions.top, positions.bottom]);\n } else if (pos === 'right') {\n strategy.withPositions([positions.right, positions.left, positions.top, positions.bottom]);\n } else {\n strategy.withPositions([positions.top, positions.bottom, positions.right, positions.left]);\n }\n\n return strategy;\n }\n}\n","import { Directive, input } from '@angular/core';\n\nexport type InputSize = 'sm' | 'md' | 'lg';\n\n@Directive({\n selector: 'input[talosInput], textarea[talosInput], input[talosTextarea], textarea[talosTextarea], input[talos-input], textarea[talos-textarea]',\n host: {\n 'class': 'talos-input',\n '[class.input-sm]': 'size() === \"sm\"',\n '[class.input-md]': 'size() === \"md\"',\n '[class.input-lg]': 'size() === \"lg\"',\n '[class.is-invalid]': 'invalid()'\n }\n})\nexport class TalosInputDirective {\n /** Sizing variation for input or textarea */\n readonly size = input<InputSize>('md');\n\n /** Whether the input is in an invalid error state */\n readonly invalid = input<boolean>(false);\n}\n","import { Directive, ElementRef, inject, input } from '@angular/core';\n\nexport type AffixPosition = 'prefix' | 'suffix';\nexport type AffixAnimation = 'spin' | 'spin-once' | 'pop' | 'shake' | 'pulse' | 'bounce' | 'none';\nexport type AffixFeedbackState = 'success' | 'error' | null;\n\n/**\n * Directive applied to leading prefix elements inside form fields, inputs, or select fields.\n * Supports icons, symbols, dropdowns, and custom buttons.\n */\n@Directive({\n selector: '[talosPrefix], [talos-prefix], [talosLead], [talosStart]',\n host: {\n 'class': 'talos-input-prefix talos-affix-element',\n '[class.affix-interactive]': 'isInteractive()',\n '[class.talos-affix-btn]': 'isButton()',\n '[class.talos-anim-spin]': 'animation() === \"spin\" || spinning()',\n '[class.talos-anim-spin-once]': 'animation() === \"spin-once\"',\n '[class.talos-anim-pop]': 'animation() === \"pop\" || popping()',\n '[class.talos-anim-shake]': 'animation() === \"shake\"',\n '[class.talos-anim-pulse]': 'animation() === \"pulse\"',\n '[class.talos-anim-bounce]': 'animation() === \"bounce\"',\n '[class.talos-feedback-success]': 'feedback() === \"success\"',\n '[class.talos-feedback-error]': 'feedback() === \"error\"',\n '[class.affix-anim-spin]': 'animation() === \"spin\" || spinning()',\n '[class.affix-anim-spin-once]': 'animation() === \"spin-once\"',\n '[class.affix-anim-pop]': 'animation() === \"pop\" || popping()',\n '[class.affix-anim-shake]': 'animation() === \"shake\"',\n '[class.affix-anim-pulse]': 'animation() === \"pulse\"',\n '[class.affix-anim-bounce]': 'animation() === \"bounce\"',\n '[class.affix-feedback-success]': 'feedback() === \"success\"',\n '[class.affix-feedback-error]': 'feedback() === \"error\"'\n }\n})\nexport class TalosPrefixDirective {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n /** Whether the prefix is interactive (e.g. clickable button, dropdown) */\n readonly interactive = input<boolean>(false);\n\n /** Micro-interaction animation preset */\n readonly animation = input<AffixAnimation>('none');\n\n /** Convenience boolean signal for spinning icon / continuous refresh state */\n readonly spinning = input<boolean>(false);\n\n /** Convenience boolean signal for pop / scale bounce feedback */\n readonly popping = input<boolean>(false);\n\n /** Contextual temporary feedback state */\n readonly feedback = input<AffixFeedbackState>(null);\n\n protected isButton(): boolean {\n const el = this.elementRef.nativeElement;\n return el.tagName?.toLowerCase() === 'button' || el.getAttribute('role') === 'button';\n }\n\n protected isInteractive(): boolean {\n return this.interactive() || this.isButton();\n }\n\n get nativeElement(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n}\n\n/**\n * Directive applied to trailing suffix / postfix elements inside form fields, inputs, or select fields.\n * Supports units (USD, kg, px, %), clear buttons, copy actions, and dropdown indicators.\n */\n@Directive({\n selector: '[talosSuffix], [talosPostfix], [talos-suffix], [talos-postfix], [talosTrail], [talosEnd]',\n host: {\n 'class': 'talos-input-suffix talos-affix-element',\n '[class.affix-interactive]': 'isInteractive()',\n '[class.talos-affix-btn]': 'isButton()',\n '[class.talos-anim-spin]': 'animation() === \"spin\" || spinning()',\n '[class.talos-anim-spin-once]': 'animation() === \"spin-once\"',\n '[class.talos-anim-pop]': 'animation() === \"pop\" || popping()',\n '[class.talos-anim-shake]': 'animation() === \"shake\"',\n '[class.talos-anim-pulse]': 'animation() === \"pulse\"',\n '[class.talos-anim-bounce]': 'animation() === \"bounce\"',\n '[class.talos-feedback-success]': 'feedback() === \"success\"',\n '[class.talos-feedback-error]': 'feedback() === \"error\"',\n '[class.affix-anim-spin]': 'animation() === \"spin\" || spinning()',\n '[class.affix-anim-spin-once]': 'animation() === \"spin-once\"',\n '[class.affix-anim-pop]': 'animation() === \"pop\" || popping()',\n '[class.affix-anim-shake]': 'animation() === \"shake\"',\n '[class.affix-anim-pulse]': 'animation() === \"pulse\"',\n '[class.affix-anim-bounce]': 'animation() === \"bounce\"',\n '[class.affix-feedback-success]': 'feedback() === \"success\"',\n '[class.affix-feedback-error]': 'feedback() === \"error\"'\n }\n})\nexport class TalosSuffixDirective {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n /** Whether the suffix is interactive (e.g. clickable button, copy icon) */\n readonly interactive = input<boolean>(false);\n\n /** Micro-interaction animation preset */\n readonly animation = input<AffixAnimation>('none');\n\n /** Convenience boolean signal for spinning icon / continuous refresh state */\n readonly spinning = input<boolean>(false);\n\n /** Convenience boolean signal for pop / scale bounce feedback */\n readonly popping = input<boolean>(false);\n\n /** Contextual temporary feedback state */\n readonly feedback = input<AffixFeedbackState>(null);\n\n protected isButton(): boolean {\n const el = this.elementRef.nativeElement;\n return el.tagName?.toLowerCase() === 'button' || el.getAttribute('role') === 'button';\n }\n\n protected isInteractive(): boolean {\n return this.interactive() || this.isButton();\n }\n\n get nativeElement(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n}\n\n/**\n * Convenience directive for styled text prefix elements (e.g. $, €, https://, @).\n */\n@Directive({\n selector: '[talosTextPrefix], [talos-text-prefix]',\n host: {\n 'class': 'talos-input-prefix talos-text-prefix talos-affix-element'\n }\n})\nexport class TalosTextPrefixDirective {}\n\n/**\n * Convenience directive for styled text suffix / postfix elements (e.g. .00, USD, kg, px, %).\n */\n@Directive({\n selector: '[talosTextSuffix], [talosTextPostfix], [talos-text-suffix], [talos-text-postfix]',\n host: {\n 'class': 'talos-input-suffix talos-text-suffix talos-affix-element'\n }\n})\nexport class TalosTextSuffixDirective {}\n\n/**\n * Directive explicitly applied to affix action buttons inside form fields, inputs, or select fields.\n */\n@Directive({\n selector: '[talosAffixButton], [talos-affix-button]',\n host: {\n 'type': 'button',\n 'class': 'talos-affix-btn affix-interactive',\n '[class.talos-anim-spin]': 'animation() === \"spin\" || spinning()',\n '[class.talos-anim-spin-once]': 'animation() === \"spin-once\"',\n '[class.talos-anim-pop]': 'animation() === \"pop\" || popping()',\n '[class.talos-anim-shake]': 'animation() === \"shake\"',\n '[class.talos-anim-pulse]': 'animation() === \"pulse\"',\n '[class.talos-anim-bounce]': 'animation() === \"bounce\"',\n '[class.talos-feedback-success]': 'feedback() === \"success\"',\n '[class.talos-feedback-error]': 'feedback() === \"error\"',\n '[class.affix-anim-spin]': 'animation() === \"spin\" || spinning()',\n '[class.affix-anim-spin-once]': 'animation() === \"spin-once\"',\n '[class.affix-anim-pop]': 'animation() === \"pop\" || popping()',\n '[class.affix-anim-shake]': 'animation() === \"shake\"',\n '[class.affix-anim-pulse]': 'animation() === \"pulse\"',\n '[class.affix-anim-bounce]': 'animation() === \"bounce\"',\n '[class.affix-feedback-success]': 'feedback() === \"success\"',\n '[class.affix-feedback-error]': 'feedback() === \"error\"'\n }\n})\nexport class TalosAffixButtonDirective {\n /** Micro-interaction animation preset */\n readonly animation = input<AffixAnimation>('none');\n\n /** Convenience boolean signal for spinning icon / continuous refresh state */\n readonly spinning = input<boolean>(false);\n\n /** Convenience boolean signal for pop / scale bounce feedback */\n readonly popping = input<boolean>(false);\n\n /** Contextual temporary feedback state */\n readonly feedback = input<AffixFeedbackState>(null);\n}\n","import { NgModule } from '@angular/core';\nimport {\n TalosAffixButtonDirective,\n TalosPrefixDirective,\n TalosSuffixDirective,\n TalosTextPrefixDirective,\n TalosTextSuffixDirective\n} from './affix.directives';\n\n@NgModule({\n imports: [\n TalosPrefixDirective,\n TalosSuffixDirective,\n TalosTextPrefixDirective,\n TalosTextSuffixDirective,\n TalosAffixButtonDirective\n ],\n exports: [\n TalosPrefixDirective,\n TalosSuffixDirective,\n TalosTextPrefixDirective,\n TalosTextSuffixDirective,\n TalosAffixButtonDirective\n ]\n})\nexport class TalosAffixModule {}\n","export type PasswordStrengthLevel = 'very-weak' | 'weak' | 'fair' | 'good' | 'strong' | 'very-strong';\n\nexport type PasswordMeterVariant = 'segmented' | 'continuous';\n\nexport type PasswordInputSize = 'sm' | 'md' | 'lg';\n\n/**\n * Developer-configurable rule definition for password validation and strength scoring.\n */\nexport interface PasswordRule {\n /** Unique identifier for the rule */\n id: string;\n\n /** Human-readable description displayed in checklists or tooltips */\n label: string;\n\n /** Minimum character length requirement */\n minLength?: number;\n\n /** Regular expression pattern that must match */\n pattern?: RegExp;\n\n /** Custom validator function returning true when criteria is met */\n validator?: (password: string) => boolean;\n\n /** Optional weight or scoring contribution for this rule (default: 1) */\n weight?: number;\n\n /** Optional hint or helper text explaining this rule */\n hint?: string;\n}\n\n/**\n * Status of an individual evaluated rule.\n */\nexport interface PasswordRuleStatus {\n /** The rule evaluated */\n rule: PasswordRule;\n\n /** Whether the rule requirement was satisfied */\n passed: boolean;\n}\n\n/**\n * Result of a password strength evaluation.\n */\nexport interface PasswordStrengthResult {\n /** Overall score as a percentage (0 - 100) */\n score: number;\n\n /** Strength classification level */\n level: PasswordStrengthLevel;\n\n /** Localized or custom display label for the strength level */\n levelLabel: string;\n\n /** Number of rules satisfied */\n passedCount: number;\n\n /** Total number of evaluated rules */\n totalRules: number;\n\n /** Detailed list of each rule and its pass/fail state */\n rules: PasswordRuleStatus[];\n\n /** Whether all rules (or required criteria) are satisfied */\n isValid: boolean;\n}\n\n/**\n * Default rule set provided out-of-the-box.\n */\nexport const DEFAULT_PASSWORD_RULES: PasswordRule[] = [\n {\n id: 'min-length',\n label: 'At least 8 characters',\n minLength: 8,\n validator: (p: string) => p.length >= 8,\n weight: 1\n },\n {\n id: 'lowercase',\n label: 'At least 1 lowercase letter (a-z)',\n pattern: /[a-z]/,\n weight: 1\n },\n {\n id: 'uppercase',\n label: 'At least 1 uppercase letter (A-Z)',\n pattern: /[A-Z]/,\n weight: 1\n },\n {\n id: 'number',\n label: 'At least 1 number (0-9)',\n pattern: /[0-9]/,\n weight: 1\n },\n {\n id: 'special',\n label: 'At least 1 special character (!@#$%^&*)',\n pattern: /[^A-Za-z0-9]/,\n weight: 1\n }\n];\n\nexport const DEFAULT_STRENGTH_LABELS: Record<PasswordStrengthLevel, string> = {\n 'very-weak': 'Very Weak',\n 'weak': 'Weak',\n 'fair': 'Fair',\n 'good': 'Good',\n 'strong': 'Strong',\n 'very-strong': 'Very Strong'\n};\n","import {\n Component,\n ElementRef,\n ViewChild,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n output,\n signal,\n untracked\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n LucideLock,\n LucideEye,\n LucideEyeOff,\n LucideCheck,\n LucideX\n} from '@lucide/angular';\nimport {\n DEFAULT_PASSWORD_RULES,\n DEFAULT_STRENGTH_LABELS,\n PasswordMeterVariant,\n PasswordInputSize,\n PasswordRule,\n PasswordRuleStatus,\n PasswordStrengthLevel,\n PasswordStrengthResult\n} from './password-input.types';\n\nlet uniquePasswordId = 0;\n\n@Component({\n selector: 'talos-password-input, talos-password-field',\n imports: [\n LucideLock,\n LucideEye,\n LucideEyeOff,\n LucideCheck,\n LucideX\n ],\n templateUrl: './password-input.component.html',\n styleUrl: './password-input.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TalosPasswordInputComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'talos-password-host',\n '[class.is-disabled]': 'effectiveDisabled()',\n '[class.is-readonly]': 'readonly()',\n '[class.is-invalid]': 'effectiveInvalid()',\n '[class.is-focused]': 'isFocused()',\n '[class.password-sm]': 'size() === \"sm\"',\n '[class.password-md]': 'size() === \"md\"',\n '[class.password-lg]': 'size() === \"lg\"'\n }\n})\nexport class TalosPasswordInputComponent implements ControlValueAccessor {\n @ViewChild('inputEl') inputElementRef?: ElementRef<HTMLInputElement>;\n\n private readonly autoId = `talos-password-${++uniquePasswordId}`;\n\n // ─── Value & Sizing Inputs ──────────────────────────────────────────\n readonly value = input<string>('');\n readonly placeholder = input<string>('Enter password');\n readonly size = input<PasswordInputSize>('md');\n readonly disabled = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly invalid = input<boolean>(false);\n readonly id = input<string>('');\n readonly name = input<string>('');\n readonly autocomplete = input<string>('current-password');\n readonly ariaLabel = input<string>('Password');\n\n // ─── Visual & Prefix / Suffix Features ──────────────────────────────\n readonly showPrefixIcon = input<boolean>(true);\n readonly allowToggleMask = input<boolean>(true);\n readonly masked = input<boolean>(true);\n readonly maskToggleAriaLabel = input<string>('Toggle password visibility');\n\n // ─── Strength Meter & Rules Configuration ───────────────────────────\n readonly showStrengthMeter = input<boolean>(false);\n readonly meterVariant = input<PasswordMeterVariant>('segmented');\n readonly showStrengthLabel = input<boolean>(true);\n readonly showRuleList = input<boolean>(false);\n readonly rules = input<PasswordRule[] | undefined, PasswordRule[] | undefined>(DEFAULT_PASSWORD_RULES, {\n transform: (val) => val ?? DEFAULT_PASSWORD_RULES\n });\n readonly strengthLabels = input<Record<PasswordStrengthLevel, string> | undefined, Record<PasswordStrengthLevel, string> | undefined>(DEFAULT_STRENGTH_LABELS, {\n transform: (val) => val ?? DEFAULT_STRENGTH_LABELS\n });\n readonly strengthCalculator = input<((password: string, rules: PasswordRule[]) => PasswordStrengthResult) | undefined>(undefined);\n\n // ─── Outputs ────────────────────────────────────────────────────────\n readonly valueChange = output<string>();\n readonly maskChange = output<boolean>();\n readonly strengthChange = output<PasswordStrengthResult>();\n readonly inputFocus = output<FocusEvent>();\n readonly inputBlur = output<FocusEvent>();\n\n // ─── Internal Reactive State ────────────────────────────────────────\n protected readonly innerValue = signal<string>('');\n protected readonly isMasked = signal<boolean>(true);\n protected readonly isFocused = signal<boolean>(false);\n protected readonly formDisabled = signal<boolean>(false);\n\n private onChange: (val: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n readonly elementId = computed(() => this.id() || this.autoId);\n readonly strengthMeterId = computed(() => `${this.elementId()}-strength-meter`);\n\n readonly effectiveDisabled = computed(() => this.disabled() || this.formDisabled());\n readonly effectiveInvalid = computed(() => this.invalid());\n\n // ─── Strength Computation ───────────────────────────────────────────\n readonly strengthResult = computed<PasswordStrengthResult>(() => {\n const pwd = this.innerValue();\n const activeRules = this.rules() ?? DEFAULT_PASSWORD_RULES;\n const customCalc = this.strengthCalculator();\n\n if (customCalc) {\n return customCalc(pwd, activeRules);\n }\n\n return this.calculateStrength(pwd, activeRules);\n });\n\n /** Number of active segments for the 4-segment or 5-segment meter */\n readonly activeSegmentCount = computed<number>(() => {\n const score = this.strengthResult().score;\n if (score <= 0) return 0;\n if (score <= 25) return 1;\n if (score <= 50) return 2;\n if (score <= 75) return 3;\n return 4;\n });\n\n constructor() {\n // Sync external [value] input\n effect(() => {\n const val = this.value();\n untracked(() => {\n if (val !== undefined && val !== this.innerValue()) {\n this.innerValue.set(val);\n }\n });\n });\n\n // Sync external [masked] input\n effect(() => {\n const m = this.masked();\n untracked(() => {\n this.isMasked.set(m);\n });\n });\n\n // Emit strengthChange whenever strengthResult changes\n effect(() => {\n const res = this.strengthResult();\n untracked(() => {\n this.strengthChange.emit(res);\n });\n });\n }\n\n // ─── Mask Toggle ───────────────────────────────────────────────────\n toggleMask(): void {\n if (this.effectiveDisabled() || !this.allowToggleMask()) return;\n const next = !this.isMasked();\n this.isMasked.set(next);\n this.maskChange.emit(next);\n }\n\n // ─── Input Events ──────────────────────────────────────────────────\n protected onInput(event: Event): void {\n const input = event.target as HTMLInputElement;\n const val = input.value;\n this.innerValue.set(val);\n this.onChange(val);\n this.valueChange.emit(val);\n }\n\n protected onFocus(event: FocusEvent): void {\n this.isFocused.set(true);\n this.inputFocus.emit(event);\n }\n\n protected onBlur(event: FocusEvent): void {\n this.isFocused.set(false);\n this.onTouched();\n this.inputBlur.emit(event);\n }\n\n /** Focus the input programmatically */\n focus(): void {\n this.inputElementRef?.nativeElement.focus();\n }\n\n // ─── ControlValueAccessor ──────────────────────────────────────────\n writeValue(value: unknown): void {\n const stringVal = value == null ? '' : String(value);\n this.innerValue.set(stringVal);\n }\n\n registerOnChange(fn: (val: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled);\n }\n\n // ─── Default Strength Evaluation ───────────────────────────────────\n private calculateStrength(password: string, ruleList: PasswordRule[]): PasswordStrengthResult {\n const labels = this.strengthLabels() ?? DEFAULT_STRENGTH_LABELS;\n\n if (!password || ruleList.length === 0) {\n return {\n score: 0,\n level: 'very-weak',\n levelLabel: labels['very-weak'] ?? 'Very Weak',\n passedCount: 0,\n totalRules: ruleList.length,\n rules: ruleList.map(r => ({ rule: r, passed: false })),\n isValid: false\n };\n }\n\n let totalWeight = 0;\n let passedWeight = 0;\n let passedCount = 0;\n\n const evaluatedRules: PasswordRuleStatus[] = ruleList.map(r => {\n const weight = r.weight ?? 1;\n totalWeight += weight;\n\n let passed = false;\n if (r.validator) {\n passed = r.validator(password);\n } else if (r.pattern) {\n passed = r.pattern.test(password);\n } else if (r.minLength !== undefined) {\n passed = password.length >= r.minLength;\n }\n\n if (passed) {\n passedWeight += weight;\n passedCount++;\n }\n\n return { rule: r, passed };\n });\n\n const score = totalWeight > 0 ? Math.round((passedWeight / totalWeight) * 100) : 0;\n\n let level: PasswordStrengthLevel = 'very-weak';\n if (score === 0) {\n level = 'very-weak';\n } else if (score <= 25) {\n level = 'weak';\n } else if (score <= 50) {\n level = 'fair';\n } else if (score <= 75) {\n level = 'good';\n } else if (score < 100) {\n level = 'strong';\n } else {\n level = 'very-strong';\n }\n\n return {\n score,\n level,\n levelLabel: labels[level] ?? level,\n passedCount,\n totalRules: ruleList.length,\n rules: evaluatedRules,\n isValid: passedCount === ruleList.length\n };\n }\n}\n","<div class=\"talos-password-control-wrapper\">\n @if (showPrefixIcon()) {\n <span class=\"password-prefix-icon\" aria-hidden=\"true\">\n <svg lucideLock [size]=\"16\"></svg>\n </span>\n }\n\n <ng-content select=\"[prefix], [talosPrefix], [talosTextPrefix]\"></ng-content>\n\n <input\n #inputEl\n class=\"password-native-input\"\n [type]=\"isMasked() ? 'password' : 'text'\"\n [value]=\"innerValue()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"effectiveDisabled()\"\n [readOnly]=\"readonly()\"\n [attr.id]=\"elementId()\"\n [attr.name]=\"name() || null\"\n [attr.autocomplete]=\"autocomplete()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-invalid]=\"effectiveInvalid()\"\n [attr.aria-describedby]=\"showStrengthMeter() ? strengthMeterId() : null\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n />\n\n <ng-content select=\"[suffix], [talosSuffix], [talosPostfix], [talosTextSuffix], [talosTextPostfix]\"></ng-content>\n\n @if (allowToggleMask()) {\n <button\n type=\"button\"\n class=\"password-mask-toggle-btn\"\n [disabled]=\"effectiveDisabled()\"\n [attr.aria-label]=\"isMasked() ? 'Show password' : 'Hide password'\"\n [attr.title]=\"isMasked() ? 'Show password' : 'Hide password'\"\n (click)=\"toggleMask()\"\n tabindex=\"-1\"\n >\n @if (isMasked()) {\n <svg lucideEye [size]=\"16\" aria-hidden=\"true\"></svg>\n } @else {\n <svg lucideEyeOff [size]=\"16\" aria-hidden=\"true\"></svg>\n }\n </button>\n }\n</div>\n\n@if (showStrengthMeter()) {\n <div\n class=\"password-strength-container\"\n [attr.id]=\"strengthMeterId()\"\n [class.has-value]=\"!!innerValue()\"\n >\n <div class=\"password-strength-header\">\n @if (meterVariant() === 'segmented') {\n <div\n class=\"strength-meter-segments\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"strengthResult().score\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-valuetext]=\"strengthResult().levelLabel\"\n >\n <span\n class=\"meter-segment\"\n [class.active]=\"activeSegmentCount() >= 1\"\n [class]=\"'level-' + strengthResult().level\"\n ></span>\n <span\n class=\"meter-segment\"\n [class.active]=\"activeSegmentCount() >= 2\"\n [class]=\"'level-' + strengthResult().level\"\n ></span>\n <span\n class=\"meter-segment\"\n [class.active]=\"activeSegmentCount() >= 3\"\n [class]=\"'level-' + strengthResult().level\"\n ></span>\n <span\n class=\"meter-segment\"\n [class.active]=\"activeSegmentCount() >= 4\"\n [class]=\"'level-' + strengthResult().level\"\n ></span>\n </div>\n } @else {\n <div\n class=\"strength-meter-continuous\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"strengthResult().score\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-valuetext]=\"strengthResult().levelLabel\"\n >\n <div\n class=\"meter-continuous-bar\"\n [style.width.%]=\"strengthResult().score\"\n [class]=\"'level-' + strengthResult().level\"\n ></div>\n </div>\n }\n\n @if (showStrengthLabel()) {\n <span class=\"strength-label\" [class]=\"'level-' + strengthResult().level\">\n {{ strengthResult().levelLabel }}\n </span>\n }\n </div>\n\n @if (showRuleList()) {\n <ul class=\"password-rule-list\" aria-label=\"Password requirements\">\n @for (item of strengthResult().rules; track item.rule.id) {\n <li\n class=\"rule-item\"\n [class.is-passed]=\"item.passed\"\n [class.is-unmet]=\"!item.passed\"\n >\n <span class=\"rule-icon\" aria-hidden=\"true\">\n @if (item.passed) {\n <svg lucideCheck [size]=\"13\"></svg>\n } @else {\n <svg lucideX [size]=\"13\"></svg>\n }\n </span>\n <span class=\"rule-text\">{{ item.rule.label }}</span>\n </li>\n }\n </ul>\n }\n </div>\n}\n","import { Directive, ElementRef, inject, input, output, signal } from '@angular/core';\nimport { PasswordInputSize } from './password-input.types';\n\n@Directive({\n selector: 'input[talosPasswordInput], input[talosPassword], input[talos-password-input]',\n host: {\n 'class': 'talos-input talos-password-input-directive',\n '[type]': 'masked() ? \"password\" : \"text\"',\n '[class.input-sm]': 'size() === \"sm\"',\n '[class.input-md]': 'size() === \"md\"',\n '[class.input-lg]': 'size() === \"lg\"',\n '[class.is-invalid]': 'invalid()',\n '[attr.aria-invalid]': 'invalid()'\n }\n})\nexport class TalosPasswordInputDirective {\n private readonly elementRef = inject(ElementRef<HTMLInputElement>);\n\n /** Sizing variation for the input */\n readonly size = input<PasswordInputSize>('md');\n\n /** Whether the input is in an invalid error state */\n readonly invalid = input<boolean>(false);\n\n /** Whether the password characters are masked */\n readonly masked = input<boolean>(true);\n\n /** Emitted when masked state changes */\n readonly maskChange = output<boolean>();\n\n /** Internal toggle method */\n toggleMask(): void {\n const nextState = !this.masked();\n this.maskChange.emit(nextState);\n }\n\n /** Focus the underlying input element */\n focus(): void {\n this.elementRef.nativeElement?.focus();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { TalosPasswordInputComponent } from './password-input.component';\nimport { TalosPasswordInputDirective } from './password-input.directive';\n\n@NgModule({\n imports: [TalosPasswordInputComponent, TalosPasswordInputDirective],\n exports: [TalosPasswordInputComponent, TalosPasswordInputDirective]\n})\nexport class TalosPasswordInputModule {}\n","import {\n AfterContentChecked,\n Component,\n ElementRef,\n computed,\n inject,\n input,\n signal\n} from '@angular/core';\n\nlet formFieldUniqueId = 0;\n\n@Component({\n selector: 'talos-form-field',\n templateUrl: './form-field.component.html',\n styleUrl: './form-field.component.scss',\n host: {\n 'class': 'talos-form-field-host',\n '[class.is-floating]': 'isFloatingMode()',\n '[class.is-floated]': 'isFloated()',\n '[class.is-focused]': 'isFocused()',\n '[class.is-disabled]': 'disabled()',\n '[class.is-invalid]': 'invalid() || !!error()',\n '[class.is-textarea]': 'isTextarea()',\n '[class.has-prefix]': 'hasPrefix()',\n '[class.has-suffix]': 'hasSuffix()',\n '[class.form-field-sm]': 'size() === \"sm\"',\n '[class.form-field-md]': 'size() === \"md\"',\n '[class.form-field-lg]': 'size() === \"lg\"',\n '(focusin)': 'onFocusIn()',\n '(focusout)': 'onFocusOut()',\n '(input)': 'onInput()'\n }\n})\nexport class TalosFormFieldComponent implements AfterContentChecked {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n // Signal Inputs\n readonly label = input<string>('');\n readonly floating = input<boolean>(false);\n readonly floatingLabel = input<boolean>(false);\n readonly hint = input<string>('');\n readonly error = input<string>('');\n readonly required = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly invalid = input<boolean>(false);\n readonly size = input<'sm' | 'md' | 'lg'>('md');\n readonly forId = input<string>('');\n\n // Internal state\n readonly isFocused = signal<boolean>(false);\n readonly hasValue = signal<boolean>(false);\n readonly isTextarea = signal<boolean>(false);\n readonly hasPrefix = signal<boolean>(false);\n readonly hasSuffix = signal<boolean>(false);\n\n private readonly autoId = `talos-field-${++formFieldUniqueId}`;\n readonly inputId = computed(() => this.forId() || `${this.autoId}-input`);\n\n readonly isFloatingMode = computed(() => this.floating() || this.floatingLabel());\n\n readonly isFloated = computed(() => {\n if (!this.isFloatingMode()) {\n return false;\n }\n return this.isFocused() || this.hasValue();\n });\n\n ngAfterContentChecked(): void {\n this.checkValue();\n }\n\n onFocusIn(): void {\n this.isFocused.set(true);\n this.checkValue();\n }\n\n onFocusOut(): void {\n this.isFocused.set(false);\n this.checkValue();\n }\n\n onInput(): void {\n this.checkValue();\n }\n\n onLabelClick(): void {\n const root = this.elementRef.nativeElement as HTMLElement;\n const inputEl = root.querySelector('input, textarea, select, [tabindex=\"0\"]') as HTMLElement | null;\n if (inputEl) {\n inputEl.focus();\n }\n }\n\n checkValue(): void {\n const root = this.elementRef.nativeElement as HTMLElement;\n const textareaEl = root.querySelector('textarea');\n this.isTextarea.set(!!textareaEl);\n\n const prefixEl = root.querySelector<HTMLElement>(\n '[talosPrefix], [talosTextPrefix], [talos-prefix], [talos-text-prefix], [talosLead], [talosStart], .talos-input-prefix, .password-prefix-icon'\n );\n this.hasPrefix.set(!!prefixEl);\n\n const suffixEl = root.querySelector<HTMLElement>(\n '[talosSuffix], [talosPostfix], [talosTextSuffix], [talosTextPostfix], [talos-suffix], [talos-postfix], [talosTrail], [talosEnd], .talos-input-suffix, .password-mask-toggle-btn'\n );\n this.hasSuffix.set(!!suffixEl);\n\n const inputEl = root.querySelector<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>('input, textarea, select');\n if (inputEl) {\n this.hasValue.set(!!inputEl.value);\n }\n\n if (prefixEl) {\n const prefixWidth = prefixEl.getBoundingClientRect().width;\n if (prefixWidth > 0) {\n // Base control padding (10px / 0.625rem) + prefix width + inner spacing (6px)\n root.style.setProperty('--talos-prefix-offset', `${Math.round(prefixWidth + 16)}px`);\n }\n } else {\n root.style.removeProperty('--talos-prefix-offset');\n }\n\n if (suffixEl) {\n const suffixWidth = suffixEl.getBoundingClientRect().width;\n if (suffixWidth > 0) {\n // Base control padding (10px / 0.625rem) + suffix width + inner spacing (6px)\n root.style.setProperty('--talos-suffix-offset', `${Math.round(suffixWidth + 16)}px`);\n }\n } else {\n root.style.removeProperty('--talos-suffix-offset');\n }\n }\n}\n","<div class=\"form-field-wrapper\" [class.has-floating-label]=\"isFloatingMode()\">\n @if (label() && !isFloatingMode()) {\n <label class=\"talos-field-label\" [attr.for]=\"inputId()\" (click)=\"onLabelClick()\">\n {{ label() }}\n @if (required()) {\n <span class=\"required-star\" aria-hidden=\"true\">*</span>\n }\n </label>\n }\n\n <div class=\"form-field-control-container\">\n <ng-content></ng-content>\n\n @if (label() && isFloatingMode()) {\n <label\n class=\"talos-floating-label\"\n [class.is-floated]=\"isFloated()\"\n [attr.for]=\"inputId()\"\n (click)=\"onLabelClick()\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"required-star\" aria-hidden=\"true\">*</span>\n }\n </label>\n }\n </div>\n\n @if (error()) {\n <span class=\"field-error\" role=\"alert\">{{ error() }}</span>\n } @else if (hint()) {\n <span class=\"field-help\">{{ hint() }}</span>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { TalosFormFieldComponent } from './form-field.component';\n\n@NgModule({\n imports: [TalosFormFieldComponent],\n exports: [TalosFormFieldComponent]\n})\nexport class TalosFormFieldModule {}\n","import {\n Directive,\n ElementRef,\n computed,\n contentChildren,\n forwardRef,\n inject,\n input,\n output,\n signal\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CheckboxSize, CheckboxVariant } from '../checkbox/checkbox.directive';\n\nexport type CheckboxDirection = 'vertical' | 'horizontal';\n\nlet groupCounter = 0;\n\n@Directive({\n selector: '[talosCheckboxGroup], [talos-checkbox-group]',\n exportAs: 'talosCheckboxGroup',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TalosCheckboxGroupDirective),\n multi: true\n }\n ],\n host: {\n 'class': 'talos-checkbox-group',\n 'role': 'group',\n '[class.direction-vertical]': 'direction() === \"vertical\"',\n '[class.direction-horizontal]': 'direction() === \"horizontal\"',\n '[class.is-disabled]': 'effectiveDisabled()',\n '[class.is-invalid]': 'invalid()'\n }\n})\nexport class TalosCheckboxGroupDirective implements ControlValueAccessor {\n readonly elementRef = inject(ElementRef<HTMLElement>);\n\n /** Name attribute for the checkbox group */\n readonly name = input<string>(`talos-checkbox-group-${++groupCounter}`);\n\n /** Size applied to all child checkboxes unless overridden */\n readonly size = input<CheckboxSize>('md');\n\n /** Visual color variant applied to all child checkboxes */\n readonly variant = input<CheckboxVariant>('primary');\n\n /** Layout direction of checkboxes within group */\n readonly direction = input<CheckboxDirection>('vertical');\n\n /** Whether the entire checkbox group is disabled */\n readonly disabled = input<boolean>(false);\n\n /** Whether the group is in an invalid error state */\n readonly invalid = input<boolean>(false);\n\n /** Emits when group selection array changes */\n readonly valueChange = output<any[]>();\n\n // Internal state\n readonly value = signal<any[]>([]);\n readonly isDisabled = signal<boolean>(false);\n readonly isTouched = signal<boolean>(false);\n\n /** Effective disabled state taking into account CVA and input */\n readonly effectiveDisabled = computed(() => this.disabled() || this.isDisabled());\n\n private onChange: (val: any[]) => void = () => { };\n private onTouched: () => void = () => { };\n\n // --- ControlValueAccessor Interface ---\n writeValue(val: any[]): void {\n if (Array.isArray(val)) {\n this.value.set([...val]);\n } else if (val === null || val === undefined) {\n this.value.set([]);\n } else {\n this.value.set([val]);\n }\n }\n\n registerOnChange(fn: (val: any[]) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled);\n }\n\n /** Helper to check if a specific item value is currently selected in group */\n isValueSelected(val: any): boolean {\n return this.value().includes(val);\n }\n\n /** Toggles the selection status of a value in the group array */\n toggleValue(val: any): void {\n if (this.effectiveDisabled() || val === undefined) return;\n\n const current = this.value();\n let updated: any[];\n\n if (current.includes(val)) {\n updated = current.filter((v) => v !== val);\n } else {\n updated = [...current, val];\n }\n\n this.value.set(updated);\n this.onChange(updated);\n this.valueChange.emit(updated);\n this.markAsTouched();\n }\n\n /** Selects all passed values */\n selectAll(values: any[]): void {\n if (this.effectiveDisabled()) return;\n const uniqueValues = Array.from(new Set(values));\n this.value.set(uniqueValues);\n this.onChange(uniqueValues);\n this.valueChange.emit(uniqueValues);\n this.markAsTouched();\n }\n\n /** Deselects all values */\n deselectAll(): void {\n if (this.effectiveDisabled()) return;\n this.value.set([]);\n this.onChange([]);\n this.valueChange.emit([]);\n this.markAsTouched();\n }\n\n markAsTouched(): void {\n if (!this.isTouched()) {\n this.isTouched.set(true);\n this.onTouched();\n }\n }\n}\n","import {\n Directive,\n ElementRef,\n computed,\n effect,\n inject,\n input,\n output\n} from '@angular/core';\nimport { TalosCheckboxGroupDirective } from '../checkbox-group/checkbox-group.directive';\n\nexport type CheckboxSize = 'sm' | 'md' | 'lg';\nexport type CheckboxVariant = 'primary' | 'secondary' | 'success' | 'danger';\n\n@Directive({\n selector: 'input[type=\"checkbox\"][talosCheckbox], input[type=\"checkbox\"][talos-checkbox]',\n exportAs: 'talosCheckbox',\n host: {\n 'class': 'talos-checkbox',\n '[class.checkbox-sm]': 'effectiveSize() === \"sm\"',\n '[class.checkbox-md]': 'effectiveSize() === \"md\"',\n '[class.checkbox-lg]': 'effectiveSize() === \"lg\"',\n '[class.talos-checkbox-primary]': 'effectiveVariant() === \"primary\"',\n '[class.talos-checkbox-secondary]': 'effectiveVariant() === \"secondary\"',\n '[class.talos-checkbox-success]': 'effectiveVariant() === \"success\"',\n '[class.talos-checkbox-danger]': 'effectiveVariant() === \"danger\"',\n '[class.is-invalid]': 'effectiveInvalid()',\n '[class.is-indeterminate]': 'indeterminate()',\n '[checked]': 'isChecked()',\n '[disabled]': 'effectiveDisabled()',\n '[indeterminate]': 'indeterminate()',\n '(change)': 'onNativeChange($event)'\n }\n})\nexport class TalosCheckboxDirective {\n private readonly elementRef = inject(ElementRef<HTMLInputElement>);\n readonly groupDir = inject(TalosCheckboxGroupDirective, { optional: true });\n\n /** Value associated with this checkbox when part of a group */\n readonly value = input<any>(undefined);\n\n /** Standalone checked state */\n readonly checked = input<boolean>(false);\n\n /** Sizing variation for the checkbox */\n readonly size = input<CheckboxSize>('md');\n\n /** Visual color variant for the checkbox */\n readonly variant = input<CheckboxVariant>('primary');\n\n /** Whether the checkbox is disabled */\n readonly disabled = input<boolean>(false);\n\n /** Whether the checkbox is in an invalid error state */\n readonly invalid = input<boolean>(false);\n\n /** Whether the checkbox is in an indeterminate visual & property state */\n readonly indeterminate = input<boolean>(false);\n\n /** Output event emitted when checked state changes */\n readonly checkedChange = output<boolean>();\n\n // Computed state\n readonly effectiveSize = computed(() => {\n return this.groupDir ? this.groupDir.size() : this.size();\n });\n\n readonly effectiveVariant = computed(() => {\n return this.groupDir ? this.groupDir.variant() : this.variant();\n });\n\n readonly effectiveDisabled = computed(() => {\n return this.disabled() || (this.groupDir ? this.groupDir.effectiveDisabled() : false);\n });\n\n readonly effectiveInvalid = computed(() => {\n return this.invalid() || (this.groupDir ? this.groupDir.invalid() : false);\n });\n\n readonly isChecked = computed(() => {\n if (this.groupDir && this.value() !== undefined) {\n return this.groupDir.isValueSelected(this.value());\n }\n return this.checked();\n });\n\n constructor() {\n // Keep native input element indeterminate property synced\n effect(() => {\n const isIndeterminate = this.indeterminate();\n if (this.elementRef.nativeElement) {\n this.elementRef.nativeElement.indeterminate = isIndeterminate;\n }\n });\n }\n\n onNativeChange(event: Event): void {\n if (this.effectiveDisabled()) return;\n\n const target = event.target as HTMLInputElement;\n const isChecked = target.checked;\n\n if (this.groupDir && this.value() !== undefined) {\n this.groupDir.toggleValue(this.value());\n }\n\n this.checkedChange.emit(isChecked);\n }\n}\n","import { Component, inject, input, output } from '@angular/core';\nimport { CheckboxDirection, TalosCheckboxGroupDirective } from './checkbox-group.directive';\nimport { CheckboxSize, CheckboxVariant } from '../checkbox/checkbox.directive';\n\n@Component({\n selector: 'talos-checkbox-group',\n template: '<ng-content></ng-content>',\n hostDirectives: [\n {\n directive: TalosCheckboxGroupDirective,\n inputs: ['name', 'size', 'variant', 'direction', 'disabled', 'invalid'],\n outputs: ['valueChange']\n }\n ]\n})\nexport class TalosCheckboxGroupComponent {\n readonly groupDir = inject(TalosCheckboxGroupDirective, { self: true });\n\n // Inputs forwarded via hostDirectives or component bindings\n readonly name = input<string>(this.groupDir.name());\n readonly size = input<CheckboxSize>('md');\n readonly variant = input<CheckboxVariant>('primary');\n readonly direction = input<CheckboxDirection>('vertical');\n readonly disabled = input<boolean>(false);\n readonly invalid = input<boolean>(false);\n\n readonly valueChange = output<any[]>();\n}\n","import {\n Directive,\n ElementRef,\n computed,\n effect,\n inject,\n input\n} from '@angular/core';\nimport { TalosCheckboxGroupDirective } from '../checkbox-group/checkbox-group.directive';\nimport { TalosCheckboxDirective } from '../checkbox/checkbox.directive';\n\n@Directive({\n selector: 'input[type=\"checkbox\"][talosCheckboxParent], input[type=\"checkbox\"][talos-checkbox-parent], input[type=\"checkbox\"][talosSelectAll], input[type=\"checkbox\"][talos-select-all]',\n exportAs: 'talosCheckboxParent',\n host: {\n '[checked]': 'isAllSelected()',\n '[indeterminate]': 'isIndeterminate()',\n '[class.is-indeterminate]': 'isIndeterminate()',\n '(change)': 'onParentToggle($event)'\n }\n})\nexport class TalosCheckboxParentDirective {\n private readonly elementRef = inject(ElementRef<HTMLInputElement>);\n private readonly checkboxDir = inject(TalosCheckboxDirective, { optional: true, self: true });\n private readonly ancestorGroup = inject(TalosCheckboxGroupDirective, { optional: true });\n\n /** Optional explicit reference to a TalosCheckboxGroupDirective instance */\n readonly group = input<TalosCheckboxGroupDirective | undefined>(undefined);\n\n /** List of all selectable values for the parent checkbox to manage */\n readonly values = input<any[]>([]);\n\n /** Effective active checkbox group */\n readonly targetGroup = computed(() => this.group() || this.ancestorGroup);\n\n /** Whether all target values are selected */\n readonly isAllSelected = computed(() => {\n const grp = this.targetGroup();\n const allVals = this.values();\n if (!grp || allVals.length === 0) return false;\n\n const selectedVals = grp.value();\n return allVals.every((val) => selectedVals.includes(val));\n });\n\n /** Whether some (but not all) target values are selected */\n readonly isIndeterminate = computed(() => {\n const grp = this.targetGroup();\n const allVals = this.values();\n if (!grp || allVals.length === 0) return false;\n\n const selectedVals = grp.value();\n const count = allVals.filter((val) => selectedVals.includes(val)).length;\n return count > 0 && count < allVals.length;\n });\n\n constructor() {\n // Keep element's indeterminate property synced dynamically\n effect(() => {\n const indeterminate = this.isIndeterminate();\n if (this.elementRef.nativeElement) {\n this.elementRef.nativeElement.indeterminate = indeterminate;\n }\n });\n }\n\n onParentToggle(event: Event): void {\n const grp = this.targetGroup();\n const allVals = this.values();\n if (!grp || allVals.length === 0) return;\n\n if (this.isAllSelected()) {\n // If currently all selected, deselect all values managed by this parent\n const currentSelected = grp.value();\n const remaining = currentSelected.filter((v) => !allVals.includes(v));\n grp.selectAll(remaining);\n } else {\n // If none or indeterminate, select all values managed by this parent\n const currentSelected = grp.value();\n const updated = Array.from(new Set([...currentSelected, ...allVals]));\n grp.selectAll(updated);\n }\n }\n}\n","import {\n Component,\n ElementRef,\n computed,\n forwardRef,\n inject,\n input,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CheckboxSize, CheckboxVariant, TalosCheckboxDirective } from './checkbox.directive';\nimport { TalosCheckboxGroupDirective } from '../checkbox-group/checkbox-group.directive';\n\nlet checkboxCounter = 0;\n\n@Component({\n selector: 'talos-checkbox',\n imports: [TalosCheckboxDirective],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TalosCheckboxComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'talos-checkbox-host'\n },\n template: `\n <label class=\"talos-checkbox-wrapper\" [class.is-disabled]=\"effectiveDisabled()\">\n <input\n #inputEl\n type=\"checkbox\"\n talosCheckbox\n [value]=\"value()\"\n [checked]=\"isChecked()\"\n [size]=\"effectiveSize()\"\n [variant]=\"effectiveVariant()\"\n [disabled]=\"effectiveDisabled()\"\n [invalid]=\"effectiveInvalid()\"\n [indeterminate]=\"indeterminate()\"\n (checkedChange)=\"onDirectiveCheckedChange($event)\"\n />\n <span class=\"talos-checkbox-label\">\n <ng-content></ng-content>\n </span>\n </label>\n `\n})\nexport class TalosCheckboxComponent implements ControlValueAccessor {\n private readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n readonly groupDir = inject(TalosCheckboxGroupDirective, { optional: true });\n\n /** Value associated with this checkbox when part of a group */\n readonly value = input<any>(undefined);\n\n /** Standalone checked state */\n readonly checked = input<boolean>(false);\n\n /** Sizing variation for the checkbox */\n readonly size = input<CheckboxSize>('md');\n\n /** Visual color variant for the checkbox */\n readonly variant = input<CheckboxVariant>('primary');\n\n /** Whether the checkbox is disabled */\n readonly disabled = input<boolean>(false);\n\n /** Whether the checkbox is in an invalid error state */\n readonly invalid = input<boolean>(false);\n\n /** Whether the checkbox is in an indeterminate visual & property state */\n readonly indeterminate = input<boolean>(false);\n\n /** Emitted when checked state changes */\n readonly checkedChange = output<boolean>();\n\n // Internal reactive state for CVA\n readonly internalValue = signal<boolean>(false);\n readonly isDisabled = signal<boolean>(false);\n readonly isTouched = signal<boolean>(false);\n\n // Effective state computations\n readonly effectiveSize = computed(() => {\n return this.groupDir ? this.groupDir.size() : this.size();\n });\n\n readonly effectiveVariant = computed(() => {\n return this.groupDir ? this.groupDir.variant() : this.variant();\n });\n\n readonly effectiveDisabled = computed(() => {\n return this.disabled() || this.isDisabled() || (this.groupDir ? this.groupDir.effectiveDisabled() : false);\n });\n\n readonly effectiveInvalid = computed(() => {\n return this.invalid() || (this.groupDir ? this.groupDir.invalid() : false);\n });\n\n readonly isChecked = computed(() => {\n if (this.groupDir && this.value() !== undefined) {\n return this.groupDir.isValueSelected(this.value());\n }\n return this.internalValue() || this.checked();\n });\n\n private onChange: (val: boolean) => void = () => { };\n private onTouched: () => void = () => { };\n\n // --- ControlValueAccessor Implementation ---\n writeValue(val: boolean): void {\n this.internalValue.set(!!val);\n }\n\n registerOnChange(fn: (val: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled);\n }\n\n onDirectiveCheckedChange(isChecked: boolean): void {\n if (this.effectiveDisabled()) return;\n\n this.internalValue.set(isChecked);\n this.onChange(isChecked);\n this.checkedChange.emit(isChecked);\n this.markAsTouched();\n }\n\n markAsTouched(): void {\n if (!this.isTouched()) {\n this.isTouched.set(true);\n this.onTouched();\n }\n }\n\n /** Focuses the native HTML input element */\n focusInput(): void {\n this.inputRef()?.nativeElement.focus();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { TalosCheckboxDirective } from './checkbox/checkbox.directive';\nimport { TalosCheckboxGroupDirective } from './checkbox-group/checkbox-group.directive';\nimport { TalosCheckboxGroupComponent } from './checkbox-group/checkbox-group.component';\nimport { TalosCheckboxParentDirective } from './checkbox-parent/checkbox-parent.directive';\nimport { TalosCheckboxComponent } from './checkbox/checkbox.component';\n\n/**\n * Convenience NgModule wrapping standalone checkbox directives and components.\n * \n * Allows developers who prefer `TalosCheckboxModule` to import all checkbox utilities in one go.\n */\n@NgModule({\n imports: [\n TalosCheckboxDirective,\n TalosCheckboxGroupDirective,\n TalosCheckboxGroupComponent,\n TalosCheckboxParentDirective,\n TalosCheckboxComponent\n ],\n exports: [\n TalosCheckboxDirective,\n TalosCheckboxGroupDirective,\n TalosCheckboxGroupComponent,\n TalosCheckboxParentDirective,\n TalosCheckboxComponent\n ]\n})\nexport class TalosCheckboxModule { }\n","/**\n * Shared date utility helpers wrapping date-fns.\n *\n * All functions are pure and tree-shakeable.\n * Moment.js tokens (YYYY, DD, etc.) are automatically normalised to the\n * Unicode/UTS-35 tokens that date-fns expects (yyyy, dd, etc.).\n */\n\nimport { format as dfFormat, isValid as dfIsValid, parse as dfParse } from 'date-fns';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Token normalisation\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Converts Moment.js format tokens to their date-fns UTS-35 equivalents.\n * This lets consumers continue passing legacy strings like 'YYYY-MM-DD'\n * without any configuration change.\n *\n * Key differences handled:\n * - YYYY → yyyy (calendar year, not ISO week year)\n * - YY → yy (2-digit year)\n * - DD → dd (day of month, not day of year)\n * - D → d (day of month, not day of year)\n * - dddd → EEEE (full weekday name)\n * - ddd → EEE (abbreviated weekday)\n * - A → a (AM/PM)\n */\nexport function normalizeDateFnsToken(fmt: string): string {\n return fmt\n .replace(/YYYY/g, 'yyyy')\n .replace(/YY/g, 'yy')\n .replace(/\\bDD\\b/g, 'dd')\n .replace(/\\bD\\b/g, 'd')\n .replace(/dddd/g, 'EEEE')\n .replace(/ddd/g, 'EEE')\n .replace(/\\bA\\b/g, 'a');\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Formatting\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Format a Date value with automatic Moment→date-fns token normalisation.\n * Returns an empty string for null/undefined/invalid input.\n */\nexport function formatDate(date: Date | null | undefined, fmt: string): string {\n if (!date || !dfIsValid(date)) return '';\n return dfFormat(date, normalizeDateFnsToken(fmt));\n}\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Parsing\n// ─────────────────────────────────────────────────────────────────────────────\n\nconst FALLBACK_FORMATS = [\n 'yyyy-MM-dd HH:mm:ss',\n 'yyyy-MM-dd HH:mm',\n 'yyyy-MM-dd hh:mm a',\n 'yyyy-MM-dd',\n 'MM/dd/yyyy HH:mm',\n 'MM/dd/yyyy',\n 'dd/MM/yyyy',\n 'yyyy/MM/dd',\n 'YYYY-MM-DD HH:mm:ss',\n 'YYYY-MM-DD HH:mm',\n 'YYYY-MM-DD'\n];\n\n/**\n * Attempt to parse a value into a valid Date, trying multiple format strings.\n * Returns null for blank/falsy input or unparseable strings.\n *\n * @param val Raw value from form control (string | Date | number | null | undefined)\n * @param formats Optional array of format strings to try first (Moment tokens OK)\n */\nexport function parseFlexibleDate(\n val: unknown,\n formats: string[] = []\n): Date | null {\n if (val === null || val === undefined || val === '') return null;\n\n // Already a Date\n if (val instanceof Date) {\n return dfIsValid(val) ? val : null;\n }\n\n // Number (unix ms timestamp)\n if (typeof val === 'number') {\n const d = new Date(val);\n return dfIsValid(d) ? d : null;\n }\n\n // String — try explicit formats first, then fallbacks\n if (typeof val === 'string') {\n const allFormats = [...formats, ...FALLBACK_FORMATS];\n const referenceDate = new Date();\n\n for (const fmt of allFormats) {\n const normFmt = normalizeDateFnsToken(fmt);\n try {\n const parsed = dfParse(val, normFmt, referenceDate);\n if (dfIsValid(parsed) && parsed.getFullYear() > 1900) {\n return parsed;\n }\n } catch {\n // try next format\n }\n }\n\n // Last resort — ISO / native Date constructor\n const native = new Date(val);\n return dfIsValid(native) ? native : null;\n }\n\n return null;\n}\n","import {\n Component,\n ElementRef,\n ViewChild,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n output,\n signal\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition, OverlayModule } from '@angular/cdk/overlay';\nimport {\n addDays,\n addMonths,\n addWeeks,\n addYears,\n endOfDay,\n endOfMonth,\n getDate,\n getHours,\n getMinutes,\n getMonth,\n getSeconds,\n getYear,\n isAfter,\n isBefore,\n isSameDay,\n isSameMonth,\n isValid,\n set,\n setMonth,\n setYear,\n startOfDay,\n startOfMonth,\n startOfWeek,\n subDays,\n subMonths,\n subWeeks,\n subYears\n} from 'date-fns';\nimport { formatDate, parseFlexibleDate } from '@weeehaoooz/talos-ui/core';\n\nexport interface CalendarDay {\n date: Date;\n dayNumber: number;\n isCurrentMonth: boolean;\n isToday: boolean;\n isSelected: boolean;\n isDisabled: boolean;\n isFocused: boolean;\n}\n\nexport interface CalendarMonth {\n name: string;\n monthIndex: number;\n isSelected: boolean;\n isCurrentMonth: boolean;\n isDisabled: boolean;\n}\n\nexport interface CalendarYear {\n year: number;\n isSelected: boolean;\n isCurrentYear: boolean;\n isDisabled: boolean;\n}\n\nlet uniqueDatePickerId = 0;\n\n@Component({\n selector: 'talos-date-picker',\n imports: [OverlayModule, CdkConnectedOverlay, CdkOverlayOrigin],\n templateUrl: './date-picker.component.html',\n styleUrl: './date-picker.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'talos-datepicker-host',\n '[class.is-open]': 'isOpen()',\n '[class.is-disabled]': 'effectiveDisabled()',\n '[class.has-label]': '!!label()',\n '[class.is-floating]': 'isFloatingMode()',\n '[class.is-floated]': 'isFloated()',\n '[class.datepicker-sm]': 'size() === \"sm\"',\n '[class.datepicker-md]': 'size() === \"md\"',\n '[class.datepicker-lg]': 'size() === \"lg\"',\n '(keydown)': 'onKeyDown($event)',\n '(document:click)': 'onDocumentClick($event)'\n }\n})\nexport class DatePickerComponent implements ControlValueAccessor {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n // Signal Inputs\n readonly placeholder = input<string>('Select date');\n readonly label = input<string>('');\n readonly floatingLabel = input<boolean>(false);\n readonly floating = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly clearable = input<boolean>(true);\n readonly size = input<'sm' | 'md' | 'lg'>('md');\n readonly displayFormat = input<string>('');\n readonly valueFormat = input<string>(''); // 'yyyy-MM-dd', 'yyyy-MM-dd HH:mm', 'date', or custom format tokens\n readonly showTime = input<boolean>(false);\n readonly use24Hour = input<boolean>(true);\n readonly showSeconds = input<boolean>(false);\n readonly minuteStep = input<number>(1);\n readonly minDate = input<string | Date | number | null>(null);\n readonly maxDate = input<string | Date | number | null>(null);\n readonly firstDayOfWeek = input<number>(0); // 0 = Sunday, 1 = Monday\n readonly filterDate = input<((date: Date) => boolean) | null>(null);\n\n // Signal Outputs\n readonly dateChange = output<unknown>();\n readonly opened = output<void>();\n readonly closed = output<void>();\n\n // Element Refs\n @ViewChild('triggerEl') triggerEl?: ElementRef<HTMLDivElement>;\n @ViewChild('inputEl') inputEl?: ElementRef<HTMLInputElement>;\n\n // CDK Overlay Flexible Positioning Strategy\n readonly positions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 4\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -4\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 4\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -4\n }\n ];\n\n // Component unique IDs for accessibility\n readonly componentId = `talos-datepicker-${uniqueDatePickerId++}`;\n readonly dialogId = `${this.componentId}-dialog`;\n\n // Component Internal State Signals\n readonly selectedDate = signal<Date | null>(null);\n readonly viewDate = signal<Date>(new Date());\n readonly viewMode = signal<'day' | 'month' | 'year'>('day');\n readonly isOpen = signal<boolean>(false);\n readonly isFocused = signal<boolean>(false);\n readonly isDisabledSignal = signal<boolean>(false);\n readonly isTouched = signal<boolean>(false);\n readonly focusedDate = signal<Date | null>(null);\n readonly inputText = signal<string>('');\n\n // Draft time signals (active when showTime is true)\n readonly draftHour = signal<number>(new Date().getHours());\n readonly draftMinute = signal<number>(new Date().getMinutes());\n readonly draftSecond = signal<number>(new Date().getSeconds());\n\n // Computed state\n readonly isFloatingMode = computed(() => this.floatingLabel() || this.floating());\n readonly isFloated = computed(() => {\n if (!this.isFloatingMode()) return false;\n return this.isOpen() || this.isFocused() || !!this.inputText() || this.selectedDate() !== null;\n });\n readonly effectiveDisabled = computed(() => this.disabled() || this.isDisabledSignal());\n\n readonly effectiveDisplayFormat = computed(() => {\n const fmt = this.displayFormat();\n if (fmt) return fmt;\n return this.showTime() ? 'yyyy-MM-dd HH:mm' : 'yyyy-MM-dd';\n });\n\n readonly effectiveValueFormat = computed(() => {\n const fmt = this.valueFormat();\n if (fmt) return fmt;\n return this.showTime() ? 'yyyy-MM-dd HH:mm' : 'yyyy-MM-dd';\n });\n\n readonly formattedValue = computed(() => {\n const sel = this.selectedDate();\n if (!sel || !isValid(sel)) {\n return '';\n }\n return formatDate(sel, this.effectiveDisplayFormat());\n });\n\n readonly displayHour = computed(() => {\n const h = this.draftHour();\n if (this.use24Hour()) {\n return h.toString().padStart(2, '0');\n }\n const h12 = h % 12 === 0 ? 12 : h % 12;\n return h12.toString().padStart(2, '0');\n });\n\n readonly displayMinute = computed(() => {\n return this.draftMinute().toString().padStart(2, '0');\n });\n\n readonly displaySecond = computed(() => {\n return this.draftSecond().toString().padStart(2, '0');\n });\n\n readonly meridiem = computed<'AM' | 'PM'>(() => {\n return this.draftHour() >= 12 ? 'PM' : 'AM';\n });\n\n readonly parsedMinDate = computed(() => {\n const min = this.minDate();\n if (!min) return null;\n const d = parseFlexibleDate(min);\n return d && isValid(d) ? (this.showTime() ? d : startOfDay(d)) : null;\n });\n\n readonly parsedMaxDate = computed(() => {\n const max = this.maxDate();\n if (!max) return null;\n const d = parseFlexibleDate(max);\n return d && isValid(d) ? (this.showTime() ? d : endOfDay(d)) : null;\n });\n\n readonly weekDayNames = computed(() => {\n const names: string[] = [];\n const firstDay = (this.firstDayOfWeek() % 7) as 0 | 1 | 2 | 3 | 4 | 5 | 6;\n const base = startOfWeek(new Date(), { weekStartsOn: firstDay });\n for (let i = 0; i < 7; i++) {\n names.push(formatDate(addDays(base, i), 'EEEEEE'));\n }\n return names;\n });\n\n readonly calendarDays = computed(() => {\n const view = this.viewDate();\n const sel = this.selectedDate();\n const foc = this.focusedDate();\n const min = this.parsedMinDate();\n const max = this.parsedMaxDate();\n const filter = this.filterDate();\n const firstDay = (this.firstDayOfWeek() % 7) as 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\n const days: CalendarDay[] = [];\n const monthStart = startOfMonth(view);\n const gridStart = startOfWeek(monthStart, { weekStartsOn: firstDay });\n const today = startOfDay(new Date());\n\n for (let i = 0; i < 42; i++) {\n const current = addDays(gridStart, i);\n const isCurrentMonth = isSameMonth(current, view);\n const isToday = isSameDay(current, today);\n const isSelected = sel ? isSameDay(current, sel) : false;\n const isFocused = foc ? isSameDay(current, foc) : false;\n\n let isDisabled = false;\n if (min && isBefore(startOfDay(current), startOfDay(min))) {\n isDisabled = true;\n }\n if (max && isAfter(startOfDay(current), startOfDay(max))) {\n isDisabled = true;\n }\n if (filter && !filter(current)) {\n isDisabled = true;\n }\n\n days.push({\n date: current,\n dayNumber: getDate(current),\n isCurrentMonth,\n isToday,\n isSelected,\n isDisabled,\n isFocused\n });\n }\n\n return days;\n });\n\n readonly monthList = computed(() => {\n const view = this.viewDate();\n const sel = this.selectedDate();\n const min = this.parsedMinDate();\n const max = this.parsedMaxDate();\n const months: CalendarMonth[] = [];\n const now = new Date();\n const currentMonthIdx = getMonth(now);\n const viewYear = getYear(view);\n\n for (let i = 0; i < 12; i++) {\n const m = setMonth(view, i);\n const mEnd = endOfMonth(m);\n const mStart = startOfMonth(m);\n let isDisabled = false;\n if (min && isBefore(mEnd, startOfDay(min))) {\n isDisabled = true;\n }\n if (max && isAfter(mStart, endOfDay(max))) {\n isDisabled = true;\n }\n\n months.push({\n name: formatDate(m, 'MMM'),\n monthIndex: i,\n isSelected: sel ? getYear(sel) === viewYear && getMonth(sel) === i : false,\n isCurrentMonth: getYear(now) === viewYear && currentMonthIdx === i,\n isDisabled\n });\n }\n return months;\n });\n\n readonly yearList = computed(() => {\n const viewYear = getYear(this.viewDate());\n const sel = this.selectedDate();\n const min = this.parsedMinDate();\n const max = this.parsedMaxDate();\n const startYear = Math.floor(viewYear / 12) * 12;\n const years: CalendarYear[] = [];\n const currentYear = getYear(new Date());\n\n for (let i = 0; i < 12; i++) {\n const y = startYear + i;\n let isDisabled = false;\n if (min && y < getYear(min)) {\n isDisabled = true;\n }\n if (max && y > getYear(max)) {\n isDisabled = true;\n }\n\n years.push({\n year: y,\n isSelected: sel ? getYear(sel) === y : false,\n isCurrentYear: currentYear === y,\n isDisabled\n });\n }\n return years;\n });\n\n readonly isPrevDisabled = computed(() => {\n const min = this.parsedMinDate();\n if (!min) return false;\n const view = this.viewDate();\n const mode = this.viewMode();\n if (mode === 'day') {\n return !isAfter(startOfMonth(view), startOfMonth(min));\n } else if (mode === 'month') {\n return getYear(view) <= getYear(min);\n } else {\n const startYear = Math.floor(getYear(view) / 12) * 12;\n return startYear <= getYear(min);\n }\n });\n\n readonly isNextDisabled = computed(() => {\n const max = this.parsedMaxDate();\n if (!max) return false;\n const view = this.viewDate();\n const mode = this.viewMode();\n if (mode === 'day') {\n return !isBefore(endOfMonth(view), endOfMonth(max));\n } else if (mode === 'month') {\n return getYear(view) >= getYear(max);\n } else {\n const startYear = Math.floor(getYear(view) / 12) * 12;\n return startYear + 11 >= getYear(max);\n }\n });\n\n readonly isTodayDisabled = computed(() => {\n return this.isDateDisabled(startOfDay(new Date()));\n });\n\n readonly isNowDisabled = computed(() => {\n return this.isDateDisabled(new Date());\n });\n\n readonly currentHeaderLabel = computed(() => {\n const view = this.viewDate();\n const mode = this.viewMode();\n if (mode === 'day') {\n return formatDate(view, 'MMMM yyyy');\n } else if (mode === 'month') {\n return formatDate(view, 'yyyy');\n } else {\n const start = Math.floor(getYear(view) / 12) * 12;\n return `${start} - ${start + 11}`;\n }\n });\n\n // ControlValueAccessor Callbacks\n private onChange: (val: unknown) => void = () => { };\n private onTouched: () => void = () => { };\n\n constructor() {\n // Keep focused date synced with viewDate when viewDate changes\n effect(() => {\n if (!this.focusedDate()) {\n this.focusedDate.set(this.viewDate());\n }\n });\n\n // Keep inputText synced with selectedDate\n effect(() => {\n const sel = this.selectedDate();\n if (sel && isValid(sel)) {\n if (this.showTime()) {\n this.draftHour.set(getHours(sel));\n this.draftMinute.set(getMinutes(sel));\n this.draftSecond.set(getSeconds(sel));\n }\n this.inputText.set(formatDate(sel, this.effectiveDisplayFormat()));\n } else {\n this.inputText.set('');\n }\n });\n }\n\n // ControlValueAccessor Implementation\n writeValue(val: unknown): void {\n if (val === null || val === undefined || val === '') {\n this.selectedDate.set(null);\n return;\n }\n\n const parsed = parseFlexibleDate(val, [this.effectiveValueFormat(), this.effectiveDisplayFormat()]);\n\n if (parsed && isValid(parsed)) {\n this.selectedDate.set(parsed);\n this.viewDate.set(parsed);\n this.focusedDate.set(parsed);\n if (this.showTime()) {\n this.draftHour.set(getHours(parsed));\n this.draftMinute.set(getMinutes(parsed));\n this.draftSecond.set(getSeconds(parsed));\n }\n } else {\n this.selectedDate.set(null);\n }\n }\n\n registerOnChange(fn: (val: unknown) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabledSignal.set(isDisabled);\n }\n\n // Dropdown Controls\n toggleOpen(): void {\n if (this.effectiveDisabled()) return;\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open(): void {\n if (this.effectiveDisabled() || this.isOpen()) return;\n this.isOpen.set(true);\n this.viewMode.set('day');\n\n const sel = this.selectedDate();\n if (sel && isValid(sel)) {\n this.viewDate.set(sel);\n this.focusedDate.set(sel);\n if (this.showTime()) {\n this.draftHour.set(getHours(sel));\n this.draftMinute.set(getMinutes(sel));\n this.draftSecond.set(getSeconds(sel));\n }\n } else {\n const now = new Date();\n this.viewDate.set(now);\n this.focusedDate.set(now);\n if (this.showTime()) {\n this.draftHour.set(getHours(now));\n this.draftMinute.set(getMinutes(now));\n this.draftSecond.set(getSeconds(now));\n }\n }\n\n this.opened.emit();\n }\n\n close(): void {\n if (!this.isOpen()) return;\n this.isOpen.set(false);\n this.markAsTouched();\n this.closed.emit();\n }\n\n // Navigation & Selection Logic\n prevPeriod(): void {\n if (this.isPrevDisabled()) return;\n const mode = this.viewMode();\n if (mode === 'day') {\n this.viewDate.update((d) => subMonths(d, 1));\n } else if (mode === 'month') {\n this.viewDate.update((d) => subYears(d, 1));\n } else {\n this.viewDate.update((d) => subYears(d, 12));\n }\n }\n\n nextPeriod(): void {\n if (this.isNextDisabled()) return;\n const mode = this.viewMode();\n if (mode === 'day') {\n this.viewDate.update((d) => addMonths(d, 1));\n } else if (mode === 'month') {\n this.viewDate.update((d) => addYears(d, 1));\n } else {\n this.viewDate.update((d) => addYears(d, 12));\n }\n }\n\n toggleViewMode(): void {\n const current = this.viewMode();\n if (current === 'day') {\n this.viewMode.set('month');\n } else if (current === 'month') {\n this.viewMode.set('year');\n } else {\n this.viewMode.set('day');\n }\n }\n\n selectMonth(monthIdx: number): void {\n this.viewDate.update((d) => setMonth(d, monthIdx));\n this.viewMode.set('day');\n }\n\n selectYear(year: number): void {\n this.viewDate.update((d) => setYear(d, year));\n this.viewMode.set('month');\n }\n\n selectDay(day: CalendarDay): void {\n if (day.isDisabled) return;\n if (this.showTime()) {\n const baseDate = set(day.date, {\n hours: this.draftHour(),\n minutes: this.draftMinute(),\n seconds: this.draftSecond()\n });\n this.commitSelection(baseDate);\n } else {\n this.commitSelection(day.date);\n this.close();\n }\n }\n\n selectToday(): void {\n const today = startOfDay(new Date());\n if (this.isDateDisabled(today)) return;\n this.commitSelection(today);\n this.close();\n }\n\n selectNow(): void {\n const now = new Date();\n if (this.isDateDisabled(now)) return;\n this.draftHour.set(getHours(now));\n this.draftMinute.set(getMinutes(now));\n this.draftSecond.set(getSeconds(now));\n this.commitSelection(now);\n this.close();\n }\n\n applySelection(): void {\n const sel = this.selectedDate() || this.viewDate();\n const finalVal = set(sel, {\n hours: this.draftHour(),\n minutes: this.draftMinute(),\n seconds: this.draftSecond()\n });\n this.commitSelection(finalVal);\n this.close();\n }\n\n // Time Manipulations\n adjustHour(delta: number): void {\n this.draftHour.update((h) => (h + delta + 24) % 24);\n if (this.showTime()) this.updateSelectedTime();\n }\n\n adjustMinute(delta: number): void {\n const step = this.minuteStep();\n this.draftMinute.update((m) => (m + delta * step + 60) % 60);\n if (this.showTime()) this.updateSelectedTime();\n }\n\n adjustSecond(delta: number): void {\n this.draftSecond.update((s) => (s + delta + 60) % 60);\n if (this.showTime()) this.updateSelectedTime();\n }\n\n onHourInput(event: Event): void {\n const inputEl = event.target as HTMLInputElement;\n const rawVal = inputEl.value.replace(/\\D/g, '');\n if (rawVal === '') return;\n\n let num = parseInt(rawVal, 10);\n if (isNaN(num)) return;\n\n if (this.use24Hour()) {\n num = Math.max(0, Math.min(23, num));\n this.draftHour.set(num);\n } else {\n num = Math.max(1, Math.min(12, num));\n const isPm = this.meridiem() === 'PM';\n let h24: number;\n if (isPm) {\n h24 = num === 12 ? 12 : num + 12;\n } else {\n h24 = num === 12 ? 0 : num;\n }\n this.draftHour.set(h24);\n }\n this.updateSelectedTime();\n }\n\n onHourBlur(event: FocusEvent): void {\n const inputEl = event.target as HTMLInputElement;\n inputEl.value = this.displayHour();\n }\n\n onMinuteInput(event: Event): void {\n const inputEl = event.target as HTMLInputElement;\n const rawVal = inputEl.value.replace(/\\D/g, '');\n if (rawVal === '') return;\n\n let num = parseInt(rawVal, 10);\n if (isNaN(num)) return;\n\n num = Math.max(0, Math.min(59, num));\n this.draftMinute.set(num);\n this.updateSelectedTime();\n }\n\n onMinuteBlur(event: FocusEvent): void {\n const inputEl = event.target as HTMLInputElement;\n inputEl.value = this.displayMinute();\n }\n\n onSecondInput(event: Event): void {\n const inputEl = event.target as HTMLInputElement;\n const rawVal = inputEl.value.replace(/\\D/g, '');\n if (rawVal === '') return;\n\n let num = parseInt(rawVal, 10);\n if (isNaN(num)) return;\n\n num = Math.max(0, Math.min(59, num));\n this.draftSecond.set(num);\n this.updateSelectedTime();\n }\n\n onSecondBlur(event: FocusEvent): void {\n const inputEl = event.target as HTMLInputElement;\n inputEl.value = this.displaySecond();\n }\n\n onTimeInputKeydown(event: KeyboardEvent, type: 'hour' | 'minute' | 'second'): void {\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n if (type === 'hour') this.adjustHour(1);\n else if (type === 'minute') this.adjustMinute(1);\n else if (type === 'second') this.adjustSecond(1);\n } else if (event.key === 'ArrowDown') {\n event.preventDefault();\n if (type === 'hour') this.adjustHour(-1);\n else if (type === 'minute') this.adjustMinute(-1);\n else if (type === 'second') this.adjustSecond(-1);\n } else if (event.key === 'Enter') {\n event.preventDefault();\n this.applySelection();\n }\n }\n\n toggleMeridiem(): void {\n this.draftHour.update((h) => (h >= 12 ? h - 12 : h + 12));\n this.updateSelectedTime();\n }\n\n private updateSelectedTime(): void {\n const current = this.selectedDate() || this.viewDate();\n const updated = set(current, {\n hours: this.draftHour(),\n minutes: this.draftMinute(),\n seconds: this.draftSecond()\n });\n this.draftHour.set(getHours(updated));\n this.draftMinute.set(getMinutes(updated));\n this.draftSecond.set(getSeconds(updated));\n this.commitSelection(updated);\n }\n\n onClear(event: MouseEvent): void {\n event.stopPropagation();\n if (this.effectiveDisabled()) return;\n this.selectedDate.set(null);\n this.inputText.set('');\n this.onChange(null);\n this.dateChange.emit(null);\n }\n\n // Direct typing in trigger input field\n onInputChange(event: Event): void {\n const val = (event.target as HTMLInputElement).value;\n this.inputText.set(val);\n\n if (!val.trim()) {\n this.selectedDate.set(null);\n this.onChange(null);\n this.dateChange.emit(null);\n return;\n }\n\n const parsed = parseFlexibleDate(val, [this.effectiveDisplayFormat(), this.effectiveValueFormat()]);\n if (parsed && isValid(parsed) && !this.isDateDisabled(parsed)) {\n this.selectedDate.set(parsed);\n this.viewDate.set(parsed);\n this.focusedDate.set(parsed);\n if (this.showTime()) {\n this.draftHour.set(getHours(parsed));\n this.draftMinute.set(getMinutes(parsed));\n this.draftSecond.set(getSeconds(parsed));\n }\n const outValue = this.formatOutputValue(parsed);\n this.onChange(outValue);\n this.dateChange.emit(outValue);\n }\n }\n\n onInputFocus(): void {\n this.isFocused.set(true);\n }\n\n onInputBlur(event: FocusEvent): void {\n this.isFocused.set(false);\n const sel = this.selectedDate();\n if (sel && isValid(sel)) {\n this.inputText.set(formatDate(sel, this.effectiveDisplayFormat()));\n } else {\n this.inputText.set('');\n }\n this.markAsTouched();\n }\n\n onInputKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Enter') {\n event.preventDefault();\n const val = this.inputText();\n if (val.trim()) {\n const parsed = parseFlexibleDate(val, [this.effectiveDisplayFormat(), this.effectiveValueFormat()]);\n if (parsed && isValid(parsed) && !this.isDateDisabled(parsed)) {\n if (this.showTime()) {\n this.draftHour.set(getHours(parsed));\n this.draftMinute.set(getMinutes(parsed));\n this.draftSecond.set(getSeconds(parsed));\n }\n this.commitSelection(parsed);\n }\n }\n this.close();\n } else if (event.key === 'ArrowDown' || (event.altKey && event.key === 'ArrowDown')) {\n if (!this.isOpen()) {\n event.preventDefault();\n this.open();\n }\n } else if (event.key === 'Escape') {\n if (this.isOpen()) {\n event.preventDefault();\n this.close();\n }\n }\n }\n\n private commitSelection(date: Date): void {\n this.selectedDate.set(date);\n const outValue = this.formatOutputValue(date);\n this.onChange(outValue);\n this.dateChange.emit(outValue);\n }\n\n private formatOutputValue(date: Date): unknown {\n const fmt = this.effectiveValueFormat();\n if (fmt === 'date') {\n return date;\n } else if (fmt === 'iso') {\n return date.toISOString();\n } else {\n return formatDate(date, fmt);\n }\n }\n\n private isDateDisabled(date: Date): boolean {\n const min = this.parsedMinDate();\n const max = this.parsedMaxDate();\n const filter = this.filterDate();\n\n if (min && isBefore(startOfDay(date), startOfDay(min))) return true;\n if (max && isAfter(startOfDay(date), startOfDay(max))) return true;\n if (filter && !filter(date)) return true;\n return false;\n }\n\n markAsTouched(): void {\n if (!this.isTouched()) {\n this.isTouched.set(true);\n this.onTouched();\n }\n }\n\n // Keyboard accessibility\n onKeyDown(event: KeyboardEvent): void {\n if (this.effectiveDisabled()) return;\n\n if (!this.isOpen()) {\n if (['ArrowDown', 'ArrowUp', 'Enter', ' '].includes(event.key)) {\n event.preventDefault();\n this.open();\n }\n return;\n }\n\n const currentFocused = this.focusedDate() || this.viewDate();\n\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault();\n this.navigateKeyboardDay(subDays(currentFocused, 1));\n break;\n\n case 'ArrowRight':\n event.preventDefault();\n this.navigateKeyboardDay(addDays(currentFocused, 1));\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n this.navigateKeyboardDay(subWeeks(currentFocused, 1));\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n this.navigateKeyboardDay(addWeeks(currentFocused, 1));\n break;\n\n case 'Enter':\n case ' ':\n event.preventDefault();\n if (currentFocused && !this.isDateDisabled(currentFocused)) {\n if (this.showTime()) {\n const baseDate = set(currentFocused, {\n hours: this.draftHour(),\n minutes: this.draftMinute(),\n seconds: this.draftSecond()\n });\n this.commitSelection(baseDate);\n } else {\n this.commitSelection(currentFocused);\n this.close();\n }\n }\n break;\n\n case 'Escape':\n event.preventDefault();\n this.close();\n this.triggerEl?.nativeElement.focus();\n break;\n\n case 'Tab':\n this.close();\n break;\n }\n }\n\n private navigateKeyboardDay(newDate: Date): void {\n if (!isSameMonth(newDate, this.viewDate())) {\n this.viewDate.set(newDate);\n }\n this.focusedDate.set(newDate);\n }\n\n onDocumentClick(event: MouseEvent): void {\n if (!this.isOpen()) return;\n const target = event.target as Node;\n const clickedInsideHost = this.elementRef.nativeElement.contains(target);\n const clickedInsideOverlay = target instanceof Element && !!target.closest('.datepicker-dropdown-panel');\n\n if (!clickedInsideHost && !clickedInsideOverlay) {\n this.close();\n }\n }\n}\n","@if (label() && !isFloatingMode()) {\n <label class=\"talos-field-label\" (click)=\"toggleOpen()\">\n {{ label() }}\n @if (required()) {\n <span class=\"required-star\" aria-hidden=\"true\">*</span>\n }\n </label>\n}\n\n<div class=\"datepicker-control-container\">\n <!-- DatePicker Input Trigger -->\n <div #triggerEl cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" class=\"datepicker-trigger\" role=\"combobox\"\n [attr.aria-expanded]=\"isOpen()\" [attr.aria-haspopup]=\"'dialog'\" [attr.aria-controls]=\"dialogId\"\n [attr.aria-disabled]=\"effectiveDisabled()\">\n <div class=\"datepicker-value-container\">\n <svg class=\"datepicker-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\n aria-hidden=\"true\" (click)=\"toggleOpen()\">\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect>\n <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\"></line>\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\"></line>\n <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\"></line>\n @if (showTime()) {\n <circle cx=\"12\" cy=\"15\" r=\"2.5\"></circle>\n <path d=\"M12 14v1.5l1 0.5\"></path>\n }\n </svg>\n <input #inputEl type=\"text\" class=\"datepicker-input\" [value]=\"inputText()\" [placeholder]=\"isFloatingMode() && !isFloated() ? '' : placeholder()\"\n [disabled]=\"effectiveDisabled()\" (input)=\"onInputChange($event)\" (focus)=\"onInputFocus()\" (blur)=\"onInputBlur($event)\"\n (keydown)=\"onInputKeyDown($event)\" aria-label=\"Date input\" />\n </div>\n\n @if (label() && isFloatingMode()) {\n <label class=\"talos-floating-label\" [class.is-floated]=\"isFloated()\" (click)=\"toggleOpen()\">\n {{ label() }}\n @if (required()) {\n <span class=\"required-star\" aria-hidden=\"true\">*</span>\n }\n </label>\n }\n\n <div class=\"datepicker-actions\">\n @if (clearable() && inputText() && !effectiveDisabled()) {\n <button type=\"button\" class=\"datepicker-clear-btn\" aria-label=\"Clear date\" title=\"Clear date\"\n (click)=\"onClear($event)\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n }\n </div>\n</div>\n\n<!-- Calendar Dropdown Dialog -->\n<ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"origin\" [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayPositions]=\"positions\" [cdkConnectedOverlayHasBackdrop]=\"false\"\n [cdkConnectedOverlayLockPosition]=\"false\" [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n [cdkConnectedOverlayPush]=\"true\" (detach)=\"close()\">\n <div class=\"datepicker-dropdown-panel\" [class.datetime-dropdown]=\"showTime()\" [id]=\"dialogId\" role=\"dialog\"\n aria-label=\"Date Picker Calendar\">\n <!-- Calendar Header Navigation -->\n <div class=\"datepicker-header\">\n <button type=\"button\" class=\"datepicker-nav-btn\" aria-label=\"Previous period\" title=\"Previous period\"\n [disabled]=\"isPrevDisabled()\" (click)=\"prevPeriod()\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\">\n <polyline points=\"15 18 9 12 15 6\"></polyline>\n </svg>\n </button>\n\n <button type=\"button\" class=\"datepicker-view-btn\" (click)=\"toggleViewMode()\">\n {{ currentHeaderLabel() }}\n </button>\n\n <button type=\"button\" class=\"datepicker-nav-btn\" aria-label=\"Next period\" title=\"Next period\"\n [disabled]=\"isNextDisabled()\" (click)=\"nextPeriod()\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\">\n <polyline points=\"9 18 15 12 9 6\"></polyline>\n </svg>\n </button>\n </div>\n\n <!-- Day View -->\n @if (viewMode() === 'day') {\n <div class=\"datepicker-body\">\n <div class=\"datepicker-weekdays\">\n @for (dayName of weekDayNames(); track dayName) {\n <span class=\"weekday-cell\">{{ dayName }}</span>\n }\n </div>\n\n <div class=\"datepicker-days-grid\">\n @for (day of calendarDays(); track day.date.valueOf()) {\n <button type=\"button\" class=\"day-cell\" [class.is-other-month]=\"!day.isCurrentMonth\"\n [class.is-today]=\"day.isToday\" [class.is-selected]=\"day.isSelected\" [class.is-disabled]=\"day.isDisabled\"\n [class.is-focused]=\"day.isFocused\" [disabled]=\"day.isDisabled\" (click)=\"selectDay(day)\">\n {{ day.dayNumber }}\n </button>\n }\n </div>\n </div>\n }\n\n <!-- Month View -->\n @if (viewMode() === 'month') {\n <div class=\"datepicker-months-grid\">\n @for (month of monthList(); track month.monthIndex) {\n <button type=\"button\" class=\"month-cell\" [class.is-selected]=\"month.isSelected\"\n [class.is-current]=\"month.isCurrentMonth\" [class.is-disabled]=\"month.isDisabled\" [disabled]=\"month.isDisabled\"\n (click)=\"selectMonth(month.monthIndex)\">\n {{ month.name }}\n </button>\n }\n </div>\n }\n\n <!-- Year View -->\n @if (viewMode() === 'year') {\n <div class=\"datepicker-years-grid\">\n @for (yr of yearList(); track yr.year) {\n <button type=\"button\" class=\"year-cell\" [class.is-selected]=\"yr.isSelected\" [class.is-current]=\"yr.isCurrentYear\"\n [class.is-disabled]=\"yr.isDisabled\" [disabled]=\"yr.isDisabled\" (click)=\"selectYear(yr.year)\">\n {{ yr.year }}\n </button>\n }\n </div>\n }\n\n <!-- Optional Time Picker Controls Bar -->\n @if (showTime()) {\n <div class=\"time-picker-section\">\n <div class=\"time-picker-label\">Time</div>\n <div class=\"time-picker-controls\">\n <!-- Hour Spinner -->\n <div class=\"time-spinner\">\n <button type=\"button\" class=\"spinner-btn\" aria-label=\"Increase hour\" (click)=\"adjustHour(1)\"\n tabindex=\"-1\">▲</button>\n <input type=\"text\" inputmode=\"numeric\" class=\"spinner-input\" [value]=\"displayHour()\"\n (input)=\"onHourInput($event)\" (blur)=\"onHourBlur($event)\" (keydown)=\"onTimeInputKeydown($event, 'hour')\"\n aria-label=\"Hour input\" />\n <button type=\"button\" class=\"spinner-btn\" aria-label=\"Decrease hour\" (click)=\"adjustHour(-1)\"\n tabindex=\"-1\">▼</button>\n </div>\n\n <span class=\"time-separator\">:</span>\n\n <!-- Minute Spinner -->\n <div class=\"time-spinner\">\n <button type=\"button\" class=\"spinner-btn\" aria-label=\"Increase minute\" (click)=\"adjustMinute(1)\"\n tabindex=\"-1\">▲</button>\n <input type=\"text\" inputmode=\"numeric\" class=\"spinner-input\" [value]=\"displayMinute()\"\n (input)=\"onMinuteInput($event)\" (blur)=\"onMinuteBlur($event)\"\n (keydown)=\"onTimeInputKeydown($event, 'minute')\" aria-label=\"Minute input\" />\n <button type=\"button\" class=\"spinner-btn\" aria-label=\"Decrease minute\" (click)=\"adjustMinute(-1)\"\n tabindex=\"-1\">▼</button>\n </div>\n\n <!-- Second Spinner (Optional) -->\n @if (showSeconds()) {\n <span class=\"time-separator\">:</span>\n <div class=\"time-spinner\">\n <button type=\"button\" class=\"spinner-btn\" aria-label=\"Increase second\" (click)=\"adjustSecond(1)\"\n tabindex=\"-1\">▲</button>\n <input type=\"text\" inputmode=\"numeric\" class=\"spinner-input\" [value]=\"displaySecond()\"\n (input)=\"onSecondInput($event)\" (blur)=\"onSecondBlur($event)\"\n (keydown)=\"onTimeInputKeydown($event, 'second')\" aria-label=\"Second input\" />\n <button type=\"button\" class=\"spinner-btn\" aria-label=\"Decrease second\" (click)=\"adjustSecond(-1)\"\n tabindex=\"-1\">▼</button>\n </div>\n }\n\n <!-- Meridiem Toggle (12h format) -->\n @if (!use24Hour()) {\n <button type=\"button\" class=\"meridiem-toggle-btn\" (click)=\"toggleMeridiem()\">\n {{ meridiem() }}\n </button>\n }\n </div>\n </div>\n }\n\n <!-- Footer Actions -->\n <div class=\"datepicker-footer\" [class.datetime-footer]=\"showTime()\">\n @if (showTime()) {\n <button type=\"button\" class=\"datepicker-now-btn\" [disabled]=\"isNowDisabled()\" (click)=\"selectNow()\">\n Now\n </button>\n <button type=\"button\" class=\"datepicker-apply-btn\" (click)=\"applySelection()\">\n Apply\n </button>\n } @else {\n <button type=\"button\" class=\"datepicker-today-btn\" [disabled]=\"isTodayDisabled()\" (click)=\"selectToday()\">\n Today\n </button>\n }\n </div>\n </div>\n</ng-template>\n</div>","import {\n Component,\n ViewChild,\n effect,\n forwardRef,\n input,\n output,\n signal\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { DatePickerComponent } from '@weeehaoooz/talos-ui/form/date-picker';\n\nlet uniqueDateTimePickerId = 0;\n\n@Component({\n selector: 'talos-date-time-picker',\n imports: [DatePickerComponent],\n templateUrl: './date-time-picker.component.html',\n styleUrl: './date-time-picker.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateTimePickerComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'talos-datetimepicker-host'\n }\n})\nexport class DateTimePickerComponent implements ControlValueAccessor {\n // Signal Inputs\n readonly placeholder = input<string>('Select date & time');\n readonly label = input<string>('');\n readonly floatingLabel = input<boolean>(false);\n readonly floating = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly clearable = input<boolean>(true);\n readonly size = input<'sm' | 'md' | 'lg'>('md');\n readonly displayFormat = input<string>('yyyy-MM-dd HH:mm');\n readonly valueFormat = input<string>('yyyy-MM-dd HH:mm');\n readonly use24Hour = input<boolean>(true);\n readonly showSeconds = input<boolean>(false);\n readonly minuteStep = input<number>(1);\n readonly minDate = input<string | Date | number | null>(null);\n readonly maxDate = input<string | Date | number | null>(null);\n readonly firstDayOfWeek = input<number>(0);\n readonly filterDate = input<((date: Date) => boolean) | null>(null);\n\n // Signal Outputs\n readonly dateTimeChange = output<unknown>();\n readonly opened = output<void>();\n readonly closed = output<void>();\n\n @ViewChild(DatePickerComponent) corePicker?: DatePickerComponent;\n\n // Component unique IDs\n readonly componentId = `talos-datetimepicker-${uniqueDateTimePickerId++}`;\n\n readonly currentValue = signal<unknown>(null);\n private onChange: (val: unknown) => void = () => { };\n private onTouched: () => void = () => { };\n\n constructor() {\n effect(() => {\n const val = this.currentValue();\n if (this.corePicker) {\n this.corePicker.writeValue(val);\n }\n });\n }\n\n writeValue(val: unknown): void {\n this.currentValue.set(val);\n if (this.corePicker) {\n this.corePicker.writeValue(val);\n }\n }\n\n registerOnChange(fn: (val: unknown) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n // Delegated to inner date-picker via disabled input\n }\n\n onDateChange(val: unknown): void {\n this.currentValue.set(val);\n this.onChange(val);\n this.dateTimeChange.emit(val);\n }\n\n onOpened(): void {\n this.opened.emit();\n }\n\n onClosed(): void {\n this.onTouched();\n this.closed.emit();\n }\n}\n","<talos-date-picker [label]=\"label()\" [floatingLabel]=\"floatingLabel()\" [floating]=\"floating()\" [required]=\"required()\"\n [placeholder]=\"placeholder()\" [disabled]=\"disabled()\" [clearable]=\"clearable()\" [size]=\"size()\"\n [displayFormat]=\"displayFormat()\" [valueFormat]=\"valueFormat()\" [showTime]=\"true\" [use24Hour]=\"use24Hour()\"\n [showSeconds]=\"showSeconds()\" [minuteStep]=\"minuteStep()\" [minDate]=\"minDate()\" [maxDate]=\"maxDate()\"\n [firstDayOfWeek]=\"firstDayOfWeek()\" [filterDate]=\"filterDate()\" (dateChange)=\"onDateChange($event)\"\n (opened)=\"onOpened()\" (closed)=\"onClosed()\">\n</talos-date-picker>","import {\n Component,\n ElementRef,\n ViewChild,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n output,\n signal\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition, OverlayModule } from '@angular/cdk/overlay';\nimport {\n addDays,\n addMonths,\n addWeeks,\n addYears,\n differenceInCalendarDays,\n endOfDay,\n endOfMonth,\n endOfWeek,\n endOfYear,\n getDate,\n getHours,\n getMinutes,\n getSeconds,\n isAfter,\n isBefore,\n isSameDay,\n isSameMonth,\n isValid,\n set,\n startOfDay,\n startOfMonth,\n startOfWeek,\n startOfYear,\n subDays,\n subMonths,\n subWeeks,\n subYears\n} from 'date-fns';\n\nimport {\n DateRangePreset,\n DateRangeValue,\n InternalDateRange,\n RangeCalendarDay\n} from './date-range-types';\nimport { formatDate, parseFlexibleDate } from '@weeehaoooz/talos-ui/core';\n\nlet uniqueDateRangePickerId = 0;\n\n@Component({\n selector: 'talos-date-range-picker',\n imports: [OverlayModule, CdkConnectedOverlay, CdkOverlayOrigin],\n templateUrl: './date-range-picker.component.html',\n styleUrl: './date-range-picker.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateRangePickerComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'talos-daterangepicker-host',\n '[class.is-open]': 'isOpen()',\n '[class.is-disabled]': 'effectiveDisabled()',\n '[class.has-label]': '!!label()',\n '[class.is-floating]': 'isFloatingMode()',\n '[class.is-floated]': 'isFloated()',\n '[class.datepicker-sm]': 'size() === \"sm\"',\n '[class.datepicker-md]': 'size() === \"md\"',\n '[class.datepicker-lg]': 'size() === \"lg\"',\n '(keydown)': 'onKeyDown($event)',\n '(document:click)': 'onDocumentClick($event)'\n }\n})\nexport class DateRangePickerComponent implements ControlValueAccessor {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n // Signal Inputs\n readonly placeholder = input<string>('Select date range');\n readonly label = input<string>('');\n readonly floatingLabel = input<boolean>(false);\n readonly floating = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly clearable = input<boolean>(true);\n readonly size = input<'sm' | 'md' | 'lg'>('md');\n readonly displayFormat = input<string>(''); // Default resolved via computed if empty\n readonly valueFormat = input<string>(''); // Default resolved via computed if empty\n readonly showTime = input<boolean>(false);\n readonly use24Hour = input<boolean>(true);\n readonly showSeconds = input<boolean>(false);\n readonly minuteStep = input<number>(1);\n readonly minDate = input<string | Date | number | null>(null);\n readonly maxDate = input<string | Date | number | null>(null);\n readonly minSpan = input<number | null>(null); // in days\n readonly maxSpan = input<number | null>(null); // in days\n readonly firstDayOfWeek = input<number>(0); // 0 = Sun, 1 = Mon\n readonly presets = input<DateRangePreset[] | null>(null);\n readonly presetType = input<'all' | 'calendar' | 'duration'>('all');\n readonly filterDate = input<((date: Date) => boolean) | null>(null);\n\n // Signal Outputs\n readonly rangeChange = output<DateRangeValue | null>();\n readonly opened = output<void>();\n readonly closed = output<void>();\n\n // Element Refs\n @ViewChild('triggerEl') triggerEl?: ElementRef<HTMLDivElement>;\n @ViewChild('startInputEl') startInputEl?: ElementRef<HTMLInputElement>;\n @ViewChild('endInputEl') endInputEl?: ElementRef<HTMLInputElement>;\n\n // CDK Overlay Connected Positions\n readonly positions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 4\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -4\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 4\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -4\n }\n ];\n\n // Accessibility IDs\n readonly componentId = `talos-daterangepicker-${uniqueDateRangePickerId++}`;\n readonly dialogId = `${this.componentId}-dialog`;\n\n // Internal Committed Selection Signals\n readonly selectedStartDate = signal<Date | null>(null);\n readonly selectedEndDate = signal<Date | null>(null);\n\n // Draft Selection Signals (Active while picking in overlay)\n readonly draftStartDate = signal<Date | null>(null);\n readonly draftEndDate = signal<Date | null>(null);\n readonly hoverDate = signal<Date | null>(null);\n\n // Draft Time Signals\n readonly draftStartHour = signal<number>(0);\n readonly draftStartMinute = signal<number>(0);\n readonly draftStartSecond = signal<number>(0);\n\n readonly draftEndHour = signal<number>(23);\n readonly draftEndMinute = signal<number>(59);\n readonly draftEndSecond = signal<number>(59);\n\n // View state signals\n readonly viewDate = signal<Date>(startOfMonth(new Date()));\n readonly isOpen = signal<boolean>(false);\n readonly isDisabledSignal = signal<boolean>(false);\n readonly isTouched = signal<boolean>(false);\n readonly activePresetLabel = signal<string | null>(null);\n\n // Input Text Signals for bottom action bar & trigger display\n readonly startInputText = signal<string>('');\n readonly endInputText = signal<string>('');\n\n // Computeds\n readonly isFloatingMode = computed(() => this.floatingLabel() || this.floating());\n readonly isFloated = computed(() => {\n if (!this.isFloatingMode()) return false;\n return this.isOpen() || !!this.formattedTriggerValue();\n });\n readonly effectiveDisabled = computed(() => this.disabled() || this.isDisabledSignal());\n\n readonly effectiveDisplayFormat = computed(() => {\n const fmt = this.displayFormat();\n if (fmt) return fmt;\n return this.showTime() ? 'yyyy-MM-dd HH:mm' : 'yyyy-MM-dd';\n });\n\n readonly effectiveValueFormat = computed(() => {\n const fmt = this.valueFormat();\n if (fmt) return fmt;\n return this.showTime() ? 'yyyy-MM-dd HH:mm' : 'yyyy-MM-dd';\n });\n\n readonly viewDateRight = computed(() => {\n return addMonths(this.viewDate(), 1);\n });\n\n readonly parsedMinDate = computed(() => {\n const min = this.minDate();\n if (!min) return null;\n const d = parseFlexibleDate(min);\n return d && isValid(d) ? (this.showTime() ? d : startOfDay(d)) : null;\n });\n\n readonly parsedMaxDate = computed(() => {\n const max = this.maxDate();\n if (!max) return null;\n const d = parseFlexibleDate(max);\n return d && isValid(d) ? (this.showTime() ? d : endOfDay(d)) : null;\n });\n\n readonly formattedTriggerValue = computed(() => {\n const start = this.selectedStartDate();\n const end = this.selectedEndDate();\n const fmt = this.effectiveDisplayFormat();\n\n if (start && isValid(start) && end && isValid(end)) {\n return `${formatDate(start, fmt)} — ${formatDate(end, fmt)}`;\n } else if (start && isValid(start)) {\n return `${formatDate(start, fmt)} — ...`;\n }\n return '';\n });\n\n readonly weekDayNames = computed(() => {\n const names: string[] = [];\n const firstDay = (this.firstDayOfWeek() % 7) as 0 | 1 | 2 | 3 | 4 | 5 | 6;\n const base = startOfWeek(new Date(), { weekStartsOn: firstDay });\n for (let i = 0; i < 7; i++) {\n names.push(formatDate(addDays(base, i), 'EEEEEE'));\n }\n return names;\n });\n\n // Effective Presets List\n readonly effectivePresets = computed<DateRangePreset[]>(() => {\n const custom = this.presets();\n if (custom && custom.length > 0) return custom;\n\n const type = this.presetType();\n const firstDay = (this.firstDayOfWeek() % 7) as 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\n const calendarPresets: DateRangePreset[] = [\n {\n label: 'Today',\n key: 'today',\n getValue: () => ({\n startDate: startOfDay(new Date()),\n endDate: endOfDay(new Date())\n })\n },\n {\n label: 'Yesterday',\n key: 'yesterday',\n getValue: () => ({\n startDate: startOfDay(subDays(new Date(), 1)),\n endDate: endOfDay(subDays(new Date(), 1))\n })\n },\n {\n label: 'This week',\n key: 'this_week',\n getValue: () => ({\n startDate: startOfWeek(new Date(), { weekStartsOn: firstDay }),\n endDate: endOfWeek(new Date(), { weekStartsOn: firstDay })\n })\n },\n {\n label: 'Last week',\n key: 'last_week',\n getValue: () => ({\n startDate: startOfWeek(subWeeks(new Date(), 1), { weekStartsOn: firstDay }),\n endDate: endOfWeek(subWeeks(new Date(), 1), { weekStartsOn: firstDay })\n })\n },\n {\n label: 'This month',\n key: 'this_month',\n getValue: () => ({\n startDate: startOfMonth(new Date()),\n endDate: endOfMonth(new Date())\n })\n },\n {\n label: 'Last month',\n key: 'last_month',\n getValue: () => ({\n startDate: startOfMonth(subMonths(new Date(), 1)),\n endDate: endOfMonth(subMonths(new Date(), 1))\n })\n },\n {\n label: 'This year',\n key: 'this_year',\n getValue: () => ({\n startDate: startOfYear(new Date()),\n endDate: endOfYear(new Date())\n })\n },\n {\n label: 'Last year',\n key: 'last_year',\n getValue: () => ({\n startDate: startOfYear(subYears(new Date(), 1)),\n endDate: endOfYear(subYears(new Date(), 1))\n })\n }\n ];\n\n const durationPresets: DateRangePreset[] = [\n { label: '+1 Day', isDuration: true, duration: { days: 1 } },\n { label: '+2 Days', isDuration: true, duration: { days: 2 } },\n { label: '+3 Days', isDuration: true, duration: { days: 3 } },\n { label: '+1 Week', isDuration: true, duration: { weeks: 1 } },\n { label: '+2 Weeks', isDuration: true, duration: { weeks: 2 } },\n { label: '+1 Month', isDuration: true, duration: { months: 1 } },\n { label: '+3 Months', isDuration: true, duration: { months: 3 } }\n ];\n\n if (type === 'calendar') return calendarPresets;\n if (type === 'duration') return durationPresets;\n return [...calendarPresets, ...durationPresets];\n });\n\n // Days Grid for Left Calendar Month\n readonly leftCalendarDays = computed(() => {\n return this.buildCalendarDays(this.viewDate());\n });\n\n // Days Grid for Right Calendar Month\n readonly rightCalendarDays = computed(() => {\n return this.buildCalendarDays(this.viewDateRight());\n });\n\n readonly isPrevDisabled = computed(() => {\n const min = this.parsedMinDate();\n if (!min) return false;\n return !isAfter(startOfMonth(this.viewDate()), startOfMonth(min));\n });\n\n readonly isNextDisabled = computed(() => {\n const max = this.parsedMaxDate();\n if (!max) return false;\n return !isBefore(endOfMonth(this.viewDateRight()), endOfMonth(max));\n });\n\n readonly leftHeaderLabel = computed(() => {\n return formatDate(this.viewDate(), 'MMMM yyyy');\n });\n\n readonly rightHeaderLabel = computed(() => {\n return formatDate(this.viewDateRight(), 'MMMM yyyy');\n });\n\n // ControlValueAccessor Callbacks\n private onChange: (val: unknown) => void = () => { };\n private onTouched: () => void = () => { };\n\n constructor() {\n // Keep draft inputs synced with draft dates\n effect(() => {\n const start = this.draftStartDate();\n const end = this.draftEndDate();\n const fmt = this.effectiveDisplayFormat();\n\n if (start && isValid(start)) {\n const fullStart = set(start, {\n hours: this.draftStartHour(),\n minutes: this.draftStartMinute(),\n seconds: this.draftStartSecond()\n });\n this.startInputText.set(formatDate(fullStart, fmt));\n } else {\n this.startInputText.set('');\n }\n\n if (end && isValid(end)) {\n const fullEnd = set(end, {\n hours: this.draftEndHour(),\n minutes: this.draftEndMinute(),\n seconds: this.draftEndSecond()\n });\n this.endInputText.set(formatDate(fullEnd, fmt));\n } else {\n this.endInputText.set('');\n }\n });\n }\n\n // ControlValueAccessor Implementation\n writeValue(val: unknown): void {\n if (!val || typeof val !== 'object') {\n this.selectedStartDate.set(null);\n this.selectedEndDate.set(null);\n return;\n }\n\n let startRaw: unknown = null;\n let endRaw: unknown = null;\n\n if (Array.isArray(val)) {\n startRaw = val[0];\n endRaw = val[1];\n } else if (val && ('startDate' in val || 'endDate' in val)) {\n const rangeVal = val as DateRangeValue;\n startRaw = rangeVal.startDate;\n endRaw = rangeVal.endDate;\n }\n\n const parsedStart = parseFlexibleDate(startRaw, [this.effectiveValueFormat(), this.effectiveDisplayFormat()]);\n const parsedEnd = parseFlexibleDate(endRaw, [this.effectiveValueFormat(), this.effectiveDisplayFormat()]);\n\n if (parsedStart && isValid(parsedStart)) {\n this.selectedStartDate.set(parsedStart);\n this.viewDate.set(startOfMonth(parsedStart));\n if (this.showTime()) {\n this.draftStartHour.set(getHours(parsedStart));\n this.draftStartMinute.set(getMinutes(parsedStart));\n this.draftStartSecond.set(getSeconds(parsedStart));\n }\n } else {\n this.selectedStartDate.set(null);\n }\n\n if (parsedEnd && isValid(parsedEnd)) {\n this.selectedEndDate.set(parsedEnd);\n if (this.showTime()) {\n this.draftEndHour.set(getHours(parsedEnd));\n this.draftEndMinute.set(getMinutes(parsedEnd));\n this.draftEndSecond.set(getSeconds(parsedEnd));\n }\n } else {\n this.selectedEndDate.set(null);\n }\n }\n\n registerOnChange(fn: (val: unknown) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabledSignal.set(isDisabled);\n }\n\n // Dropdown Controls\n toggleOpen(): void {\n if (this.effectiveDisabled()) return;\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open(): void {\n if (this.effectiveDisabled() || this.isOpen()) return;\n this.isOpen.set(true);\n\n const selStart = this.selectedStartDate();\n const selEnd = this.selectedEndDate();\n\n if (selStart && isValid(selStart)) {\n this.draftStartDate.set(selStart);\n this.viewDate.set(startOfMonth(selStart));\n this.draftStartHour.set(getHours(selStart));\n this.draftStartMinute.set(getMinutes(selStart));\n this.draftStartSecond.set(getSeconds(selStart));\n } else {\n this.draftStartDate.set(null);\n this.viewDate.set(startOfMonth(new Date()));\n this.draftStartHour.set(0);\n this.draftStartMinute.set(0);\n this.draftStartSecond.set(0);\n }\n\n if (selEnd && isValid(selEnd)) {\n this.draftEndDate.set(selEnd);\n this.draftEndHour.set(getHours(selEnd));\n this.draftEndMinute.set(getMinutes(selEnd));\n this.draftEndSecond.set(getSeconds(selEnd));\n } else {\n this.draftEndDate.set(null);\n this.draftEndHour.set(23);\n this.draftEndMinute.set(59);\n this.draftEndSecond.set(59);\n }\n\n this.hoverDate.set(null);\n this.opened.emit();\n }\n\n close(): void {\n if (!this.isOpen()) return;\n this.isOpen.set(false);\n this.markAsTouched();\n this.closed.emit();\n }\n\n // Dual Calendar Month Navigation\n prevMonth(): void {\n if (this.isPrevDisabled()) return;\n this.viewDate.update((d) => subMonths(d, 1));\n }\n\n nextMonth(): void {\n if (this.isNextDisabled()) return;\n this.viewDate.update((d) => addMonths(d, 1));\n }\n\n // Day Selection Logic\n selectDay(day: RangeCalendarDay): void {\n if (day.isDisabled) return;\n this.activePresetLabel.set(null);\n\n const start = this.draftStartDate();\n const end = this.draftEndDate();\n\n if (!start || (start && end)) {\n // Step 1: Set new Start Date & clear End Date\n const newStart = set(day.date, {\n hours: this.draftStartHour(),\n minutes: this.draftStartMinute(),\n seconds: this.draftStartSecond()\n });\n this.draftStartDate.set(newStart);\n this.draftEndDate.set(null);\n } else {\n // Step 2: Set End Date\n const targetDate = day.date;\n if (isBefore(startOfDay(targetDate), startOfDay(start))) {\n // If clicked date is before start date, swap them\n const newStart = set(targetDate, {\n hours: this.draftStartHour(),\n minutes: this.draftStartMinute(),\n seconds: this.draftStartSecond()\n });\n const newEnd = set(start, {\n hours: this.draftEndHour(),\n minutes: this.draftEndMinute(),\n seconds: this.draftEndSecond()\n });\n this.draftStartDate.set(newStart);\n this.draftEndDate.set(newEnd);\n } else {\n const newEnd = set(targetDate, {\n hours: this.draftEndHour(),\n minutes: this.draftEndMinute(),\n seconds: this.draftEndSecond()\n });\n this.draftEndDate.set(newEnd);\n }\n }\n }\n\n onDayHover(day: RangeCalendarDay): void {\n if (this.draftStartDate() && !this.draftEndDate()) {\n this.hoverDate.set(day.date);\n } else {\n this.hoverDate.set(null);\n }\n }\n\n // Preset Selection\n applyPreset(preset: DateRangePreset): void {\n this.activePresetLabel.set(preset.label);\n\n let newStart: Date | null = null;\n let newEnd: Date | null = null;\n\n if (preset.isDuration || preset.duration) {\n const baseStart = this.draftStartDate() || startOfDay(new Date());\n newStart = set(baseStart, {\n hours: this.draftStartHour(),\n minutes: this.draftStartMinute(),\n seconds: this.draftStartSecond()\n });\n let calculatedEnd = baseStart;\n\n if (preset.duration?.days) calculatedEnd = addDays(calculatedEnd, preset.duration.days);\n if (preset.duration?.weeks) calculatedEnd = addWeeks(calculatedEnd, preset.duration.weeks);\n if (preset.duration?.months) calculatedEnd = addMonths(calculatedEnd, preset.duration.months);\n if (preset.duration?.years) calculatedEnd = addYears(calculatedEnd, preset.duration.years);\n\n newEnd = set(calculatedEnd, {\n hours: this.draftEndHour(),\n minutes: this.draftEndMinute(),\n seconds: this.draftEndSecond()\n });\n } else if (preset.getValue) {\n const range = preset.getValue(this.draftStartDate());\n newStart = range.startDate;\n newEnd = range.endDate;\n }\n\n if (newStart && isValid(newStart)) {\n this.draftStartDate.set(newStart);\n this.viewDate.set(startOfMonth(newStart));\n }\n if (newEnd && isValid(newEnd)) {\n this.draftEndDate.set(newEnd);\n }\n }\n\n // Apply & Cancel Overlay Actions\n applySelection(): void {\n const start = this.draftStartDate();\n const end = this.draftEndDate();\n\n if (!start) {\n this.selectedStartDate.set(null);\n this.selectedEndDate.set(null);\n this.emitValue(null);\n this.close();\n return;\n }\n\n const finalStart = set(start, {\n hours: this.draftStartHour(),\n minutes: this.draftStartMinute(),\n seconds: this.draftStartSecond()\n });\n const finalEnd = set(end || start, {\n hours: this.draftEndHour(),\n minutes: this.draftEndMinute(),\n seconds: this.draftEndSecond()\n });\n\n // Ensure start is before or equal to end\n if (isBefore(finalEnd, finalStart)) {\n this.selectedStartDate.set(finalEnd);\n this.selectedEndDate.set(finalStart);\n this.emitValue({ startDate: finalEnd, endDate: finalStart });\n } else {\n this.selectedStartDate.set(finalStart);\n this.selectedEndDate.set(finalEnd);\n this.emitValue({ startDate: finalStart, endDate: finalEnd });\n }\n\n this.close();\n }\n\n cancelSelection(): void {\n this.close();\n }\n\n onClear(event: MouseEvent): void {\n event.stopPropagation();\n if (this.effectiveDisabled()) return;\n this.selectedStartDate.set(null);\n this.selectedEndDate.set(null);\n this.draftStartDate.set(null);\n this.draftEndDate.set(null);\n this.emitValue(null);\n }\n\n // Time Manipulations (Start & End)\n adjustStartHour(delta: number): void {\n this.draftStartHour.update((h) => (h + delta + 24) % 24);\n }\n\n adjustStartMinute(delta: number): void {\n const step = this.minuteStep();\n this.draftStartMinute.update((m) => (m + delta * step + 60) % 60);\n }\n\n adjustEndHour(delta: number): void {\n this.draftEndHour.update((h) => (h + delta + 24) % 24);\n }\n\n adjustEndMinute(delta: number): void {\n const step = this.minuteStep();\n this.draftEndMinute.update((m) => (m + delta * step + 60) % 60);\n }\n\n toggleStartMeridiem(): void {\n this.draftStartHour.update((h) => (h >= 12 ? h - 12 : h + 12));\n }\n\n toggleEndMeridiem(): void {\n this.draftEndHour.update((h) => (h >= 12 ? h - 12 : h + 12));\n }\n\n // Direct Typing Handlers for Start & End Input Fields in Footer\n onStartInputChange(event: Event): void {\n const val = (event.target as HTMLInputElement).value;\n this.startInputText.set(val);\n\n if (!val.trim()) {\n this.draftStartDate.set(null);\n return;\n }\n\n const parsed = parseFlexibleDate(val, [this.effectiveDisplayFormat(), this.effectiveValueFormat()]);\n if (parsed && isValid(parsed)) {\n this.draftStartDate.set(parsed);\n this.draftStartHour.set(getHours(parsed));\n this.draftStartMinute.set(getMinutes(parsed));\n this.draftStartSecond.set(getSeconds(parsed));\n this.viewDate.set(startOfMonth(parsed));\n }\n }\n\n onStartInputBlur(event: FocusEvent): void {\n const start = this.draftStartDate();\n const fmt = this.effectiveDisplayFormat();\n if (start && isValid(start)) {\n const fullStart = set(start, {\n hours: this.draftStartHour(),\n minutes: this.draftStartMinute(),\n seconds: this.draftStartSecond()\n });\n this.startInputText.set(formatDate(fullStart, fmt));\n } else {\n this.startInputText.set('');\n }\n }\n\n onEndInputChange(event: Event): void {\n const val = (event.target as HTMLInputElement).value;\n this.endInputText.set(val);\n\n if (!val.trim()) {\n this.draftEndDate.set(null);\n return;\n }\n\n const parsed = parseFlexibleDate(val, [this.effectiveDisplayFormat(), this.effectiveValueFormat()]);\n if (parsed && isValid(parsed)) {\n this.draftEndDate.set(parsed);\n this.draftEndHour.set(getHours(parsed));\n this.draftEndMinute.set(getMinutes(parsed));\n this.draftEndSecond.set(getSeconds(parsed));\n }\n }\n\n onEndInputBlur(event: FocusEvent): void {\n const end = this.draftEndDate();\n const fmt = this.effectiveDisplayFormat();\n if (end && isValid(end)) {\n const fullEnd = set(end, {\n hours: this.draftEndHour(),\n minutes: this.draftEndMinute(),\n seconds: this.draftEndSecond()\n });\n this.endInputText.set(formatDate(fullEnd, fmt));\n } else {\n this.endInputText.set('');\n }\n }\n\n onFooterInputKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Enter') {\n event.preventDefault();\n this.applySelection();\n }\n }\n\n // Helper Calendar Builder\n private buildCalendarDays(viewMonth: Date): RangeCalendarDay[] {\n const start = this.draftStartDate();\n const end = this.draftEndDate();\n const hover = this.hoverDate();\n const min = this.parsedMinDate();\n const max = this.parsedMaxDate();\n const filter = this.filterDate();\n const firstDay = (this.firstDayOfWeek() % 7) as 0 | 1 | 2 | 3 | 4 | 5 | 6;\n const minS = this.minSpan();\n const maxS = this.maxSpan();\n\n const days: RangeCalendarDay[] = [];\n const monthStart = startOfMonth(viewMonth);\n const gridStart = startOfWeek(monthStart, { weekStartsOn: firstDay });\n const today = startOfDay(new Date());\n\n for (let i = 0; i < 42; i++) {\n const current = addDays(gridStart, i);\n const isCurrentMonth = isSameMonth(current, viewMonth);\n const isToday = isSameDay(current, today);\n\n const isSelectedStart = !!(start && isSameDay(current, start));\n const isSelectedEnd = !!(end && isSameDay(current, end));\n\n let isInRange = false;\n if (start && end) {\n const rangeStart = isBefore(start, end) ? start : end;\n const rangeEnd = isBefore(start, end) ? end : start;\n isInRange = isAfter(startOfDay(current), startOfDay(rangeStart)) && isBefore(startOfDay(current), startOfDay(rangeEnd));\n }\n\n let isHoveredRange = false;\n if (start && !end && hover) {\n const rangeStart = isBefore(start, hover) ? start : hover;\n const rangeEnd = isBefore(start, hover) ? hover : start;\n isHoveredRange = (isSameDay(current, rangeStart) || isAfter(startOfDay(current), startOfDay(rangeStart))) &&\n (isSameDay(current, rangeEnd) || isBefore(startOfDay(current), startOfDay(rangeEnd)));\n }\n\n let isDisabled = false;\n if (min && isBefore(startOfDay(current), startOfDay(min))) isDisabled = true;\n if (max && isAfter(startOfDay(current), startOfDay(max))) isDisabled = true;\n if (filter && !filter(current)) isDisabled = true;\n\n // Span validation\n if (start && !end && (minS !== null || maxS !== null)) {\n const diffDays = Math.abs(differenceInCalendarDays(current, start));\n if (minS !== null && diffDays < minS) isDisabled = true;\n if (maxS !== null && diffDays > maxS) isDisabled = true;\n }\n\n days.push({\n date: current,\n dayNumber: getDate(current),\n isCurrentMonth,\n isToday,\n isSelectedStart,\n isSelectedEnd,\n isInRange,\n isHoveredRange,\n isDisabled,\n isFocused: false\n });\n }\n\n return days;\n }\n\n private emitValue(range: InternalDateRange | null): void {\n if (!range || !range.startDate || !range.endDate) {\n this.onChange(null);\n this.rangeChange.emit(null);\n return;\n }\n\n const fmt = this.effectiveValueFormat();\n const outStart = this.formatOutputDate(range.startDate, fmt);\n const outEnd = this.formatOutputDate(range.endDate, fmt);\n\n const outVal: DateRangeValue = {\n startDate: outStart as any,\n endDate: outEnd as any\n };\n\n this.onChange(outVal);\n this.rangeChange.emit(outVal);\n }\n\n private formatOutputDate(date: Date, fmt: string): unknown {\n if (fmt === 'date') return date;\n if (fmt === 'iso') return date.toISOString();\n return formatDate(date, fmt);\n }\n\n markAsTouched(): void {\n if (!this.isTouched()) {\n this.isTouched.set(true);\n this.onTouched();\n }\n }\n\n onKeyDown(event: KeyboardEvent): void {\n if (this.effectiveDisabled()) return;\n\n if (!this.isOpen()) {\n if (['ArrowDown', 'ArrowUp', 'Enter', ' '].includes(event.key)) {\n event.preventDefault();\n this.open();\n }\n return;\n }\n\n if (event.key === 'Escape') {\n event.preventDefault();\n this.close();\n }\n }\n\n onDocumentClick(event: MouseEvent): void {\n if (!this.isOpen()) return;\n const target = event.target as Node;\n const clickedInsideHost = this.elementRef.nativeElement.contains(target);\n const clickedInsideOverlay = target instanceof Element && !!target.closest('.daterangepicker-dropdown-panel');\n\n if (!clickedInsideHost && !clickedInsideOverlay) {\n this.close();\n }\n }\n}\n","@if (label() && !isFloatingMode()) {\n <label class=\"talos-field-label\" (click)=\"toggleOpen()\">\n {{ label() }}\n @if (required()) {\n <span class=\"required-star\" aria-hidden=\"true\">*</span>\n }\n </label>\n}\n\n<div class=\"datepicker-control-container\">\n <!-- DateRangePicker Input Trigger -->\n <div #triggerEl cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" class=\"datepicker-trigger daterangepicker-trigger\"\n role=\"combobox\" [attr.aria-expanded]=\"isOpen()\" [attr.aria-haspopup]=\"'dialog'\" [attr.aria-controls]=\"dialogId\"\n [attr.aria-disabled]=\"effectiveDisabled()\" (click)=\"toggleOpen()\">\n <div class=\"datepicker-value-container\">\n <svg class=\"datepicker-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\n aria-hidden=\"true\">\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"></rect>\n <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\"></line>\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\"></line>\n <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\"></line>\n </svg>\n <span class=\"daterangepicker-value-text\" [class.is-placeholder]=\"!formattedTriggerValue()\">\n {{ formattedTriggerValue() || (isFloatingMode() && !isFloated() ? '' : placeholder()) }}\n </span>\n </div>\n\n @if (label() && isFloatingMode()) {\n <label class=\"talos-floating-label\" [class.is-floated]=\"isFloated()\" (click)=\"toggleOpen()\">\n {{ label() }}\n @if (required()) {\n <span class=\"required-star\" aria-hidden=\"true\">*</span>\n }\n </label>\n }\n\n <div class=\"datepicker-actions\">\n @if (clearable() && formattedTriggerValue() && !effectiveDisabled()) {\n <button type=\"button\" class=\"datepicker-clear-btn\" aria-label=\"Clear range\" title=\"Clear range\"\n (click)=\"onClear($event)\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n }\n </div>\n </div>\n\n<!-- Dual Calendar Dropdown Overlay Dialog -->\n<ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"origin\" [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayPositions]=\"positions\" [cdkConnectedOverlayHasBackdrop]=\"false\"\n [cdkConnectedOverlayLockPosition]=\"false\" [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n [cdkConnectedOverlayPush]=\"true\" (detach)=\"close()\">\n <div class=\"datepicker-dropdown-panel daterangepicker-dropdown-panel\" [id]=\"dialogId\" role=\"dialog\"\n aria-label=\"Date Range Picker Calendar\">\n <div class=\"daterangepicker-content\">\n\n <!-- Presets Sidebar -->\n @if (effectivePresets().length > 0) {\n <aside class=\"daterangepicker-sidebar\">\n <div class=\"preset-list\">\n @for (preset of effectivePresets(); track preset.label) {\n <button type=\"button\" class=\"preset-item\" [class.is-active]=\"activePresetLabel() === preset.label\"\n (click)=\"applyPreset(preset)\">\n {{ preset.label }}\n </button>\n }\n </div>\n </aside>\n }\n\n <!-- Main Dual Calendars Container -->\n <main class=\"daterangepicker-calendars-container\">\n <div class=\"dual-calendars-grid\">\n\n <!-- Left Calendar Month -->\n <div class=\"calendar-month-panel left-month\">\n <div class=\"datepicker-header\">\n <button type=\"button\" class=\"datepicker-nav-btn\" aria-label=\"Previous month\" title=\"Previous month\"\n [disabled]=\"isPrevDisabled()\" (click)=\"prevMonth()\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\">\n <polyline points=\"15 18 9 12 15 6\"></polyline>\n </svg>\n </button>\n <span class=\"month-header-title\">{{ leftHeaderLabel() }}</span>\n <div class=\"header-nav-placeholder\"></div>\n </div>\n\n <div class=\"datepicker-body\">\n <div class=\"datepicker-weekdays\">\n @for (dayName of weekDayNames(); track dayName) {\n <span class=\"weekday-cell\">{{ dayName }}</span>\n }\n </div>\n\n <div class=\"datepicker-days-grid\">\n @for (day of leftCalendarDays(); track day.date.valueOf()) {\n <button type=\"button\" class=\"day-cell range-day-cell\" [class.is-other-month]=\"!day.isCurrentMonth\"\n [class.is-today]=\"day.isToday\" [class.is-selected-start]=\"day.isSelectedStart\"\n [class.is-selected-end]=\"day.isSelectedEnd\" [class.is-in-range]=\"day.isInRange\"\n [class.is-hovered-range]=\"day.isHoveredRange\" [class.is-disabled]=\"day.isDisabled\"\n [disabled]=\"day.isDisabled\" (click)=\"selectDay(day)\" (mouseenter)=\"onDayHover(day)\">\n {{ day.dayNumber }}\n </button>\n }\n </div>\n </div>\n </div>\n\n <!-- Vertical Separator Divider -->\n <div class=\"calendars-divider\"></div>\n\n <!-- Right Calendar Month -->\n <div class=\"calendar-month-panel right-month\">\n <div class=\"datepicker-header\">\n <div class=\"header-nav-placeholder\"></div>\n <span class=\"month-header-title\">{{ rightHeaderLabel() }}</span>\n <button type=\"button\" class=\"datepicker-nav-btn\" aria-label=\"Next month\" title=\"Next month\"\n [disabled]=\"isNextDisabled()\" (click)=\"nextMonth()\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\">\n <polyline points=\"9 18 15 12 9 6\"></polyline>\n </svg>\n </button>\n </div>\n\n <div class=\"datepicker-body\">\n <div class=\"datepicker-weekdays\">\n @for (dayName of weekDayNames(); track dayName) {\n <span class=\"weekday-cell\">{{ dayName }}</span>\n }\n </div>\n\n <div class=\"datepicker-days-grid\">\n @for (day of rightCalendarDays(); track day.date.valueOf()) {\n <button type=\"button\" class=\"day-cell range-day-cell\" [class.is-other-month]=\"!day.isCurrentMonth\"\n [class.is-today]=\"day.isToday\" [class.is-selected-start]=\"day.isSelectedStart\"\n [class.is-selected-end]=\"day.isSelectedEnd\" [class.is-in-range]=\"day.isInRange\"\n [class.is-hovered-range]=\"day.isHoveredRange\" [class.is-disabled]=\"day.isDisabled\"\n [disabled]=\"day.isDisabled\" (click)=\"selectDay(day)\" (mouseenter)=\"onDayHover(day)\">\n {{ day.dayNumber }}\n </button>\n }\n </div>\n </div>\n </div>\n\n </div>\n\n <!-- Optional Time Pickers Row (When showTime is true) -->\n @if (showTime()) {\n <div class=\"daterangepicker-time-row\">\n <div class=\"time-picker-block\">\n <span class=\"time-label\">Start Time:</span>\n <div class=\"time-controls\">\n <button type=\"button\" class=\"time-adjust-btn\" (click)=\"adjustStartHour(1)\">▲</button>\n <span class=\"time-val\">{{ draftStartHour().toString().padStart(2, '0') }}</span>\n <button type=\"button\" class=\"time-adjust-btn\" (click)=\"adjustStartHour(-1)\">▼</button>\n <span class=\"time-sep\">:</span>\n <button type=\"button\" class=\"time-adjust-btn\" (click)=\"adjustStartMinute(1)\">▲</button>\n <span class=\"time-val\">{{ draftStartMinute().toString().padStart(2, '0') }}</span>\n <button type=\"button\" class=\"time-adjust-btn\" (click)=\"adjustStartMinute(-1)\">▼</button>\n @if (!use24Hour()) {\n <button type=\"button\" class=\"meridiem-toggle\" (click)=\"toggleStartMeridiem()\">\n {{ draftStartHour() >= 12 ? 'PM' : 'AM' }}\n </button>\n }\n </div>\n </div>\n\n <div class=\"time-picker-block\">\n <span class=\"time-label\">End Time:</span>\n <div class=\"time-controls\">\n <button type=\"button\" class=\"time-adjust-btn\" (click)=\"adjustEndHour(1)\">▲</button>\n <span class=\"time-val\">{{ draftEndHour().toString().padStart(2, '0') }}</span>\n <button type=\"button\" class=\"time-adjust-btn\" (click)=\"adjustEndHour(-1)\">▼</button>\n <span class=\"time-sep\">:</span>\n <button type=\"button\" class=\"time-adjust-btn\" (click)=\"adjustEndMinute(1)\">▲</button>\n <span class=\"time-val\">{{ draftEndMinute().toString().padStart(2, '0') }}</span>\n <button type=\"button\" class=\"time-adjust-btn\" (click)=\"adjustEndMinute(-1)\">▼</button>\n @if (!use24Hour()) {\n <button type=\"button\" class=\"meridiem-toggle\" (click)=\"toggleEndMeridiem()\">\n {{ draftEndHour() >= 12 ? 'PM' : 'AM' }}\n </button>\n }\n </div>\n </div>\n </div>\n }\n\n <!-- Bottom Action & Inputs Footer Bar -->\n <footer class=\"daterangepicker-footer\">\n <div class=\"range-display-inputs\">\n <input #startInputEl type=\"text\" class=\"date-preview-input\" [value]=\"startInputText()\"\n [placeholder]=\"showTime() ? 'YYYY-MM-DD HH:mm' : 'YYYY-MM-DD'\" (input)=\"onStartInputChange($event)\"\n (blur)=\"onStartInputBlur($event)\" (keydown)=\"onFooterInputKeyDown($event)\"\n aria-label=\"Start date input\" />\n <span class=\"range-sep\">—</span>\n <input #endInputEl type=\"text\" class=\"date-preview-input\" [value]=\"endInputText()\"\n [placeholder]=\"showTime() ? 'YYYY-MM-DD HH:mm' : 'YYYY-MM-DD'\" (input)=\"onEndInputChange($event)\"\n (blur)=\"onEndInputBlur($event)\" (keydown)=\"onFooterInputKeyDown($event)\" aria-label=\"End date input\" />\n </div>\n\n <div class=\"action-buttons\">\n <button type=\"button\" class=\"btn-range-cancel\" (click)=\"cancelSelection()\">\n Cancel\n </button>\n <button type=\"button\" class=\"btn-range-apply\" (click)=\"applySelection()\">\n Apply\n </button>\n </div>\n </footer>\n\n\n </main>\n\n </div>\n </div>\n</ng-template>\n</div>","import {\n Component,\n ElementRef,\n ViewChild,\n effect,\n forwardRef,\n input,\n output,\n signal\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { DateRangePickerComponent } from '@weeehaoooz/talos-ui/form/date-range-picker';\nimport { DateRangePreset, DateRangeValue } from '@weeehaoooz/talos-ui/form/date-range-picker';\n\nlet uniqueDateTimeRangePickerId = 0;\n\n@Component({\n selector: 'talos-date-time-range-picker',\n imports: [DateRangePickerComponent],\n templateUrl: './date-time-range-picker.component.html',\n styleUrl: './date-time-range-picker.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateTimeRangePickerComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'talos-datetimerangepicker-host'\n }\n})\nexport class DateTimeRangePickerComponent implements ControlValueAccessor {\n // Signal Inputs\n readonly placeholder = input<string>('Select date & time range');\n readonly label = input<string>('');\n readonly floatingLabel = input<boolean>(false);\n readonly floating = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly clearable = input<boolean>(true);\n readonly size = input<'sm' | 'md' | 'lg'>('md');\n readonly displayFormat = input<string>('yyyy-MM-dd HH:mm');\n readonly valueFormat = input<string>('yyyy-MM-dd HH:mm');\n readonly use24Hour = input<boolean>(true);\n readonly showSeconds = input<boolean>(false);\n readonly minuteStep = input<number>(1);\n readonly minDate = input<string | Date | number | null>(null);\n readonly maxDate = input<string | Date | number | null>(null);\n readonly minSpan = input<number | null>(null);\n readonly maxSpan = input<number | null>(null);\n readonly firstDayOfWeek = input<number>(0);\n readonly presets = input<DateRangePreset[] | null>(null);\n readonly presetType = input<'all' | 'calendar' | 'duration'>('all');\n readonly filterDate = input<((date: Date) => boolean) | null>(null);\n\n // Signal Outputs\n readonly dateTimeRangeChange = output<DateRangeValue | null>();\n readonly opened = output<void>();\n readonly closed = output<void>();\n\n @ViewChild(DateRangePickerComponent) corePicker?: DateRangePickerComponent;\n\n // Component unique IDs\n readonly componentId = `talos-datetimerangepicker-${uniqueDateTimeRangePickerId++}`;\n\n readonly currentValue = signal<DateRangeValue | null>(null);\n private onChange: (val: unknown) => void = () => { };\n private onTouched: () => void = () => { };\n\n constructor() {\n effect(() => {\n const val = this.currentValue();\n if (this.corePicker) {\n this.corePicker.writeValue(val);\n }\n });\n }\n\n writeValue(val: unknown): void {\n if (!val || typeof val !== 'object') {\n this.currentValue.set(null);\n if (this.corePicker) {\n this.corePicker.writeValue(null);\n }\n } else {\n this.currentValue.set(val as DateRangeValue);\n if (this.corePicker) {\n this.corePicker.writeValue(val);\n }\n }\n }\n\n registerOnChange(fn: (val: unknown) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n // Delegated to inner date-range-picker component via input\n }\n\n onRangeChange(val: DateRangeValue | null): void {\n this.currentValue.set(val);\n this.onChange(val);\n this.dateTimeRangeChange.emit(val);\n }\n\n onOpened(): void {\n this.opened.emit();\n }\n\n onClosed(): void {\n this.onTouched();\n this.closed.emit();\n }\n}\n","<talos-date-range-picker [label]=\"label()\" [floatingLabel]=\"floatingLabel()\" [floating]=\"floating()\" [required]=\"required()\"\n [placeholder]=\"placeholder()\" [disabled]=\"disabled()\" [clearable]=\"clearable()\" [size]=\"size()\"\n [displayFormat]=\"displayFormat()\" [valueFormat]=\"valueFormat()\" [showTime]=\"true\" [use24Hour]=\"use24Hour()\"\n [showSeconds]=\"showSeconds()\" [minuteStep]=\"minuteStep()\" [minDate]=\"minDate()\" [maxDate]=\"maxDate()\"\n [minSpan]=\"minSpan()\" [maxSpan]=\"maxSpan()\" [firstDayOfWeek]=\"firstDayOfWeek()\" [presets]=\"presets()\"\n [presetType]=\"presetType()\" [filterDate]=\"filterDate()\" (rangeChange)=\"onRangeChange($event)\" (opened)=\"onOpened()\"\n (closed)=\"onClosed()\">\n</talos-date-range-picker>","import { Directive, input } from '@angular/core';\n\nexport type RadioSize = 'sm' | 'md' | 'lg';\nexport type RadioVariant = 'primary' | 'secondary' | 'success' | 'danger';\n\n@Directive({\n selector: 'input[type=\"radio\"][talosRadio], input[type=\"radio\"][talos-radio]',\n host: {\n 'class': 'talos-radio',\n '[class.radio-sm]': 'size() === \"sm\"',\n '[class.radio-md]': 'size() === \"md\"',\n '[class.radio-lg]': 'size() === \"lg\"',\n '[class.talos-radio-primary]': 'variant() === \"primary\"',\n '[class.talos-radio-secondary]': 'variant() === \"secondary\"',\n '[class.talos-radio-success]': 'variant() === \"success\"',\n '[class.talos-radio-danger]': 'variant() === \"danger\"',\n '[class.is-invalid]': 'invalid()'\n }\n})\nexport class TalosRadioDirective {\n /** Sizing variation for the radio button */\n readonly size = input<RadioSize>('md');\n\n /** Visual color variant for the radio button */\n readonly variant = input<RadioVariant>('primary');\n\n /** Whether the radio button is in an invalid error state */\n readonly invalid = input<boolean>(false);\n}\n","import {\n Component,\n ElementRef,\n ViewChild,\n ChangeDetectorRef,\n computed,\n inject,\n input\n} from '@angular/core';\nimport { TalosRadioDirective, RadioSize, RadioVariant } from './radio.directive';\nimport { TalosRadioGroupComponent } from '../radio-group/radio-group.component';\n\nlet radioOptionCounter = 0;\n\n@Component({\n selector: 'talos-radio',\n imports: [TalosRadioDirective],\n template: `\n <label class=\"talos-radio-wrapper\" [class.is-disabled]=\"effectiveDisabled()\" [class.is-checked]=\"checked()\">\n <input\n #radioInput\n type=\"radio\"\n talosRadio\n [id]=\"elementId()\"\n [name]=\"effectiveName()\"\n [size]=\"effectiveSize()\"\n [variant]=\"effectiveVariant()\"\n [checked]=\"checked()\"\n [disabled]=\"effectiveDisabled()\"\n (change)=\"onRadioChange($event)\"\n />\n <span class=\"talos-radio-label\">\n <ng-content></ng-content>\n </span>\n </label>\n `,\n host: {\n 'class': 'talos-radio-host'\n }\n})\nexport class TalosRadioComponent {\n private readonly radioGroup = inject(TalosRadioGroupComponent, { optional: true });\n private readonly cdr = inject(ChangeDetectorRef);\n\n @ViewChild('radioInput') radioInputEl?: ElementRef<HTMLInputElement>;\n\n // Signal Inputs\n readonly value = input.required<unknown>();\n readonly disabled = input<boolean>(false);\n readonly size = input<RadioSize | undefined>(undefined);\n readonly variant = input<RadioVariant | undefined>(undefined);\n readonly id = input<string>('');\n\n // Internal Unique ID\n private readonly defaultId = `talos-radio-opt-${++radioOptionCounter}`;\n readonly elementId = computed(() => this.id() || this.defaultId);\n\n // Cascading properties from group or standalone defaults\n readonly effectiveName = computed(() => this.radioGroup?.name() || 'talos-radio');\n readonly effectiveSize = computed(() => this.size() ?? this.radioGroup?.size() ?? 'md');\n readonly effectiveVariant = computed(() => this.variant() ?? this.radioGroup?.variant() ?? 'primary');\n readonly effectiveDisabled = computed(() => this.disabled() || (this.radioGroup?.effectiveDisabled() ?? false));\n\n // Selection state\n readonly checked = computed(() => {\n if (!this.radioGroup) return false;\n return this.radioGroup.value() === this.value();\n });\n\n onRadioChange(event: Event): void {\n if (this.effectiveDisabled()) return;\n if (this.radioGroup) {\n this.radioGroup.selectValue(this.value());\n }\n }\n\n focusInput(): void {\n this.radioInputEl?.nativeElement.focus();\n }\n\n markForCheck(): void {\n this.cdr.markForCheck();\n }\n}\n","import {\n Component,\n ElementRef,\n computed,\n contentChildren,\n effect,\n forwardRef,\n inject,\n input,\n output,\n signal\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { TalosRadioDirective, RadioSize, RadioVariant } from '../radio/radio.directive';\nimport { TalosRadioComponent } from '../radio/radio.component';\n\nexport type RadioDirection = 'vertical' | 'horizontal';\n\nlet groupUniqueIdCounter = 0;\n\n@Component({\n selector: 'talos-radio-group',\n template: '<ng-content></ng-content>',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TalosRadioGroupComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'talos-radio-group',\n 'role': 'radiogroup',\n '[class.direction-vertical]': 'direction() === \"vertical\"',\n '[class.direction-horizontal]': 'direction() === \"horizontal\"',\n '[class.is-disabled]': 'effectiveDisabled()',\n '[class.is-invalid]': 'invalid()',\n '(keydown)': 'onKeyDown($event)'\n }\n})\nexport class TalosRadioGroupComponent implements ControlValueAccessor {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n // Signal Inputs\n readonly name = input<string>(`talos-radio-group-${++groupUniqueIdCounter}`);\n readonly size = input<RadioSize>('md');\n readonly variant = input<RadioVariant>('primary');\n readonly direction = input<RadioDirection>('vertical');\n readonly disabled = input<boolean>(false);\n readonly invalid = input<boolean>(false);\n\n // Signal Outputs\n readonly valueChange = output<unknown>();\n\n // Content Queries for child radios\n readonly radios = contentChildren(TalosRadioComponent, { descendants: true });\n\n // Internal reactive state\n readonly value = signal<unknown>(null);\n readonly isDisabled = signal<boolean>(false);\n readonly isTouched = signal<boolean>(false);\n\n // Computed state\n readonly effectiveDisabled = computed(() => this.disabled() || this.isDisabled());\n\n // ControlValueAccessor Callbacks\n private onChange: (val: unknown) => void = () => { };\n private onTouched: () => void = () => { };\n\n constructor() {\n // Notify child radios when group state changes\n effect(() => {\n const childRadios = this.radios();\n const currentVal = this.value();\n childRadios.forEach((radio) => {\n radio.markForCheck();\n });\n });\n }\n\n // --- ControlValueAccessor Interface ---\n writeValue(val: unknown): void {\n this.value.set(val);\n }\n\n registerOnChange(fn: (val: unknown) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled);\n }\n\n selectValue(val: unknown): void {\n if (this.effectiveDisabled()) return;\n if (this.value() !== val) {\n this.value.set(val);\n this.onChange(val);\n this.valueChange.emit(val);\n }\n this.markAsTouched();\n }\n\n markAsTouched(): void {\n if (!this.isTouched()) {\n this.isTouched.set(true);\n this.onTouched();\n }\n }\n\n // --- Keyboard Navigation (Arrow Keys) ---\n onKeyDown(event: KeyboardEvent): void {\n if (this.effectiveDisabled()) return;\n\n const childRadios = this.radios().filter((r) => !r.effectiveDisabled());\n if (childRadios.length === 0) return;\n\n const currentIdx = childRadios.findIndex((r) => r.value() === this.value());\n\n switch (event.key) {\n case 'ArrowDown':\n case 'ArrowRight': {\n event.preventDefault();\n const nextIdx = currentIdx < 0 ? 0 : (currentIdx + 1) % childRadios.length;\n const nextRadio = childRadios[nextIdx];\n this.selectValue(nextRadio.value());\n nextRadio.focusInput();\n break;\n }\n case 'ArrowUp':\n case 'ArrowLeft': {\n event.preventDefault();\n const prevIdx = currentIdx < 0 ? childRadios.length - 1 : (currentIdx - 1 + childRadios.length) % childRadios.length;\n const prevRadio = childRadios[prevIdx];\n this.selectValue(prevRadio.value());\n prevRadio.focusInput();\n break;\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { TalosRadioDirective } from './radio/radio.directive';\nimport { TalosRadioGroupComponent } from './radio-group/radio-group.component';\nimport { TalosRadioComponent } from './radio/radio.component';\n\n/**\n * Convenience NgModule wrapping the standalone radio components and directive.\n * \n * Allows developers who prefer `TalosRadioModule` to import it into standalone components\n * or legacy NgModule-based applications.\n */\n@NgModule({\n imports: [TalosRadioDirective, TalosRadioGroupComponent, TalosRadioComponent],\n exports: [TalosRadioDirective, TalosRadioGroupComponent, TalosRadioComponent]\n})\nexport class TalosRadioModule { }\n","import {\n Component,\n TemplateRef,\n Type,\n computed,\n input,\n output,\n signal,\n OnDestroy,\n OnInit\n} from '@angular/core';\nimport { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport {\n LucideInfo,\n LucideCheckCircle2,\n LucideAlertTriangle,\n LucideCircleAlert,\n LucideX\n} from '@lucide/angular';\nimport { TalosSnackbarInstance } from '../snackbar.types';\n\n@Component({\n selector: 'talos-snackbar',\n imports: [\n NgComponentOutlet,\n NgTemplateOutlet,\n LucideInfo,\n LucideCheckCircle2,\n LucideAlertTriangle,\n LucideCircleAlert,\n LucideX\n ],\n templateUrl: './snackbar.component.html',\n styleUrl: './snackbar.component.scss'\n})\nexport class TalosSnackbarComponent implements OnInit, OnDestroy {\n /** Snackbar instance data */\n readonly instance = input.required<TalosSnackbarInstance>();\n\n /** Event emitted when snackbar requests dismissal */\n readonly dismiss = output<string>();\n\n /** Event emitted when snackbar action button is clicked */\n readonly action = output<string>();\n\n protected readonly isDismissing = signal<boolean>(false);\n protected readonly progressPercent = signal<number>(100);\n protected readonly Infinity = Infinity;\n\n\n private timerId: ReturnType<typeof setInterval> | null = null;\n private remainingMs = 0;\n private lastTickMs = 0;\n\n readonly isTopPosition = computed(() => {\n const pos = this.instance().position;\n return pos ? pos.startsWith('top') : false;\n });\n\n readonly isTemplateMessage = computed(() => {\n return this.instance().message instanceof TemplateRef;\n });\n\n\n readonly templateMessage = computed(() => {\n return this.instance().message as TemplateRef<unknown>;\n });\n\n readonly customIconComponent = computed(() => {\n const icon = this.instance().icon;\n return typeof icon === 'function' ? (icon as Type<unknown>) : null;\n });\n\n readonly ariaRole = computed(() => {\n const variant = this.instance().variant;\n return variant === 'error' || variant === 'warning' ? 'alert' : 'status';\n });\n\n readonly ariaLive = computed(() => {\n const variant = this.instance().variant;\n return variant === 'error' || variant === 'warning' ? 'assertive' : 'polite';\n });\n\n ngOnInit(): void {\n const duration = this.instance().duration;\n if (duration > 0 && duration !== Infinity) {\n this.remainingMs = duration;\n this.startTimer();\n }\n }\n\n ngOnDestroy(): void {\n this.stopTimer();\n }\n\n private startTimer(): void {\n this.stopTimer();\n const totalDuration = this.instance().duration;\n this.lastTickMs = Date.now();\n\n this.timerId = setInterval(() => {\n if (this.instance().isPaused) return;\n\n const now = Date.now();\n const delta = now - this.lastTickMs;\n this.lastTickMs = now;\n\n this.remainingMs -= delta;\n\n if (this.remainingMs <= 0) {\n this.progressPercent.set(0);\n this.stopTimer();\n this.onCloseClick();\n } else {\n const pct = Math.max(0, (this.remainingMs / totalDuration) * 100);\n this.progressPercent.set(pct);\n }\n }, 50);\n }\n\n private stopTimer(): void {\n if (this.timerId) {\n clearInterval(this.timerId);\n this.timerId = null;\n }\n }\n\n protected onMouseEnter(): void {\n if (this.instance().pauseOnHover) {\n this.instance().isPaused = true;\n }\n }\n\n protected onMouseLeave(): void {\n if (this.instance().pauseOnHover) {\n this.instance().isPaused = false;\n this.lastTickMs = Date.now();\n }\n }\n\n protected onActionClick(): void {\n if (this.instance().onAction) {\n this.instance().onAction!();\n }\n this.action.emit(this.instance().id);\n this.onCloseClick();\n }\n\n protected onCloseClick(): void {\n if (this.isDismissing()) return;\n this.isDismissing.set(true);\n\n if (this.instance().onDismiss) {\n this.instance().onDismiss!();\n }\n\n setTimeout(() => {\n this.dismiss.emit(this.instance().id);\n }, 200);\n }\n}\n","<div class=\"talos-snackbar\" [class.variant-default]=\"instance().variant === 'default'\"\n [class.variant-info]=\"instance().variant === 'info'\" [class.variant-success]=\"instance().variant === 'success'\"\n [class.variant-warning]=\"instance().variant === 'warning'\" [class.variant-error]=\"instance().variant === 'error'\"\n [class.pos-top]=\"isTopPosition()\" [class.pos-bottom]=\"!isTopPosition()\" [class.is-dismissing]=\"isDismissing()\"\n [class]=\"instance().customClass || ''\" [attr.role]=\"ariaRole()\" [attr.aria-live]=\"ariaLive()\"\n (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\n @if (instance().icon !== false) {\n <div class=\"talos-snackbar-icon\">\n @if (instance().icon && instance().icon !== true) {\n <ng-container *ngComponentOutlet=\"customIconComponent()\"></ng-container>\n } @else {\n @switch (instance().variant) {\n @case ('success') {\n <svg lucideCheckCircle2 [size]=\"20\"></svg>\n }\n @case ('warning') {\n <svg lucideAlertTriangle [size]=\"20\"></svg>\n }\n @case ('error') {\n <svg lucideCircleAlert [size]=\"20\"></svg>\n }\n @default {\n <svg lucideInfo [size]=\"20\"></svg>\n }\n }\n }\n </div>\n }\n\n <div class=\"talos-snackbar-content\">\n @if (instance().title) {\n <div class=\"talos-snackbar-title\">{{ instance().title }}</div>\n }\n\n <div class=\"talos-snackbar-message\">\n @if (isTemplateMessage()) {\n <ng-container\n *ngTemplateOutlet=\"templateMessage(); context: { $implicit: instance().data, instance: instance() }\"></ng-container>\n } @else {\n {{ instance().message }}\n }\n </div>\n </div>\n\n <div class=\"talos-snackbar-actions\">\n @if (instance().actionLabel) {\n <button type=\"button\" class=\"talos-snackbar-action-btn\" (click)=\"onActionClick()\">\n {{ instance().actionLabel }}\n </button>\n }\n\n @if (instance().dismissible) {\n <button type=\"button\" class=\"talos-snackbar-close-btn\" aria-label=\"Close notification\" (click)=\"onCloseClick()\">\n <svg lucideX [size]=\"16\"></svg>\n </button>\n }\n </div>\n\n @if (instance().showProgressBar && instance().duration > 0 && instance().duration !== Infinity) {\n <div class=\"talos-snackbar-progress\" [class.variant-success]=\"instance().variant === 'success'\"\n [class.variant-warning]=\"instance().variant === 'warning'\" [class.variant-error]=\"instance().variant === 'error'\"\n [style.width.%]=\"progressPercent()\"></div>\n }\n</div>","import { Component, ViewEncapsulation, computed, inject } from '@angular/core';\nimport { TalosSnackbarComponent } from '../snackbar/snackbar.component';\nimport { TalosSnackbarService } from '../snackbar.service';\nimport { TalosSnackbarInstance, TalosSnackbarPosition } from '../snackbar.types';\n\n@Component({\n selector: 'talos-snackbar-container',\n imports: [TalosSnackbarComponent],\n template: `\n @for (pos of positions; track pos) {\n @if (groupedSnackbars()[pos].length > 0) {\n <div class=\"talos-snackbar-position-group\" [class]=\"pos\">\n @for (item of groupedSnackbars()[pos]; track item.id) {\n <talos-snackbar\n [instance]=\"item\"\n (dismiss)=\"onDismiss($event)\"\n (action)=\"onAction($event)\"\n />\n }\n </div>\n }\n }\n `,\n styleUrl: './snackbar-container.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'talos-snackbar-overlay-host'\n }\n})\nexport class TalosSnackbarContainerComponent {\n private readonly snackbarService = inject(TalosSnackbarService);\n\n readonly positions: TalosSnackbarPosition[] = [\n 'top-left',\n 'top-center',\n 'top-right',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right'\n ];\n\n readonly groupedSnackbars = computed<Record<TalosSnackbarPosition, TalosSnackbarInstance[]>>(() => {\n const all = this.snackbarService.snackbars();\n const map: Record<TalosSnackbarPosition, TalosSnackbarInstance[]> = {\n 'top-left': [],\n 'top-center': [],\n 'top-right': [],\n 'bottom-left': [],\n 'bottom-center': [],\n 'bottom-right': []\n };\n\n for (const item of all) {\n const pos = item.position || 'bottom-right';\n if (map[pos]) {\n map[pos].push(item);\n } else {\n map['bottom-right'].push(item);\n }\n }\n\n return map;\n });\n\n onDismiss(id: string): void {\n this.snackbarService.dismiss(id);\n }\n\n onAction(id: string): void {\n // Action handled inside component and service\n }\n}\n","import {\n Injectable,\n TemplateRef,\n inject,\n signal,\n ApplicationRef,\n EnvironmentInjector,\n createComponent,\n ComponentRef\n} from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n TalosSnackbarConfig,\n TalosSnackbarInstance,\n TalosSnackbarRef,\n TalosSnackbarVariant\n} from './snackbar.types';\nimport { TalosSnackbarContainerComponent } from './snackbar-container/snackbar-container.component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TalosSnackbarService {\n private readonly overlay = inject(Overlay);\n private overlayRef: OverlayRef | null = null;\n\n /** Reactive list of currently active snackbar instances */\n readonly snackbars = signal<TalosSnackbarInstance[]>([]);\n\n private idCounter = 0;\n\n /** Global default configuration values */\n private defaultConfig: Partial<TalosSnackbarConfig> = {\n variant: 'default',\n position: 'bottom-right',\n duration: 4000,\n dismissible: true,\n showProgressBar: true,\n pauseOnHover: true,\n icon: true\n };\n\n /**\n * Override default global configurations for all subsequent snackbars.\n */\n setDefaultConfig(config: Partial<TalosSnackbarConfig>): void {\n this.defaultConfig = { ...this.defaultConfig, ...config };\n }\n\n /**\n * Main entry point to open a configured snackbar.\n */\n show(\n messageOrConfig: string | TemplateRef<unknown> | TalosSnackbarConfig,\n configOverrides: Partial<TalosSnackbarConfig> = {}\n ): TalosSnackbarRef {\n let fullConfig: TalosSnackbarConfig;\n\n if (\n typeof messageOrConfig === 'string' ||\n messageOrConfig instanceof TemplateRef\n ) {\n fullConfig = {\n message: messageOrConfig,\n ...configOverrides\n };\n } else {\n fullConfig = {\n ...messageOrConfig,\n ...configOverrides\n };\n }\n\n const merged: TalosSnackbarInstance = {\n id: `talos-sb-${++this.idCounter}-${Date.now()}`,\n variant: fullConfig.variant ?? this.defaultConfig.variant ?? 'default',\n position: fullConfig.position ?? this.defaultConfig.position ?? 'bottom-right',\n duration: fullConfig.duration ?? this.defaultConfig.duration ?? 4000,\n dismissible: fullConfig.dismissible ?? this.defaultConfig.dismissible ?? true,\n showProgressBar: fullConfig.showProgressBar ?? this.defaultConfig.showProgressBar ?? true,\n pauseOnHover: fullConfig.pauseOnHover ?? this.defaultConfig.pauseOnHover ?? true,\n icon: fullConfig.icon ?? this.defaultConfig.icon ?? true,\n message: fullConfig.message,\n title: fullConfig.title,\n actionLabel: fullConfig.actionLabel,\n onAction: fullConfig.onAction,\n onDismiss: fullConfig.onDismiss,\n customClass: fullConfig.customClass,\n data: fullConfig.data,\n createdAt: Date.now(),\n isPaused: false\n };\n\n this.ensureOverlayCreated();\n\n this.snackbars.update((current) => [...current, merged]);\n\n return {\n id: merged.id,\n dismiss: () => this.dismiss(merged.id)\n };\n }\n\n /** Convenience method for Success variant snackbars */\n success(\n message: string | TemplateRef<unknown>,\n config?: Partial<TalosSnackbarConfig>\n ): TalosSnackbarRef {\n return this.show(message, { ...config, variant: 'success' });\n }\n\n /** Convenience method for Error variant snackbars */\n error(\n message: string | TemplateRef<unknown>,\n config?: Partial<TalosSnackbarConfig>\n ): TalosSnackbarRef {\n return this.show(message, { ...config, variant: 'error' });\n }\n\n /** Convenience method for Warning variant snackbars */\n warning(\n message: string | TemplateRef<unknown>,\n config?: Partial<TalosSnackbarConfig>\n ): TalosSnackbarRef {\n return this.show(message, { ...config, variant: 'warning' });\n }\n\n /** Convenience method for Info variant snackbars */\n info(\n message: string | TemplateRef<unknown>,\n config?: Partial<TalosSnackbarConfig>\n ): TalosSnackbarRef {\n return this.show(message, { ...config, variant: 'info' });\n }\n\n /**\n * Dismiss a specific snackbar by ID, or the oldest active snackbar if no ID is specified.\n */\n dismiss(id?: string): void {\n if (!id) {\n const current = this.snackbars();\n if (current.length === 0) return;\n id = current[0].id;\n }\n\n this.snackbars.update((current) => current.filter((item) => item.id !== id));\n\n if (this.snackbars().length === 0) {\n this.destroyOverlay();\n }\n }\n\n /**\n * Dismiss all currently active snackbars.\n */\n dismissAll(): void {\n this.snackbars.set([]);\n this.destroyOverlay();\n }\n\n private ensureOverlayCreated(): void {\n if (!this.overlayRef) {\n const positionStrategy = this.overlay.position().global();\n this.overlayRef = this.overlay.create({\n positionStrategy,\n hasBackdrop: false,\n panelClass: 'talos-snackbar-overlay-panel'\n });\n\n const portal = new ComponentPortal(TalosSnackbarContainerComponent);\n this.overlayRef.attach(portal);\n }\n }\n\n private destroyOverlay(): void {\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { TalosSnackbarComponent } from './snackbar/snackbar.component';\nimport { TalosSnackbarContainerComponent } from './snackbar-container/snackbar-container.component';\n\n/**\n * Convenience NgModule wrapping standalone snackbar components.\n * \n * Allows developers who prefer `TalosSnackbarModule` to import all snackbar elements in one go.\n */\n@NgModule({\n imports: [\n TalosSnackbarComponent,\n TalosSnackbarContainerComponent\n ],\n exports: [\n TalosSnackbarComponent,\n TalosSnackbarContainerComponent\n ]\n})\nexport class TalosSnackbarModule { }\n","import {\n Directive,\n ElementRef,\n computed,\n inject,\n input,\n output\n} from '@angular/core';\n\nexport type SlideToggleSize = 'sm' | 'md' | 'lg';\nexport type SlideToggleVariant = 'primary' | 'secondary' | 'success' | 'danger';\n\n@Directive({\n selector: 'input[type=\"checkbox\"][talosSlideToggle], input[type=\"checkbox\"][talos-slide-toggle], input[type=\"checkbox\"][talosSwitch], input[type=\"checkbox\"][talos-switch]',\n exportAs: 'talosSlideToggle',\n host: {\n 'class': 'talos-slide-toggle',\n 'role': 'switch',\n '[class.slide-toggle-sm]': 'size() === \"sm\"',\n '[class.slide-toggle-md]': 'size() === \"md\"',\n '[class.slide-toggle-lg]': 'size() === \"lg\"',\n '[class.talos-slide-toggle-primary]': 'variant() === \"primary\"',\n '[class.talos-slide-toggle-secondary]': 'variant() === \"secondary\"',\n '[class.talos-slide-toggle-success]': 'variant() === \"success\"',\n '[class.talos-slide-toggle-danger]': 'variant() === \"danger\"',\n '[class.is-invalid]': 'invalid()',\n '[checked]': 'checked()',\n '[disabled]': 'disabled()',\n '(change)': 'onNativeChange($event)'\n }\n})\nexport class TalosSlideToggleDirective {\n private readonly elementRef = inject(ElementRef<HTMLInputElement>);\n\n /** Standalone checked state */\n readonly checked = input<boolean>(false);\n\n /** Sizing variation for the slide toggle */\n readonly size = input<SlideToggleSize>('md');\n\n /** Visual color variant for the slide toggle */\n readonly variant = input<SlideToggleVariant>('primary');\n\n /** Whether the slide toggle is disabled */\n readonly disabled = input<boolean>(false);\n\n /** Whether the slide toggle is in an invalid error state */\n readonly invalid = input<boolean>(false);\n\n /** Output event emitted when checked state changes */\n readonly checkedChange = output<boolean>();\n\n onNativeChange(event: Event): void {\n if (this.disabled()) return;\n\n const target = event.target as HTMLInputElement;\n const isChecked = target.checked;\n\n this.checkedChange.emit(isChecked);\n }\n}\n","import {\n Component,\n ElementRef,\n computed,\n forwardRef,\n input,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n TalosSlideToggleDirective,\n SlideToggleSize,\n SlideToggleVariant\n} from './slide-toggle.directive';\n\nexport type SlideToggleLabelPosition = 'before' | 'after';\n\nlet slideToggleCounter = 0;\n\n@Component({\n selector: 'talos-slide-toggle, talos-switch',\n imports: [TalosSlideToggleDirective],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TalosSlideToggleComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'talos-slide-toggle-host'\n },\n template: `\n <label\n class=\"talos-slide-toggle-wrapper\"\n [class.is-disabled]=\"effectiveDisabled()\"\n [class.is-checked]=\"isChecked()\"\n [class.label-before]=\"labelPosition() === 'before'\"\n >\n <span class=\"talos-slide-toggle-switch\">\n <input\n #inputEl\n type=\"checkbox\"\n talosSlideToggle\n [id]=\"elementId()\"\n [checked]=\"isChecked()\"\n [size]=\"size()\"\n [variant]=\"variant()\"\n [disabled]=\"effectiveDisabled()\"\n [invalid]=\"effectiveInvalid()\"\n (checkedChange)=\"onDirectiveCheckedChange($event)\"\n />\n <span class=\"talos-slide-toggle-track\">\n <span class=\"talos-slide-toggle-thumb\"></span>\n </span>\n </span>\n\n <span class=\"talos-slide-toggle-label\">\n {{ label() }}<ng-content />\n </span>\n </label>\n `\n})\nexport class TalosSlideToggleComponent implements ControlValueAccessor {\n private readonly inputRef = viewChild<ElementRef<HTMLInputElement>>('inputEl');\n\n /** Standalone checked state input */\n readonly checked = input<boolean>(false);\n\n /** Sizing variation for the toggle switch */\n readonly size = input<SlideToggleSize>('md');\n\n /** Visual color variant for the toggle switch */\n readonly variant = input<SlideToggleVariant>('primary');\n\n /** Whether the toggle switch is disabled */\n readonly disabled = input<boolean>(false);\n\n /** Whether the toggle switch is in an invalid error state */\n readonly invalid = input<boolean>(false);\n\n /** Position of the label text relative to the toggle switch */\n readonly labelPosition = input<SlideToggleLabelPosition>('after');\n\n /** Optional label text fallback if not projecting content */\n readonly label = input<string>('');\n\n /** Element HTML ID */\n readonly id = input<string>('');\n\n /** Emitted when checked state changes */\n readonly checkedChange = output<boolean>();\n\n // Internal reactive state for CVA & ID generation\n private readonly defaultId = `talos-slide-toggle-${++slideToggleCounter}`;\n readonly elementId = computed(() => this.id() || this.defaultId);\n\n readonly internalValue = signal<boolean>(false);\n readonly isDisabled = signal<boolean>(false);\n readonly isTouched = signal<boolean>(false);\n\n // Effective state computations\n readonly effectiveDisabled = computed(() => this.disabled() || this.isDisabled());\n readonly effectiveInvalid = computed(() => this.invalid());\n\n readonly isChecked = computed(() => this.internalValue() || this.checked());\n\n private onChange: (val: boolean) => void = () => { };\n private onTouched: () => void = () => { };\n\n // --- ControlValueAccessor Implementation ---\n writeValue(val: boolean): void {\n this.internalValue.set(!!val);\n }\n\n registerOnChange(fn: (val: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled);\n }\n\n onDirectiveCheckedChange(isChecked: boolean): void {\n if (this.effectiveDisabled()) return;\n\n this.internalValue.set(isChecked);\n this.onChange(isChecked);\n this.checkedChange.emit(isChecked);\n this.markAsTouched();\n }\n\n markAsTouched(): void {\n if (!this.isTouched()) {\n this.isTouched.set(true);\n this.onTouched();\n }\n }\n\n /** Focuses the native HTML input element */\n focusInput(): void {\n this.inputRef()?.nativeElement.focus();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { TalosSlideToggleDirective } from './slide-toggle.directive';\nimport { TalosSlideToggleComponent } from './slide-toggle.component';\n\n/**\n * Convenience NgModule wrapping standalone slide-toggle directive and component.\n */\n@NgModule({\n imports: [\n TalosSlideToggleDirective,\n TalosSlideToggleComponent\n ],\n exports: [\n TalosSlideToggleDirective,\n TalosSlideToggleComponent\n ]\n})\nexport class TalosSlideToggleModule { }\n","import {\n Component,\n ElementRef,\n TemplateRef,\n ViewChild,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n output,\n signal\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AutocompleteDisplayFn,\n AutocompleteFilterFn,\n AutocompleteHighlightPart,\n AutocompleteItemContext,\n AutocompleteSize,\n AutocompleteValueFn,\n FormattedAutocompleteOption\n} from './autocomplete.types';\n\nlet uniqueAutocompleteIdCounter = 0;\n\n@Component({\n selector: 'talos-autocomplete',\n imports: [NgTemplateOutlet],\n templateUrl: './autocomplete.component.html',\n styleUrl: './autocomplete.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TalosAutocompleteComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'talos-autocomplete-host',\n '[class.is-open]': 'isOpen()',\n '[class.is-disabled]': 'effectiveDisabled()',\n '[class.is-searching]': 'effectiveSearching()',\n '[class.has-label]': '!!label()',\n '[class.is-floating]': 'isFloatingMode()',\n '[class.is-floated]': 'isFloated()',\n '[class.autocomplete-sm]': 'size() === \"sm\"',\n '[class.autocomplete-md]': 'size() === \"md\"',\n '[class.autocomplete-lg]': 'size() === \"lg\"',\n '(document:click)': 'onDocumentClick($event)'\n }\n})\nexport class TalosAutocompleteComponent<T = unknown> implements ControlValueAccessor {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n // Signal Inputs\n readonly options = input<readonly T[] | T[]>([]);\n readonly label = input<string>('');\n readonly floatingLabel = input<boolean>(false);\n readonly floating = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly searching = input<boolean>(false);\n readonly loading = input<boolean>(false);\n readonly placeholder = input<string>('Search...');\n readonly disabled = input<boolean>(false);\n readonly clearable = input<boolean>(true);\n readonly size = input<AutocompleteSize>('sm');\n readonly minChars = input<number>(0);\n readonly displayWith = input<AutocompleteDisplayFn<T> | keyof T | null>(null);\n readonly valueWith = input<AutocompleteValueFn<T> | keyof T | null>(null);\n readonly filterFn = input<AutocompleteFilterFn<T> | null | undefined>(undefined);\n readonly highlightMatch = input<boolean>(true);\n readonly noResultsText = input<string>('No matching results');\n readonly searchingText = input<string>('Searching...');\n readonly itemTemplate = input<TemplateRef<AutocompleteItemContext<T>> | null>(null);\n readonly openOnFocus = input<boolean>(true);\n readonly id = input<string>('');\n\n // Signal Outputs\n readonly searchChange = output<string>();\n readonly selectionChange = output<T | null>();\n readonly opened = output<void>();\n readonly closed = output<void>();\n readonly cleared = output<void>();\n\n // View Children\n @ViewChild('inputEl') inputEl?: ElementRef<HTMLInputElement>;\n @ViewChild('dropdownEl') dropdownEl?: ElementRef<HTMLDivElement>;\n\n // Component IDs for ARIA attributes\n private readonly autoId = `talos-autocomplete-${uniqueAutocompleteIdCounter++}`;\n readonly componentId = computed(() => this.id() || this.autoId);\n readonly inputId = computed(() => `${this.componentId()}-input`);\n readonly listboxId = computed(() => `${this.componentId()}-listbox`);\n\n // Internal Reactive State\n readonly inputValue = signal<string>('');\n readonly selectedItem = signal<T | null>(null);\n readonly isOpen = signal<boolean>(false);\n readonly isFocused = signal<boolean>(false);\n readonly focusedIndex = signal<number>(-1);\n readonly isCvaDisabled = signal<boolean>(false);\n readonly isTouched = signal<boolean>(false);\n\n // Computed state\n readonly isFloatingMode = computed(() => this.floatingLabel() || this.floating());\n readonly isFloated = computed(() => {\n if (!this.isFloatingMode()) return false;\n return this.isOpen() || this.isFocused() || !!this.inputValue() || !!this.selectedItem();\n });\n readonly effectiveDisabled = computed(() => this.disabled() || this.isCvaDisabled());\n readonly effectiveSearching = computed(() => this.searching() || this.loading());\n\n // Formatted and Filtered Options\n readonly formattedOptions = computed<FormattedAutocompleteOption<T>[]>(() => {\n const rawOptions = this.options() || [];\n const query = this.inputValue().trim();\n const minCharCount = this.minChars();\n const customFilter = this.filterFn();\n const isHighlight = this.highlightMatch();\n\n // If query is below minChars threshold, return empty\n if (query.length < minCharCount) {\n return [];\n }\n\n // Filter raw items\n let filteredList: T[];\n if (customFilter === null) {\n // Bypasses internal filtering (user controls search results completely, e.g. remote API)\n filteredList = [...rawOptions];\n } else if (typeof customFilter === 'function') {\n filteredList = rawOptions.filter((item) => customFilter(item, query));\n } else {\n // Default label text filtering\n if (!query) {\n filteredList = [...rawOptions];\n } else {\n const lowerQuery = query.toLowerCase();\n filteredList = rawOptions.filter((item) => {\n const label = this.getDisplayLabel(item);\n return label.toLowerCase().includes(lowerQuery);\n });\n }\n }\n\n // Map to formatted structure with highlight parts\n return filteredList.map((item, index) => {\n const label = this.getDisplayLabel(item);\n const val = this.extractValue(item);\n const parts = isHighlight && query ? this.computeHighlightParts(label, query) : [{ text: label, isMatch: false }];\n\n return {\n id: `${this.componentId()}-opt-${index}`,\n label,\n value: val,\n raw: item,\n highlightParts: parts\n };\n });\n });\n\n readonly activeOptionId = computed(() => {\n const index = this.focusedIndex();\n const options = this.formattedOptions();\n if (index >= 0 && index < options.length) {\n return options[index].id;\n }\n return undefined;\n });\n\n // ControlValueAccessor Callbacks\n private onChange: (val: unknown) => void = () => { };\n private onTouched: () => void = () => { };\n\n constructor() {\n // Reset focused index when formatted options change\n effect(() => {\n this.formattedOptions();\n this.focusedIndex.set(-1);\n });\n }\n\n // Label & Value Helpers\n getDisplayLabel(item: T | null): string {\n if (item === null || item === undefined) {\n return '';\n }\n if (typeof item === 'string' || typeof item === 'number') {\n return String(item);\n }\n const displayWithFn = this.displayWith();\n if (typeof displayWithFn === 'function') {\n return displayWithFn(item);\n }\n if (typeof displayWithFn === 'string' && item && typeof item === 'object' && displayWithFn in item) {\n return String((item as Record<string, unknown>)[displayWithFn] ?? '');\n }\n if (item && typeof item === 'object') {\n const record = item as Record<string, unknown>;\n if ('label' in record) return String(record['label'] ?? '');\n if ('name' in record) return String(record['name'] ?? '');\n if ('title' in record) return String(record['title'] ?? '');\n if ('text' in record) return String(record['text'] ?? '');\n }\n return String(item);\n }\n\n extractValue(item: T | null): unknown {\n if (item === null || item === undefined) {\n return null;\n }\n const valueWithFn = this.valueWith();\n if (typeof valueWithFn === 'function') {\n return valueWithFn(item);\n }\n if (typeof valueWithFn === 'string' && item && typeof item === 'object' && valueWithFn in item) {\n return (item as Record<string, unknown>)[valueWithFn];\n }\n if (item && typeof item === 'object') {\n const record = item as Record<string, unknown>;\n if ('value' in record) return record['value'];\n if ('id' in record) return record['id'];\n if ('key' in record) return record['key'];\n }\n return item;\n }\n\n private computeHighlightParts(text: string, query: string): AutocompleteHighlightPart[] {\n if (!text || !query) {\n return [{ text, isMatch: false }];\n }\n const parts: AutocompleteHighlightPart[] = [];\n const lowerText = text.toLowerCase();\n const lowerQuery = query.toLowerCase();\n let startIndex = 0;\n\n while (startIndex < text.length) {\n const matchIndex = lowerText.indexOf(lowerQuery, startIndex);\n if (matchIndex === -1) {\n parts.push({ text: text.substring(startIndex), isMatch: false });\n break;\n }\n\n if (matchIndex > startIndex) {\n parts.push({ text: text.substring(startIndex, matchIndex), isMatch: false });\n }\n\n const matchEnd = matchIndex + query.length;\n parts.push({ text: text.substring(matchIndex, matchEnd), isMatch: true });\n startIndex = matchEnd;\n }\n\n return parts;\n }\n\n // Input & Event Handlers\n onInput(event: Event): void {\n if (this.effectiveDisabled()) return;\n\n const value = (event.target as HTMLInputElement).value;\n this.inputValue.set(value);\n\n // If typing doesn't match selected item label, clear selected reference\n if (this.selectedItem()) {\n const currentLabel = this.getDisplayLabel(this.selectedItem());\n if (value !== currentLabel) {\n this.selectedItem.set(null);\n this.onChange(null);\n this.selectionChange.emit(null);\n }\n }\n\n if (!this.isOpen() && value.length >= this.minChars()) {\n this.openDropdown();\n }\n\n this.searchChange.emit(value);\n }\n\n onFocus(): void {\n this.isFocused.set(true);\n if (this.effectiveDisabled()) return;\n\n if (this.openOnFocus() && this.inputValue().length >= this.minChars()) {\n this.openDropdown();\n }\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n this.markAsTouched();\n }\n\n onInputClick(): void {\n if (this.effectiveDisabled()) return;\n\n if (!this.isOpen() && this.inputValue().length >= this.minChars()) {\n this.openDropdown();\n }\n }\n\n onTriggerClick(): void {\n if (this.effectiveDisabled()) return;\n\n if (this.isOpen()) {\n this.closeDropdown();\n } else {\n this.openDropdown();\n this.inputEl?.nativeElement.focus();\n }\n }\n\n onClear(event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n\n if (this.effectiveDisabled()) return;\n\n this.inputValue.set('');\n this.selectedItem.set(null);\n this.focusedIndex.set(-1);\n\n this.onChange(null);\n this.selectionChange.emit(null);\n this.searchChange.emit('');\n this.cleared.emit();\n\n if (this.inputEl) {\n this.inputEl.nativeElement.value = '';\n this.inputEl.nativeElement.focus();\n }\n\n if (this.minChars() > 0) {\n this.closeDropdown();\n }\n }\n\n selectOption(opt: FormattedAutocompleteOption<T>, event?: Event): void {\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n this.selectedItem.set(opt.raw);\n this.inputValue.set(opt.label);\n\n if (this.inputEl) {\n this.inputEl.nativeElement.value = opt.label;\n }\n\n this.onChange(opt.value);\n this.selectionChange.emit(opt.raw);\n this.closeDropdown();\n }\n\n onKeyDown(event: KeyboardEvent): void {\n if (this.effectiveDisabled()) return;\n\n const options = this.formattedOptions();\n const optionCount = options.length;\n\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault();\n if (!this.isOpen()) {\n this.openDropdown();\n this.focusedIndex.set(0);\n } else if (optionCount > 0) {\n const nextIndex = (this.focusedIndex() + 1) % optionCount;\n this.focusedIndex.set(nextIndex);\n this.scrollToFocusedOption(nextIndex);\n }\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n if (!this.isOpen()) {\n this.openDropdown();\n this.focusedIndex.set(optionCount - 1);\n } else if (optionCount > 0) {\n const prevIndex = this.focusedIndex() <= 0 ? optionCount - 1 : this.focusedIndex() - 1;\n this.focusedIndex.set(prevIndex);\n this.scrollToFocusedOption(prevIndex);\n }\n break;\n }\n case 'Enter': {\n if (this.isOpen() && this.focusedIndex() >= 0 && this.focusedIndex() < optionCount) {\n event.preventDefault();\n this.selectOption(options[this.focusedIndex()]);\n }\n break;\n }\n case 'Escape': {\n if (this.isOpen()) {\n event.preventDefault();\n this.closeDropdown();\n }\n break;\n }\n case 'Tab': {\n if (this.isOpen()) {\n this.closeDropdown();\n }\n break;\n }\n }\n }\n\n private scrollToFocusedOption(index: number): void {\n if (!this.dropdownEl) return;\n const optionEls = this.dropdownEl.nativeElement.querySelectorAll<HTMLElement>('.autocomplete-option');\n if (optionEls[index] && typeof optionEls[index].scrollIntoView === 'function') {\n optionEls[index].scrollIntoView({ block: 'nearest' });\n }\n }\n\n openDropdown(): void {\n if (this.effectiveDisabled() || this.isOpen()) return;\n this.isOpen.set(true);\n this.opened.emit();\n }\n\n closeDropdown(): void {\n if (!this.isOpen()) return;\n this.isOpen.set(false);\n this.focusedIndex.set(-1);\n this.closed.emit();\n }\n\n onDocumentClick(event: MouseEvent): void {\n const target = event.target as Node;\n if (!this.elementRef.nativeElement.contains(target)) {\n this.closeDropdown();\n }\n }\n\n private markAsTouched(): void {\n if (!this.isTouched()) {\n this.isTouched.set(true);\n this.onTouched();\n }\n }\n\n // ControlValueAccessor Implementation\n writeValue(value: unknown): void {\n if (value === null || value === undefined || value === '') {\n this.selectedItem.set(null);\n this.inputValue.set('');\n if (this.inputEl) {\n this.inputEl.nativeElement.value = '';\n }\n return;\n }\n\n // Try matching among options\n const rawOptions = this.options() || [];\n const matched = rawOptions.find((opt) => {\n const extracted = this.extractValue(opt);\n return extracted === value || opt === value;\n });\n\n if (matched !== undefined) {\n this.selectedItem.set(matched);\n const label = this.getDisplayLabel(matched);\n this.inputValue.set(label);\n if (this.inputEl) {\n this.inputEl.nativeElement.value = label;\n }\n } else {\n // If primitive string value provided directly\n if (typeof value === 'string' || typeof value === 'number') {\n this.selectedItem.set(value as unknown as T);\n this.inputValue.set(String(value));\n if (this.inputEl) {\n this.inputEl.nativeElement.value = String(value);\n }\n }\n }\n }\n\n registerOnChange(fn: (val: unknown) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isCvaDisabled.set(isDisabled);\n if (isDisabled) {\n this.closeDropdown();\n }\n }\n}\n","@if (label() && !isFloatingMode()) {\n <label class=\"talos-field-label\" [attr.for]=\"inputId()\" (click)=\"onTriggerClick()\">\n {{ label() }}\n @if (required()) {\n <span class=\"required-star\" aria-hidden=\"true\">*</span>\n }\n </label>\n}\n\n<div class=\"autocomplete-wrapper\" [class.has-floating-label]=\"isFloatingMode()\">\n <!-- Autocomplete Input Container -->\n <div class=\"autocomplete-control\" [class.is-focused]=\"isOpen()\">\n <!-- Leading Search Icon -->\n <span class=\"autocomplete-icon leading-icon\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\n </svg>\n </span>\n\n <!-- Editable Input Field -->\n <input\n #inputEl\n type=\"text\"\n class=\"autocomplete-input\"\n [id]=\"inputId()\"\n [placeholder]=\"isFloatingMode() && !isFloated() ? '' : placeholder()\"\n [value]=\"inputValue()\"\n [disabled]=\"effectiveDisabled()\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (click)=\"onInputClick()\"\n (keydown)=\"onKeyDown($event)\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-controls]=\"listboxId()\"\n [attr.aria-activedescendant]=\"activeOptionId()\"\n [attr.aria-disabled]=\"effectiveDisabled()\"\n autocomplete=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n />\n\n @if (label() && isFloatingMode()) {\n <label\n class=\"talos-floating-label\"\n [class.is-floated]=\"isFloated()\"\n [attr.for]=\"inputId()\"\n (click)=\"onTriggerClick()\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"required-star\" aria-hidden=\"true\">*</span>\n }\n </label>\n }\n\n <!-- Trailing Actions Container -->\n <div class=\"autocomplete-actions\">\n <!-- Searching Spinner -->\n @if (effectiveSearching()) {\n <span class=\"autocomplete-spinner\" aria-label=\"Searching...\" title=\"Searching...\">\n <svg class=\"spinner-svg\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <circle class=\"spinner-track\" cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"2.5\" opacity=\"0.25\"></circle>\n <path class=\"spinner-head\" d=\"M12 3a9 9 0 0 1 9 9\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\"></path>\n </svg>\n </span>\n }\n\n <!-- Clear Selection / Text Button -->\n @if (clearable() && inputValue() && !effectiveDisabled() && !effectiveSearching()) {\n <button\n type=\"button\"\n class=\"autocomplete-clear-btn\"\n aria-label=\"Clear search\"\n title=\"Clear search\"\n (click)=\"onClear($event)\"\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n }\n\n <!-- Dropdown Arrow Indicator -->\n <button\n type=\"button\"\n class=\"autocomplete-arrow-btn\"\n [class.is-open]=\"isOpen()\"\n [disabled]=\"effectiveDisabled()\"\n aria-label=\"Toggle options\"\n tabindex=\"-1\"\n (click)=\"onTriggerClick()\"\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <polyline points=\"6 9 12 15 18 9\"></polyline>\n </svg>\n </button>\n </div>\n</div>\n\n<!-- Dropdown Panel -->\n@if (isOpen()) {\n <div #dropdownEl class=\"autocomplete-dropdown-panel\" [id]=\"listboxId()\" role=\"listbox\">\n <!-- Searching State inside Dropdown -->\n @if (effectiveSearching()) {\n <div class=\"autocomplete-searching-state\" aria-live=\"polite\">\n <span class=\"dropdown-spinner\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <circle class=\"spinner-track\" cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"2.5\" opacity=\"0.25\"></circle>\n <path class=\"spinner-head\" d=\"M12 3a9 9 0 0 1 9 9\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\"></path>\n </svg>\n </span>\n <span class=\"searching-text\">{{ searchingText() }}</span>\n </div>\n }\n\n <!-- Options List -->\n <div class=\"autocomplete-options-list\">\n @for (opt of formattedOptions(); track opt.id; let idx = $index) {\n <div\n class=\"autocomplete-option\"\n [id]=\"opt.id\"\n role=\"option\"\n [attr.aria-selected]=\"selectedItem() === opt.raw\"\n [class.is-focused]=\"focusedIndex() === idx\"\n [class.is-selected]=\"selectedItem() === opt.raw\"\n (mousedown)=\"selectOption(opt, $event)\"\n >\n @if (itemTemplate()) {\n <ng-container\n *ngTemplateOutlet=\"itemTemplate()!; context: {\n $implicit: opt.raw,\n index: idx,\n selected: selectedItem() === opt.raw,\n active: focusedIndex() === idx,\n highlightParts: opt.highlightParts\n }\"\n ></ng-container>\n } @else {\n <div class=\"option-default-content\">\n @if (highlightMatch() && opt.highlightParts.length > 0) {\n <span class=\"option-label\">\n @for (part of opt.highlightParts; track $index) {\n @if (part.isMatch) {\n <mark class=\"highlight-match\">{{ part.text }}</mark>\n } @else {\n <span>{{ part.text }}</span>\n }\n }\n </span>\n } @else {\n <span class=\"option-label\">{{ opt.label }}</span>\n }\n </div>\n }\n </div>\n }\n\n <!-- No Results State -->\n @if (!effectiveSearching() && formattedOptions().length === 0) {\n <div class=\"autocomplete-no-options\" role=\"status\">\n <svg class=\"no-options-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\n <line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\"></line>\n </svg>\n <span>{{ noResultsText() }}</span>\n </div>\n }\n </div>\n </div>\n}\n</div>\n","import { NgModule } from '@angular/core';\nimport { TalosAutocompleteComponent } from './autocomplete.component';\n\n/**\n * Convenience NgModule wrapping the standalone TalosAutocompleteComponent.\n */\n@NgModule({\n imports: [TalosAutocompleteComponent],\n exports: [TalosAutocompleteComponent]\n})\nexport class TalosAutocompleteModule { }\n","import {\n Component,\n ElementRef,\n computed,\n effect,\n inject,\n input,\n model,\n output,\n signal\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n LucideRefreshCw,\n LucideUpload,\n LucideMaximize2,\n LucideMinimize2,\n LucideChevronDown,\n LucideCheck,\n LucideFileSpreadsheet,\n LucideFileJson,\n LucideCalendar,\n LucideClock,\n LucideArrowLeftRight\n} from '@lucide/angular';\nimport {\n addDays,\n addWeeks,\n endOfDay,\n endOfISOWeek,\n isBefore,\n isSameDay,\n isValid,\n startOfDay,\n startOfISOWeek,\n subWeeks\n} from 'date-fns';\nimport { formatDate } from '@weeehaoooz/talos-ui/core';\nimport { DateRangePickerComponent } from '@weeehaoooz/talos-ui/form/date-range-picker';\nimport type { DateRangePreset, DateRangeValue } from '@weeehaoooz/talos-ui/form/date-range-picker';\nimport { TalosTooltipDirective } from '@weeehaoooz/talos-ui/feedback/tooltip';\nimport {\n HeatmapCell,\n HeatmapCellClickEvent,\n HeatmapCellShape,\n HeatmapCellSize,\n HeatmapColorScheme,\n HeatmapDataInput,\n HeatmapDataPoint,\n HeatmapExportFormat,\n HeatmapInterval,\n HeatmapMatrixData,\n HeatmapMetric,\n HeatmapTimeFormat,\n HeatmapTimeRange,\n HeatmapTimestampData\n} from './heatmap.types';\n\nconst DEFAULT_DAYS = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];\n\ninterface ColorStop {\n r: number;\n g: number;\n b: number;\n}\n\nconst PALETTE_CONFIG: Record<\n HeatmapColorScheme,\n { zero: { bg: string; text: string }; min: ColorStop; max: ColorStop; gradientCss: string }\n> = {\n indigo: {\n zero: { bg: '#eef2ff', text: '#4338ca' },\n min: { r: 219, g: 228, b: 255 }, // #dbe4ff\n max: { r: 67, g: 56, b: 202 }, // #4338ca\n gradientCss: 'linear-gradient(90deg, #dbe4ff 0%, #818cf8 50%, #4338ca 100%)'\n },\n blue: {\n zero: { bg: '#eff6ff', text: '#1d4ed8' },\n min: { r: 219, g: 234, b: 254 }, // #dbeafe\n max: { r: 29, g: 78, b: 216 }, // #1d4ed8\n gradientCss: 'linear-gradient(90deg, #dbeafe 0%, #60a5fa 50%, #1d4ed8 100%)'\n },\n emerald: {\n zero: { bg: '#ecfdf5', text: '#047857' },\n min: { r: 209, g: 250, b: 229 }, // #d1fae5\n max: { r: 4, g: 120, b: 87 }, // #047857\n gradientCss: 'linear-gradient(90deg, #d1fae5 0%, #34d399 50%, #047857 100%)'\n },\n rose: {\n zero: { bg: '#fff1f2', text: '#be123c' },\n min: { r: 255, g: 228, b: 230 }, // #ffe4e6\n max: { r: 190, g: 18, b: 60 }, // #be123c\n gradientCss: 'linear-gradient(90deg, #ffe4e6 0%, #fb7185 50%, #be123c 100%)'\n },\n amber: {\n zero: { bg: '#fffbeb', text: '#b45309' },\n min: { r: 254, g: 243, b: 199 }, // #fef3c7\n max: { r: 180, g: 83, b: 9 }, // #b45309\n gradientCss: 'linear-gradient(90deg, #fef3c7 0%, #fbbf24 50%, #b45309 100%)'\n },\n violet: {\n zero: { bg: '#f5f3ff', text: '#6d28d9' },\n min: { r: 237, g: 233, b: 254 }, // #ede9fe\n max: { r: 109, g: 40, b: 217 }, // #6d28d9\n gradientCss: 'linear-gradient(90deg, #ede9fe 0%, #a78bfa 50%, #6d28d9 100%)'\n },\n slate: {\n zero: { bg: '#f8fafc', text: '#334155' },\n min: { r: 226, g: 232, b: 240 }, // #e2e8f0\n max: { r: 51, g: 65, b: 85 }, // #334155\n gradientCss: 'linear-gradient(90deg, #e2e8f0 0%, #94a3b8 50%, #334155 100%)'\n },\n custom: {\n zero: { bg: '#eef2ff', text: '#4338ca' },\n min: { r: 219, g: 228, b: 255 },\n max: { r: 67, g: 56, b: 202 },\n gradientCss: 'linear-gradient(90deg, #dbe4ff 0%, #4338ca 100%)'\n }\n};\n\n@Component({\n selector: 'talos-heatmap',\n imports: [\n FormsModule,\n DateRangePickerComponent,\n TalosTooltipDirective,\n LucideRefreshCw,\n LucideUpload,\n LucideMaximize2,\n LucideMinimize2,\n LucideChevronDown,\n LucideCheck,\n LucideFileSpreadsheet,\n LucideFileJson,\n LucideCalendar,\n LucideClock,\n LucideArrowLeftRight\n ],\n templateUrl: './heatmap.component.html',\n styleUrl: './heatmap.component.scss',\n host: {\n 'class': 'talos-heatmap',\n '[class.talos-heatmap-expanded]': 'isExpanded()',\n '[class.talos-heatmap-loading]': 'loading()',\n '[class.talos-heatmap-sm]': 'cellSize() === \"sm\"',\n '[class.talos-heatmap-md]': 'cellSize() === \"md\"',\n '[class.talos-heatmap-lg]': 'cellSize() === \"lg\"',\n '[class.talos-heatmap-pill]': 'cellShape() === \"pill\"',\n '[class.talos-heatmap-rounded]': 'cellShape() === \"rounded\"',\n '[class.talos-heatmap-square]': 'cellShape() === \"square\"',\n '[class.talos-heatmap-fit-width]': 'isFitWidth()',\n '[class.talos-heatmap-compact-square]': '!isFitWidth()',\n '[class.talos-heatmap-swapped-axes]': 'swapAxes()',\n '[attr.role]': '\"region\"',\n '[attr.aria-label]': 'title()'\n }\n})\nexport class TalosHeatmapComponent {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n // Inputs & Models\n readonly data = input<HeatmapDataInput>([]);\n readonly metrics = input<HeatmapMetric[]>([]);\n readonly selectedMetricId = model<string | undefined>(undefined);\n readonly interval = model<HeatmapInterval>('hour');\n readonly dateRange = model<DateRangeValue | null>(null);\n readonly swapAxes = model<boolean>(false);\n readonly title = input<string>('Busiest times');\n readonly hoursRange = input<[number, number]>([9, 17]);\n readonly timeFormat = input<HeatmapTimeFormat>('12h');\n readonly days = input<string[]>(DEFAULT_DAYS);\n readonly colorScheme = input<HeatmapColorScheme>('indigo');\n readonly customColorStops = input<[string, string] | undefined>(undefined);\n readonly showLegend = input<boolean>(true);\n readonly showValues = input<boolean>(true);\n readonly cellShape = input<HeatmapCellShape>('pill');\n readonly cellSize = input<HeatmapCellSize>('md');\n readonly fitWidth = input<boolean | undefined>(undefined);\n readonly loading = input<boolean>(false);\n readonly showToolbar = input<boolean>(true);\n readonly showRefresh = input<boolean>(true);\n readonly showExport = input<boolean>(true);\n readonly showExpand = input<boolean>(true);\n readonly showSwapAxes = input<boolean>(false);\n readonly showIntervalToggle = input<boolean>(false);\n readonly showDateRangePicker = input<boolean>(false);\n readonly dateRangePresets = input<DateRangePreset[] | null>(null);\n readonly unit = input<string>('');\n readonly maxValue = input<number | undefined>(undefined);\n readonly minValue = input<number | undefined>(undefined);\n\n // Outputs\n readonly cellClick = output<HeatmapCellClickEvent>();\n readonly cellHover = output<HeatmapCell | null>();\n readonly timeRangeChange = output<HeatmapTimeRange>();\n readonly refresh = output<void>();\n readonly metricChange = output<HeatmapMetric>();\n readonly export = output<{ format: HeatmapExportFormat; data: unknown }>();\n\n // State signals\n readonly isExpanded = signal<boolean>(false);\n readonly isMetricDropdownOpen = signal<boolean>(false);\n readonly isExportDropdownOpen = signal<boolean>(false);\n readonly hoveredCell = signal<HeatmapCell | null>(null);\n readonly focusedCoord = signal<{ colIndex: number; rowIndex: number } | null>(null);\n\n // Layout Fit computation\n readonly isFitWidth = computed<boolean>(() => {\n const fw = this.fitWidth();\n if (fw !== undefined) return fw;\n return this.cellShape() !== 'square';\n });\n\n // Active Metric computation\n readonly currentMetric = computed<HeatmapMetric | undefined>(() => {\n const list = this.metrics();\n if (!list || list.length === 0) return undefined;\n const selectedId = this.selectedMetricId();\n if (selectedId) {\n const found = list.find((m) => m.id === selectedId);\n if (found) return found;\n }\n return list[0];\n });\n\n // Effective Active Color Scheme\n readonly activeColorScheme = computed<HeatmapColorScheme>(() => {\n const metric = this.currentMetric();\n if (metric && metric.colorScheme) return metric.colorScheme;\n return this.colorScheme();\n });\n\n // Effective Unit\n readonly activeUnit = computed<string>(() => {\n const metric = this.currentMetric();\n if (metric && metric.unit !== undefined) return metric.unit;\n return this.unit();\n });\n\n // Effective Raw Data Input\n readonly activeDataInput = computed<HeatmapDataInput>(() => {\n const metric = this.currentMetric();\n if (metric) return metric.data;\n return this.data();\n });\n\n // Hours array from range (for hour-by-hour mode)\n readonly hours = computed<number[]>(() => {\n const [start, end] = this.hoursRange();\n const clampedStart = Math.max(0, Math.min(23, start));\n const clampedEnd = Math.max(clampedStart, Math.min(23, end));\n const result: number[] = [];\n for (let h = clampedStart; h <= clampedEnd; h++) {\n result.push(h);\n }\n return result;\n });\n\n // Resolved Date Range bounds\n readonly parsedDateRange = computed<{ start: Date | null; end: Date | null }>(() => {\n const dr = this.dateRange();\n if (!dr || (!dr.startDate && !dr.endDate)) {\n return { start: null, end: null };\n }\n const s = dr.startDate ? startOfDay(new Date(dr.startDate as any)) : null;\n const e = dr.endDate ? endOfDay(new Date(dr.endDate as any)) : (s ? endOfDay(s) : null);\n return { start: s, end: e };\n });\n\n // Day list for Day-by-Day mode (weeks grouping)\n readonly dayModeWeeks = computed<{ label: string; start: Date; end: Date; days: Date[] }[]>(() => {\n const { start, end } = this.parsedDateRange();\n const effectiveStart = start || startOfISOWeek(subWeeks(new Date(), 3));\n const effectiveEnd = end || endOfISOWeek(new Date());\n\n const weeks: { label: string; start: Date; end: Date; days: Date[] }[] = [];\n let currentWeekStart = startOfISOWeek(effectiveStart);\n const lastWeekEnd = endOfISOWeek(effectiveEnd);\n\n while (isSameDay(currentWeekStart, lastWeekEnd) || isBefore(currentWeekStart, lastWeekEnd)) {\n const currentWeekEnd = addDays(currentWeekStart, 6);\n const daysInWeek: Date[] = [];\n\n for (let i = 0; i < 7; i++) {\n daysInWeek.push(addDays(currentWeekStart, i));\n }\n\n const label = `${formatDate(currentWeekStart, 'MMM d')} - ${formatDate(currentWeekEnd, 'MMM d')}`;\n weeks.push({\n label,\n start: currentWeekStart,\n end: currentWeekEnd,\n days: daysInWeek\n });\n\n currentWeekStart = addWeeks(currentWeekStart, 1);\n }\n\n return weeks;\n });\n\n // Normalized Value Map:\n // For 'hour': Map<`${colKey}_${hour}`, { value, meta }>\n // For 'day': Map<`${yyyy-MM-dd}`, { value, meta }> AND Map<`${colKey}`, { value, meta }>\n readonly normalizedValueMap = computed<Map<string, { value: number; meta?: Record<string, unknown> }>>(() => {\n const map = new Map<string, { value: number; meta?: Record<string, unknown> }>();\n const rawInput = this.activeDataInput();\n const currentDays = this.days();\n const currentInterval = this.interval();\n\n if (!rawInput) return map;\n\n if (Array.isArray(rawInput)) {\n if (rawInput.length === 0) return map;\n\n const firstItem = rawInput[0];\n\n if (\n typeof firstItem === 'string' ||\n firstItem instanceof Date ||\n (typeof firstItem === 'number' && firstItem > 1000000000)\n ) {\n // Raw Timestamp list\n (rawInput as HeatmapTimestampData).forEach((ts) => {\n const date = new Date(ts);\n if (isValid(date)) {\n if (currentInterval === 'day') {\n const dayKey = formatDate(date, 'yyyy-MM-dd');\n const existing = map.get(dayKey);\n if (existing) existing.value += 1;\n else map.set(dayKey, { value: 1 });\n } else {\n const dayNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n const dayName = dayNames[date.getDay()];\n const matchedDay = currentDays.find((d) => d.toLowerCase().startsWith(dayName.toLowerCase())) || dayName;\n const hour = date.getHours();\n const key = `${matchedDay}_${hour}`;\n const existing = map.get(key);\n if (existing) existing.value += 1;\n else map.set(key, { value: 1 });\n }\n }\n });\n } else {\n // HeatmapDataPoint array\n (rawInput as HeatmapDataPoint[]).forEach((point) => {\n if (currentInterval === 'day') {\n let dayKey = '';\n if (point.date) {\n dayKey = typeof point.date === 'string' && /^\\d{4}-\\d{2}-\\d{2}/.test(point.date)\n ? point.date.substring(0, 10)\n : formatDate(new Date(point.date), 'yyyy-MM-dd');\n } else if (point.day instanceof Date) {\n dayKey = formatDate(point.day, 'yyyy-MM-dd');\n } else if (typeof point.day === 'string' && /^\\d{4}-\\d{2}-\\d{2}/.test(point.day)) {\n dayKey = point.day.substring(0, 10);\n } else {\n dayKey = String(point.day ?? '');\n }\n\n if (dayKey) {\n const existing = map.get(dayKey);\n if (existing) {\n existing.value += point.value;\n if (point.meta) existing.meta = { ...existing.meta, ...point.meta };\n } else {\n map.set(dayKey, { value: point.value, meta: point.meta });\n }\n }\n } else {\n // Hour by hour\n let dayKey = '';\n if (point.day instanceof Date) {\n const dayNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n const dayName = dayNames[point.day.getDay()];\n dayKey = currentDays.find((d) => d.toLowerCase().startsWith(dayName.toLowerCase())) || dayName;\n } else if (typeof point.day === 'number') {\n dayKey = currentDays[point.day] || String(point.day);\n } else {\n dayKey = String(point.day ?? '');\n }\n\n const hour = point.hour ?? 0;\n const key = `${dayKey}_${hour}`;\n const existing = map.get(key);\n if (existing) {\n existing.value += point.value;\n if (point.meta) existing.meta = { ...existing.meta, ...point.meta };\n } else {\n map.set(key, { value: point.value, meta: point.meta });\n }\n }\n });\n }\n } else if (typeof rawInput === 'object') {\n // HeatmapMatrixData\n const matrix = rawInput as HeatmapMatrixData;\n Object.entries(matrix).forEach(([outerKey, innerObj]) => {\n if (typeof innerObj === 'object' && innerObj !== null) {\n Object.entries(innerObj).forEach(([innerKey, val]) => {\n const numVal = Number(val) || 0;\n if (currentInterval === 'day') {\n const key = `${outerKey}_${innerKey}`;\n map.set(key, { value: numVal });\n } else {\n const isInnerHour = !isNaN(Number(innerKey));\n if (isInnerHour) {\n const hour = Number(innerKey);\n const key = `${outerKey}_${hour}`;\n map.set(key, { value: numVal });\n } else {\n const hour = Number(outerKey);\n const key = `${innerKey}_${hour}`;\n map.set(key, { value: numVal });\n }\n }\n });\n }\n });\n }\n\n return map;\n });\n\n // Effective min & max value for heat scale\n readonly computedScaleBounds = computed<{ min: number; max: number }>(() => {\n const customMin = this.minValue();\n const customMax = this.maxValue();\n const map = this.normalizedValueMap();\n\n let dataMax = 0;\n for (const item of map.values()) {\n if (item.value > dataMax) dataMax = item.value;\n }\n\n const min = customMin !== undefined ? customMin : 0;\n const max = customMax !== undefined ? customMax : Math.max(1, dataMax);\n\n return { min, max };\n });\n\n // Gradient CSS for Legend bar\n readonly legendGradientCss = computed<string>(() => {\n const scheme = this.activeColorScheme();\n return PALETTE_CONFIG[scheme]?.gradientCss || PALETTE_CONFIG.indigo.gradientCss;\n });\n\n // Column Headers computation (supports axis swapping)\n readonly columnHeaders = computed<{ key: string | number; label: string }[]>(() => {\n const isSwapped = this.swapAxes();\n const currentInterval = this.interval();\n\n if (!isSwapped) {\n return this.days().map((day) => ({ key: day, label: day }));\n }\n\n // When axes are swapped:\n if (currentInterval === 'day') {\n const weeks = this.dayModeWeeks();\n return weeks.map((w) => ({ key: w.label, label: w.label }));\n }\n\n const hoursList = this.hours();\n const format = this.timeFormat();\n return hoursList.map((hour) => ({\n key: hour,\n label: this.formatHourLabel(hour, format)\n }));\n });\n\n // Grid Matrix computation\n readonly gridRows = computed<{ key: string | number; label: string; cells: HeatmapCell[] }[]>(() => {\n const currentInterval = this.interval();\n const isSwapped = this.swapAxes();\n const map = this.normalizedValueMap();\n const { min, max } = this.computedScaleBounds();\n const scheme = this.activeColorScheme();\n const palette = PALETTE_CONFIG[scheme] || PALETTE_CONFIG.indigo;\n const unitStr = this.activeUnit();\n const unitSuffix = unitStr ? ` ${unitStr}` : '';\n const format = this.timeFormat();\n\n const getVisuals = (val: number) => {\n const intensity = max > min ? Math.max(0, Math.min(1, (val - min) / (max - min))) : 0;\n let bgColor = '';\n let textColor = '';\n if (val === 0) {\n bgColor = palette.zero.bg;\n textColor = palette.zero.text;\n } else {\n const r = Math.round(palette.min.r + (palette.max.r - palette.min.r) * intensity);\n const g = Math.round(palette.min.g + (palette.max.g - palette.min.g) * intensity);\n const b = Math.round(palette.min.b + (palette.max.b - palette.min.b) * intensity);\n bgColor = `rgb(${r}, ${g}, ${b})`;\n textColor = intensity >= 0.55 ? '#ffffff' : palette.zero.text;\n }\n return { intensity, bgColor, textColor };\n };\n\n // --- DAY-BY-DAY MODE ---\n if (currentInterval === 'day') {\n const weeks = this.dayModeWeeks();\n const dayLabels = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];\n\n if (!isSwapped) {\n // Standard: Rows = Weeks, Columns = Days\n return weeks.map((week, weekIdx) => {\n const cells: HeatmapCell[] = week.days.map((d, dayIdx) => {\n const dateStr = formatDate(d, 'yyyy-MM-dd');\n const dayName = dayLabels[dayIdx];\n const entry = map.get(dateStr) || map.get(`${dayName}_${weekIdx}`);\n const val = entry?.value ?? 0;\n const { intensity, bgColor, textColor } = getVisuals(val);\n const tooltip = `${formatDate(d, 'EEEE, MMMM d, yyyy')}: ${val}${unitSuffix}`;\n\n return {\n id: dateStr,\n colKey: dayName,\n colLabel: `${dayName} (${formatDate(d, 'd')})`,\n rowKey: week.label,\n rowLabel: week.label,\n value: val,\n intensity,\n backgroundColor: bgColor,\n textColor,\n formattedValue: String(val),\n tooltipText: tooltip,\n date: d,\n meta: entry?.meta\n };\n });\n\n return {\n key: week.label,\n label: week.label,\n cells\n };\n });\n } else {\n // Swapped: Rows = Days (Mon..Sun), Columns = Weeks\n return dayLabels.map((dayName, dayIdx) => {\n const cells: HeatmapCell[] = weeks.map((week, weekIdx) => {\n const d = week.days[dayIdx];\n const dateStr = formatDate(d, 'yyyy-MM-dd');\n const entry = map.get(dateStr) || map.get(`${dayName}_${weekIdx}`);\n const val = entry?.value ?? 0;\n const { intensity, bgColor, textColor } = getVisuals(val);\n const tooltip = `${formatDate(d, 'EEEE, MMMM d, yyyy')}: ${val}${unitSuffix}`;\n\n return {\n id: `${dateStr}_swapped`,\n colKey: week.label,\n colLabel: week.label,\n rowKey: dayName,\n rowLabel: dayName,\n value: val,\n intensity,\n backgroundColor: bgColor,\n textColor,\n formattedValue: String(val),\n tooltipText: tooltip,\n date: d,\n meta: entry?.meta\n };\n });\n\n return {\n key: dayName,\n label: dayName,\n cells\n };\n });\n }\n }\n\n // --- HOUR-BY-HOUR MODE ---\n const hoursList = this.hours();\n const colsList = this.days();\n\n if (!isSwapped) {\n // Standard: Rows = Hours, Columns = Days\n return hoursList.map((hour) => {\n const hourLabel = this.formatHourLabel(hour, format);\n const cells: HeatmapCell[] = colsList.map((col) => {\n const key = `${col}_${hour}`;\n const entry = map.get(key);\n const val = entry?.value ?? 0;\n const { intensity, bgColor, textColor } = getVisuals(val);\n const tooltip = `${col}, ${hourLabel}: ${val}${unitSuffix}`;\n\n return {\n id: key,\n colKey: col,\n colLabel: col,\n rowKey: hour,\n rowLabel: hourLabel,\n value: val,\n intensity,\n backgroundColor: bgColor,\n textColor,\n formattedValue: String(val),\n tooltipText: tooltip,\n meta: entry?.meta\n };\n });\n\n return {\n key: hour,\n label: hourLabel,\n cells\n };\n });\n } else {\n // Swapped: Rows = Days, Columns = Hours\n return colsList.map((day) => {\n const cells: HeatmapCell[] = hoursList.map((hour) => {\n const hourLabel = this.formatHourLabel(hour, format);\n const key = `${day}_${hour}`;\n const entry = map.get(key);\n const val = entry?.value ?? 0;\n const { intensity, bgColor, textColor } = getVisuals(val);\n const tooltip = `${day}, ${hourLabel}: ${val}${unitSuffix}`;\n\n return {\n id: `${key}_swapped`,\n colKey: hour,\n colLabel: hourLabel,\n rowKey: day,\n rowLabel: day,\n value: val,\n intensity,\n backgroundColor: bgColor,\n textColor,\n formattedValue: String(val),\n tooltipText: tooltip,\n meta: entry?.meta\n };\n });\n\n return {\n key: day,\n label: day,\n cells\n };\n });\n }\n });\n\n constructor() {\n // Notify parent on time range boundaries changes\n effect(() => {\n const days = this.days();\n const hours = this.hours();\n const inter = this.interval();\n const dr = this.dateRange();\n const swapped = this.swapAxes();\n\n this.timeRangeChange.emit({\n interval: inter,\n startHour: hours.length > 0 ? hours[0] : undefined,\n endHour: hours.length > 0 ? hours[hours.length - 1] : undefined,\n days,\n startDate: dr?.startDate ? new Date(dr.startDate as any) : undefined,\n endDate: dr?.endDate ? new Date(dr.endDate as any) : undefined,\n dateRange: dr,\n swapAxes: swapped\n });\n });\n\n // Close dropdowns on outside click\n if (typeof document !== 'undefined') {\n document.addEventListener('click', (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n if (!this.elementRef.nativeElement.contains(target)) {\n this.isMetricDropdownOpen.set(false);\n this.isExportDropdownOpen.set(false);\n }\n });\n }\n }\n\n formatHourLabel(hour: number, format: HeatmapTimeFormat): string {\n if (format === '24h') {\n return `${hour.toString().padStart(2, '0')}:00`;\n }\n if (hour === 0) return '12 AM';\n if (hour < 12) return `${hour} AM`;\n if (hour === 12) return '12 PM';\n return `${hour - 12} PM`;\n }\n\n setInterval(newInterval: HeatmapInterval): void {\n this.interval.set(newInterval);\n }\n\n toggleSwapAxes(): void {\n this.swapAxes.update((v) => !v);\n }\n\n onDateRangePickerChange(val: DateRangeValue | null): void {\n this.dateRange.set(val);\n }\n\n toggleExpand(): void {\n this.isExpanded.update((v) => !v);\n }\n\n toggleMetricDropdown(event: MouseEvent): void {\n event.stopPropagation();\n this.isMetricDropdownOpen.update((v) => !v);\n this.isExportDropdownOpen.set(false);\n }\n\n toggleExportDropdown(event: MouseEvent): void {\n event.stopPropagation();\n this.isExportDropdownOpen.update((v) => !v);\n this.isMetricDropdownOpen.set(false);\n }\n\n selectMetric(metric: HeatmapMetric): void {\n this.selectedMetricId.set(metric.id);\n this.isMetricDropdownOpen.set(false);\n this.metricChange.emit(metric);\n }\n\n onRefreshClick(): void {\n this.refresh.emit();\n }\n\n onCellMouseEnter(cell: HeatmapCell): void {\n this.hoveredCell.set(cell);\n this.cellHover.emit(cell);\n }\n\n onCellMouseLeave(): void {\n this.hoveredCell.set(null);\n this.cellHover.emit(null);\n }\n\n onCellClick(cell: HeatmapCell, event: MouseEvent): void {\n this.cellClick.emit({\n cell,\n colKey: cell.colKey,\n rowKey: cell.rowKey,\n value: cell.value,\n interval: this.interval(),\n event\n });\n }\n\n onKeydown(event: KeyboardEvent, colIdx: number, rowIdx: number): void {\n const rows = this.gridRows();\n const cols = this.columnHeaders();\n let targetRow = rowIdx;\n let targetCol = colIdx;\n\n if (event.key === 'ArrowUp') {\n targetRow = Math.max(0, rowIdx - 1);\n event.preventDefault();\n } else if (event.key === 'ArrowDown') {\n targetRow = Math.min(rows.length - 1, rowIdx + 1);\n event.preventDefault();\n } else if (event.key === 'ArrowLeft') {\n targetCol = Math.max(0, colIdx - 1);\n event.preventDefault();\n } else if (event.key === 'ArrowRight') {\n targetCol = Math.min(cols.length - 1, colIdx + 1);\n event.preventDefault();\n } else if (event.key === 'Enter' || event.key === ' ') {\n const cell = rows[rowIdx]?.cells[colIdx];\n if (cell) {\n this.cellClick.emit({\n cell,\n colKey: cell.colKey,\n rowKey: cell.rowKey,\n value: cell.value,\n interval: this.interval(),\n event\n });\n }\n event.preventDefault();\n return;\n }\n\n if (targetRow !== rowIdx || targetCol !== colIdx) {\n this.focusedCoord.set({ colIndex: targetCol, rowIndex: targetRow });\n const cellEl = this.elementRef.nativeElement.querySelector(\n `[data-cell-coord=\"${targetRow}_${targetCol}\"]`\n ) as HTMLElement;\n cellEl?.focus();\n }\n }\n\n triggerExport(format: HeatmapExportFormat): void {\n this.isExportDropdownOpen.set(false);\n const rows = this.gridRows();\n const cols = this.days();\n\n if (format === 'csv') {\n const header = ['Period', ...cols].join(',');\n const body = rows.map((r) => [r.label, ...r.cells.map((c) => c.value)].join(',')).join('\\n');\n const csvContent = `${header}\\n${body}`;\n\n this.downloadFile(csvContent, 'text/csv;charset=utf-8;', `heatmap_${this.title().toLowerCase().replace(/\\s+/g, '_')}.csv`);\n this.export.emit({ format: 'csv', data: csvContent });\n } else if (format === 'json') {\n const jsonRecords: Record<string, Record<string, number>> = {};\n rows.forEach((r) => {\n jsonRecords[r.label] = {};\n r.cells.forEach((c) => {\n jsonRecords[r.label][c.colKey] = c.value;\n });\n });\n const jsonStr = JSON.stringify(jsonRecords, null, 2);\n this.downloadFile(jsonStr, 'application/json;charset=utf-8;', `heatmap_${this.title().toLowerCase().replace(/\\s+/g, '_')}.json`);\n this.export.emit({ format: 'json', data: jsonRecords });\n }\n }\n\n private downloadFile(content: string, mimeType: string, filename: string): void {\n if (typeof window === 'undefined') return;\n const blob = new Blob([content], { type: mimeType });\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n }\n}\n","<div class=\"talos-heatmap-container\">\n <!-- Header Toolbar -->\n @if (showToolbar()) {\n <div class=\"talos-heatmap-header\">\n <div class=\"talos-heatmap-title-area\">\n <h3 class=\"talos-heatmap-title\">{{ title() }}</h3>\n </div>\n\n <div class=\"talos-heatmap-actions\">\n <!-- Interval Selector Toggle (Hour vs Day) -->\n @if (showIntervalToggle()) {\n <div class=\"talos-heatmap-interval-group\" role=\"radiogroup\" aria-label=\"Time Interval\">\n <button type=\"button\" class=\"talos-heatmap-interval-btn\" [class.is-active]=\"interval() === 'hour'\"\n (click)=\"setInterval('hour')\" role=\"radio\" [attr.aria-checked]=\"interval() === 'hour'\">\n <svg lucideClock [size]=\"13\"></svg>\n <span>Hour</span>\n </button>\n <button type=\"button\" class=\"talos-heatmap-interval-btn\" [class.is-active]=\"interval() === 'day'\"\n (click)=\"setInterval('day')\" role=\"radio\" [attr.aria-checked]=\"interval() === 'day'\">\n <svg lucideCalendar [size]=\"13\"></svg>\n <span>Day</span>\n </button>\n </div>\n }\n\n <!-- Date Range Picker Integration -->\n @if (showDateRangePicker()) {\n <div class=\"talos-heatmap-daterange-box\">\n <talos-date-range-picker size=\"sm\" [ngModel]=\"dateRange()\" (rangeChange)=\"onDateRangePickerChange($event)\"\n [presets]=\"dateRangePresets()\" placeholder=\"Select date range\" />\n </div>\n }\n\n <!-- Metric Dropdown Selector -->\n @if (metrics().length > 0) {\n <div class=\"talos-heatmap-dropdown-wrapper\">\n <button type=\"button\" class=\"talos-heatmap-dropdown-btn\" [class.is-open]=\"isMetricDropdownOpen()\"\n (click)=\"toggleMetricDropdown($event)\" aria-haspopup=\"listbox\" [attr.aria-expanded]=\"isMetricDropdownOpen()\">\n <span class=\"talos-heatmap-dropdown-label\">{{ currentMetric()?.label || 'Select metric' }}</span>\n <svg lucideChevronDown [size]=\"14\" class=\"talos-heatmap-dropdown-icon\"></svg>\n </button>\n\n @if (isMetricDropdownOpen()) {\n <div class=\"talos-heatmap-menu\" role=\"listbox\">\n @for (m of metrics(); track m.id) {\n <button type=\"button\" class=\"talos-heatmap-menu-item\" [class.is-selected]=\"m.id === currentMetric()?.id\"\n (click)=\"selectMetric(m)\" role=\"option\" [attr.aria-selected]=\"m.id === currentMetric()?.id\">\n <span>{{ m.label }}</span>\n @if (m.id === currentMetric()?.id) {\n <svg lucideCheck [size]=\"14\" class=\"talos-heatmap-check-icon\"></svg>\n }\n </button>\n }\n </div>\n }\n </div>\n }\n\n <!-- Refresh Button -->\n @if (showRefresh()) {\n <button type=\"button\" class=\"talos-heatmap-icon-btn\" [class.is-spinning]=\"loading()\" (click)=\"onRefreshClick()\"\n title=\"Refresh data\" aria-label=\"Refresh data\">\n <svg lucideRefreshCw [size]=\"16\" class=\"talos-heatmap-action-icon\"></svg>\n </button>\n }\n\n <!-- Export Dropdown Button -->\n @if (showExport()) {\n <div class=\"talos-heatmap-dropdown-wrapper\">\n <button type=\"button\" class=\"talos-heatmap-icon-btn\" (click)=\"toggleExportDropdown($event)\" title=\"Export data\"\n aria-label=\"Export data\">\n <svg lucideUpload [size]=\"16\" class=\"talos-heatmap-action-icon\"></svg>\n </button>\n\n @if (isExportDropdownOpen()) {\n <div class=\"talos-heatmap-menu talos-heatmap-export-menu\" role=\"menu\">\n <button type=\"button\" class=\"talos-heatmap-menu-item\" (click)=\"triggerExport('csv')\" role=\"menuitem\">\n <svg lucideFileSpreadsheet [size]=\"14\" class=\"talos-heatmap-menu-icon\"></svg>\n <span>Export to CSV</span>\n </button>\n <button type=\"button\" class=\"talos-heatmap-menu-item\" (click)=\"triggerExport('json')\" role=\"menuitem\">\n <svg lucideFileJson [size]=\"14\" class=\"talos-heatmap-menu-icon\"></svg>\n <span>Export to JSON</span>\n </button>\n </div>\n }\n </div>\n }\n\n <!-- Swap Axes Button -->\n @if (showSwapAxes()) {\n <button type=\"button\" class=\"talos-heatmap-icon-btn\" [class.is-active]=\"swapAxes()\" (click)=\"toggleSwapAxes()\"\n [title]=\"swapAxes() ? 'Reset axis orientation' : 'Swap axes (Days / Hours)'\"\n [attr.aria-label]=\"swapAxes() ? 'Reset axis orientation' : 'Swap axes (Days / Hours)'\">\n <svg lucideArrowLeftRight [size]=\"16\" class=\"talos-heatmap-action-icon\"></svg>\n </button>\n }\n\n <!-- Fullscreen / Expand Button -->\n @if (showExpand()) {\n <button type=\"button\" class=\"talos-heatmap-icon-btn\" (click)=\"toggleExpand()\"\n [title]=\"isExpanded() ? 'Minimize' : 'Expand'\" [aria-label]=\"isExpanded() ? 'Minimize' : 'Expand'\">\n @if (isExpanded()) {\n <svg lucideMinimize2 [size]=\"16\" class=\"talos-heatmap-action-icon\"></svg>\n } @else {\n <svg lucideMaximize2 [size]=\"16\" class=\"talos-heatmap-action-icon\"></svg>\n }\n </button>\n }\n </div>\n </div>\n }\n\n <!-- Heatmap Matrix Grid Wrapper -->\n <div class=\"talos-heatmap-body\" [class.is-loading]=\"loading()\">\n <!-- Grid Table -->\n <div class=\"talos-heatmap-grid\" role=\"grid\" [attr.aria-rowcount]=\"gridRows().length + 1\"\n [attr.aria-colcount]=\"columnHeaders().length + 1\">\n <!-- Column Headers -->\n <div class=\"talos-heatmap-row talos-heatmap-header-row\" role=\"row\" aria-rowindex=\"1\">\n <div class=\"talos-heatmap-corner-cell\" role=\"columnheader\"></div>\n @for (col of columnHeaders(); track col.key; let colIdx = $index) {\n <div class=\"talos-heatmap-col-header\" role=\"columnheader\" [attr.aria-colindex]=\"colIdx + 2\">\n {{ col.label }}\n </div>\n }\n </div>\n\n <!-- Data Rows -->\n @for (row of gridRows(); track row.key; let rowIdx = $index) {\n <div class=\"talos-heatmap-row\" role=\"row\" [attr.aria-rowindex]=\"rowIdx + 2\">\n <!-- Row Header (Hour or Week Range) -->\n <div class=\"talos-heatmap-row-header\" role=\"rowheader\" aria-colindex=\"1\" [title]=\"row.label\">\n {{ row.label }}\n </div>\n\n <!-- Heatmap Cells -->\n @for (cell of row.cells; track cell.id; let colIdx = $index) {\n <div class=\"talos-heatmap-cell-wrapper\" role=\"gridcell\" [attr.aria-colindex]=\"colIdx + 2\"\n [attr.aria-label]=\"cell.tooltipText\" tabindex=\"0\" [attr.data-cell-coord]=\"rowIdx + '_' + colIdx\"\n [talosTooltip]=\"cell.tooltipText\" (mouseenter)=\"onCellMouseEnter(cell)\" (mouseleave)=\"onCellMouseLeave()\"\n (click)=\"onCellClick(cell, $event)\" (keydown)=\"onKeydown($event, colIdx, rowIdx)\">\n <div class=\"talos-heatmap-pill\" [style.background-color]=\"cell.backgroundColor\" [style.color]=\"cell.textColor\"\n [class.has-value]=\"cell.value > 0\">\n @if (showValues()) {\n <span class=\"talos-heatmap-cell-value\">{{ cell.formattedValue }}</span>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Loading Skeleton Shimmer Overlay -->\n @if (loading()) {\n <div class=\"talos-heatmap-loading-overlay\" aria-hidden=\"true\">\n <div class=\"talos-heatmap-loading-spinner-box\">\n <svg lucideRefreshCw [size]=\"16\" class=\"talos-heatmap-loading-spinner\"></svg>\n <span>Loading data...</span>\n </div>\n </div>\n }\n </div>\n\n <!-- Bottom Legend Bar -->\n @if (showLegend()) {\n <div class=\"talos-heatmap-legend\">\n <span class=\"talos-heatmap-legend-bound\">{{ computedScaleBounds().min }}</span>\n <div class=\"talos-heatmap-legend-bar\" [style.background]=\"legendGradientCss()\" aria-hidden=\"true\"></div>\n <span class=\"talos-heatmap-legend-bound\">{{ computedScaleBounds().max }}</span>\n </div>\n }\n</div>","import { NgModule } from '@angular/core';\nimport { TalosHeatmapComponent } from './heatmap.component';\n\n@NgModule({\n imports: [TalosHeatmapComponent],\n exports: [TalosHeatmapComponent]\n})\nexport class TalosHeatmapModule { }\n","/**\n * Talos Category Bar Type Definitions\n */\n\nexport type CategoryBarSize = 'xs' | 'sm' | 'md' | 'lg';\n\nexport type CategoryBarShape = 'pill' | 'rounded' | 'square';\n\nexport type CategoryBarLabelPosition = 'top' | 'bottom' | 'none';\n\nexport type CategoryBarColorScheme =\n | 'blue'\n | 'emerald'\n | 'violet'\n | 'amber'\n | 'rose'\n | 'cyan'\n | 'lime'\n | 'indigo'\n | 'pink'\n | 'orange'\n | 'fuchsia'\n | 'teal'\n | 'sky'\n | 'red'\n | 'slate'\n | 'purple';\n\n/**\n * Individual category segment definition for the category bar.\n */\nexport interface CategoryBarSegment {\n /** Segment numeric value (width will be proportional to value / sum(values)) */\n value: number;\n /** Human-readable category label (displayed in tooltip, legend, or accessibility text) */\n label?: string;\n /** Specific CSS color string (e.g. '#3b82f6', 'rgb(59, 130, 246)', 'var(--talos-primary-color)') */\n color?: string;\n /** Named color scheme preset (e.g. 'blue', 'emerald', 'violet', 'amber', 'rose', etc.) */\n colorScheme?: CategoryBarColorScheme | string;\n /** Custom tooltip text or template text */\n tooltip?: string;\n /** Optional metadata passed to click and hover events */\n meta?: Record<string, unknown>;\n}\n\n/**\n * Marker needle definition for the category bar.\n */\nexport interface CategoryBarMarker {\n /** Numeric value indicating where the marker sits along the range */\n value: number;\n /** Custom label displayed for the marker (e.g. 'Target: $220k', 'Current: 220') */\n label?: string;\n /** Custom marker color (defaults to neutral dark/white or category color) */\n color?: string;\n /** Custom tooltip content for the marker */\n tooltip?: string;\n /** Whether to animate marker position changes (defaults to true) */\n showAnimation?: boolean;\n /** Custom marker shape / style ('pill' | 'line' | 'pin' | 'needle') */\n variant?: 'pill' | 'line' | 'pin' | 'needle';\n}\n\n/**\n * Normalized computed segment model used internally by the template.\n */\nexport interface CategoryBarComputedSegment {\n index: number;\n value: number;\n label: string;\n color: string;\n percentage: number;\n cumulativeStart: number;\n cumulativeEnd: number;\n cumulativeStartPercent: number;\n cumulativeEndPercent: number;\n formattedValue: string;\n tooltipText: string;\n raw: CategoryBarSegment;\n}\n\n/**\n * Scale boundary label item.\n */\nexport interface CategoryBarScaleLabel {\n index: number;\n value: number;\n text: string;\n leftPercent: number;\n}\n\n/**\n * Event emitted when a segment is clicked.\n */\nexport interface CategoryBarSegmentClickEvent {\n segment: CategoryBarComputedSegment;\n index: number;\n event: Event;\n}\n\nexport type CategoryBarClickEvent = CategoryBarSegmentClickEvent;\n\n/**\n * Event emitted when the marker is clicked.\n */\nexport interface CategoryBarMarkerClickEvent {\n marker: CategoryBarMarker;\n value: number;\n percent: number;\n event: Event;\n}\n","import {\n Component,\n ElementRef,\n computed,\n inject,\n input,\n output,\n signal\n} from '@angular/core';\nimport { TalosTooltipDirective } from '@weeehaoooz/talos-ui/feedback/tooltip';\n\nimport {\n CategoryBarColorScheme,\n CategoryBarComputedSegment,\n CategoryBarLabelPosition,\n CategoryBarMarker,\n CategoryBarMarkerClickEvent,\n CategoryBarScaleLabel,\n CategoryBarSegment,\n CategoryBarSegmentClickEvent,\n CategoryBarShape,\n CategoryBarSize\n} from './category-bar.types';\n\nconst PRESET_PALETTE: Record<string, string> = {\n blue: '#3b82f6',\n emerald: '#10b981',\n violet: '#8b5cf6',\n purple: '#9333ea',\n amber: '#f59e0b',\n orange: '#f97316',\n rose: '#f43f5e',\n pink: '#ec4899',\n cyan: '#06b6d4',\n lime: '#84cc16',\n indigo: '#6366f1',\n teal: '#14b8a6',\n sky: '#0284c7',\n red: '#ef4444',\n slate: '#64748b'\n};\n\nconst DEFAULT_COLOR_ORDER: string[] = [\n '#3b82f6', // blue\n '#10b981', // emerald\n '#8b5cf6', // violet\n '#f59e0b', // amber\n '#ec4899', // pink\n '#06b6d4', // cyan\n '#84cc16', // lime\n '#f97316', // orange\n '#6366f1', // indigo\n '#14b8a6' // teal\n];\n\n@Component({\n selector: 'talos-category-bar',\n imports: [TalosTooltipDirective],\n templateUrl: './category-bar.component.html',\n styleUrl: './category-bar.component.scss',\n host: {\n 'class': 'talos-category-bar',\n '[class.talos-category-bar-animated]': 'animated()',\n '[class.talos-category-bar-sm]': 'size() === \"sm\"',\n '[class.talos-category-bar-md]': 'size() === \"md\"',\n '[class.talos-category-bar-lg]': 'size() === \"lg\"',\n '[class.talos-category-bar-xs]': 'size() === \"xs\"',\n '[attr.role]': '\"meter\"',\n '[attr.aria-valuenow]': 'markerVal()',\n '[attr.aria-valuemin]': 'computedMin()',\n '[attr.aria-valuemax]': 'computedMax()',\n '[attr.aria-label]': 'ariaLabel()'\n }\n})\nexport class TalosCategoryBarComponent {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Simple numeric values array for each category (e.g. [120, 80, 60, 40]).\n */\n readonly values = input<number[] | null>(null);\n\n /**\n * Detailed category segments with labels, colors, and metadata.\n */\n readonly categories = input<CategoryBarSegment[] | null>(null);\n\n /**\n * Custom palette or color list for segments. Can be CSS color strings or preset names.\n */\n readonly colors = input<string[]>(DEFAULT_COLOR_ORDER);\n\n /**\n * Numeric position for the needle marker.\n */\n readonly markerValue = input<number | null>(null);\n\n /**\n * Detailed marker object definition.\n */\n readonly marker = input<CategoryBarMarker | null>(null);\n\n /**\n * Minimum scale bound (defaults to 0).\n */\n readonly minValue = input<number | null>(null);\n\n /**\n * Maximum scale bound (defaults to sum of all category values).\n */\n readonly maxValue = input<number | null>(null);\n\n /**\n * Whether to show category scale labels at segment boundaries.\n */\n readonly showLabels = input<boolean>(true);\n\n /**\n * Custom boundary label strings. If not provided, computed cumulative values are shown.\n */\n readonly labels = input<string[] | null>(null);\n\n /**\n * Placement of scale boundary labels: 'top', 'bottom', or 'none'.\n */\n readonly labelPosition = input<CategoryBarLabelPosition>('top');\n\n /**\n * Custom label formatter function for boundary values.\n */\n readonly labelFormatter = input<((value: number, index: number) => string) | null>(null);\n\n /**\n * Custom value formatter for segment tooltip / legends.\n */\n readonly valueFormatter = input<((value: number) => string) | null>(null);\n\n /**\n * Custom marker value formatter for tooltip.\n */\n readonly markerFormatter = input<((value: number) => string) | null>(null);\n\n /**\n * Height size variant of the category bar: 'xs' (6px), 'sm' (8px), 'md' (12px), 'lg' (16px).\n */\n readonly size = input<CategoryBarSize>('md');\n\n /**\n * Corner shape of the bar: 'pill' (fully rounded capsule), 'rounded' (6px), 'square' (0px).\n */\n readonly shape = input<CategoryBarShape>('pill');\n\n /**\n * Optional title above the bar.\n */\n readonly title = input<string>('');\n\n /**\n * Optional subtitle below the title.\n */\n readonly subtitle = input<string>('');\n\n /**\n * Whether to display a bottom legend row with category names and color indicators.\n */\n readonly showLegend = input<boolean>(false);\n\n /**\n * Whether hovering segments or marker displays interactive tooltips.\n */\n readonly showTooltip = input<boolean>(true);\n\n /**\n * Enable smooth CSS transition animation.\n */\n readonly animated = input<boolean>(true);\n\n /**\n * Output event when a segment is clicked.\n */\n readonly segmentClick = output<CategoryBarSegmentClickEvent>();\n\n /**\n * Output event when the marker is clicked.\n */\n readonly markerClick = output<CategoryBarMarkerClickEvent>();\n\n /**\n * Output event when a segment is hovered.\n */\n readonly segmentHover = output<CategoryBarComputedSegment | null>();\n\n // Internal reactive hover states\n protected readonly hoveredSegment = signal<CategoryBarComputedSegment | null>(null);\n protected readonly hoveredMarker = signal<boolean>(false);\n protected readonly tooltipPosition = signal<{ x: number; y: number } | null>(null);\n\n /**\n * Resolves raw category items from either `categories` or `values` input.\n */\n private readonly rawCategories = computed<CategoryBarSegment[]>(() => {\n const cats = this.categories();\n if (cats && cats.length > 0) {\n return cats;\n }\n const vals = this.values();\n if (vals && vals.length > 0) {\n return vals.map((val, idx) => ({\n value: val,\n label: `Category ${idx + 1}`\n }));\n }\n return [];\n });\n\n /**\n * Resolved color array mapping named color presets to hex codes if needed.\n */\n private readonly resolvedPalette = computed<string[]>(() => {\n const customColors = this.colors();\n if (customColors && customColors.length > 0) {\n return customColors.map(c => PRESET_PALETTE[c] || c);\n }\n return DEFAULT_COLOR_ORDER;\n });\n\n /**\n * Total sum of all positive category values.\n */\n protected readonly totalSum = computed<number>(() => {\n const raw = this.rawCategories();\n return raw.reduce((sum, item) => sum + Math.max(0, item.value || 0), 0);\n });\n\n /**\n * Computed minimum boundary.\n */\n protected readonly computedMin = computed<number>(() => {\n const customMin = this.minValue();\n return customMin !== null ? customMin : 0;\n });\n\n /**\n * Computed maximum boundary.\n */\n protected readonly computedMax = computed<number>(() => {\n const customMax = this.maxValue();\n if (customMax !== null) {\n return customMax;\n }\n const sum = this.totalSum();\n return sum > 0 ? sum : 100;\n });\n\n /**\n * Normalized computed segments for rendering with cumulative positions and percentages.\n */\n protected readonly normalizedSegments = computed<CategoryBarComputedSegment[]>(() => {\n const raw = this.rawCategories();\n const total = this.totalSum();\n const palette = this.resolvedPalette();\n const vFormatter = this.valueFormatter();\n\n if (raw.length === 0 || total <= 0) {\n return [];\n }\n\n let cumulative = 0;\n\n return raw.map((item, index) => {\n const val = Math.max(0, item.value || 0);\n const percentage = (val / total) * 100;\n const start = cumulative;\n const end = cumulative + val;\n const startPercent = (start / total) * 100;\n const endPercent = (end / total) * 100;\n cumulative = end;\n\n // Color resolution\n let color = item.color;\n if (!color && item.colorScheme) {\n color = PRESET_PALETTE[item.colorScheme] || item.colorScheme;\n }\n if (!color) {\n color = palette[index % palette.length];\n }\n\n const formattedVal = vFormatter ? vFormatter(val) : val.toLocaleString();\n const label = item.label || `Category ${index + 1}`;\n const tooltipText = item.tooltip || `${label}: ${formattedVal} (${percentage.toFixed(1)}%)`;\n\n return {\n index,\n value: val,\n label,\n color,\n percentage,\n cumulativeStart: start,\n cumulativeEnd: end,\n cumulativeStartPercent: startPercent,\n cumulativeEndPercent: endPercent,\n formattedValue: formattedVal,\n tooltipText,\n raw: item\n };\n });\n });\n\n /**\n * Computed scale boundary labels positioned at tick intersections.\n */\n protected readonly scaleLabels = computed<CategoryBarScaleLabel[]>(() => {\n if (!this.showLabels() || this.labelPosition() === 'none') {\n return [];\n }\n\n const customLabels = this.labels();\n const segments = this.normalizedSegments();\n const lFormatter = this.labelFormatter();\n const min = this.computedMin();\n const max = this.computedMax();\n\n if (customLabels && customLabels.length > 0) {\n const count = customLabels.length;\n return customLabels.map((text, index) => {\n const leftPercent = count > 1 ? (index / (count - 1)) * 100 : 0;\n return {\n index,\n value: min + ((max - min) * leftPercent) / 100,\n text,\n leftPercent\n };\n });\n }\n\n if (segments.length === 0) {\n return [];\n }\n\n // Generate boundary ticks: [0, seg1.end, seg2.end, ...]\n const ticks: CategoryBarScaleLabel[] = [];\n\n // Start tick (0 / min)\n const startVal = min;\n const startText = lFormatter ? lFormatter(startVal, 0) : startVal.toLocaleString();\n ticks.push({\n index: 0,\n value: startVal,\n text: startText,\n leftPercent: 0\n });\n\n segments.forEach((seg, idx) => {\n const val = seg.cumulativeEnd;\n const text = lFormatter ? lFormatter(val, idx + 1) : val.toLocaleString();\n ticks.push({\n index: idx + 1,\n value: val,\n text,\n leftPercent: seg.cumulativeEndPercent\n });\n });\n\n return ticks;\n });\n\n /**\n * Resolved marker value.\n */\n protected readonly markerVal = computed<number | null>(() => {\n const m = this.marker();\n if (m && typeof m.value === 'number') {\n return m.value;\n }\n const mv = this.markerValue();\n return typeof mv === 'number' ? mv : null;\n });\n\n /**\n * Marker needle placement and metadata.\n */\n protected readonly markerState = computed<{\n visible: boolean;\n percent: number;\n color: string;\n label: string;\n tooltip: string;\n variant: 'pill' | 'line' | 'pin' | 'needle';\n } | null>(() => {\n const val = this.markerVal();\n if (val === null) {\n return null;\n }\n\n const min = this.computedMin();\n const max = this.computedMax();\n const span = max - min;\n if (span <= 0) {\n return null;\n }\n\n const rawPercent = ((val - min) / span) * 100;\n const clampedPercent = Math.max(0, Math.min(100, rawPercent));\n\n const m = this.marker();\n const mFormatter = this.markerFormatter();\n const formattedVal = mFormatter ? mFormatter(val) : val.toLocaleString();\n\n // Pick marker color: custom marker color -> category color at that position -> primary accent\n let color = m?.color;\n if (!color) {\n const segments = this.normalizedSegments();\n const currentSegment = segments.find(\n s => clampedPercent >= s.cumulativeStartPercent && clampedPercent <= s.cumulativeEndPercent\n );\n color = currentSegment ? currentSegment.color : '#6366f1';\n }\n\n const label = m?.label || `Marker: ${formattedVal}`;\n const tooltip = m?.tooltip || `${label} (${clampedPercent.toFixed(1)}%)`;\n const variant = m?.variant || 'pill';\n\n return {\n visible: true,\n percent: clampedPercent,\n color,\n label,\n tooltip,\n variant\n };\n });\n\n /**\n * Accessible description for screen readers.\n */\n protected readonly ariaLabel = computed<string>(() => {\n const t = this.title();\n const mVal = this.markerVal();\n const total = this.totalSum();\n if (t) {\n return `${t}, Total: ${total}${mVal !== null ? `, Current Marker: ${mVal}` : ''}`;\n }\n return `Category bar with ${this.rawCategories().length} categories, Total: ${total}`;\n });\n\n // Event handlers\n onSegmentClick(seg: CategoryBarComputedSegment, event: Event): void {\n this.segmentClick.emit({\n segment: seg,\n index: seg.index,\n event\n });\n }\n\n onSegmentMouseEnter(seg: CategoryBarComputedSegment, event: MouseEvent): void {\n this.hoveredSegment.set(seg);\n this.segmentHover.emit(seg);\n this.updateTooltipPos(event);\n }\n\n onSegmentMouseLeave(): void {\n this.hoveredSegment.set(null);\n this.segmentHover.emit(null);\n }\n\n onMarkerMouseEnter(event: MouseEvent): void {\n this.hoveredMarker.set(true);\n this.updateTooltipPos(event);\n }\n\n onMarkerMouseLeave(): void {\n this.hoveredMarker.set(false);\n }\n\n onMarkerClick(event: Event): void {\n const ms = this.markerState();\n const mVal = this.markerVal();\n if (ms && mVal !== null) {\n const mObj: CategoryBarMarker = this.marker() || { value: mVal };\n this.markerClick.emit({\n marker: mObj,\n value: mVal,\n percent: ms.percent,\n event\n });\n }\n }\n\n private updateTooltipPos(event: MouseEvent): void {\n const hostEl = this.elementRef.nativeElement;\n const rect = hostEl.getBoundingClientRect();\n this.tooltipPosition.set({\n x: event.clientX - rect.left,\n y: event.clientY - rect.top\n });\n }\n}\n","<!-- Header Block (Title / Subtitle / Custom Header) -->\n@if (title() || subtitle()) {\n<div class=\"talos-category-bar-header\">\n @if (title()) {\n <div class=\"talos-category-bar-title\">{{ title() }}</div>\n }\n @if (subtitle()) {\n <div class=\"talos-category-bar-subtitle\">{{ subtitle() }}</div>\n }\n</div>\n}\n\n<ng-content select=\"[talosCategoryBarHeader]\"></ng-content>\n\n<!-- Top Scale Boundary Labels -->\n@if (showLabels() && labelPosition() === 'top' && scaleLabels().length > 0) {\n<div class=\"talos-category-bar-labels talos-category-bar-labels-top\" aria-hidden=\"true\">\n @for (tick of scaleLabels(); track tick.index; let first = $first; let last = $last) {\n <span class=\"talos-category-bar-label-tick\" [class.is-first]=\"first\" [class.is-last]=\"last\"\n [style.left.%]=\"tick.leftPercent\">\n {{ tick.text }}\n </span>\n }\n</div>\n}\n\n<!-- Main Bar Track Wrapper -->\n<div class=\"talos-category-bar-track-wrapper\">\n <div class=\"talos-category-bar-track\" [class.shape-pill]=\"shape() === 'pill'\"\n [class.shape-rounded]=\"shape() === 'rounded'\" [class.shape-square]=\"shape() === 'square'\"\n [class.size-xs]=\"size() === 'xs'\" [class.size-sm]=\"size() === 'sm'\" [class.size-md]=\"size() === 'md'\"\n [class.size-lg]=\"size() === 'lg'\">\n @for (seg of normalizedSegments(); track seg.index; let first = $first; let last = $last) {\n <div class=\"talos-category-bar-segment\" [class.is-first]=\"first\" [class.is-last]=\"last\"\n [class.is-hovered]=\"hoveredSegment()?.index === seg.index\" [style.width.%]=\"seg.percentage\"\n [style.background-color]=\"seg.color\" [talosTooltip]=\"seg.tooltipText\" [tooltipDisabled]=\"!showTooltip()\"\n tooltipPosition=\"top\" role=\"button\" tabindex=\"0\" [attr.aria-label]=\"seg.tooltipText\"\n (mouseenter)=\"onSegmentMouseEnter(seg, $event)\" (mouseleave)=\"onSegmentMouseLeave()\"\n (click)=\"onSegmentClick(seg, $event)\" (keydown.enter)=\"onSegmentClick(seg, $event)\"\n (keydown.space)=\"onSegmentClick(seg, $event)\"></div>\n }\n\n <!-- Marker Needle / Pin Indicator -->\n @if (markerState(); as ms) {\n <div class=\"talos-category-bar-marker\" [class.variant-pill]=\"ms.variant === 'pill'\"\n [class.variant-line]=\"ms.variant === 'line'\" [class.variant-needle]=\"ms.variant === 'needle'\"\n [class.is-hovered]=\"hoveredMarker()\" [style.left.%]=\"ms.percent\" [style.--marker-color]=\"ms.color\"\n [talosTooltip]=\"ms.tooltip\" [tooltipDisabled]=\"!showTooltip()\" tooltipPosition=\"top\" role=\"slider\" tabindex=\"0\"\n [attr.aria-valuenow]=\"markerVal()\" [attr.aria-label]=\"ms.label\" (mouseenter)=\"onMarkerMouseEnter($event)\"\n (mouseleave)=\"onMarkerMouseLeave()\" (click)=\"onMarkerClick($event)\" (keydown.enter)=\"onMarkerClick($event)\"\n (keydown.space)=\"onMarkerClick($event)\">\n <div class=\"talos-category-bar-marker-handle\"></div>\n </div>\n }\n </div>\n</div>\n\n<!-- Bottom Scale Boundary Labels -->\n@if (showLabels() && labelPosition() === 'bottom' && scaleLabels().length > 0) {\n<div class=\"talos-category-bar-labels talos-category-bar-labels-bottom\" aria-hidden=\"true\">\n @for (tick of scaleLabels(); track tick.index; let first = $first; let last = $last) {\n <span class=\"talos-category-bar-label-tick\" [class.is-first]=\"first\" [class.is-last]=\"last\"\n [style.left.%]=\"tick.leftPercent\">\n {{ tick.text }}\n </span>\n }\n</div>\n}\n\n<!-- Optional Legend Row -->\n@if (showLegend() && normalizedSegments().length > 0) {\n<div class=\"talos-category-bar-legend\">\n @for (seg of normalizedSegments(); track seg.index) {\n <div class=\"talos-category-bar-legend-item\" [class.is-hovered]=\"hoveredSegment()?.index === seg.index\"\n [talosTooltip]=\"seg.tooltipText\" [tooltipDisabled]=\"!showTooltip()\" tooltipPosition=\"top\"\n (mouseenter)=\"onSegmentMouseEnter(seg, $event)\" (mouseleave)=\"onSegmentMouseLeave()\"\n (click)=\"onSegmentClick(seg, $event)\">\n <span class=\"legend-dot\" [style.background-color]=\"seg.color\"></span>\n <span class=\"legend-label\">{{ seg.label }}</span>\n <span class=\"legend-value\">{{ seg.formattedValue }}</span>\n </div>\n }\n</div>\n}","import { NgModule } from '@angular/core';\nimport { TalosCategoryBarComponent } from './category-bar.component';\n\n@NgModule({\n imports: [TalosCategoryBarComponent],\n exports: [TalosCategoryBarComponent]\n})\nexport class TalosCategoryBarModule { }\n","import { Directive, ElementRef, computed, inject, input } from '@angular/core';\nimport { RangeInputSize, RangeInputVariant } from './range-input.types';\n\n@Directive({\n selector: 'input[type=\"range\"][talosRangeInput], input[type=\"range\"][talos-range-input]',\n host: {\n 'class': 'talos-range-native-input',\n '[class.talos-range-input-sm]': 'size() === \"sm\"',\n '[class.talos-range-input-md]': 'size() === \"md\"',\n '[class.talos-range-input-lg]': 'size() === \"lg\"',\n '[class.talos-range-input-primary]': 'variant() === \"primary\"',\n '[class.talos-range-input-secondary]': 'variant() === \"secondary\"',\n '[class.talos-range-input-success]': 'variant() === \"success\"',\n '[class.talos-range-input-warning]': 'variant() === \"warning\"',\n '[class.talos-range-input-danger]': 'variant() === \"danger\"',\n '[class.talos-range-input-info]': 'variant() === \"info\"',\n '[class.is-invalid]': 'invalid()',\n '[style.--range-fill-percent]': 'fillPercentStyle()'\n }\n})\nexport class TalosRangeInputDirective {\n private readonly elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n /** Size variant */\n readonly size = input<RangeInputSize>('md');\n\n /** Visual color variant */\n readonly variant = input<RangeInputVariant>('primary');\n\n /** Error state */\n readonly invalid = input<boolean>(false);\n\n protected readonly fillPercentStyle = computed(() => {\n const el = this.elementRef.nativeElement;\n const min = parseFloat(el.min) || 0;\n const max = parseFloat(el.max) || 100;\n const val = parseFloat(el.value) || min;\n const percent = max > min ? ((val - min) / (max - min)) * 100 : 0;\n return `${Math.max(0, Math.min(100, percent))}%`;\n });\n}\n","import {\n Component,\n ElementRef,\n computed,\n forwardRef,\n inject,\n input,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n RangeInputChangeEvent,\n RangeInputMark,\n RangeInputSize,\n RangeInputTick,\n RangeInputTooltipMode,\n RangeInputValue,\n RangeInputVariant\n} from './range-input.types';\n\nlet rangeInputCounter = 0;\n\n@Component({\n selector: 'talos-range-input, talos-range-slider, talos-slider',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TalosRangeInputComponent),\n multi: true\n }\n ],\n templateUrl: './range-input.component.html',\n styleUrl: './range-input.component.scss',\n host: {\n 'class': 'talos-range-input-host',\n '[class.talos-range-disabled]': 'effectiveDisabled()',\n '[class.talos-range-invalid]': 'effectiveInvalid()',\n '[class.is-floating]': 'isFloatingMode()'\n }\n})\nexport class TalosRangeInputComponent implements ControlValueAccessor {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly trackContainerRef = viewChild<ElementRef<HTMLDivElement>>('sliderTrackContainer');\n private readonly thumb0Ref = viewChild<ElementRef<HTMLDivElement>>('thumb0');\n private readonly thumb1Ref = viewChild<ElementRef<HTMLDivElement>>('thumb1');\n\n /** Minimum allowed value */\n readonly min = input<number>(0);\n\n /** Maximum allowed value */\n readonly max = input<number>(100);\n\n /** Step increment for values */\n readonly step = input<number>(1);\n\n /** Step interval for tick marks / labels generation (e.g. 10, 20, 25) */\n readonly interval = input<number | null>(null);\n\n /** Whether the slider operates in dual-thumb range mode */\n readonly range = input<boolean>(false);\n\n /** Minimum distance between handles in dual mode */\n readonly minRange = input<number>(0);\n\n /** Maximum distance between handles in dual mode */\n readonly maxRange = input<number | null>(null);\n\n /** Discrete tick marks with optional custom labels */\n readonly marks = input<RangeInputMark[] | number[] | null>(null);\n\n /** Whether to show tick mark notches on the track */\n readonly showTicks = input<boolean>(false);\n\n /** Whether to show interval/tick labels under the track */\n readonly showIntervals = input<boolean>(false);\n\n /** Alias for showIntervals */\n readonly showLabels = input<boolean>(false);\n\n /** Whether to snap slider thumb only to configured tick marks */\n readonly snapToTicks = input<boolean>(false);\n\n /** Sizing variant */\n readonly size = input<RangeInputSize>('md');\n\n /** Visual color variant */\n readonly variant = input<RangeInputVariant>('primary');\n\n /** Disabled state */\n readonly disabled = input<boolean>(false);\n\n /** Read-only state */\n readonly readonly = input<boolean>(false);\n\n /** Invalid error state */\n readonly invalid = input<boolean>(false);\n\n /** Top label text */\n readonly label = input<string>('');\n\n /** Floating label mode toggle */\n readonly floatingLabel = input<boolean>(false);\n readonly floating = input<boolean>(false);\n\n /** Helper hint text */\n readonly hint = input<string>('');\n\n /** Whether to render synchronized number inputs */\n readonly showInputs = input<boolean>(false);\n\n /** Whether to show top value badge when inputs are disabled */\n readonly showValueBadge = input<boolean>(true);\n\n /** Tooltip display mode ('always' | 'hover' | 'drag' | 'none') */\n readonly showTooltip = input<RangeInputTooltipMode>('hover');\n\n /** Optional prefix string (e.g. '$') */\n readonly prefix = input<string>('');\n\n /** Optional suffix string (e.g. '%', '°C') */\n readonly suffix = input<string>('');\n\n /** Custom value formatter function */\n readonly formatter = input<((value: number) => string) | null>(null);\n\n /** Accessibility label for single slider */\n readonly ariaLabel = input<string>('Range slider');\n\n /** Accessibility label for start thumb in range mode */\n readonly ariaLabelStart = input<string>('Minimum range value');\n\n /** Accessibility label for end thumb in range mode */\n readonly ariaLabelEnd = input<string>('Maximum range value');\n\n /** Element unique ID */\n readonly id = input<string>('');\n\n /** Standalone value input binding */\n readonly value = input<RangeInputValue | null>(null);\n\n /** Emitted when value changes */\n readonly valueChange = output<RangeInputValue>();\n\n /** Emitted during active dragging or keyboard movement */\n readonly inputChange = output<RangeInputChangeEvent>();\n\n /** Emitted on drag end, click release or input commit */\n readonly change = output<RangeInputChangeEvent>();\n\n // Internal reactive states\n private readonly defaultId = `talos-range-${++rangeInputCounter}`;\n readonly elementId = computed(() => this.id() || this.defaultId);\n\n readonly internalValue = signal<RangeInputValue | null>(null);\n readonly isCvaDisabled = signal<boolean>(false);\n readonly isTouched = signal<boolean>(false);\n\n // Active interaction tracking\n readonly focusedThumb = signal<number | null>(null);\n readonly hoveredThumb = signal<number | null>(null);\n readonly draggingThumb = signal<number | null>(null);\n\n // Effective state computations\n readonly isFloatingMode = computed(() => this.floatingLabel() || this.floating());\n readonly effectiveDisabled = computed(() => this.disabled() || this.isCvaDisabled());\n readonly effectiveInvalid = computed(() => this.invalid());\n\n /** Determines whether the component is in dual-handle range mode */\n readonly isDualRange = computed<boolean>(() => {\n if (this.range()) return true;\n const v = this.internalValue() ?? this.value();\n return Array.isArray(v);\n });\n\n /** Resolved start value (single value or lower bound of range) */\n readonly startValue = computed<number>(() => {\n const v = this.internalValue() ?? this.value();\n const min = this.min();\n const max = this.max();\n\n if (Array.isArray(v)) {\n const val = typeof v[0] === 'number' ? v[0] : min;\n return this.clamp(val, min, max);\n }\n const val = typeof v === 'number' ? v : min;\n return this.clamp(val, min, max);\n });\n\n /** Resolved end value (upper bound of range mode) */\n readonly endValue = computed<number>(() => {\n const v = this.internalValue() ?? this.value();\n const min = this.min();\n const max = this.max();\n\n if (Array.isArray(v)) {\n const val = typeof v[1] === 'number' ? v[1] : max;\n return this.clamp(Math.max(this.startValue(), val), min, max);\n }\n return max;\n });\n\n /** Overall span */\n readonly span = computed<number>(() => {\n const diff = this.max() - this.min();\n return diff > 0 ? diff : 1;\n });\n\n /** Percentage position of thumb 0 */\n readonly thumb0Percent = computed<number>(() => {\n return this.valueToPercent(this.startValue());\n });\n\n /** Percentage position of thumb 1 */\n readonly thumb1Percent = computed<number>(() => {\n return this.valueToPercent(this.endValue());\n });\n\n /** Fill bar left percentage */\n readonly fillLeftPercent = computed<number>(() => {\n if (this.isDualRange()) {\n return this.thumb0Percent();\n }\n return 0;\n });\n\n /** Fill bar width percentage */\n readonly fillWidthPercent = computed<number>(() => {\n if (this.isDualRange()) {\n return Math.max(0, this.thumb1Percent() - this.thumb0Percent());\n }\n return this.thumb0Percent();\n });\n\n /** Computed list of tick marks */\n readonly ticks = computed<RangeInputTick[]>(() => {\n const min = this.min();\n const max = this.max();\n const customMarks = this.marks();\n const intervalVal = this.interval();\n const startVal = this.startValue();\n const endVal = this.isDualRange() ? this.endValue() : startVal;\n const isDual = this.isDualRange();\n\n if (customMarks && customMarks.length > 0) {\n return customMarks.map(m => {\n const val = typeof m === 'number' ? m : m.value;\n const label = typeof m === 'number' ? undefined : m.label;\n const tooltip = typeof m === 'number' ? undefined : m.tooltip;\n const percent = this.valueToPercent(val);\n const active = isDual\n ? val >= startVal && val <= endVal\n : val <= startVal;\n return { value: val, percent, label, tooltip, active };\n });\n }\n\n if (intervalVal && intervalVal > 0) {\n const list: RangeInputTick[] = [];\n for (let v = min; v <= max; v += intervalVal) {\n const percent = this.valueToPercent(v);\n const active = isDual\n ? v >= startVal && v <= endVal\n : v <= startVal;\n list.push({\n value: v,\n percent,\n label: this.formatDisplayValue(v),\n active\n });\n }\n // Ensure max is included if not strictly a multiple\n if ((max - min) % intervalVal !== 0) {\n list.push({\n value: max,\n percent: 100,\n label: this.formatDisplayValue(max),\n active: isDual ? endVal >= max : startVal >= max\n });\n }\n return list;\n }\n\n return [];\n });\n\n /** Computed list of interval/tick labels */\n readonly labels = computed<RangeInputTick[]>(() => {\n const customMarks = this.marks();\n const ticksList = this.ticks();\n\n if (customMarks && customMarks.length > 0) {\n return ticksList.filter(t => t.label !== undefined);\n }\n return ticksList;\n });\n\n readonly isDragging = computed(() => this.draggingThumb() !== null);\n\n private onChange: (val: RangeInputValue) => void = () => { };\n private onTouched: () => void = () => { };\n\n // --- ControlValueAccessor Implementation ---\n writeValue(val: RangeInputValue | null): void {\n if (val === null || val === undefined) {\n this.internalValue.set(this.range() ? [this.min(), this.max()] : this.min());\n } else {\n this.internalValue.set(val);\n }\n }\n\n registerOnChange(fn: (val: RangeInputValue) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isCvaDisabled.set(isDisabled);\n }\n\n // --- Value Helpers & Formatting ---\n private clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max);\n }\n\n private valueToPercent(value: number): number {\n const min = this.min();\n const span = this.span();\n const percent = ((value - min) / span) * 100;\n return Math.max(0, Math.min(100, percent));\n }\n\n private percentToValue(percent: number): number {\n const min = this.min();\n const span = this.span();\n return min + (percent / 100) * span;\n }\n\n private snapValue(value: number): number {\n const min = this.min();\n const max = this.max();\n\n if (this.snapToTicks()) {\n const availableTicks = this.ticks();\n if (availableTicks.length > 0) {\n let closest = availableTicks[0].value;\n let minDiff = Math.abs(value - closest);\n for (const t of availableTicks) {\n const diff = Math.abs(value - t.value);\n if (diff < minDiff) {\n minDiff = diff;\n closest = t.value;\n }\n }\n return closest;\n }\n }\n\n const step = this.step();\n if (step <= 0) return this.clamp(value, min, max);\n\n const stepsCount = Math.round((value - min) / step);\n const steppedVal = min + stepsCount * step;\n\n // Handle floating-point rounding precision\n const stepDecimals = (step.toString().split('.')[1] || '').length;\n const roundedVal = parseFloat(steppedVal.toFixed(stepDecimals));\n\n return this.clamp(roundedVal, min, max);\n }\n\n formatDisplayValue(val: number): string {\n const customFormatter = this.formatter();\n if (customFormatter) {\n return customFormatter(val);\n }\n const pre = this.prefix();\n const suf = this.suffix();\n return `${pre}${val.toLocaleString()}${suf}`;\n }\n\n isTooltipVisible(thumbIndex: number): boolean {\n const mode = this.showTooltip();\n if (mode === 'none') return false;\n if (mode === 'always') return true;\n if (mode === 'drag') return this.draggingThumb() === thumbIndex;\n if (mode === 'hover') {\n return (\n this.hoveredThumb() === thumbIndex ||\n this.draggingThumb() === thumbIndex ||\n this.focusedThumb() === thumbIndex\n );\n }\n return false;\n }\n\n // --- Interaction & Event Handlers ---\n private emitUpdate(newVal: RangeInputValue, source: 'drag' | 'keyboard' | 'input' | 'track-click', isFinal = false): void {\n this.internalValue.set(newVal);\n this.onChange(newVal);\n this.valueChange.emit(newVal);\n\n const event: RangeInputChangeEvent = { value: newVal, source };\n this.inputChange.emit(event);\n\n if (isFinal) {\n this.change.emit(event);\n this.markAsTouched();\n }\n }\n\n private markAsTouched(): void {\n if (!this.isTouched()) {\n this.isTouched.set(true);\n this.onTouched();\n }\n }\n\n onThumbFocus(thumbIndex: number): void {\n this.focusedThumb.set(thumbIndex);\n }\n\n onThumbBlur(thumbIndex: number): void {\n if (this.focusedThumb() === thumbIndex) {\n this.focusedThumb.set(null);\n }\n this.markAsTouched();\n }\n\n onThumbMouseEnter(thumbIndex: number): void {\n this.hoveredThumb.set(thumbIndex);\n }\n\n onThumbMouseLeave(thumbIndex: number): void {\n if (this.hoveredThumb() === thumbIndex) {\n this.hoveredThumb.set(null);\n }\n }\n\n onThumbPointerDown(thumbIndex: number, event: PointerEvent): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n\n event.preventDefault();\n event.stopPropagation();\n\n this.draggingThumb.set(thumbIndex);\n this.focusedThumb.set(thumbIndex);\n\n const target = event.currentTarget as HTMLElement;\n target.setPointerCapture(event.pointerId);\n\n const onPointerMove = (e: PointerEvent) => {\n if (this.draggingThumb() !== thumbIndex) return;\n this.updateValueFromPointer(thumbIndex, e.clientX, 'drag', false);\n };\n\n const onPointerUp = (e: PointerEvent) => {\n target.removeEventListener('pointermove', onPointerMove);\n target.removeEventListener('pointerup', onPointerUp);\n target.removeEventListener('pointercancel', onPointerUp);\n\n try {\n target.releasePointerCapture(e.pointerId);\n } catch { }\n\n if (this.draggingThumb() === thumbIndex) {\n this.updateValueFromPointer(thumbIndex, e.clientX, 'drag', true);\n this.draggingThumb.set(null);\n }\n };\n\n target.addEventListener('pointermove', onPointerMove);\n target.addEventListener('pointerup', onPointerUp);\n target.addEventListener('pointercancel', onPointerUp);\n }\n\n onTrackPointerDown(event: PointerEvent): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n\n const trackContainer = this.trackContainerRef()?.nativeElement;\n if (!trackContainer) return;\n\n const rect = trackContainer.getBoundingClientRect();\n const clickX = event.clientX;\n const clickRatio = (clickX - rect.left) / rect.width;\n const rawVal = this.percentToValue(clickRatio * 100);\n\n let chosenThumb = 0;\n if (this.isDualRange()) {\n const dist0 = Math.abs(rawVal - this.startValue());\n const dist1 = Math.abs(rawVal - this.endValue());\n chosenThumb = dist0 <= dist1 ? 0 : 1;\n }\n\n this.updateValueFromPointer(chosenThumb, clickX, 'track-click', true);\n\n // Focus chosen thumb\n if (chosenThumb === 0) {\n this.thumb0Ref()?.nativeElement.focus();\n } else {\n this.thumb1Ref()?.nativeElement.focus();\n }\n }\n\n private updateValueFromPointer(thumbIndex: number, clientX: number, source: 'drag' | 'track-click', isFinal: boolean): void {\n const trackContainer = this.trackContainerRef()?.nativeElement;\n if (!trackContainer) return;\n\n const rect = trackContainer.getBoundingClientRect();\n const ratio = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));\n const rawVal = this.percentToValue(ratio * 100);\n const steppedVal = this.snapValue(rawVal);\n\n if (this.isDualRange()) {\n let start = this.startValue();\n let end = this.endValue();\n const minDistance = this.minRange();\n const maxDistance = this.maxRange();\n\n if (thumbIndex === 0) {\n start = Math.min(steppedVal, end - minDistance);\n if (maxDistance !== null && end - start > maxDistance) {\n start = end - maxDistance;\n }\n } else {\n end = Math.max(steppedVal, start + minDistance);\n if (maxDistance !== null && end - start > maxDistance) {\n end = start + maxDistance;\n }\n }\n\n this.emitUpdate([start, end], source, isFinal);\n } else {\n this.emitUpdate(steppedVal, source, isFinal);\n }\n }\n\n onThumbKeyDown(thumbIndex: number, event: KeyboardEvent): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n\n const step = this.step();\n const span = this.span();\n const largeStep = Math.max(step * 10, span / 10);\n\n let delta = 0;\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n delta = step;\n break;\n case 'ArrowLeft':\n case 'ArrowDown':\n delta = -step;\n break;\n case 'PageUp':\n delta = largeStep;\n break;\n case 'PageDown':\n delta = -largeStep;\n break;\n case 'Home':\n delta = -(span + 1);\n break;\n case 'End':\n delta = span + 1;\n break;\n default:\n return;\n }\n\n event.preventDefault();\n\n if (this.isDualRange()) {\n let start = this.startValue();\n let end = this.endValue();\n const minDistance = this.minRange();\n\n if (thumbIndex === 0) {\n const nextVal = this.snapValue(start + delta);\n start = Math.min(nextVal, end - minDistance);\n } else {\n const nextVal = this.snapValue(end + delta);\n end = Math.max(nextVal, start + minDistance);\n }\n\n this.emitUpdate([start, end], 'keyboard', true);\n } else {\n const nextVal = this.snapValue(this.startValue() + delta);\n this.emitUpdate(nextVal, 'keyboard', true);\n }\n }\n\n onNumberInputChange(thumbIndex: number, event: Event): void {\n const inputEl = event.target as HTMLInputElement;\n const parsed = parseFloat(inputEl.value);\n if (isNaN(parsed)) return;\n\n const steppedVal = this.snapValue(parsed);\n\n if (this.isDualRange()) {\n let start = this.startValue();\n let end = this.endValue();\n const minDistance = this.minRange();\n\n if (thumbIndex === 0) {\n start = Math.min(steppedVal, end - minDistance);\n } else {\n end = Math.max(steppedVal, start + minDistance);\n }\n\n inputEl.value = (thumbIndex === 0 ? start : end).toString();\n this.emitUpdate([start, end], 'input', true);\n } else {\n inputEl.value = steppedVal.toString();\n this.emitUpdate(steppedVal, 'input', true);\n }\n }\n\n onTickClick(tick: RangeInputTick, event: MouseEvent): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n event.stopPropagation();\n\n const targetVal = tick.value;\n if (this.isDualRange()) {\n const dist0 = Math.abs(targetVal - this.startValue());\n const dist1 = Math.abs(targetVal - this.endValue());\n let start = this.startValue();\n let end = this.endValue();\n\n if (dist0 <= dist1) {\n start = Math.min(targetVal, end - this.minRange());\n } else {\n end = Math.max(targetVal, start + this.minRange());\n }\n this.emitUpdate([start, end], 'track-click', true);\n } else {\n this.emitUpdate(targetVal, 'track-click', true);\n }\n }\n\n onLabelClick(tick: RangeInputTick, event: MouseEvent): void {\n this.onTickClick(tick, event);\n }\n}\n","<div class=\"talos-range-wrapper\" [class.is-disabled]=\"effectiveDisabled()\" [class.is-readonly]=\"readonly()\"\n [class.is-invalid]=\"effectiveInvalid()\" [class.is-range]=\"isDualRange()\" [class.size-sm]=\"size() === 'sm'\"\n [class.size-md]=\"size() === 'md'\" [class.size-lg]=\"size() === 'lg'\" [class.variant-primary]=\"variant() === 'primary'\"\n [class.variant-secondary]=\"variant() === 'secondary'\" [class.variant-success]=\"variant() === 'success'\"\n [class.variant-warning]=\"variant() === 'warning'\" [class.variant-danger]=\"variant() === 'danger'\"\n [class.variant-info]=\"variant() === 'info'\">\n <!-- Header: Label, Hint & Optional Value Display / Synchronized Number Inputs -->\n @if (label() || hint() || showValueBadge() || showInputs()) {\n <div class=\"talos-range-header\">\n <div class=\"talos-range-label-group\" [class.is-floating-label]=\"isFloatingMode()\">\n @if (label()) {\n <label class=\"talos-range-label\" [class.is-floated]=\"isFloatingMode()\" [attr.for]=\"elementId() + '-thumb-0'\">\n {{ label() }}\n </label>\n }\n @if (hint()) {\n <span class=\"talos-range-hint\">{{ hint() }}</span>\n }\n </div>\n\n @if (showInputs()) {\n <div class=\"talos-range-inputs-group\">\n @if (isDualRange()) {\n <div class=\"talos-range-number-box\">\n @if (prefix()) {\n <span class=\"talos-range-input-affix\">{{ prefix() }}</span>\n }\n <input type=\"number\" class=\"talos-range-number-input\" [id]=\"elementId() + '-num-0'\" [min]=\"min()\"\n [max]=\"endValue()\" [step]=\"step()\" [disabled]=\"effectiveDisabled() || readonly()\" [value]=\"startValue()\"\n (change)=\"onNumberInputChange(0, $event)\" (keydown.enter)=\"onNumberInputChange(0, $event)\" />\n @if (suffix()) {\n <span class=\"talos-range-input-affix\">{{ suffix() }}</span>\n }\n </div>\n <span class=\"talos-range-inputs-separator\">–</span>\n <div class=\"talos-range-number-box\">\n @if (prefix()) {\n <span class=\"talos-range-input-affix\">{{ prefix() }}</span>\n }\n <input type=\"number\" class=\"talos-range-number-input\" [id]=\"elementId() + '-num-1'\" [min]=\"startValue()\"\n [max]=\"max()\" [step]=\"step()\" [disabled]=\"effectiveDisabled() || readonly()\" [value]=\"endValue()\"\n (change)=\"onNumberInputChange(1, $event)\" (keydown.enter)=\"onNumberInputChange(1, $event)\" />\n @if (suffix()) {\n <span class=\"talos-range-input-affix\">{{ suffix() }}</span>\n }\n </div>\n } @else {\n <div class=\"talos-range-number-box\">\n @if (prefix()) {\n <span class=\"talos-range-input-affix\">{{ prefix() }}</span>\n }\n <input type=\"number\" class=\"talos-range-number-input\" [id]=\"elementId() + '-num'\" [min]=\"min()\" [max]=\"max()\"\n [step]=\"step()\" [disabled]=\"effectiveDisabled() || readonly()\" [value]=\"startValue()\"\n (change)=\"onNumberInputChange(0, $event)\" (keydown.enter)=\"onNumberInputChange(0, $event)\" />\n @if (suffix()) {\n <span class=\"talos-range-input-affix\">{{ suffix() }}</span>\n }\n </div>\n }\n </div>\n } @else if (showValueBadge()) {\n <div class=\"talos-range-value-badge\">\n @if (isDualRange()) {\n <span>{{ formatDisplayValue(startValue()) }} – {{ formatDisplayValue(endValue()) }}</span>\n } @else {\n <span>{{ formatDisplayValue(startValue()) }}</span>\n }\n </div>\n }\n </div>\n }\n\n <!-- Range Slider Container (Track, Fills, Ticks, Thumbs) -->\n <div #sliderTrackContainer class=\"talos-range-slider\" [class.is-active]=\"isDragging()\"\n (pointerdown)=\"onTrackPointerDown($event)\">\n <!-- Background Track -->\n <div class=\"talos-range-track\">\n <!-- Active Filled Range Segment -->\n <div class=\"talos-range-fill\" [style.left.%]=\"fillLeftPercent()\" [style.width.%]=\"fillWidthPercent()\"></div>\n\n <!-- Tick Marks -->\n @if (ticks().length > 0 && (showTicks() || marks())) {\n <div class=\"talos-range-ticks\">\n @for (tick of ticks(); track tick.value) {\n <div class=\"talos-range-tick\" [class.is-active]=\"tick.active\" [style.left.%]=\"tick.percent\"\n (click)=\"onTickClick(tick, $event)\"></div>\n }\n </div>\n }\n </div>\n\n <!-- Thumb 0 (Primary or Lower Bound Handle) -->\n <div #thumb0 class=\"talos-range-thumb\" [class.is-focused]=\"focusedThumb() === 0\"\n [class.is-dragging]=\"draggingThumb() === 0\" [class.is-tooltip-visible]=\"isTooltipVisible(0)\"\n [style.left.%]=\"thumb0Percent()\" tabindex=\"0\" role=\"slider\" [attr.id]=\"elementId() + '-thumb-0'\"\n [attr.aria-label]=\"isDualRange() ? ariaLabelStart() : ariaLabel()\" [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"isDualRange() ? endValue() : max()\" [attr.aria-valuenow]=\"startValue()\"\n [attr.aria-valuetext]=\"formatDisplayValue(startValue())\"\n [attr.aria-disabled]=\"effectiveDisabled() ? 'true' : null\" (pointerdown)=\"onThumbPointerDown(0, $event)\"\n (keydown)=\"onThumbKeyDown(0, $event)\" (focus)=\"onThumbFocus(0)\" (blur)=\"onThumbBlur(0)\"\n (mouseenter)=\"onThumbMouseEnter(0)\" (mouseleave)=\"onThumbMouseLeave(0)\">\n <!-- Floating Value Tooltip -->\n @if (showTooltip() !== 'none') {\n <div class=\"talos-range-tooltip\" [class.visible]=\"isTooltipVisible(0)\">\n {{ formatDisplayValue(startValue()) }}\n </div>\n }\n </div>\n\n <!-- Thumb 1 (Upper Bound Handle for Dual Range) -->\n @if (isDualRange()) {\n <div #thumb1 class=\"talos-range-thumb\" [class.is-focused]=\"focusedThumb() === 1\"\n [class.is-dragging]=\"draggingThumb() === 1\" [class.is-tooltip-visible]=\"isTooltipVisible(1)\"\n [style.left.%]=\"thumb1Percent()\" tabindex=\"0\" role=\"slider\" [attr.id]=\"elementId() + '-thumb-1'\"\n [attr.aria-label]=\"ariaLabelEnd()\" [attr.aria-valuemin]=\"startValue()\" [attr.aria-valuemax]=\"max()\"\n [attr.aria-valuenow]=\"endValue()\" [attr.aria-valuetext]=\"formatDisplayValue(endValue())\"\n [attr.aria-disabled]=\"effectiveDisabled() ? 'true' : null\" (pointerdown)=\"onThumbPointerDown(1, $event)\"\n (keydown)=\"onThumbKeyDown(1, $event)\" (focus)=\"onThumbFocus(1)\" (blur)=\"onThumbBlur(1)\"\n (mouseenter)=\"onThumbMouseEnter(1)\" (mouseleave)=\"onThumbMouseLeave(1)\">\n <!-- Floating Value Tooltip -->\n @if (showTooltip() !== 'none') {\n <div class=\"talos-range-tooltip\" [class.visible]=\"isTooltipVisible(1)\">\n {{ formatDisplayValue(endValue()) }}\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Interval / Step Labels under track -->\n @if (labels().length > 0 && (showIntervals() || showLabels() || marks())) {\n <div class=\"talos-range-labels\">\n @for (item of labels(); track item.value) {\n <span class=\"talos-range-label-item\" [class.is-active]=\"item.active\" [style.left.%]=\"item.percent\"\n (click)=\"onLabelClick(item, $event)\">\n {{ item.label }}\n </span>\n }\n </div>\n }\n</div>","import { NgModule } from '@angular/core';\nimport { TalosRangeInputComponent } from './range-input.component';\nimport { TalosRangeInputDirective } from './range-input.directive';\n\n@NgModule({\n imports: [TalosRangeInputComponent, TalosRangeInputDirective],\n exports: [TalosRangeInputComponent, TalosRangeInputDirective]\n})\nexport class TalosRangeInputModule { }\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, output } from '@angular/core';\nimport { ChipColor, ChipSize, ChipVariant } from '../chips.types';\n\n@Component({\n selector: 'talos-chip',\n templateUrl: './chip.component.html',\n styleUrl: './chip.component.scss',\n host: {\n 'class': 'talos-chip',\n '[class.talos-chip-sm]': 'size() === \"sm\"',\n '[class.talos-chip-md]': 'size() === \"md\"',\n '[class.talos-chip-lg]': 'size() === \"lg\"',\n '[class.talos-chip-filled]': 'variant() === \"filled\"',\n '[class.talos-chip-outline]': 'variant() === \"outline\"',\n '[class.talos-chip-subtle]': 'variant() === \"subtle\"',\n '[class.talos-chip-primary]': 'color() === \"primary\"',\n '[class.talos-chip-neutral]': 'color() === \"neutral\"',\n '[class.talos-chip-success]': 'color() === \"success\"',\n '[class.talos-chip-warning]': 'color() === \"warning\"',\n '[class.talos-chip-error]': 'color() === \"error\"',\n '[class.talos-chip-indigo]': 'color() === \"indigo\"',\n '[class.talos-chip-purple]': 'color() === \"purple\"',\n '[class.talos-chip-cyan]': 'color() === \"cyan\"',\n '[class.is-disabled]': 'disabled()',\n '[class.is-removable]': 'removable() && !disabled()',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\n '(click)': 'onChipClick($event)'\n }\n})\nexport class TalosChipComponent {\n readonly label = input<string>('');\n readonly value = input<unknown>(null);\n readonly size = input<ChipSize>('sm');\n readonly variant = input<ChipVariant>('subtle');\n readonly color = input<ChipColor>('primary');\n readonly removable = input<boolean>(true);\n readonly disabled = input<boolean>(false);\n readonly avatarUrl = input<string>('');\n readonly removeAriaLabel = input<string>('Remove');\n\n readonly removed = output<unknown>();\n readonly chipClick = output<unknown>();\n\n readonly hasAvatar = computed(() => !!this.avatarUrl());\n\n onChipClick(event: MouseEvent): void {\n if (this.disabled()) return;\n this.chipClick.emit(this.value() ?? this.label());\n }\n\n onRemove(event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n if (this.disabled()) return;\n this.removed.emit(this.value() ?? this.label());\n }\n}\n","@if (avatarUrl()) {\n <span class=\"talos-chip-avatar\">\n <img [src]=\"avatarUrl()\" alt=\"\" aria-hidden=\"true\" />\n </span>\n}\n\n<span class=\"talos-chip-content\">\n <ng-content>{{ label() }}</ng-content>\n</span>\n\n@if (removable() && !disabled()) {\n <button\n type=\"button\"\n class=\"talos-chip-remove-btn\"\n [attr.aria-label]=\"removeAriaLabel() + (label() ? ' ' + label() : '')\"\n (click)=\"onRemove($event)\"\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n}\n","import {\n Component,\n ElementRef,\n TemplateRef,\n ViewChild,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n output,\n signal\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChipColor,\n ChipDisplayFn,\n ChipFilterFn,\n ChipHighlightPart,\n ChipItemContext,\n ChipSize,\n ChipValueFn,\n ChipVariant,\n FormattedChipOption\n} from '../chips.types';\nimport { TalosChipComponent } from '../chip/chip.component';\n\nlet uniqueChipsIdCounter = 0;\n\nexport interface SelectedChipData {\n display: string;\n value: unknown;\n originalItem: unknown;\n}\n\n@Component({\n selector: 'talos-chips',\n imports: [NgTemplateOutlet, TalosChipComponent],\n templateUrl: './chips.component.html',\n styleUrl: './chips.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TalosChipsComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'talos-chips-host',\n '[class.is-open]': 'isOpen()',\n '[class.is-disabled]': 'effectiveDisabled()',\n '[class.is-searching]': 'effectiveSearching()',\n '[class.has-label]': '!!label()',\n '[class.is-floating]': 'isFloatingMode()',\n '[class.is-floated]': 'isFloated()',\n '[class.chips-sm]': 'size() === \"sm\"',\n '[class.chips-md]': 'size() === \"md\"',\n '[class.chips-lg]': 'size() === \"lg\"',\n '(document:click)': 'onDocumentClick($event)'\n }\n})\nexport class TalosChipsComponent<T = unknown> implements ControlValueAccessor {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n // Signal Inputs\n readonly options = input<readonly T[] | T[]>([]);\n readonly label = input<string>('');\n readonly floatingLabel = input<boolean>(false);\n readonly floating = input<boolean>(false);\n readonly required = input<boolean>(false);\n readonly searching = input<boolean>(false);\n readonly loading = input<boolean>(false);\n readonly placeholder = input<string>('Type or select...');\n readonly disabled = input<boolean>(false);\n readonly clearable = input<boolean>(true);\n readonly removable = input<boolean>(true);\n readonly size = input<ChipSize>('sm');\n readonly maxChips = input<number | null>(null);\n readonly allowCustom = input<boolean>(false);\n readonly separatorKeys = input<string[]>(['Enter', ',']);\n readonly displayWith = input<ChipDisplayFn<T> | keyof T | null>(null);\n readonly valueWith = input<ChipValueFn<T> | keyof T | null>(null);\n readonly filterFn = input<ChipFilterFn<T> | null | undefined>(undefined);\n readonly highlightMatch = input<boolean>(true);\n readonly noResultsText = input<string>('No matching options');\n readonly searchingText = input<string>('Searching...');\n readonly chipVariant = input<ChipVariant>('subtle');\n readonly chipColor = input<ChipColor>('primary');\n readonly itemTemplate = input<TemplateRef<ChipItemContext<T>> | null>(null);\n readonly openOnFocus = input<boolean>(true);\n readonly id = input<string>('');\n\n // Signal Outputs\n readonly search = output<string>();\n readonly searchChange = output<string>();\n readonly selectionChange = output<unknown[]>();\n readonly chipAdd = output<unknown>();\n readonly chipRemove = output<unknown>();\n readonly opened = output<void>();\n readonly closed = output<void>();\n readonly cleared = output<void>();\n\n // View Children\n @ViewChild('inputEl') inputEl?: ElementRef<HTMLInputElement>;\n @ViewChild('dropdownEl') dropdownEl?: ElementRef<HTMLDivElement>;\n\n // Component IDs for ARIA attributes\n private readonly autoId = `talos-chips-${uniqueChipsIdCounter++}`;\n readonly componentId = computed(() => this.id() || this.autoId);\n readonly inputId = computed(() => `${this.componentId()}-input`);\n readonly listboxId = computed(() => `${this.componentId()}-listbox`);\n\n // Internal Reactive State\n readonly inputValue = signal<string>('');\n readonly selectedValues = signal<unknown[]>([]);\n readonly isOpen = signal<boolean>(false);\n readonly activeIndex = signal<number>(-1);\n readonly isDisabled = signal<boolean>(false);\n readonly isTouched = signal<boolean>(false);\n readonly isInputFocused = signal<boolean>(false);\n\n // ControlValueAccessor Callbacks\n private onChange: (val: unknown[]) => void = () => { };\n private onTouched: () => void = () => { };\n\n // Computed State\n readonly effectiveDisabled = computed(() => this.disabled() || this.isDisabled());\n readonly effectiveSearching = computed(() => this.searching() || this.loading());\n readonly isFloatingMode = computed(() => this.floatingLabel() || this.floating());\n\n readonly isFloated = computed(() => {\n if (!this.isFloatingMode()) return false;\n return (\n this.isOpen() ||\n this.isInputFocused() ||\n this.selectedValues().length > 0 ||\n !!this.inputValue().trim()\n );\n });\n\n readonly isMaxReached = computed(() => {\n const max = this.maxChips();\n if (max === null || max === undefined) return false;\n return this.selectedValues().length >= max;\n });\n\n readonly effectivePlaceholder = computed(() => {\n if (this.isFloatingMode() && !this.isFloated()) {\n return '';\n }\n if (this.isMaxReached()) {\n return 'Maximum selections reached';\n }\n return this.placeholder();\n });\n\n readonly activeOptionId = computed(() => {\n const idx = this.activeIndex();\n if (idx < 0) return null;\n return `${this.componentId()}-option-${idx}`;\n });\n\n // Selected representations as Chips\n readonly selectedChips = computed<SelectedChipData[]>(() => {\n const values = this.selectedValues();\n const rawOpts = this.options();\n\n return values.map((val) => {\n // Find matching item in options if any\n const matched = rawOpts.find((opt) => this.getItemValue(opt) === val || opt === val);\n if (matched !== undefined) {\n return {\n display: this.getItemDisplay(matched),\n value: this.getItemValue(matched),\n originalItem: matched\n };\n }\n\n // Handle raw object with display/value or primitive\n if (val && typeof val === 'object') {\n return {\n display: this.getItemDisplay(val as T),\n value: this.getItemValue(val as T),\n originalItem: val\n };\n }\n\n return {\n display: String(val ?? ''),\n value: val,\n originalItem: val\n };\n });\n });\n\n // Filtered dropdown options\n readonly filteredOptions = computed<FormattedChipOption<T>[]>(() => {\n const rawOptions = this.options();\n const search = this.inputValue().trim();\n const customFilter = this.filterFn();\n const selectedVals = this.selectedValues();\n\n const result: FormattedChipOption<T>[] = [];\n\n for (const item of rawOptions) {\n const display = this.getItemDisplay(item);\n const value = this.getItemValue(item);\n const isSelected = selectedVals.some(\n (v) => v === value || v === item || (typeof v === 'object' && typeof value === 'object' && JSON.stringify(v) === JSON.stringify(value))\n );\n\n // Check if matches filter\n let matches = true;\n if (search) {\n if (customFilter === null) {\n // Explicit null filterFn indicates external/server-side filtering\n matches = true;\n } else if (typeof customFilter === 'function') {\n matches = customFilter(item, search);\n } else {\n matches = display.toLowerCase().includes(search.toLowerCase());\n }\n }\n\n if (matches) {\n const parts = this.highlightMatch()\n ? this.computeHighlightParts(display, search)\n : [{ text: display, matched: false }];\n\n result.push({\n item,\n display,\n value,\n disabled: false,\n selected: isSelected,\n parts\n });\n }\n }\n\n return result;\n });\n\n constructor() {\n // Reset activeIndex whenever filtered options change or search changes\n effect(() => {\n this.filteredOptions();\n this.activeIndex.set(-1);\n });\n }\n\n // --- ControlValueAccessor Implementation ---\n\n writeValue(value: unknown[] | unknown | null): void {\n if (value === null || value === undefined) {\n this.selectedValues.set([]);\n } else if (Array.isArray(value)) {\n this.selectedValues.set([...value]);\n } else {\n this.selectedValues.set([value]);\n }\n }\n\n registerOnChange(fn: (val: unknown[]) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled);\n if (isDisabled && this.isOpen()) {\n this.closeDropdown();\n }\n }\n\n // --- Helpers for Display & Value Extraction ---\n\n getItemDisplay(item: T): string {\n if (item === null || item === undefined) return '';\n const displayFn = this.displayWith();\n if (typeof displayFn === 'function') {\n return displayFn(item);\n }\n if (typeof displayFn === 'string' && typeof item === 'object') {\n return String((item as Record<string, unknown>)[displayFn] ?? '');\n }\n if (typeof item === 'object') {\n const obj = item as Record<string, unknown>;\n if ('label' in obj) return String(obj['label']);\n if ('name' in obj) return String(obj['name']);\n if ('title' in obj) return String(obj['title']);\n if ('value' in obj) return String(obj['value']);\n }\n return String(item);\n }\n\n getItemValue(item: T): unknown {\n if (item === null || item === undefined) return item;\n const valueFn = this.valueWith();\n if (typeof valueFn === 'function') {\n return valueFn(item);\n }\n if (typeof valueFn === 'string' && typeof item === 'object') {\n return (item as Record<string, unknown>)[valueFn];\n }\n if (typeof item === 'object') {\n const obj = item as Record<string, unknown>;\n if ('value' in obj) return obj['value'];\n if ('id' in obj) return obj['id'];\n }\n return item;\n }\n\n private computeHighlightParts(text: string, search: string): ChipHighlightPart[] {\n if (!search || !text) {\n return [{ text, matched: false }];\n }\n\n const regex = new RegExp(`(${this.escapeRegex(search)})`, 'gi');\n const segments = text.split(regex);\n\n return segments\n .filter((seg) => seg.length > 0)\n .map((seg) => ({\n text: seg,\n matched: seg.toLowerCase() === search.toLowerCase()\n }));\n }\n\n private escapeRegex(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n\n // --- Interaction Handlers ---\n\n onContainerClick(event: MouseEvent): void {\n if (this.effectiveDisabled()) return;\n\n // Focus search input\n if (this.inputEl && !this.isMaxReached()) {\n this.inputEl.nativeElement.focus();\n }\n\n if (!this.isOpen() && this.options().length > 0) {\n this.openDropdown();\n }\n }\n\n onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n const value = target.value;\n\n // Check if ends with separator (like comma)\n const separators = this.separatorKeys();\n for (const sep of separators) {\n if (sep !== 'Enter' && value.includes(sep)) {\n const parts = value.split(sep);\n for (const part of parts) {\n const trimmed = part.trim();\n if (trimmed) {\n this.addCustomChip(trimmed);\n }\n }\n this.inputValue.set('');\n target.value = '';\n this.emitSearch('');\n return;\n }\n }\n\n this.inputValue.set(value);\n this.emitSearch(value);\n\n if (!this.isOpen() && this.options().length > 0) {\n this.openDropdown();\n }\n }\n\n onFocus(): void {\n this.isInputFocused.set(true);\n if (this.openOnFocus() && !this.effectiveDisabled() && this.options().length > 0) {\n this.openDropdown();\n }\n }\n\n onBlur(): void {\n this.isInputFocused.set(false);\n this.markAsTouched();\n\n // If allowCustom is enabled and user left some text in the input, commit it as a chip\n if (this.allowCustom()) {\n const text = this.inputValue().trim();\n if (text) {\n this.addCustomChip(text);\n this.inputValue.set('');\n if (this.inputEl) {\n this.inputEl.nativeElement.value = '';\n }\n }\n }\n }\n\n onKeyDown(event: KeyboardEvent): void {\n if (this.effectiveDisabled()) return;\n\n const opts = this.filteredOptions();\n const currentIdx = this.activeIndex();\n\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault();\n if (!this.isOpen()) {\n this.openDropdown();\n } else if (opts.length > 0) {\n const nextIdx = currentIdx < opts.length - 1 ? currentIdx + 1 : 0;\n this.activeIndex.set(nextIdx);\n this.scrollActiveOptionIntoView(nextIdx);\n }\n break;\n }\n\n case 'ArrowUp': {\n event.preventDefault();\n if (!this.isOpen()) {\n this.openDropdown();\n } else if (opts.length > 0) {\n const prevIdx = currentIdx > 0 ? currentIdx - 1 : opts.length - 1;\n this.activeIndex.set(prevIdx);\n this.scrollActiveOptionIntoView(prevIdx);\n }\n break;\n }\n\n case 'Enter': {\n event.preventDefault();\n if (this.isOpen() && currentIdx >= 0 && currentIdx < opts.length) {\n const activeOpt = opts[currentIdx];\n this.toggleOption(activeOpt);\n } else if (this.allowCustom()) {\n const text = this.inputValue().trim();\n if (text) {\n this.addCustomChip(text);\n this.inputValue.set('');\n if (this.inputEl) {\n this.inputEl.nativeElement.value = '';\n }\n }\n }\n break;\n }\n\n case 'Backspace': {\n if (!this.inputValue() && this.selectedValues().length > 0 && this.removable()) {\n // Remove the last selected chip\n const current = [...this.selectedValues()];\n const removed = current.pop();\n this.selectedValues.set(current);\n this.emitSelection(current);\n this.chipRemove.emit(removed);\n }\n break;\n }\n\n case 'Escape': {\n if (this.isOpen()) {\n event.preventDefault();\n this.closeDropdown();\n }\n break;\n }\n\n case 'Tab': {\n if (this.isOpen()) {\n this.closeDropdown();\n }\n break;\n }\n }\n }\n\n toggleOption(option: FormattedChipOption<T>): void {\n if (this.effectiveDisabled() || option.disabled) return;\n\n const valToToggle = option.value;\n const currentValues = [...this.selectedValues()];\n const index = currentValues.findIndex((v) => v === valToToggle || v === option.item);\n\n if (index >= 0) {\n // Deselect\n currentValues.splice(index, 1);\n this.selectedValues.set(currentValues);\n this.emitSelection(currentValues);\n this.chipRemove.emit(valToToggle);\n } else {\n // Select (if not max reached)\n if (this.isMaxReached()) return;\n\n currentValues.push(valToToggle);\n this.selectedValues.set(currentValues);\n this.emitSelection(currentValues);\n this.chipAdd.emit(valToToggle);\n\n // Clear search input on selection\n this.inputValue.set('');\n if (this.inputEl) {\n this.inputEl.nativeElement.value = '';\n }\n this.emitSearch('');\n }\n\n // Keep focus in input\n if (this.inputEl && !this.isMaxReached()) {\n this.inputEl.nativeElement.focus();\n }\n }\n\n addCustomChip(text: string): void {\n if (!text || this.effectiveDisabled() || this.isMaxReached()) return;\n\n const currentValues = [...this.selectedValues()];\n // Prevent exact duplicates\n if (!currentValues.includes(text)) {\n currentValues.push(text);\n this.selectedValues.set(currentValues);\n this.emitSelection(currentValues);\n this.chipAdd.emit(text);\n }\n }\n\n removeChip(chipData: SelectedChipData): void {\n if (this.effectiveDisabled() || !this.removable()) return;\n\n const currentValues = this.selectedValues().filter(\n (v) => v !== chipData.value && v !== chipData.originalItem && v !== chipData.display\n );\n\n this.selectedValues.set(currentValues);\n this.emitSelection(currentValues);\n this.chipRemove.emit(chipData.value);\n\n // Refocus input if available\n if (this.inputEl && !this.isMaxReached()) {\n this.inputEl.nativeElement.focus();\n }\n }\n\n clearAll(event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n event.preventDefault();\n }\n if (this.effectiveDisabled()) return;\n\n this.selectedValues.set([]);\n this.inputValue.set('');\n if (this.inputEl) {\n this.inputEl.nativeElement.value = '';\n }\n this.emitSelection([]);\n this.cleared.emit();\n this.emitSearch('');\n\n if (this.inputEl) {\n this.inputEl.nativeElement.focus();\n }\n }\n\n toggleDropdown(event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n event.preventDefault();\n }\n if (this.effectiveDisabled()) return;\n\n if (this.isOpen()) {\n this.closeDropdown();\n } else {\n this.openDropdown();\n if (this.inputEl && !this.isMaxReached()) {\n this.inputEl.nativeElement.focus();\n }\n }\n }\n\n openDropdown(): void {\n if (this.isOpen() || this.effectiveDisabled()) return;\n this.isOpen.set(true);\n this.opened.emit();\n }\n\n closeDropdown(): void {\n if (!this.isOpen()) return;\n this.isOpen.set(false);\n this.activeIndex.set(-1);\n this.closed.emit();\n }\n\n onDocumentClick(event: MouseEvent): void {\n if (!this.isOpen()) return;\n const clickedInside = this.elementRef.nativeElement.contains(event.target as Node);\n if (!clickedInside) {\n this.closeDropdown();\n this.markAsTouched();\n }\n }\n\n private emitSearch(val: string): void {\n this.search.emit(val);\n this.searchChange.emit(val);\n }\n\n private emitSelection(values: unknown[]): void {\n this.onChange(values);\n this.selectionChange.emit(values);\n this.markAsTouched();\n }\n\n private markAsTouched(): void {\n if (!this.isTouched()) {\n this.isTouched.set(true);\n this.onTouched();\n }\n }\n\n private scrollActiveOptionIntoView(index: number): void {\n if (!this.dropdownEl) return;\n const optionEl = this.dropdownEl.nativeElement.querySelector(\n `#${this.componentId()}-option-${index}`\n ) as HTMLElement | null;\n\n if (optionEl) {\n optionEl.scrollIntoView({ block: 'nearest' });\n }\n }\n}\n","@if (label() && !isFloatingMode()) {\n <label class=\"talos-field-label\" [attr.for]=\"inputId()\" (click)=\"onContainerClick($event)\">\n {{ label() }}\n @if (required()) {\n <span class=\"required-star\" aria-hidden=\"true\">*</span>\n }\n </label>\n}\n\n<div class=\"chips-wrapper\" [class.has-floating-label]=\"isFloatingMode()\">\n <!-- Main Interactive Input Box -->\n <div\n class=\"chips-control\"\n [class.is-focused]=\"isInputFocused() || isOpen()\"\n [class.is-empty]=\"selectedChips().length === 0 && !inputValue()\"\n (click)=\"onContainerClick($event)\"\n >\n <!-- Selected Chips Pills Container -->\n <div class=\"chips-pills-container\">\n @for (chip of selectedChips(); track chip.value) {\n <talos-chip\n [label]=\"chip.display\"\n [value]=\"chip.value\"\n [size]=\"size()\"\n [variant]=\"chipVariant()\"\n [color]=\"chipColor()\"\n [removable]=\"removable() && !effectiveDisabled()\"\n [disabled]=\"effectiveDisabled()\"\n (removed)=\"removeChip(chip)\"\n />\n }\n\n <!-- Inline Search / Input Field -->\n @if (!isMaxReached()) {\n <input\n #inputEl\n type=\"text\"\n class=\"chips-input\"\n [id]=\"inputId()\"\n [placeholder]=\"effectivePlaceholder()\"\n [value]=\"inputValue()\"\n [disabled]=\"effectiveDisabled()\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (keydown)=\"onKeyDown($event)\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-controls]=\"listboxId()\"\n [attr.aria-activedescendant]=\"activeOptionId()\"\n [attr.aria-disabled]=\"effectiveDisabled()\"\n autocomplete=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n />\n }\n </div>\n\n @if (label() && isFloatingMode()) {\n <label\n class=\"talos-floating-label\"\n [class.is-floated]=\"isFloated()\"\n [attr.for]=\"inputId()\"\n (click)=\"onContainerClick($event)\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"required-star\" aria-hidden=\"true\">*</span>\n }\n </label>\n }\n\n <!-- Trailing Action Icons -->\n <div class=\"chips-actions\" (click)=\"$event.stopPropagation()\">\n <!-- Searching / Loading Spinner -->\n @if (effectiveSearching()) {\n <span class=\"chips-spinner\" aria-label=\"Searching...\" title=\"Searching...\">\n <svg class=\"spinner-svg\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <circle class=\"spinner-track\" cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"2.5\" opacity=\"0.25\"></circle>\n <path class=\"spinner-head\" d=\"M12 3a9 9 0 0 1 9 9\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\"></path>\n </svg>\n </span>\n }\n\n <!-- Clear All Chips Button -->\n @if (clearable() && (selectedChips().length > 0 || inputValue()) && !effectiveDisabled() && !effectiveSearching()) {\n <button\n type=\"button\"\n class=\"chips-clear-btn\"\n aria-label=\"Clear all selections\"\n title=\"Clear all\"\n (click)=\"clearAll($event)\"\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n }\n\n <!-- Dropdown Toggle Arrow -->\n @if (options().length > 0) {\n <button\n type=\"button\"\n class=\"chips-arrow-btn\"\n [class.is-open]=\"isOpen()\"\n [disabled]=\"effectiveDisabled()\"\n aria-label=\"Toggle options menu\"\n tabindex=\"-1\"\n (click)=\"toggleDropdown($event)\"\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <polyline points=\"6 9 12 15 18 9\"></polyline>\n </svg>\n </button>\n }\n </div>\n </div>\n\n <!-- Dropdown Menu / Listbox -->\n @if (isOpen() && !effectiveDisabled()) {\n <div\n #dropdownEl\n class=\"chips-dropdown\"\n [id]=\"listboxId()\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n [attr.aria-label]=\"label() || 'Options'\"\n (mousedown)=\"$event.preventDefault()\"\n >\n @if (effectiveSearching()) {\n <div class=\"chips-status-message\">\n <svg class=\"spinner-svg\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <circle class=\"spinner-track\" cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"2.5\" opacity=\"0.25\"></circle>\n <path class=\"spinner-head\" d=\"M12 3a9 9 0 0 1 9 9\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\"></path>\n </svg>\n <span>{{ searchingText() }}</span>\n </div>\n } @else if (filteredOptions().length > 0) {\n <ul class=\"chips-options-list\" role=\"presentation\">\n @for (option of filteredOptions(); track option.value; let idx = $index) {\n <li\n class=\"chips-option-item\"\n [id]=\"componentId() + '-option-' + idx\"\n role=\"option\"\n [attr.aria-selected]=\"option.selected\"\n [attr.aria-disabled]=\"option.disabled\"\n [class.is-selected]=\"option.selected\"\n [class.is-active]=\"activeIndex() === idx\"\n [class.is-disabled]=\"option.disabled\"\n (click)=\"toggleOption(option)\"\n (mouseenter)=\"activeIndex.set(idx)\"\n >\n <!-- Option Checkbox Indicator -->\n <span class=\"option-checkbox\" [class.is-checked]=\"option.selected\" aria-hidden=\"true\">\n @if (option.selected) {\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"20 6 9 17 4 12\"></polyline>\n </svg>\n }\n </span>\n\n <!-- Content / Template Outlet -->\n @if (itemTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate()!\"\n [ngTemplateOutletContext]=\"{\n $implicit: option.item,\n display: option.display,\n selected: option.selected,\n disabled: option.disabled\n }\"\n />\n } @else {\n <span class=\"option-label\">\n @for (part of option.parts; track $index) {\n @if (part.matched) {\n <strong class=\"highlight-match\">{{ part.text }}</strong>\n } @else {\n <span>{{ part.text }}</span>\n }\n }\n </span>\n }\n </li>\n }\n </ul>\n } @else {\n <!-- Empty / No Results -->\n <div class=\"chips-empty-message\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <circle cx=\"11\" cy=\"11\" r=\"8\"></circle>\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"></line>\n <line x1=\"8\" y1=\"11\" x2=\"14\" y2=\"11\"></line>\n </svg>\n <span>{{ noResultsText() }}</span>\n </div>\n\n @if (allowCustom() && inputValue().trim()) {\n <div class=\"chips-create-tag-action\" (click)=\"addCustomChip(inputValue().trim()); inputValue.set('')\">\n <span>Add \"<strong>{{ inputValue().trim() }}</strong>\"</span>\n <kbd>↵ Enter</kbd>\n </div>\n }\n }\n </div>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { TalosChipsComponent } from './chips/chips.component';\nimport { TalosChipComponent } from './chip/chip.component';\n\n@NgModule({\n imports: [TalosChipsComponent, TalosChipComponent],\n exports: [TalosChipsComponent, TalosChipComponent]\n})\nexport class TalosChipsModule {}\n","import { InjectionToken, TemplateRef } from '@angular/core';\n\n/** Size options for the dialog modal */\nexport type TalosDialogSize = 'auto' | 'sm' | 'md' | 'lg' | 'xl' | 'fullscreen';\n\n/** Backdrop blur intensity options */\nexport type TalosDialogBlur = boolean | 'none' | 'sm' | 'md' | 'lg';\n\n/** Visual variant for dialog styling and icons */\nexport type TalosDialogVariant = 'default' | 'primary' | 'danger' | 'warning' | 'info' | 'success';\n\n/** Footer button alignment */\nexport type TalosDialogFooterAlign = 'start' | 'center' | 'end' | 'space-between';\n\n/** Content padding variants */\nexport type TalosDialogPadding = 'none' | 'sm' | 'md' | 'lg';\n\n/**\n * Configuration options for opening a Talos Dialog.\n */\nexport interface TalosDialogConfig<TData = unknown> {\n /** Sizing preset: 'auto' (content-hugging), 'sm' (420px), 'md' (560px), 'lg' (768px), 'xl' (1024px), or 'fullscreen' */\n size?: TalosDialogSize;\n\n /** Blur background effect: true/'md' (standard frosted glass), 'sm' (light blur), 'lg' (heavy blur), or false/'none' */\n backdropBlur?: TalosDialogBlur;\n\n /** Explicit width override (e.g. '500px', '75vw') */\n width?: string;\n\n /** Explicit min-width override */\n minWidth?: string;\n\n /** Explicit max-width override */\n maxWidth?: string;\n\n /** Explicit height override (e.g. '600px', '80vh') */\n height?: string;\n\n /** Explicit min-height override */\n minHeight?: string;\n\n /** Explicit max-height override */\n maxHeight?: string;\n\n /** Custom CSS classes to append to the dialog panel */\n panelClass?: string | string[];\n\n /** Custom CSS classes to append to the dialog backdrop */\n backdropClass?: string | string[];\n\n /** Whether the dialog has a backdrop overlay. Defaults to true. */\n hasBackdrop?: boolean;\n\n /** Whether the user can dismiss the dialog by clicking the backdrop or pressing ESC. Defaults to false. */\n disableClose?: boolean;\n\n /** Whether pressing ESC closes the dialog. Defaults to true unless disableClose is true. */\n closeOnEsc?: boolean;\n\n /** Whether clicking the backdrop closes the dialog. Defaults to true unless disableClose is true. */\n closeOnBackdropClick?: boolean;\n\n /** Arbitrary data passed to the dialog component via TALOS_DIALOG_DATA */\n data?: TData;\n\n /** Accessible label for the dialog */\n ariaLabel?: string;\n\n /** ID of the element that labels the dialog */\n ariaLabelledBy?: string;\n\n /** ID of the element that describes the dialog */\n ariaDescribedBy?: string;\n\n /** ARIA role for the dialog element ('dialog' or 'alertdialog') */\n role?: 'dialog' | 'alertdialog';\n\n /** Whether focus should automatically be trapped and moved to the first focusable element */\n autoFocus?: boolean | 'first-tabbable' | 'first-heading' | 'dialog';\n\n /** Whether focus should be restored to the triggering element upon closure */\n restoreFocus?: boolean;\n\n /** Custom ID for the dialog */\n id?: string;\n}\n\n/**\n * Options for the confirm dialog convenience method.\n */\nexport interface TalosConfirmDialogOptions {\n title: string;\n message: string | TemplateRef<unknown>;\n confirmText?: string;\n cancelText?: string;\n variant?: TalosDialogVariant;\n size?: TalosDialogSize;\n backdropBlur?: TalosDialogBlur;\n disableClose?: boolean;\n showCancel?: boolean;\n icon?: any;\n}\n\n/**\n * Options for the alert dialog convenience method.\n */\nexport interface TalosAlertDialogOptions {\n title: string;\n message: string | TemplateRef<unknown>;\n okText?: string;\n variant?: TalosDialogVariant;\n size?: TalosDialogSize;\n backdropBlur?: TalosDialogBlur;\n icon?: any;\n}\n\n/** Injection token for data passed to a dialog component */\nexport const TALOS_DIALOG_DATA = new InjectionToken<unknown>('TALOS_DIALOG_DATA');\n\n/** Injection token for dialog configuration */\nexport const TALOS_DIALOG_CONFIG = new InjectionToken<TalosDialogConfig>('TALOS_DIALOG_CONFIG');\n\n/** Injection token for dialog reference */\nexport const TALOS_DIALOG_REF = new InjectionToken<unknown>('TALOS_DIALOG_REF');\n","import { DialogRef } from '@angular/cdk/dialog';\nimport { Observable } from 'rxjs';\nimport { TalosDialogConfig } from './dialog.types';\n\n/**\n * Reference to an actively open dialog instance.\n */\nexport class TalosDialogRef<R = unknown, D = unknown> {\n constructor(\n readonly cdkDialogRef: DialogRef<R, unknown>,\n readonly config: TalosDialogConfig<D>,\n readonly data?: D\n ) {}\n\n /** Unique identifier for the dialog */\n get id(): string {\n return this.cdkDialogRef.id;\n }\n\n /** Observable that emits when the dialog is closed with the result value */\n get closed(): Observable<R | undefined> {\n return this.cdkDialogRef.closed;\n }\n\n /** Observable that emits when the backdrop overlay is clicked */\n get backdropClick(): Observable<MouseEvent> {\n return this.cdkDialogRef.backdropClick;\n }\n\n /** Observable that emits keyboard events received by the dialog overlay */\n get keydownEvents(): Observable<KeyboardEvent> {\n return this.cdkDialogRef.keydownEvents;\n }\n\n /**\n * Close the dialog, optionally returning a result value to the opener.\n */\n close(result?: R): void {\n this.cdkDialogRef.close(result);\n }\n\n /**\n * Dynamically update the size of the dialog panel.\n */\n updateSize(width = '', height = ''): this {\n this.cdkDialogRef.updateSize(width, height);\n return this;\n }\n\n /**\n * Add CSS class(es) to the dialog overlay panel.\n */\n addPanelClass(classes: string | string[]): this {\n this.cdkDialogRef.addPanelClass(classes);\n return this;\n }\n\n /**\n * Remove CSS class(es) from the dialog overlay panel.\n */\n removePanelClass(classes: string | string[]): this {\n this.cdkDialogRef.removePanelClass(classes);\n return this;\n }\n}\n","import {\n Directive,\n HostListener,\n inject,\n input,\n OnInit,\n ElementRef\n} from '@angular/core';\nimport { DialogRef } from '@angular/cdk/dialog';\n\nlet uniqueTitleId = 0;\nlet uniqueDescId = 0;\n\n/**\n * Directive for the dialog title element.\n * Automatically handles accessible ARIA labeling.\n */\n@Directive({\n selector: '[talosDialogTitle]',\n host: {\n 'class': 'talos-dialog-title',\n '[attr.id]': 'id()'\n }\n})\nexport class TalosDialogTitleDirective implements OnInit {\n /** Optional custom ID for accessibility linking */\n readonly id = input<string>(`talos-dialog-title-${++uniqueTitleId}`);\n private readonly dialogRef = inject(DialogRef, { optional: true });\n\n ngOnInit(): void {\n if (this.dialogRef) {\n // Allow CDK or parent container to associate the title ID\n }\n }\n}\n\n/**\n * Directive for the dialog description/subtitle element.\n * Automatically handles accessible ARIA descriptions.\n */\n@Directive({\n selector: '[talosDialogDescription]',\n host: {\n 'class': 'talos-dialog-description',\n '[attr.id]': 'id()'\n }\n})\nexport class TalosDialogDescriptionDirective {\n /** Optional custom ID for accessibility linking */\n readonly id = input<string>(`talos-dialog-desc-${++uniqueDescId}`);\n}\n\n/**\n * Directive placed on buttons inside a dialog to trigger dismissal.\n * Passes the optional [talosDialogClose] value as the dialog result.\n */\n@Directive({\n selector: '[talosDialogClose]',\n host: {\n '(click)': 'onClick($event)'\n }\n})\nexport class TalosDialogCloseDirective {\n /** Value returned when closing the dialog */\n readonly dialogResult = input<unknown>(undefined, { alias: 'talosDialogClose' });\n\n private readonly dialogRef = inject(DialogRef, { optional: true });\n\n protected onClick(event: MouseEvent): void {\n if (this.dialogRef) {\n this.dialogRef.close(this.dialogResult());\n }\n }\n}\n","import { Component, inject, input, output } from '@angular/core';\nimport { DialogRef } from '@angular/cdk/dialog';\nimport { LucideX } from '@lucide/angular';\nimport { TalosDialogVariant } from '../dialog.types';\nimport { TalosDialogTitleDirective, TalosDialogDescriptionDirective } from '../dialog.directives';\n\n@Component({\n selector: 'talos-dialog-header, [talosDialogHeader]',\n imports: [LucideX, TalosDialogTitleDirective, TalosDialogDescriptionDirective],\n templateUrl: './dialog-header.component.html',\n styleUrl: './dialog-header.component.scss',\n host: {\n 'class': 'talos-dialog-header-host',\n '[class.has-divider]': 'divider()',\n '[class.variant-danger]': 'variant() === \"danger\"',\n '[class.variant-warning]': 'variant() === \"warning\"',\n '[class.variant-info]': 'variant() === \"info\"',\n '[class.variant-success]': 'variant() === \"success\"'\n }\n})\nexport class TalosDialogHeaderComponent {\n /** Main dialog title */\n readonly title = input<string>();\n\n /** Subtitle or helper description */\n readonly subtitle = input<string>();\n\n /** Visual accent variant */\n readonly variant = input<TalosDialogVariant>('default');\n\n /** Whether to show a bottom divider line */\n readonly divider = input<boolean>(true);\n\n /** Whether to show the top-right X close button */\n readonly showCloseButton = input<boolean>(true);\n\n /** Accessible label for the close button */\n readonly closeButtonAriaLabel = input<string>('Close dialog');\n\n /** Emitted when the close button is clicked */\n readonly closeClick = output<MouseEvent>();\n\n private readonly dialogRef = inject(DialogRef, { optional: true });\n\n protected handleClose(event: MouseEvent): void {\n this.closeClick.emit(event);\n if (this.dialogRef) {\n this.dialogRef.close();\n }\n }\n}\n","<div class=\"talos-dialog-header-inner\">\n <div class=\"talos-dialog-header-left\">\n <div class=\"talos-dialog-header-icon-slot\">\n <ng-content select=\"[talos-dialog-icon], [dialog-icon], lucide-icon, svg\"></ng-content>\n </div>\n\n <div class=\"talos-dialog-header-text\">\n @if (title()) {\n <h2 talosDialogTitle class=\"talos-dialog-header-title\">{{ title() }}</h2>\n } @else {\n <ng-content select=\"[talosDialogTitle], h2, h3\"></ng-content>\n }\n\n @if (subtitle()) {\n <p talosDialogDescription class=\"talos-dialog-header-subtitle\">{{ subtitle() }}</p>\n } @else {\n <ng-content select=\"[talosDialogDescription], p\"></ng-content>\n }\n </div>\n </div>\n\n <div class=\"talos-dialog-header-actions\">\n <ng-content select=\"[talos-dialog-header-actions]\"></ng-content>\n\n @if (showCloseButton()) {\n <button\n type=\"button\"\n class=\"talos-dialog-header-close-btn\"\n [attr.aria-label]=\"closeButtonAriaLabel()\"\n (click)=\"handleClose($event)\"\n >\n <svg lucideX [size]=\"18\" aria-hidden=\"true\"></svg>\n </button>\n }\n </div>\n</div>\n","import { Component, input } from '@angular/core';\nimport { TalosDialogPadding } from '../dialog.types';\n\n@Component({\n selector: 'talos-dialog-content, [talosDialogContent]',\n templateUrl: './dialog-content.component.html',\n styleUrl: './dialog-content.component.scss',\n host: {\n 'class': 'talos-dialog-content-host',\n '[class.padding-none]': 'padding() === \"none\"',\n '[class.padding-sm]': 'padding() === \"sm\"',\n '[class.padding-md]': 'padding() === \"md\"',\n '[class.padding-lg]': 'padding() === \"lg\"'\n }\n})\nexport class TalosDialogContentComponent {\n /** Internal padding size */\n readonly padding = input<TalosDialogPadding>('md');\n}\n","<ng-content></ng-content>\n","import { Component, input } from '@angular/core';\nimport { TalosDialogFooterAlign } from '../dialog.types';\n\n@Component({\n selector: 'talos-dialog-footer, [talosDialogFooter]',\n templateUrl: './dialog-footer.component.html',\n styleUrl: './dialog-footer.component.scss',\n host: {\n 'class': 'talos-dialog-footer-host',\n '[class.has-divider]': 'divider()',\n '[class.is-sticky]': 'sticky()',\n '[class.align-start]': 'align() === \"start\"',\n '[class.align-center]': 'align() === \"center\"',\n '[class.align-end]': 'align() === \"end\"',\n '[class.align-space-between]': 'align() === \"space-between\"'\n }\n})\nexport class TalosDialogFooterComponent {\n /** Button alignment in footer */\n readonly align = input<TalosDialogFooterAlign>('end');\n\n /** Whether to show a top divider border */\n readonly divider = input<boolean>(true);\n\n /** Whether the footer sticks to the bottom when content scrolls */\n readonly sticky = input<boolean>(false);\n}\n","<div class=\"talos-dialog-footer-inner\">\n <ng-content></ng-content>\n</div>\n","import { Component, inject } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { DialogRef } from '@angular/cdk/dialog';\nimport {\n LucideAlertTriangle,\n LucideInfo,\n LucideCheckCircle2,\n LucideAlertCircle,\n LucideHelpCircle\n} from '@lucide/angular';\nimport { TalosButtonDirective } from '@weeehaoooz/talos-ui/button/button';\nimport { TALOS_DIALOG_DATA, TalosConfirmDialogOptions } from '../dialog.types';\nimport { TalosDialogHeaderComponent } from '../dialog-header/dialog-header.component';\nimport { TalosDialogContentComponent } from '../dialog-content/dialog-content.component';\nimport { TalosDialogFooterComponent } from '../dialog-footer/dialog-footer.component';\n\n@Component({\n selector: 'talos-confirm-dialog',\n imports: [\n NgTemplateOutlet,\n TalosButtonDirective,\n TalosDialogHeaderComponent,\n TalosDialogContentComponent,\n TalosDialogFooterComponent,\n LucideAlertTriangle,\n LucideInfo,\n LucideCheckCircle2,\n LucideAlertCircle\n ],\n templateUrl: './confirm-dialog.component.html',\n styleUrl: './confirm-dialog.component.scss',\n host: {\n 'class': 'talos-confirm-dialog-host'\n }\n})\nexport class TalosConfirmDialogComponent {\n readonly data = inject<TalosConfirmDialogOptions>(TALOS_DIALOG_DATA, { optional: true }) || {\n title: 'Confirmation',\n message: 'Are you sure you want to proceed?'\n };\n\n private readonly dialogRef = inject(DialogRef);\n\n protected readonly title = this.data.title;\n protected readonly message = this.data.message;\n protected readonly isTemplateMessage = typeof this.data.message !== 'string';\n protected readonly confirmText = this.data.confirmText ?? 'Confirm';\n protected readonly cancelText = this.data.cancelText ?? 'Cancel';\n protected readonly variant = this.data.variant ?? 'primary';\n protected readonly showCancel = this.data.showCancel ?? true;\n\n protected get confirmButtonVariant(): 'primary' | 'danger' | 'secondary' {\n if (this.variant === 'danger') return 'danger';\n return 'primary';\n }\n\n protected onConfirm(): void {\n this.dialogRef.close(true);\n }\n\n protected onCancel(): void {\n this.dialogRef.close(false);\n }\n}\n","<talos-dialog-header [title]=\"title\" [variant]=\"variant\" [divider]=\"false\">\n <div class=\"confirm-icon-wrapper\" [class]=\"'variant-' + variant\" talos-dialog-icon>\n @switch (variant) {\n @case ('danger') {\n <svg lucideAlertCircle [size]=\"22\"></svg>\n }\n @case ('warning') {\n <svg lucideAlertTriangle [size]=\"22\"></svg>\n }\n @case ('success') {\n <svg lucideCheckCircle2 [size]=\"22\"></svg>\n }\n @default {\n <svg lucideInfo [size]=\"22\"></svg>\n }\n }\n </div>\n</talos-dialog-header>\n\n<talos-dialog-content padding=\"sm\">\n @if (isTemplateMessage) {\n <ng-container [ngTemplateOutlet]=\"$any(message)\"></ng-container>\n } @else {\n <p class=\"confirm-message-text\">{{ message }}</p>\n }\n</talos-dialog-content>\n\n<talos-dialog-footer [divider]=\"false\" align=\"end\">\n @if (showCancel) {\n <button talosButton variant=\"secondary\" size=\"md\" (click)=\"onCancel()\">\n {{ cancelText }}\n </button>\n }\n <button talosButton [variant]=\"confirmButtonVariant\" size=\"md\" (click)=\"onConfirm()\">\n {{ confirmText }}\n </button>\n</talos-dialog-footer>\n","import {\n Injectable,\n TemplateRef,\n inject,\n signal,\n Injector\n} from '@angular/core';\nimport { Dialog, DialogConfig, DialogRef } from '@angular/cdk/dialog';\nimport { ComponentType } from '@angular/cdk/portal';\nimport {\n TalosDialogConfig,\n TalosConfirmDialogOptions,\n TalosAlertDialogOptions,\n TALOS_DIALOG_DATA,\n TALOS_DIALOG_CONFIG,\n TALOS_DIALOG_REF\n} from './dialog.types';\nimport { TalosDialogRef } from './dialog-ref';\nimport { TalosConfirmDialogComponent } from './confirm-dialog/confirm-dialog.component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TalosDialogService {\n private readonly cdkDialog = inject(Dialog);\n private readonly injector = inject(Injector);\n\n /** Signal of currently open dialog references */\n readonly openDialogs = signal<TalosDialogRef<unknown, unknown>[]>([]);\n\n /**\n * Open a component or template inside a modal dialog.\n */\n open<R = unknown, D = unknown>(\n componentOrTemplate: ComponentType<unknown> | TemplateRef<unknown>,\n config: TalosDialogConfig<D> = {}\n ): TalosDialogRef<R, D> {\n const size = config.size ?? 'md';\n const backdropBlur = config.backdropBlur ?? false;\n\n const panelClasses: string[] = ['talos-dialog-panel', `talos-dialog-size-${size}`];\n if (config.panelClass) {\n if (Array.isArray(config.panelClass)) {\n panelClasses.push(...config.panelClass);\n } else {\n panelClasses.push(config.panelClass);\n }\n }\n\n const backdropClasses: string[] = ['talos-dialog-backdrop'];\n if (backdropBlur === true || backdropBlur === 'md') {\n backdropClasses.push('talos-dialog-backdrop-blur-md');\n } else if (backdropBlur === 'sm') {\n backdropClasses.push('talos-dialog-backdrop-blur-sm');\n } else if (backdropBlur === 'lg') {\n backdropClasses.push('talos-dialog-backdrop-blur-lg');\n }\n\n if (config.backdropClass) {\n if (Array.isArray(config.backdropClass)) {\n backdropClasses.push(...config.backdropClass);\n } else {\n backdropClasses.push(config.backdropClass);\n }\n }\n\n const disableClose = config.disableClose ?? false;\n let talosRef: TalosDialogRef<R, D> | null = null;\n\n const cdkConfig: DialogConfig<D, DialogRef<R, unknown>> = {\n panelClass: panelClasses,\n backdropClass: backdropClasses,\n hasBackdrop: config.hasBackdrop ?? true,\n disableClose: disableClose,\n closeOnNavigation: true,\n autoFocus: config.autoFocus ?? 'first-tabbable',\n restoreFocus: config.restoreFocus ?? true,\n ariaLabel: config.ariaLabel,\n ariaLabelledBy: config.ariaLabelledBy,\n ariaDescribedBy: config.ariaDescribedBy,\n role: config.role ?? 'dialog',\n id: config.id,\n width: config.width,\n minWidth: config.minWidth,\n maxWidth: config.maxWidth,\n height: config.height,\n minHeight: config.minHeight,\n maxHeight: config.maxHeight,\n data: config.data,\n injector: this.injector,\n providers: (cdkDialogRef: DialogRef<R, unknown>) => {\n talosRef = new TalosDialogRef<R, D>(cdkDialogRef, config, config.data);\n return [\n { provide: TalosDialogRef, useValue: talosRef },\n { provide: TALOS_DIALOG_REF, useValue: talosRef },\n { provide: TALOS_DIALOG_DATA, useValue: config.data },\n { provide: TALOS_DIALOG_CONFIG, useValue: config }\n ];\n }\n };\n\n const cdkRef = this.cdkDialog.open<R, D, unknown>(componentOrTemplate, cdkConfig);\n if (!talosRef) {\n talosRef = new TalosDialogRef<R, D>(cdkRef, config, config.data);\n }\n const resolvedTalosRef = talosRef as TalosDialogRef<R, D>;\n\n // Track active dialogs\n this.openDialogs.update(current => [...current, resolvedTalosRef as TalosDialogRef<unknown, unknown>]);\n\n cdkRef.closed.subscribe(() => {\n this.openDialogs.update(current => current.filter(d => d.id !== resolvedTalosRef.id));\n });\n\n return resolvedTalosRef;\n }\n\n /**\n * Convenience helper to display a confirmation dialog.\n */\n confirm(options: TalosConfirmDialogOptions): TalosDialogRef<boolean> {\n return this.open<boolean, TalosConfirmDialogOptions>(TalosConfirmDialogComponent, {\n size: options.size ?? 'sm',\n backdropBlur: options.backdropBlur ?? true,\n disableClose: options.disableClose ?? false,\n role: 'alertdialog',\n data: options\n });\n }\n\n /**\n * Convenience helper to display an alert dialog.\n */\n alert(options: TalosAlertDialogOptions): TalosDialogRef<void> {\n return this.open<void, TalosConfirmDialogOptions>(TalosConfirmDialogComponent, {\n size: options.size ?? 'sm',\n backdropBlur: options.backdropBlur ?? true,\n role: 'alertdialog',\n data: {\n ...options,\n showCancel: false,\n confirmText: options.okText ?? 'OK'\n }\n });\n }\n\n /**\n * Close all currently open dialogs.\n */\n closeAll(): void {\n this.cdkDialog.closeAll();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { TalosDialogHeaderComponent } from './dialog-header/dialog-header.component';\nimport { TalosDialogContentComponent } from './dialog-content/dialog-content.component';\nimport { TalosDialogFooterComponent } from './dialog-footer/dialog-footer.component';\nimport { TalosConfirmDialogComponent } from './confirm-dialog/confirm-dialog.component';\nimport {\n TalosDialogTitleDirective,\n TalosDialogDescriptionDirective,\n TalosDialogCloseDirective\n} from './dialog.directives';\n\nconst DIALOG_COMPONENTS = [\n TalosDialogHeaderComponent,\n TalosDialogContentComponent,\n TalosDialogFooterComponent,\n TalosConfirmDialogComponent,\n TalosDialogTitleDirective,\n TalosDialogDescriptionDirective,\n TalosDialogCloseDirective\n];\n\n@NgModule({\n imports: [...DIALOG_COMPONENTS],\n exports: [...DIALOG_COMPONENTS]\n})\nexport class TalosDialogModule {}\n","import { Directive, ElementRef, inject, input, output, signal } from '@angular/core';\n\n@Directive({\n selector: '[talosFileDrop], [talos-file-drop]',\n host: {\n 'class': 'talos-file-drop-target',\n '[class.is-drag-over]': 'isDragOver()',\n '[class.is-disabled]': 'disabled()',\n '(dragover)': 'onDragOver($event)',\n '(dragenter)': 'onDragEnter($event)',\n '(dragleave)': 'onDragLeave($event)',\n '(drop)': 'onDrop($event)'\n }\n})\nexport class TalosFileDropDirective {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** Whether the drop target is disabled */\n readonly disabled = input<boolean>(false);\n\n /** Signal emitting when files are dropped onto the element */\n readonly fileDrop = output<File[]>();\n\n /** Signal emitting when a drag enters the element */\n readonly dragOver = output<DragEvent>();\n\n /** Signal emitting when a drag leaves the element */\n readonly dragLeave = output<DragEvent>();\n\n /** Internal signal tracking active drag over state */\n readonly isDragOver = signal<boolean>(false);\n\n /** Counter to handle dragenter/dragleave transitions between child elements */\n private dragCounter = 0;\n\n onDragOver(event: DragEvent): void {\n if (this.disabled()) return;\n event.preventDefault();\n event.stopPropagation();\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = 'copy';\n }\n }\n\n onDragEnter(event: DragEvent): void {\n if (this.disabled()) return;\n event.preventDefault();\n event.stopPropagation();\n this.dragCounter++;\n\n if (this.dragCounter === 1) {\n this.isDragOver.set(true);\n this.dragOver.emit(event);\n }\n }\n\n onDragLeave(event: DragEvent): void {\n if (this.disabled()) return;\n event.preventDefault();\n event.stopPropagation();\n this.dragCounter--;\n\n if (this.dragCounter <= 0) {\n this.dragCounter = 0;\n this.isDragOver.set(false);\n this.dragLeave.emit(event);\n }\n }\n\n onDrop(event: DragEvent): void {\n if (this.disabled()) return;\n event.preventDefault();\n event.stopPropagation();\n this.dragCounter = 0;\n this.isDragOver.set(false);\n\n const dataTransfer = event.dataTransfer;\n if (!dataTransfer || !dataTransfer.files || dataTransfer.files.length === 0) {\n return;\n }\n\n const files: File[] = Array.from(dataTransfer.files);\n this.fileDrop.emit(files);\n }\n}\n","import {\n Component,\n ElementRef,\n TemplateRef,\n ViewChild,\n computed,\n forwardRef,\n inject,\n input,\n model,\n output,\n signal\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n DropZoneChangeEvent,\n DropZoneFile,\n DropZoneFileStatus,\n DropZoneRejection,\n DropZoneSize,\n DropZoneValidatorFn,\n DropZoneVariant,\n FileRejectionReason\n} from './drop-zone.types';\nimport { TalosFileDropDirective } from './drop-zone.directive';\n\nlet uniqueDropZoneIdCounter = 0;\n\n@Component({\n selector: 'talos-drop-zone, talos-file-upload',\n imports: [NgTemplateOutlet, TalosFileDropDirective],\n templateUrl: './drop-zone.component.html',\n styleUrl: './drop-zone.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TalosDropZoneComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'talos-drop-zone-host',\n '[class.is-disabled]': 'effectiveDisabled()',\n '[class.is-readonly]': 'readonly()',\n '[class.is-loading]': 'loading()',\n '[class.is-drag-over]': 'isDragOver()',\n '[class.variant-default]': 'variant() === \"default\"',\n '[class.variant-compact]': 'variant() === \"compact\"',\n '[class.variant-mini]': 'variant() === \"mini\"',\n '[class.variant-card]': 'variant() === \"card\"',\n '[class.size-sm]': 'size() === \"sm\"',\n '[class.size-md]': 'size() === \"md\"',\n '[class.size-lg]': 'size() === \"lg\"'\n }\n})\nexport class TalosDropZoneComponent implements ControlValueAccessor {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n // --- Signal Inputs ---\n /** Accepted file types / extensions (e.g. \"image/*\", \".pdf,.docx\", \"image/png,image/jpeg\") */\n readonly accept = input<string>('');\n\n /** Allow selecting multiple files */\n readonly multiple = input<boolean>(true);\n\n /** Maximum file size in bytes or human-readable string (e.g. 5242880 or '5MB') */\n readonly maxFileSize = input<number | string | null>(null);\n\n /** Minimum file size in bytes or human-readable string (e.g. 1024 or '1KB') */\n readonly minFileSize = input<number | string | null>(null);\n\n /** Maximum total number of files allowed */\n readonly maxFiles = input<number | null>(null);\n\n /** Disable user interactions */\n readonly disabled = input<boolean>(false);\n\n /** Make drop zone read-only */\n readonly readonly = input<boolean>(false);\n\n /** Display loading / processing spinner */\n readonly loading = input<boolean>(false);\n\n /** Layout visual variant */\n readonly variant = input<DropZoneVariant>('default');\n\n /** Sizing variant */\n readonly size = input<DropZoneSize>('md');\n\n /** Primary title displayed in the drop zone */\n readonly title = input<string>('Choose a file or drag & drop it here');\n\n /** Subtitle / hint text displayed below the title */\n readonly subTitle = input<string>('JPEG, PNG, PDF, and DOC formats, up to 50 MB');\n\n /** Text label for the browse button/link */\n readonly browseLabel = input<string>('Browse file');\n\n /** Secondary bottom helper text or error message */\n readonly hint = input<string>('');\n\n /** Whether to render the built-in staged file list preview */\n readonly showFileList = input<boolean>(true);\n\n /** Automatically manage staged files in internal state when dropped/selected */\n readonly autoManageFiles = input<boolean>(true);\n\n /** Automatically generate object URL thumbnails for image files */\n readonly autoGeneratePreviews = input<boolean>(true);\n\n /** Allow removing staged files */\n readonly removable = input<boolean>(true);\n\n /** Allow retrying failed uploads */\n readonly allowRetry = input<boolean>(true);\n\n /** Custom validator function for individual files */\n readonly validator = input<DropZoneValidatorFn | null>(null);\n\n /** Custom template for rendering staged file list items */\n readonly itemTemplate = input<TemplateRef<{ $implicit: DropZoneFile; index: number; remove: () => void; retry: () => void }> | null>(null);\n\n /** Custom template for rendering drop zone inner content */\n readonly contentTemplate = input<TemplateRef<void> | null>(null);\n\n /** Component DOM ID */\n readonly id = input<string>('');\n\n /** Form control name */\n readonly name = input<string>('');\n\n // --- Two-way Model Signal ---\n /** Staged / uploaded files model */\n readonly files = model<DropZoneFile[]>([]);\n\n // --- Signal Outputs ---\n /** Emitted with raw native File objects */\n readonly rawFilesChange = output<File[]>();\n\n /** Emitted when files are dropped */\n readonly fileDrop = output<File[]>();\n\n /** Emitted when files are selected via native file dialog */\n readonly fileSelect = output<File[]>();\n\n /** Emitted when a file is removed */\n readonly fileRemove = output<DropZoneFile>();\n\n /** Emitted when a file retry button is clicked */\n readonly fileRetry = output<DropZoneFile>();\n\n /** Emitted when files fail validation */\n readonly rejected = output<DropZoneRejection[]>();\n\n /** Emitted when drag over state changes */\n readonly dragStateChange = output<boolean>();\n\n /** Emitted with full change event payload */\n readonly change = output<DropZoneChangeEvent>();\n\n // --- View Children ---\n @ViewChild('fileInput') fileInput?: ElementRef<HTMLInputElement>;\n\n // --- IDs & Internal Signals ---\n private readonly autoId = `talos-dropzone-${uniqueDropZoneIdCounter++}`;\n readonly componentId = computed(() => this.id() || this.autoId);\n readonly inputId = computed(() => `${this.componentId()}-input`);\n\n readonly isDragOver = signal<boolean>(false);\n readonly isDisabled = signal<boolean>(false);\n readonly isTouched = signal<boolean>(false);\n\n\n // --- Computed States ---\n readonly effectiveDisabled = computed(() => this.disabled() || this.isDisabled() || this.readonly());\n\n readonly maxSizeBytes = computed(() => this.parseByteSize(this.maxFileSize()));\n readonly minSizeBytes = computed(() => this.parseByteSize(this.minFileSize()));\n\n readonly hasFiles = computed(() => this.files().length > 0);\n\n readonly isMaxFilesReached = computed(() => {\n const max = this.maxFiles();\n if (max === null || max === undefined) return false;\n return this.files().length >= max;\n });\n\n // --- ControlValueAccessor Callbacks ---\n private onChange: (value: DropZoneFile[] | File[]) => void = () => {};\n private onTouched: () => void = () => {};\n\n // --- ControlValueAccessor Implementation ---\n\n writeValue(value: DropZoneFile[] | File[] | File | null): void {\n if (value === null || value === undefined) {\n this.files.set([]);\n return;\n }\n\n if (Array.isArray(value)) {\n const parsedFiles = value.map((item, idx) => {\n if (item instanceof File) {\n return this.createDropZoneFile(item, `file-${idx}`);\n }\n return item as DropZoneFile;\n });\n this.files.set(parsedFiles);\n } else if (value instanceof File) {\n this.files.set([this.createDropZoneFile(value, 'file-0')]);\n } else if (typeof value === 'object' && 'file' in (value as object)) {\n this.files.set([value as DropZoneFile]);\n }\n }\n\n registerOnChange(fn: (value: DropZoneFile[] | File[]) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled);\n }\n\n // --- Public / Interaction Methods ---\n\n /**\n * Opens the native file selector dialog.\n */\n openFileDialog(): void {\n if (this.effectiveDisabled() || this.isMaxFilesReached()) return;\n if (this.fileInput) {\n // Reset input value to allow selecting the same file again\n this.fileInput.nativeElement.value = '';\n this.fileInput.nativeElement.click();\n }\n }\n\n /**\n * Keyboard handler on the drop zone container (Enter / Space to open browse dialog)\n */\n onKeyDown(event: KeyboardEvent): void {\n if (this.effectiveDisabled()) return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.openFileDialog();\n }\n }\n\n /**\n * Native file input change handler\n */\n onNativeInputChange(event: Event): void {\n if (this.effectiveDisabled()) return;\n const input = event.target as HTMLInputElement;\n if (!input.files || input.files.length === 0) return;\n\n const files = Array.from(input.files);\n this.fileSelect.emit(files);\n this.processFiles(files);\n this.markAsTouched();\n }\n\n /**\n * Handles files dropped onto the dropzone\n */\n onDropFiles(droppedFiles: File[]): void {\n if (this.effectiveDisabled()) return;\n this.fileDrop.emit(droppedFiles);\n this.processFiles(droppedFiles);\n this.markAsTouched();\n }\n\n /**\n * Updates drag over state\n */\n onDragState(isOver: boolean): void {\n if (this.effectiveDisabled()) return;\n this.isDragOver.set(isOver);\n this.dragStateChange.emit(isOver);\n }\n\n /**\n * Removes a file from the staged list\n */\n removeFile(dropFile: DropZoneFile, event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n event.preventDefault();\n }\n if (this.effectiveDisabled() || !this.removable()) return;\n\n // Revoke preview URL if created\n if (dropFile.previewUrl && dropFile.previewUrl.startsWith('blob:')) {\n URL.revokeObjectURL(dropFile.previewUrl);\n }\n\n const updated = this.files().filter((f) => f.id !== dropFile.id);\n this.files.set(updated);\n this.fileRemove.emit(dropFile);\n this.emitChanges(updated);\n this.markAsTouched();\n }\n\n /**\n * Retries uploading a file\n */\n retryFile(dropFile: DropZoneFile, event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n event.preventDefault();\n }\n if (this.effectiveDisabled() || !this.allowRetry()) return;\n\n // Update status to pending\n const updated = this.files().map((f) => {\n if (f.id === dropFile.id) {\n return { ...f, status: 'pending' as DropZoneFileStatus, errorMessage: undefined, progress: 0 };\n }\n return f;\n });\n\n this.files.set(updated);\n this.fileRetry.emit(dropFile);\n this.emitChanges(updated);\n }\n\n /**\n * Updates the progress or status of a staged file programmatically.\n */\n updateFileProgress(fileId: string, progress: number, status?: DropZoneFileStatus, errorMessage?: string): void {\n const updated = this.files().map((f) => {\n if (f.id === fileId) {\n return {\n ...f,\n progress: Math.min(100, Math.max(0, progress)),\n status: status ?? (progress >= 100 ? 'success' : 'uploading'),\n errorMessage\n };\n }\n return f;\n });\n this.files.set(updated);\n this.emitChanges(updated);\n }\n\n /**\n * Clear all files from the drop zone.\n */\n clearFiles(): void {\n // Revoke preview URLs\n for (const f of this.files()) {\n if (f.previewUrl && f.previewUrl.startsWith('blob:')) {\n URL.revokeObjectURL(f.previewUrl);\n }\n }\n this.files.set([]);\n this.emitChanges([]);\n this.markAsTouched();\n }\n\n // --- Processing & Validation ---\n\n private processFiles(rawFiles: File[]): void {\n if (!rawFiles || rawFiles.length === 0) return;\n\n const currentFiles = this.files();\n const accepted: DropZoneFile[] = [];\n const rejections: DropZoneRejection[] = [];\n\n const isMultiple = this.multiple();\n const maxFilesAllowed = this.maxFiles();\n\n // If single mode, replace existing or take only the first file\n const targetFiles = isMultiple ? rawFiles : [rawFiles[0]];\n\n for (const file of targetFiles) {\n // Check total count constraint\n const simulatedCount = isMultiple ? currentFiles.length + accepted.length : accepted.length;\n if (maxFilesAllowed !== null && maxFilesAllowed !== undefined && simulatedCount >= maxFilesAllowed) {\n rejections.push({\n file,\n reason: 'MAX_FILES_EXCEEDED',\n message: `Maximum allowed number of files (${maxFilesAllowed}) reached.`\n });\n continue;\n }\n\n // Check file validation\n const validation = this.validateFile(file);\n if (!validation.valid && validation.rejection) {\n rejections.push(validation.rejection);\n continue;\n }\n\n const dropZoneFile = this.createDropZoneFile(file);\n accepted.push(dropZoneFile);\n }\n\n if (rejections.length > 0) {\n this.rejected.emit(rejections);\n }\n\n if (accepted.length > 0 && this.autoManageFiles()) {\n let nextFiles: DropZoneFile[];\n if (isMultiple) {\n nextFiles = [...currentFiles, ...accepted];\n } else {\n // Clear previous previews if replacing\n for (const f of currentFiles) {\n if (f.previewUrl && f.previewUrl.startsWith('blob:')) {\n URL.revokeObjectURL(f.previewUrl);\n }\n }\n nextFiles = accepted;\n }\n\n this.files.set(nextFiles);\n this.emitChanges(nextFiles, rejections);\n } else if (rejections.length > 0) {\n this.change.emit({\n files: currentFiles,\n rawFiles: currentFiles.map((f) => f.file),\n rejected: rejections\n });\n }\n }\n\n private validateFile(file: File): { valid: boolean; rejection?: DropZoneRejection } {\n // 1. Accept filter check\n const acceptStr = this.accept();\n if (acceptStr && !this.checkAccept(file, acceptStr)) {\n return {\n valid: false,\n rejection: {\n file,\n reason: 'INVALID_TYPE',\n message: `File type \"${file.type || 'unknown'}\" is not supported.`\n }\n };\n }\n\n // 2. Max file size check\n const maxBytes = this.maxSizeBytes();\n if (maxBytes !== null && file.size > maxBytes) {\n return {\n valid: false,\n rejection: {\n file,\n reason: 'FILE_TOO_LARGE',\n message: `File size (${this.formatBytes(file.size)}) exceeds maximum limit of ${this.formatBytes(maxBytes)}.`\n }\n };\n }\n\n // 3. Min file size check\n const minBytes = this.minSizeBytes();\n if (minBytes !== null && file.size < minBytes) {\n return {\n valid: false,\n rejection: {\n file,\n reason: 'FILE_TOO_SMALL',\n message: `File size (${this.formatBytes(file.size)}) is smaller than minimum required ${this.formatBytes(minBytes)}.`\n }\n };\n }\n\n // 4. Custom validator check\n const customVal = this.validator();\n if (customVal) {\n const errorMsg = customVal(file);\n if (errorMsg) {\n return {\n valid: false,\n rejection: {\n file,\n reason: 'CUSTOM_VALIDATION_FAILED',\n message: errorMsg\n }\n };\n }\n }\n\n return { valid: true };\n }\n\n private checkAccept(file: File, accept: string): boolean {\n const rules = accept.split(',').map((r) => r.trim().toLowerCase());\n const fileName = file.name.toLowerCase();\n const fileType = file.type.toLowerCase();\n\n for (const rule of rules) {\n if (!rule) continue;\n\n if (rule.startsWith('.')) {\n // Extension check (e.g. .pdf, .png)\n if (fileName.endsWith(rule)) return true;\n } else if (rule.endsWith('/*')) {\n // Wildcard MIME check (e.g. image/*, video/*, audio/*)\n const prefix = rule.slice(0, -1); // \"image/\"\n if (fileType.startsWith(prefix)) return true;\n } else if (fileType === rule) {\n // Exact MIME check (e.g. application/pdf)\n return true;\n }\n }\n\n return false;\n }\n\n private createDropZoneFile(file: File, idPrefix = 'file'): DropZoneFile {\n const id = `${idPrefix}-${Math.random().toString(36).substring(2, 9)}`;\n let previewUrl: string | undefined;\n\n if (this.autoGeneratePreviews() && file.type.startsWith('image/')) {\n try {\n previewUrl = URL.createObjectURL(file);\n } catch {\n previewUrl = undefined;\n }\n }\n\n return {\n id,\n file,\n name: file.name,\n size: file.size,\n type: file.type,\n progress: 0,\n status: 'pending',\n previewUrl\n };\n }\n\n private emitChanges(updatedFiles: DropZoneFile[], rejections: DropZoneRejection[] = []): void {\n const raw = updatedFiles.map((f) => f.file);\n this.rawFilesChange.emit(raw);\n this.onChange(updatedFiles);\n this.change.emit({\n files: updatedFiles,\n rawFiles: raw,\n rejected: rejections\n });\n }\n\n private markAsTouched(): void {\n if (!this.isTouched()) {\n this.isTouched.set(true);\n this.onTouched();\n }\n }\n\n // --- Formatters & Helpers ---\n\n parseByteSize(size: number | string | null | undefined): number | null {\n if (size === null || size === undefined || size === '') return null;\n if (typeof size === 'number') return size;\n\n const cleaned = size.trim().toUpperCase();\n const match = cleaned.match(/^(\\d+(?:\\.\\d+)?)\\s*(B|KB|MB|GB|TB)?$/);\n if (!match) return null;\n\n const num = parseFloat(match[1]);\n const unit = match[2] || 'B';\n\n const multipliers: Record<string, number> = {\n B: 1,\n KB: 1024,\n MB: 1024 * 1024,\n GB: 1024 * 1024 * 1024,\n TB: 1024 * 1024 * 1024 * 1024\n };\n\n return Math.round(num * (multipliers[unit] || 1));\n }\n\n formatBytes(bytes: number, decimals = 1): string {\n if (bytes === 0) return '0 B';\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n const formatted = parseFloat((bytes / Math.pow(k, i)).toFixed(dm));\n return `${formatted} ${sizes[i]}`;\n }\n\n getFileTypeCategory(file: DropZoneFile): 'image' | 'pdf' | 'doc' | 'archive' | 'audio' | 'video' | 'code' | 'generic' {\n const type = file.type.toLowerCase();\n const name = file.name.toLowerCase();\n\n if (type.startsWith('image/') || /\\.(png|jpg|jpeg|gif|webp|svg|bmp|ico)$/.test(name)) return 'image';\n if (type === 'application/pdf' || name.endsWith('.pdf')) return 'pdf';\n if (\n type.includes('word') ||\n type.includes('document') ||\n type.includes('sheet') ||\n type.includes('excel') ||\n type.includes('presentation') ||\n type.includes('powerpoint') ||\n /\\.(doc|docx|xls|xlsx|ppt|pptx|txt|rtf|csv)$/.test(name)\n ) {\n return 'doc';\n }\n if (type.includes('zip') || type.includes('compressed') || type.includes('tar') || /\\.(zip|rar|7z|tar|gz)$/.test(name)) {\n return 'archive';\n }\n if (type.startsWith('audio/') || /\\.(mp3|wav|ogg|flac|m4a)$/.test(name)) return 'audio';\n if (type.startsWith('video/') || /\\.(mp4|webm|mkv|mov|avi)$/.test(name)) return 'video';\n if (/\\.(ts|js|json|html|css|scss|py|go|rs|java|c|cpp|sql|xml|yaml|yml)$/.test(name)) return 'code';\n\n return 'generic';\n }\n}\n","<div\n class=\"talos-drop-zone-area\"\n talosFileDrop\n [disabled]=\"effectiveDisabled() || isMaxFilesReached()\"\n (fileDrop)=\"onDropFiles($event)\"\n (dragOver)=\"onDragState(true)\"\n (dragLeave)=\"onDragState(false)\"\n (click)=\"openFileDialog()\"\n (keydown)=\"onKeyDown($event)\"\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-disabled]=\"effectiveDisabled() ? 'true' : null\"\n [attr.aria-label]=\"title()\"\n [attr.id]=\"componentId()\"\n>\n <!-- Hidden Native File Input -->\n <input\n #fileInput\n type=\"file\"\n class=\"talos-drop-zone-native-input\"\n [attr.id]=\"inputId()\"\n [attr.name]=\"name() || null\"\n [accept]=\"accept()\"\n [multiple]=\"multiple()\"\n [disabled]=\"effectiveDisabled() || isMaxFilesReached()\"\n (change)=\"onNativeInputChange($event)\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n />\n\n <!-- Loading Overlay -->\n @if (loading()) {\n <div class=\"talos-drop-zone-loading-overlay\" aria-live=\"polite\" aria-busy=\"true\">\n <div class=\"talos-drop-zone-spinner\" aria-hidden=\"true\"></div>\n <span class=\"talos-drop-zone-loading-text\">Processing files...</span>\n </div>\n }\n\n <!-- Drop Zone Inner Content -->\n @if (contentTemplate()) {\n <ng-container [ngTemplateOutlet]=\"contentTemplate()!\" />\n } @else {\n <div class=\"talos-drop-zone-content\">\n <div class=\"talos-drop-zone-icon-wrapper\" aria-hidden=\"true\">\n <svg\n class=\"talos-drop-zone-icon\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.8\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242\" />\n <path d=\"M12 12v9\" />\n <path d=\"m16 16-4-4-4 4\" />\n </svg>\n </div>\n\n <div class=\"talos-drop-zone-text-group\">\n <div class=\"talos-drop-zone-title\">\n <span>{{ title() }}</span>\n @if (browseLabel()) {\n <span class=\"talos-drop-zone-browse-link\"> {{ browseLabel() }}</span>\n }\n </div>\n\n @if (subTitle()) {\n <p class=\"talos-drop-zone-subtitle\">{{ subTitle() }}</p>\n }\n </div>\n </div>\n }\n</div>\n\n<!-- Helper / Error Hint -->\n@if (hint()) {\n <div class=\"talos-drop-zone-hint\">\n {{ hint() }}\n </div>\n}\n\n<!-- Attached / Staged Files List Preview -->\n@if (showFileList() && hasFiles()) {\n <div class=\"talos-drop-zone-file-list\" aria-label=\"Attached files\">\n <div class=\"talos-drop-zone-file-list-header\">\n <span class=\"talos-drop-zone-file-list-title\">\n Attached files ({{ files().length }}{{ maxFiles() ? ' / ' + maxFiles() : '' }})\n </span>\n @if (removable() && !effectiveDisabled()) {\n <button\n type=\"button\"\n class=\"talos-drop-zone-clear-all-btn\"\n (click)=\"clearFiles()\"\n aria-label=\"Clear all attached files\"\n >\n Clear all\n </button>\n }\n </div>\n\n <div class=\"talos-drop-zone-files-grid\">\n @for (file of files(); track file.id; let idx = $index) {\n @if (itemTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate()!\"\n [ngTemplateOutletContext]=\"{\n $implicit: file,\n index: idx,\n remove: removeFile.bind(this, file),\n retry: retryFile.bind(this, file)\n }\"\n />\n } @else {\n <div\n class=\"talos-drop-zone-file-item\"\n [class.status-pending]=\"file.status === 'pending'\"\n [class.status-uploading]=\"file.status === 'uploading'\"\n [class.status-success]=\"file.status === 'success'\"\n [class.status-error]=\"file.status === 'error'\"\n >\n <!-- Thumbnail or Icon -->\n <div class=\"talos-drop-zone-file-preview\" aria-hidden=\"true\">\n @if (file.previewUrl) {\n <img [src]=\"file.previewUrl\" [alt]=\"file.name\" class=\"talos-drop-zone-img-preview\" />\n } @else {\n @switch (getFileTypeCategory(file)) {\n @case ('pdf') {\n <div class=\"talos-drop-zone-type-badge type-pdf\">\n <span>PDF</span>\n </div>\n }\n @case ('doc') {\n <div class=\"talos-drop-zone-type-badge type-doc\">\n <span>DOC</span>\n </div>\n }\n @case ('archive') {\n <div class=\"talos-drop-zone-type-badge type-archive\">\n <span>ZIP</span>\n </div>\n }\n @case ('audio') {\n <div class=\"talos-drop-zone-type-badge type-audio\">\n <span>AUD</span>\n </div>\n }\n @case ('video') {\n <div class=\"talos-drop-zone-type-badge type-video\">\n <span>VID</span>\n </div>\n }\n @case ('code') {\n <div class=\"talos-drop-zone-type-badge type-code\">\n <span>&lt;/&gt;</span>\n </div>\n }\n @default {\n <div class=\"talos-drop-zone-type-badge type-generic\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z\" />\n <polyline points=\"14 2 14 8 20 8\" />\n </svg>\n </div>\n }\n }\n }\n </div>\n\n <!-- File Info & Progress -->\n <div class=\"talos-drop-zone-file-meta\">\n <div class=\"talos-drop-zone-file-header\">\n <span class=\"talos-drop-zone-file-name\" [title]=\"file.name\">{{ file.name }}</span>\n <span class=\"talos-drop-zone-file-size\">{{ formatBytes(file.size) }}</span>\n </div>\n\n @if (file.status === 'uploading' && file.progress !== undefined) {\n <div class=\"talos-drop-zone-file-progress-bar\" role=\"progressbar\" [attr.aria-valuenow]=\"file.progress\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n <div class=\"talos-drop-zone-file-progress-fill\" [style.width.%]=\"file.progress\"></div>\n </div>\n }\n\n @if (file.status === 'error' && file.errorMessage) {\n <div class=\"talos-drop-zone-file-error-msg\">\n {{ file.errorMessage }}\n </div>\n }\n </div>\n\n <!-- Status Indicator / Actions -->\n <div class=\"talos-drop-zone-file-actions\">\n @if (file.status === 'uploading') {\n <span class=\"talos-drop-zone-file-percent\">{{ file.progress }}%</span>\n }\n\n @if (file.status === 'success') {\n <span class=\"talos-drop-zone-status-icon status-success\" title=\"Uploaded successfully\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n </span>\n }\n\n @if (file.status === 'error' && allowRetry()) {\n <button\n type=\"button\"\n class=\"talos-drop-zone-action-btn btn-retry\"\n [attr.aria-label]=\"'Retry upload for ' + file.name\"\n (click)=\"retryFile(file, $event)\"\n title=\"Retry upload\"\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M21.5 2v6h-6M21.34 15.57a10 10 0 1 1-.57-8.38l5.67-5.67\" />\n </svg>\n </button>\n }\n\n @if (removable() && !effectiveDisabled()) {\n <button\n type=\"button\"\n class=\"talos-drop-zone-action-btn btn-remove\"\n [attr.aria-label]=\"'Remove ' + file.name\"\n (click)=\"removeFile(file, $event)\"\n title=\"Remove file\"\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n }\n </div>\n </div>\n }\n }\n </div>\n </div>\n}\n","import { NgModule } from '@angular/core';\nimport { TalosDropZoneComponent } from './drop-zone.component';\nimport { TalosFileDropDirective } from './drop-zone.directive';\n\n@NgModule({\n imports: [TalosDropZoneComponent, TalosFileDropDirective],\n exports: [TalosDropZoneComponent, TalosFileDropDirective]\n})\nexport class TalosDropZoneModule {}\n","/**\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 {\n Injectable,\n TemplateRef,\n signal\n} from '@angular/core';\nimport {\n TalosAlertConfig,\n TalosAlertInstance,\n TalosAlertRef\n} from './alert.types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TalosAlertService {\n /** Reactive list of currently active programmatic alerts */\n readonly alerts = signal<TalosAlertInstance[]>([]);\n\n /** Reactive list of currently active top-level banner alerts */\n readonly bannerAlerts = signal<TalosAlertInstance[]>([]);\n\n private idCounter = 0;\n\n /** Default global configurations */\n private defaultConfig: Partial<TalosAlertConfig> = {\n severity: 'success',\n appearance: 'subtle',\n size: 'md',\n showIcon: true,\n dismissible: true\n };\n\n /**\n * Override default global configurations.\n */\n setDefaultConfig(config: Partial<TalosAlertConfig>): void {\n this.defaultConfig = { ...this.defaultConfig, ...config };\n }\n\n /**\n * Main entry point to create a programmatic alert instance.\n */\n show(\n messageOrConfig: string | TemplateRef<unknown> | TalosAlertConfig,\n configOverrides: Partial<TalosAlertConfig> = {}\n ): TalosAlertRef {\n let fullConfig: TalosAlertConfig;\n\n if (\n typeof messageOrConfig === 'string' ||\n messageOrConfig instanceof TemplateRef\n ) {\n fullConfig = {\n message: messageOrConfig,\n ...configOverrides\n };\n } else {\n fullConfig = {\n ...messageOrConfig,\n ...configOverrides\n };\n }\n\n const instance: TalosAlertInstance = {\n id: fullConfig.id || `talos-alert-${++this.idCounter}-${Date.now()}`,\n severity: fullConfig.severity ?? this.defaultConfig.severity ?? 'success',\n variant: fullConfig.variant,\n appearance: fullConfig.appearance ?? this.defaultConfig.appearance ?? 'subtle',\n size: fullConfig.size ?? this.defaultConfig.size ?? 'md',\n showIcon: fullConfig.showIcon ?? this.defaultConfig.showIcon ?? true,\n icon: fullConfig.icon,\n showSeverityBadge: fullConfig.showSeverityBadge ?? false,\n dismissible: fullConfig.dismissible ?? this.defaultConfig.dismissible ?? true,\n title: fullConfig.title,\n message: fullConfig.message,\n actionLabel: fullConfig.actionLabel,\n onAction: fullConfig.onAction,\n onDismiss: fullConfig.onDismiss,\n customClass: fullConfig.customClass,\n bordered: fullConfig.bordered,\n duration: fullConfig.duration,\n data: fullConfig.data,\n createdAt: Date.now()\n };\n\n this.alerts.update((current) => [...current, instance]);\n\n if (instance.duration && instance.duration > 0) {\n setTimeout(() => {\n this.dismiss(instance.id);\n }, instance.duration);\n }\n\n return {\n id: instance.id,\n dismiss: () => this.dismiss(instance.id)\n };\n }\n\n /**\n * Display a high-visibility global banner alert.\n */\n banner(\n messageOrConfig: string | TemplateRef<unknown> | TalosAlertConfig,\n configOverrides: Partial<TalosAlertConfig> = {}\n ): TalosAlertRef {\n let fullConfig: TalosAlertConfig;\n\n if (\n typeof messageOrConfig === 'string' ||\n messageOrConfig instanceof TemplateRef\n ) {\n fullConfig = {\n message: messageOrConfig,\n appearance: 'filled',\n severity: 'info',\n ...configOverrides\n };\n } else {\n fullConfig = {\n appearance: 'filled',\n severity: 'info',\n ...messageOrConfig,\n ...configOverrides\n };\n }\n\n const instance: TalosAlertInstance = {\n id: fullConfig.id || `talos-banner-alert-${++this.idCounter}-${Date.now()}`,\n severity: fullConfig.severity ?? 'info',\n variant: fullConfig.variant,\n appearance: fullConfig.appearance ?? 'filled',\n size: fullConfig.size ?? 'md',\n showIcon: fullConfig.showIcon ?? true,\n icon: fullConfig.icon,\n showSeverityBadge: fullConfig.showSeverityBadge ?? false,\n dismissible: fullConfig.dismissible ?? true,\n title: fullConfig.title,\n message: fullConfig.message,\n actionLabel: fullConfig.actionLabel,\n onAction: fullConfig.onAction,\n onDismiss: fullConfig.onDismiss,\n customClass: fullConfig.customClass,\n bordered: fullConfig.bordered,\n duration: fullConfig.duration,\n data: fullConfig.data,\n createdAt: Date.now()\n };\n\n this.bannerAlerts.update((current) => [...current, instance]);\n\n if (instance.duration && instance.duration > 0) {\n setTimeout(() => {\n this.dismissBanner(instance.id);\n }, instance.duration);\n }\n\n return {\n id: instance.id,\n dismiss: () => this.dismissBanner(instance.id)\n };\n }\n\n /** Convenience method for Success alerts (Default severity) */\n success(\n message: string | TemplateRef<unknown>,\n config?: Partial<TalosAlertConfig>\n ): TalosAlertRef {\n return this.show(message, { ...config, severity: 'success' });\n }\n\n /** Convenience method for Info alerts */\n info(\n message: string | TemplateRef<unknown>,\n config?: Partial<TalosAlertConfig>\n ): TalosAlertRef {\n return this.show(message, { ...config, severity: 'info' });\n }\n\n /** Convenience method for Warning alerts */\n warning(\n message: string | TemplateRef<unknown>,\n config?: Partial<TalosAlertConfig>\n ): TalosAlertRef {\n return this.show(message, { ...config, severity: 'warning' });\n }\n\n /** Convenience method for Error alerts */\n error(\n message: string | TemplateRef<unknown>,\n config?: Partial<TalosAlertConfig>\n ): TalosAlertRef {\n return this.show(message, { ...config, severity: 'error' });\n }\n\n /**\n * Dismiss a specific programmatic alert by ID, or the oldest if no ID is provided.\n */\n dismiss(id?: string): void {\n if (!id) {\n const current = this.alerts();\n if (current.length === 0) return;\n id = current[0].id;\n }\n\n const target = this.alerts().find((a) => a.id === id);\n if (target?.onDismiss) {\n target.onDismiss();\n }\n\n this.alerts.update((current) => current.filter((item) => item.id !== id));\n }\n\n /**\n * Dismiss a banner alert by ID.\n */\n dismissBanner(id?: string): void {\n if (!id) {\n const current = this.bannerAlerts();\n if (current.length === 0) return;\n id = current[0].id;\n }\n\n const target = this.bannerAlerts().find((a) => a.id === id);\n if (target?.onDismiss) {\n target.onDismiss();\n }\n\n this.bannerAlerts.update((current) => current.filter((item) => item.id !== id));\n }\n\n /**\n * Dismiss all currently active alerts and banners.\n */\n dismissAll(): void {\n this.alerts().forEach((a) => a.onDismiss?.());\n this.bannerAlerts().forEach((b) => b.onDismiss?.());\n this.alerts.set([]);\n this.bannerAlerts.set([]);\n }\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Structural / Slot directive for alert title projection.\n *\n * Usage:\n * ```html\n * <talos-alert>\n * <div talosAlertTitle>System Maintenance</div>\n * <div talosAlertDescription>All services will undergo updates tonight.</div>\n * </talos-alert>\n * ```\n */\n@Directive({\n selector: '[talosAlertTitle], talos-alert-title',\n host: {\n 'class': 'talos-alert-title-directive'\n }\n})\nexport class TalosAlertTitleDirective {}\n\n/**\n * Slot directive for alert description / message body.\n */\n@Directive({\n selector: '[talosAlertDescription], talos-alert-description',\n host: {\n 'class': 'talos-alert-description-directive'\n }\n})\nexport class TalosAlertDescriptionDirective {}\n\n/**\n * Slot directive for custom alert actions / button group.\n */\n@Directive({\n selector: '[talosAlertActions], talos-alert-actions',\n host: {\n 'class': 'talos-alert-actions-directive'\n }\n})\nexport class TalosAlertActionsDirective {}\n\n/**\n * Slot directive for custom alert icon.\n */\n@Directive({\n selector: '[talosAlertIcon], talos-alert-icon',\n host: {\n 'class': 'talos-alert-icon-directive'\n }\n})\nexport class TalosAlertIconDirective {}\n","import {\n Component,\n TemplateRef,\n Type,\n computed,\n input,\n output,\n signal\n} from '@angular/core';\nimport { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport {\n LucideAlertOctagon,\n LucideAlertTriangle,\n LucideCheckCircle2,\n LucideCircleAlert,\n LucideInfo,\n LucideShieldAlert,\n LucideX\n} from '@lucide/angular';\nimport {\n TalosAlertAppearance,\n TalosAlertSeverity,\n TalosAlertSize,\n TalosAlertVariant\n} from '../alert.types';\n\n@Component({\n selector: 'talos-alert',\n imports: [\n NgComponentOutlet,\n NgTemplateOutlet,\n LucideInfo,\n LucideCheckCircle2,\n LucideAlertTriangle,\n LucideCircleAlert,\n LucideAlertOctagon,\n LucideShieldAlert,\n LucideX\n ],\n templateUrl: './alert.component.html',\n styleUrl: './alert.component.scss',\n host: {\n '[class.talos-alert-host]': 'true',\n '[class.is-dismissing]': 'isDismissing()',\n '[class.is-dismissed]': 'isDismissed()'\n }\n})\nexport class TalosAlertComponent {\n /** Alert severity state: 'success' (default), 'info', 'warning', 'error' */\n readonly severity = input<TalosAlertSeverity | undefined>('success');\n\n /** Visual variant theme fallback */\n readonly variant = input<TalosAlertVariant | undefined>(undefined);\n\n /** Visual surface appearance style */\n readonly appearance = input<TalosAlertAppearance>('subtle');\n\n /** Sizing of padding and typography */\n readonly size = input<TalosAlertSize>('md');\n\n /** Header title text or custom TemplateRef */\n readonly title = input<string | TemplateRef<unknown> | undefined>(undefined);\n\n /** Main message content or custom TemplateRef */\n readonly message = input<string | TemplateRef<unknown> | undefined>(undefined);\n\n /** Whether to display the icon */\n readonly showIcon = input<boolean>(true);\n\n /** Custom Lucide icon component, TemplateRef, or boolean */\n readonly icon = input<Type<unknown> | TemplateRef<unknown> | boolean | null | undefined>(null);\n\n /** Whether to display a dedicated severity pill badge */\n readonly showSeverityBadge = input<boolean>(false);\n\n /** Whether the alert can be dismissed */\n readonly dismissible = input<boolean>(false);\n\n /** Action button text label */\n readonly actionLabel = input<string | undefined>(undefined);\n\n /** Optional explicit border outline */\n readonly bordered = input<boolean>(false);\n\n /** Additional CSS class */\n readonly customClass = input<string>('');\n\n /** Emitted when dismiss close button is clicked */\n readonly dismiss = output<void>();\n\n /** Emitted when action button is clicked */\n readonly action = output<void>();\n\n /** Emitted when dismiss animation has finished and alert is removed */\n readonly closed = output<void>();\n\n protected readonly isDismissing = signal<boolean>(false);\n protected readonly isDismissed = signal<boolean>(false);\n\n /** Resolved visual variant considering severity */\n readonly resolvedVariant = computed<TalosAlertVariant>(() => {\n const sev = this.severity();\n if (sev) {\n return sev;\n }\n return this.variant() ?? 'success';\n });\n\n /** Severity display label for badge */\n readonly severityLabel = computed<string>(() => {\n const sev = this.severity();\n if (sev) return sev.toUpperCase();\n return '';\n });\n\n readonly isTitleTemplate = computed(() => this.title() instanceof TemplateRef);\n readonly titleTemplate = computed(() => this.title() as TemplateRef<unknown>);\n\n readonly isMessageTemplate = computed(() => this.message() instanceof TemplateRef);\n readonly messageTemplate = computed(() => this.message() as TemplateRef<unknown>);\n\n readonly isIconTemplate = computed(() => this.icon() instanceof TemplateRef);\n readonly iconTemplate = computed(() => this.icon() as TemplateRef<unknown>);\n\n readonly customIconComponent = computed(() => {\n const ic = this.icon();\n return typeof ic === 'function' ? (ic as Type<unknown>) : null;\n });\n\n readonly ariaRole = computed(() => {\n const v = this.resolvedVariant();\n return v === 'error' || v === 'warning' || v === 'critical' ? 'alert' : 'status';\n });\n\n readonly ariaLive = computed(() => {\n const v = this.resolvedVariant();\n return v === 'error' || v === 'critical' ? 'assertive' : 'polite';\n });\n\n protected onActionClick(): void {\n this.action.emit();\n }\n\n protected onCloseClick(): void {\n if (this.isDismissing() || this.isDismissed()) return;\n this.isDismissing.set(true);\n this.dismiss.emit();\n\n setTimeout(() => {\n this.isDismissed.set(true);\n this.closed.emit();\n }, 200);\n }\n}\n","@if (!isDismissed()) {\n<div\n class=\"talos-alert\"\n [class.variant-default]=\"resolvedVariant() === 'default'\"\n [class.variant-info]=\"resolvedVariant() === 'info'\"\n [class.variant-success]=\"resolvedVariant() === 'success'\"\n [class.variant-warning]=\"resolvedVariant() === 'warning'\"\n [class.variant-error]=\"resolvedVariant() === 'error'\"\n [class.variant-primary]=\"resolvedVariant() === 'primary'\"\n [class.variant-critical]=\"resolvedVariant() === 'critical'\"\n [class.appearance-subtle]=\"appearance() === 'subtle'\"\n [class.appearance-outline]=\"appearance() === 'outline'\"\n [class.appearance-filled]=\"appearance() === 'filled'\"\n [class.appearance-accent]=\"appearance() === 'accent'\"\n [class.appearance-left-border]=\"appearance() === 'left-border'\"\n [class.size-sm]=\"size() === 'sm'\"\n [class.size-md]=\"size() === 'md'\"\n [class.size-lg]=\"size() === 'lg'\"\n [class.is-bordered]=\"bordered()\"\n [class.is-dismissing]=\"isDismissing()\"\n [class]=\"customClass()\"\n [attr.role]=\"ariaRole()\"\n [attr.aria-live]=\"ariaLive()\"\n>\n <!-- Icon Section -->\n @if (showIcon() && icon() !== false) {\n <div class=\"talos-alert-icon\" aria-hidden=\"true\">\n @if (isIconTemplate()) {\n <ng-container *ngTemplateOutlet=\"iconTemplate()\"></ng-container>\n } @else if (customIconComponent()) {\n <ng-container *ngComponentOutlet=\"customIconComponent()\"></ng-container>\n } @else {\n <ng-content select=\"[talosAlertIcon], talos-alert-icon\"></ng-content>\n @switch (resolvedVariant()) {\n @case ('critical') {\n <svg lucideAlertOctagon [size]=\"size() === 'sm' ? 16 : size() === 'lg' ? 24 : 20\"></svg>\n }\n @case ('error') {\n <svg lucideCircleAlert [size]=\"size() === 'sm' ? 16 : size() === 'lg' ? 24 : 20\"></svg>\n }\n @case ('warning') {\n <svg lucideAlertTriangle [size]=\"size() === 'sm' ? 16 : size() === 'lg' ? 24 : 20\"></svg>\n }\n @case ('success') {\n <svg lucideCheckCircle2 [size]=\"size() === 'sm' ? 16 : size() === 'lg' ? 24 : 20\"></svg>\n }\n @case ('primary') {\n <svg lucideShieldAlert [size]=\"size() === 'sm' ? 16 : size() === 'lg' ? 24 : 20\"></svg>\n }\n @default {\n <svg lucideInfo [size]=\"size() === 'sm' ? 16 : size() === 'lg' ? 24 : 20\"></svg>\n }\n }\n }\n </div>\n }\n\n <!-- Main Alert Body & Details -->\n <div class=\"talos-alert-body\">\n <!-- Header: Title & Severity Badge -->\n <div class=\"talos-alert-header\">\n @if (title()) {\n @if (isTitleTemplate()) {\n <div class=\"talos-alert-title\">\n <ng-container *ngTemplateOutlet=\"titleTemplate()\"></ng-container>\n </div>\n } @else {\n <h4 class=\"talos-alert-title\">{{ title() }}</h4>\n }\n }\n <ng-content select=\"[talosAlertTitle], talos-alert-title\"></ng-content>\n\n @if (showSeverityBadge() && severityLabel()) {\n <span class=\"talos-alert-severity-badge\" [attr.data-severity]=\"resolvedVariant()\">\n {{ severityLabel() }}\n </span>\n }\n </div>\n\n <!-- Message Description Content -->\n <div class=\"talos-alert-message\">\n @if (message()) {\n @if (isMessageTemplate()) {\n <ng-container *ngTemplateOutlet=\"messageTemplate()\"></ng-container>\n } @else {\n <span>{{ message() }}</span>\n }\n }\n <ng-content select=\"[talosAlertDescription], talos-alert-description\"></ng-content>\n <ng-content></ng-content>\n </div>\n </div>\n\n <!-- Actions & Close Button -->\n <div class=\"talos-alert-actions\">\n <ng-content select=\"[talosAlertActions], talos-alert-actions\"></ng-content>\n\n @if (actionLabel()) {\n <button type=\"button\" class=\"talos-alert-action-btn\" (click)=\"onActionClick()\">\n {{ actionLabel() }}\n </button>\n }\n\n @if (dismissible()) {\n <button\n type=\"button\"\n class=\"talos-alert-close-btn\"\n aria-label=\"Dismiss alert\"\n (click)=\"onCloseClick()\"\n >\n <svg lucideX [size]=\"size() === 'sm' ? 14 : 16\"></svg>\n </button>\n }\n </div>\n</div>\n}\n","import { Component, computed, inject, input } from '@angular/core';\nimport { TalosAlertComponent } from '../alert/alert.component';\nimport { TalosAlertService } from '../alert.service';\nimport { TalosAlertInstance } from '../alert.types';\n\n@Component({\n selector: 'talos-alert-container',\n imports: [TalosAlertComponent],\n template: `\n @if (targetAlerts().length > 0) {\n <div class=\"talos-alert-container-stack\" [class.is-banner]=\"type() === 'banner'\">\n @for (item of targetAlerts(); track item.id) {\n <talos-alert\n [variant]=\"item.variant || 'default'\"\n [severity]=\"item.severity\"\n [appearance]=\"item.appearance || 'subtle'\"\n [size]=\"item.size || 'md'\"\n [title]=\"item.title\"\n [message]=\"item.message\"\n [showIcon]=\"item.showIcon ?? true\"\n [icon]=\"item.icon\"\n [showSeverityBadge]=\"item.showSeverityBadge ?? false\"\n [dismissible]=\"item.dismissible ?? true\"\n [actionLabel]=\"item.actionLabel\"\n [bordered]=\"item.bordered ?? false\"\n [customClass]=\"item.customClass || ''\"\n (dismiss)=\"onDismiss(item.id)\"\n (action)=\"onAction(item)\"\n />\n }\n </div>\n }\n `,\n styleUrl: './alert-container.component.scss',\n host: {\n '[class.talos-alert-container-host]': 'true'\n }\n})\nexport class TalosAlertContainerComponent {\n private readonly alertService = inject(TalosAlertService);\n\n /** Mode of alerts to render from the service ('inline', 'banner', or 'all') */\n readonly type = input<'inline' | 'banner' | 'all'>('inline');\n\n readonly targetAlerts = computed<TalosAlertInstance[]>(() => {\n const t = this.type();\n if (t === 'banner') {\n return this.alertService.bannerAlerts();\n }\n if (t === 'all') {\n return [...this.alertService.bannerAlerts(), ...this.alertService.alerts()];\n }\n return this.alertService.alerts();\n });\n\n onDismiss(id: string): void {\n if (this.type() === 'banner') {\n this.alertService.dismissBanner(id);\n } else {\n this.alertService.dismiss(id);\n }\n }\n\n onAction(item: TalosAlertInstance): void {\n if (item.onAction) {\n item.onAction();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { TalosAlertComponent } from './alert/alert.component';\nimport { TalosAlertContainerComponent } from './alert-container/alert-container.component';\nimport {\n TalosAlertTitleDirective,\n TalosAlertDescriptionDirective,\n TalosAlertActionsDirective,\n TalosAlertIconDirective\n} from './alert.directives';\n\n/**\n * Convenience NgModule wrapping standalone alert components and directives.\n */\n@NgModule({\n imports: [\n TalosAlertComponent,\n TalosAlertContainerComponent,\n TalosAlertTitleDirective,\n TalosAlertDescriptionDirective,\n TalosAlertActionsDirective,\n TalosAlertIconDirective\n ],\n exports: [\n TalosAlertComponent,\n TalosAlertContainerComponent,\n TalosAlertTitleDirective,\n TalosAlertDescriptionDirective,\n TalosAlertActionsDirective,\n TalosAlertIconDirective\n ]\n})\nexport class TalosAlertModule {}\n","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 TalosSparklineComponent\n */\n\nexport type SparklineType = 'line' | 'area' | 'bar';\n\nexport type SparklineSize = 'xs' | 'sm' | 'md' | 'lg' | 'responsive' | 'custom';\n\nexport type SparklineColorScheme =\n | 'primary'\n | 'success'\n | 'danger'\n | 'warning'\n | 'info'\n | 'violet'\n | 'emerald'\n | 'rose'\n | 'amber'\n | 'cyan'\n | 'slate'\n | string;\n\nexport type SparklineMarkerMode = 'none' | 'all' | 'endpoints' | 'min-max' | 'last';\n\nexport interface SparklinePoint {\n value: number;\n label?: string;\n date?: string;\n color?: string;\n}\n\nexport type SparklineInputData = (number | SparklinePoint)[];\n\nexport const GOLDEN_RATIO = 1.618;\n\nexport type SparklineAspectRatio = number | 'golden' | string;\n\nexport interface SparklineHoverEvent {\n index: number;\n value: number;\n label?: string;\n x: number;\n y: number;\n}\n","import {\n Component,\n DestroyRef,\n ElementRef,\n afterNextRender,\n computed,\n inject,\n input,\n output,\n signal\n} from '@angular/core';\nimport {\n GOLDEN_RATIO,\n SparklineAspectRatio,\n SparklineColorScheme,\n SparklineHoverEvent,\n SparklineInputData,\n SparklineMarkerMode,\n SparklinePoint,\n SparklineSize,\n SparklineType\n} from './sparkline.types';\n\nconst PRESET_PALETTES: Record<string, { stroke: string; fillStart: string; fillEnd: string }> = {\n primary: { stroke: '#2563eb', fillStart: 'rgba(37, 99, 235, 0.35)', fillEnd: 'rgba(37, 99, 235, 0.0)' },\n blue: { stroke: '#3b82f6', fillStart: 'rgba(59, 130, 246, 0.35)', fillEnd: 'rgba(59, 130, 246, 0.0)' },\n success: { stroke: '#16a34a', fillStart: 'rgba(22, 163, 74, 0.35)', fillEnd: 'rgba(22, 163, 74, 0.0)' },\n emerald: { stroke: '#10b981', fillStart: 'rgba(16, 185, 129, 0.35)', fillEnd: 'rgba(16, 185, 129, 0.0)' },\n danger: { stroke: '#ef4444', fillStart: 'rgba(239, 68, 68, 0.35)', fillEnd: 'rgba(239, 68, 68, 0.0)' },\n rose: { stroke: '#f43f5e', fillStart: 'rgba(244, 63, 94, 0.35)', fillEnd: 'rgba(244, 63, 94, 0.0)' },\n warning: { stroke: '#f59e0b', fillStart: 'rgba(245, 158, 11, 0.35)', fillEnd: 'rgba(245, 158, 11, 0.0)' },\n amber: { stroke: '#d97706', fillStart: 'rgba(217, 119, 6, 0.35)', fillEnd: 'rgba(217, 119, 6, 0.0)' },\n info: { stroke: '#0284c7', fillStart: 'rgba(2, 132, 199, 0.35)', fillEnd: 'rgba(2, 132, 199, 0.0)' },\n cyan: { stroke: '#06b6d4', fillStart: 'rgba(6, 182, 212, 0.35)', fillEnd: 'rgba(6, 182, 212, 0.0)' },\n violet: { stroke: '#8b5cf6', fillStart: 'rgba(139, 92, 246, 0.35)', fillEnd: 'rgba(139, 92, 246, 0.0)' },\n slate: { stroke: '#64748b', fillStart: 'rgba(100, 116, 139, 0.3)', fillEnd: 'rgba(100, 116, 139, 0.0)' }\n};\n\n// Golden Ratio (~1.618:1) and proportional defaults\nconst DEFAULT_SIZE_DIMENSIONS: Record<SparklineSize, { width: number; height: number }> = {\n xs: { width: 64, height: 40 },\n sm: { width: 96, height: 60 },\n md: { width: 130, height: 80 },\n lg: { width: 180, height: 110 },\n responsive: { width: 240, height: 60 },\n custom: { width: 130, height: 80 }\n};\n\nlet uniqueIdCounter = 0;\n\ninterface InternalPoint {\n index: number;\n value: number;\n label?: string;\n date?: string;\n x: number;\n y: number;\n color?: string;\n isMin?: boolean;\n isMax?: boolean;\n isFirst?: boolean;\n isLast?: boolean;\n}\n\ninterface BarSegment {\n index: number;\n value: number;\n label?: string;\n x: number;\n y: number;\n width: number;\n height: number;\n color: string;\n}\n\n@Component({\n selector: 'talos-sparkline',\n templateUrl: './sparkline.component.html',\n styleUrl: './sparkline.component.scss',\n host: {\n 'class': 'talos-sparkline',\n '[class.talos-sparkline-xs]': 'size() === \"xs\"',\n '[class.talos-sparkline-sm]': 'size() === \"sm\"',\n '[class.talos-sparkline-md]': 'size() === \"md\"',\n '[class.talos-sparkline-lg]': 'size() === \"lg\"',\n '[class.talos-sparkline-responsive]': 'size() === \"responsive\"',\n '[style.width]': 'hostWidth()',\n '[style.height]': 'hostHeight()',\n '[style.aspectRatio]': 'computedAspectRatio()',\n '[attr.role]': '\"img\"',\n '[attr.aria-label]': 'computedAriaLabel()'\n }\n})\nexport class TalosSparklineComponent {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private resizeObserver?: ResizeObserver;\n\n /** Data points (numbers or objects) */\n readonly data = input<SparklineInputData>([]);\n\n /** Chart type: line, area, or bar */\n readonly type = input<SparklineType>('area');\n\n /** Visual color theme or custom hex code */\n readonly color = input<SparklineColorScheme>('primary');\n\n /** Automatically choose green/red based on first -> last delta */\n readonly autoColorTrend = input<boolean>(false);\n\n /** Smooth Bezier interpolation vs straight line */\n readonly smooth = input<boolean>(true);\n\n /** Stroke line width */\n readonly strokeWidth = input<number>(2);\n\n /** Marker dots display mode */\n readonly showMarkers = input<SparklineMarkerMode>('none');\n\n /** Marker circle radius */\n readonly markerRadius = input<number>(3.5);\n\n /** Optional reference horizontal baseline */\n readonly referenceValue = input<number | null>(null);\n\n /** Show interactive hover tooltip */\n readonly showTooltip = input<boolean>(true);\n\n /** Interactive mouse events enabled */\n readonly interactive = input<boolean>(true);\n\n /** Gap between bars for bar sparklines */\n readonly barGap = input<number>(3);\n\n /** Corner radius for bars */\n readonly barRadius = input<number>(2);\n\n /** Preset size */\n readonly size = input<SparklineSize>('md');\n\n /** Aspect ratio configuration (e.g. 'golden', 1.618, '2:1', '16:9') */\n readonly aspectRatio = input<SparklineAspectRatio | null>(null);\n\n /** Custom width override (e.g. '120px' or '100%') */\n readonly width = input<number | string | null>(null);\n\n /** Custom height override (e.g. '36px') */\n readonly height = input<number | string | null>(null);\n\n /** Explicit minimum value bounds */\n readonly min = input<number | null>(null);\n\n /** Explicit maximum value bounds */\n readonly max = input<number | null>(null);\n\n /** Custom accessible label */\n readonly ariaLabel = input<string | null>(null);\n\n /** Value formatter for tooltip */\n readonly valueFormatter = input<(val: number) => string>((val) => val.toLocaleString());\n\n /** Hover event emitter */\n readonly pointHover = output<SparklineHoverEvent | null>();\n\n /** Click event emitter */\n readonly pointClick = output<SparklineHoverEvent>();\n\n // Unique ID for SVG linear gradient IDs\n readonly gradientId = `talos-sparkline-grad-${++uniqueIdCounter}`;\n\n // Interactive hover state\n protected readonly hoveredPoint = signal<InternalPoint | null>(null);\n protected readonly isHovering = signal<boolean>(false);\n\n // Dynamic container dimensions for 1:1 SVG coordinate rendering (prevents non-uniform stretching)\n protected readonly containerWidth = signal<number>(120);\n protected readonly containerHeight = signal<number>(36);\n\n readonly svgWidth = computed(() => this.containerWidth());\n readonly svgHeight = computed(() => this.containerHeight());\n\n protected readonly padding = computed(() => {\n if (this.type() === 'bar') return 2;\n if (this.showMarkers() !== 'none' || this.interactive()) return 5;\n return 3;\n });\n\n constructor() {\n afterNextRender(() => {\n this.updateDimensions();\n if (typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const { width, height } = entry.contentRect;\n if (width > 0 && height > 0) {\n this.containerWidth.set(Math.round(width));\n this.containerHeight.set(Math.round(height));\n }\n }\n });\n this.resizeObserver.observe(this.elementRef.nativeElement);\n }\n });\n\n inject(DestroyRef).onDestroy(() => {\n this.resizeObserver?.disconnect();\n });\n }\n\n private updateDimensions(): void {\n const el = this.elementRef.nativeElement;\n const rect = el.getBoundingClientRect();\n if (rect.width > 0 && rect.height > 0) {\n this.containerWidth.set(Math.round(rect.width));\n this.containerHeight.set(Math.round(rect.height));\n } else {\n const defaultDims = DEFAULT_SIZE_DIMENSIONS[this.size()] || DEFAULT_SIZE_DIMENSIONS.md;\n this.containerWidth.set(defaultDims.width);\n this.containerHeight.set(defaultDims.height);\n }\n }\n\n /** Host styles */\n readonly hostWidth = computed(() => {\n const custom = this.width();\n if (custom !== null) return typeof custom === 'number' ? `${custom}px` : custom;\n return null;\n });\n\n readonly hostHeight = computed(() => {\n const custom = this.height();\n if (custom !== null) return typeof custom === 'number' ? `${custom}px` : custom;\n return null;\n });\n\n readonly computedAspectRatio = computed(() => {\n const ar = this.aspectRatio();\n if (ar === 'golden') return `${GOLDEN_RATIO} / 1`;\n if (typeof ar === 'number') return `${ar} / 1`;\n if (typeof ar === 'string') {\n if (ar.includes(':')) {\n const [w, h] = ar.split(':');\n return `${w.trim()} / ${h.trim()}`;\n }\n return ar;\n }\n return null;\n });\n\n /** Normalized points array */\n readonly normalizedPoints = computed<SparklinePoint[]>(() => {\n const raw = this.data();\n if (!raw || raw.length === 0) return [];\n return raw.map((item, idx) => {\n if (typeof item === 'number') {\n return { value: item };\n }\n return item;\n });\n });\n\n /** Determine effective color palette */\n readonly effectiveColor = computed(() => {\n if (this.autoColorTrend()) {\n const pts = this.normalizedPoints();\n if (pts.length >= 2) {\n const first = pts[0].value;\n const last = pts[pts.length - 1].value;\n if (last >= first) {\n return PRESET_PALETTES['success'];\n } else {\n return PRESET_PALETTES['danger'];\n }\n }\n }\n\n const c = this.color();\n if (PRESET_PALETTES[c]) {\n return PRESET_PALETTES[c];\n }\n // Custom hex/rgb\n return {\n stroke: c,\n fillStart: c.startsWith('#') ? `${c}40` : 'rgba(37, 99, 235, 0.3)',\n fillEnd: c.startsWith('#') ? `${c}00` : 'rgba(37, 99, 235, 0.0)'\n };\n });\n\n /** Min & Max calculation */\n readonly valueBounds = computed(() => {\n const pts = this.normalizedPoints();\n if (pts.length === 0) return { min: 0, max: 100, span: 100, rawMin: 0, rawMax: 100 };\n\n let calculatedMin = pts[0].value;\n let calculatedMax = pts[0].value;\n\n for (const p of pts) {\n if (p.value < calculatedMin) calculatedMin = p.value;\n if (p.value > calculatedMax) calculatedMax = p.value;\n }\n\n // Include reference value if set\n const ref = this.referenceValue();\n if (ref !== null) {\n if (ref < calculatedMin) calculatedMin = ref;\n if (ref > calculatedMax) calculatedMax = ref;\n }\n\n // Explicit override\n const explicitMin = this.min();\n const explicitMax = this.max();\n\n const finalMin = explicitMin !== null ? explicitMin : calculatedMin;\n const finalMax = explicitMax !== null ? explicitMax : calculatedMax;\n\n // Prevent divide by zero if constant value\n const span = finalMax === finalMin ? 1 : finalMax - finalMin;\n\n return { min: finalMin, max: finalMax, span, rawMin: calculatedMin, rawMax: calculatedMax };\n });\n\n /** Computed internal points with SVG coordinates */\n readonly internalPoints = computed<InternalPoint[]>(() => {\n const pts = this.normalizedPoints();\n if (pts.length === 0) return [];\n\n const { min, span, rawMin, rawMax } = this.valueBounds();\n const w = this.svgWidth();\n const h = this.svgHeight();\n const p = this.padding();\n const availableW = Math.max(1, w - p * 2);\n const availableH = Math.max(1, h - p * 2);\n\n const count = pts.length;\n const stepX = count > 1 ? availableW / (count - 1) : availableW / 2;\n\n return pts.map((pt, idx) => {\n const x = count === 1 ? w / 2 : p + idx * stepX;\n // Invert Y because SVG 0 is top\n const normalizedRatio = (pt.value - min) / span;\n const y = h - p - normalizedRatio * availableH;\n\n return {\n index: idx,\n value: pt.value,\n label: pt.label,\n date: pt.date,\n x,\n y,\n color: pt.color,\n isMin: pt.value === rawMin,\n isMax: pt.value === rawMax,\n isFirst: idx === 0,\n isLast: idx === count - 1\n };\n });\n });\n\n /** SVG Path line data */\n readonly linePath = computed<string>(() => {\n const pts = this.internalPoints();\n if (pts.length < 2) return '';\n\n if (!this.smooth()) {\n return pts.map((p, idx) => `${idx === 0 ? 'M' : 'L'} ${p.x.toFixed(2)} ${p.y.toFixed(2)}`).join(' ');\n }\n\n // Smooth Bezier Curve (Catmull-Rom or Monotone-like control points)\n let d = `M ${pts[0].x.toFixed(2)} ${pts[0].y.toFixed(2)}`;\n for (let i = 0; i < pts.length - 1; i++) {\n const p0 = i > 0 ? pts[i - 1] : pts[i];\n const p1 = pts[i];\n const p2 = pts[i + 1];\n const p3 = i < pts.length - 2 ? pts[i + 2] : p2;\n\n const cp1x = p1.x + (p2.x - p0.x) / 6;\n const cp1y = p1.y + (p2.y - p0.y) / 6;\n const cp2x = p2.x - (p3.x - p1.x) / 6;\n const cp2y = p2.y - (p3.y - p1.y) / 6;\n\n d += ` C ${cp1x.toFixed(2)} ${cp1y.toFixed(2)}, ${cp2x.toFixed(2)} ${cp2y.toFixed(2)}, ${p2.x.toFixed(2)} ${p2.y.toFixed(2)}`;\n }\n return d;\n });\n\n /** SVG Area path (closed polygon under curve) */\n readonly areaPath = computed<string>(() => {\n const line = this.linePath();\n const pts = this.internalPoints();\n if (!line || pts.length < 2) return '';\n\n const lastPt = pts[pts.length - 1];\n const firstPt = pts[0];\n const baselineY = this.svgHeight();\n\n return `${line} L ${lastPt.x.toFixed(2)} ${baselineY} L ${firstPt.x.toFixed(2)} ${baselineY} Z`;\n });\n\n /** Bar chart segments */\n readonly barSegments = computed<BarSegment[]>(() => {\n const pts = this.normalizedPoints();\n if (pts.length === 0) return [];\n\n const explicitMin = this.min();\n const explicitMax = this.max();\n const { rawMin, rawMax } = this.valueBounds();\n\n // For bar charts, default baseline is 0 unless min is explicitly provided\n const barMin = explicitMin !== null ? explicitMin : Math.min(0, rawMin);\n const barMax = explicitMax !== null ? explicitMax : Math.max(0, rawMax);\n const barSpan = barMax === barMin ? (barMax !== 0 ? Math.abs(barMax) : 1) : barMax - barMin;\n\n const w = this.svgWidth();\n const h = this.svgHeight();\n const p = this.padding();\n const gap = this.barGap();\n const count = pts.length;\n\n const availableW = Math.max(1, w - p * 2);\n const totalGaps = (count - 1) * gap;\n const barW = Math.max(2, (availableW - totalGaps) / count);\n const availableH = Math.max(1, h - p * 2);\n const baseColor = this.effectiveColor().stroke;\n\n // Calculate Y position of zero baseline\n const zeroRatio = Math.max(0, Math.min(1, (0 - barMin) / barSpan));\n const zeroY = h - p - zeroRatio * availableH;\n\n return pts.map((pt, idx) => {\n const x = p + idx * (barW + gap);\n const val = pt.value;\n\n let y: number;\n let barH: number;\n\n if (barMin >= 0) {\n // All positive (standard case)\n const ratio = Math.max(0, Math.min(1, (val - barMin) / barSpan));\n barH = Math.max(2, ratio * availableH);\n y = h - p - barH;\n } else if (barMax <= 0) {\n // All negative\n const ratio = Math.max(0, Math.min(1, Math.abs(val) / barSpan));\n barH = Math.max(2, ratio * availableH);\n y = p;\n } else {\n // Mixed positive & negative values around zero baseline\n if (val >= 0) {\n const ratio = Math.min(1, val / barSpan);\n barH = Math.max(2, ratio * availableH);\n y = zeroY - barH;\n } else {\n const ratio = Math.min(1, Math.abs(val) / barSpan);\n barH = Math.max(2, ratio * availableH);\n y = zeroY;\n }\n }\n\n return {\n index: idx,\n value: pt.value,\n label: pt.label,\n x,\n y,\n width: barW,\n height: barH,\n color: pt.color || baseColor\n };\n });\n });\n\n /** Highlight markers based on showMarkers input */\n readonly markersToRender = computed<InternalPoint[]>(() => {\n const mode = this.showMarkers();\n if (mode === 'none') return [];\n const pts = this.internalPoints();\n\n switch (mode) {\n case 'all':\n return pts;\n case 'endpoints':\n return pts.filter((p) => p.isFirst || p.isLast);\n case 'min-max':\n return pts.filter((p) => p.isMin || p.isMax);\n case 'last':\n return pts.length > 0 ? [pts[pts.length - 1]] : [];\n default:\n return [];\n }\n });\n\n /** Reference baseline Y coordinate */\n readonly referenceLineY = computed<number | null>(() => {\n const ref = this.referenceValue();\n if (ref === null) return null;\n\n const { min, span } = this.valueBounds();\n const h = this.svgHeight();\n const p = this.padding();\n const availableH = Math.max(1, h - p * 2);\n const ratio = (ref - min) / span;\n return h - p - ratio * availableH;\n });\n\n /** Aria label for accessibility */\n readonly computedAriaLabel = computed(() => {\n const custom = this.ariaLabel();\n if (custom) return custom;\n\n const pts = this.normalizedPoints();\n if (pts.length === 0) return 'Empty sparkline';\n const first = pts[0].value;\n const last = pts[pts.length - 1].value;\n const delta = last - first;\n const direction = delta >= 0 ? 'increased' : 'decreased';\n return `Sparkline trend: ${first} to ${last} (${direction} by ${Math.abs(delta).toFixed(1)})`;\n });\n\n /** Handle mouse move for interactive hover tracking */\n protected onMouseMove(event: MouseEvent): void {\n if (!this.interactive()) return;\n\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n const mouseX = event.clientX - rect.left;\n\n if (this.type() === 'bar') {\n const bars = this.barSegments();\n if (bars.length === 0) return;\n\n let nearest = bars[0];\n let minDistance = Math.abs(bars[0].x + bars[0].width / 2 - mouseX);\n\n for (let i = 1; i < bars.length; i++) {\n const centerX = bars[i].x + bars[i].width / 2;\n const dist = Math.abs(centerX - mouseX);\n if (dist < minDistance) {\n minDistance = dist;\n nearest = bars[i];\n }\n }\n\n const point: InternalPoint = {\n index: nearest.index,\n value: nearest.value,\n label: nearest.label,\n x: Math.round(nearest.x + nearest.width / 2),\n y: nearest.y\n };\n\n this.hoveredPoint.set(point);\n this.isHovering.set(true);\n\n this.pointHover.emit({\n index: nearest.index,\n value: nearest.value,\n label: nearest.label,\n x: point.x,\n y: point.y\n });\n return;\n }\n\n const pts = this.internalPoints();\n if (pts.length === 0) return;\n\n // Find nearest point based on direct pixel coordinate\n let nearest = pts[0];\n let minDistance = Math.abs(pts[0].x - mouseX);\n\n for (let i = 1; i < pts.length; i++) {\n const dist = Math.abs(pts[i].x - mouseX);\n if (dist < minDistance) {\n minDistance = dist;\n nearest = pts[i];\n }\n }\n\n this.hoveredPoint.set(nearest);\n this.isHovering.set(true);\n\n this.pointHover.emit({\n index: nearest.index,\n value: nearest.value,\n label: nearest.label,\n x: nearest.x,\n y: nearest.y\n });\n }\n\n /** Handle mouse leave */\n protected onMouseLeave(): void {\n if (!this.interactive()) return;\n this.hoveredPoint.set(null);\n this.isHovering.set(false);\n this.pointHover.emit(null);\n }\n\n /** Handle point click */\n protected onPointClick(point: InternalPoint | BarSegment): void {\n const x = 'width' in point ? Math.round(point.x + point.width / 2) : ('x' in point ? point.x : 0);\n this.pointClick.emit({\n index: point.index,\n value: point.value,\n label: point.label,\n x,\n y: 'y' in point ? point.y : 0\n });\n }\n}\n","<svg\n class=\"talos-sparkline-svg\"\n [attr.viewBox]=\"'0 0 ' + svgWidth() + ' ' + svgHeight()\"\n (mousemove)=\"onMouseMove($event)\"\n (mouseleave)=\"onMouseLeave()\"\n aria-hidden=\"true\"\n>\n <defs>\n <linearGradient [id]=\"gradientId\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" [attr.stop-color]=\"effectiveColor().fillStart\" />\n <stop offset=\"100%\" [attr.stop-color]=\"effectiveColor().fillEnd\" />\n </linearGradient>\n </defs>\n\n <!-- Reference Baseline (if provided) -->\n @if (referenceLineY() !== null) {\n <line\n class=\"talos-sparkline-reference-line\"\n [attr.x1]=\"0\"\n [attr.y1]=\"referenceLineY()\"\n [attr.x2]=\"svgWidth()\"\n [attr.y2]=\"referenceLineY()\"\n />\n }\n\n <!-- Chart Type: Area / Line -->\n @if (type() === 'area' || type() === 'line') {\n @if (type() === 'area' && areaPath()) {\n <path\n class=\"talos-sparkline-area\"\n [attr.d]=\"areaPath()\"\n [attr.fill]=\"'url(#' + gradientId + ')'\"\n />\n }\n\n @if (linePath()) {\n <path\n class=\"talos-sparkline-line\"\n [attr.d]=\"linePath()\"\n [attr.stroke]=\"effectiveColor().stroke\"\n [attr.stroke-width]=\"strokeWidth()\"\n fill=\"none\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n }\n }\n\n <!-- Chart Type: Bar -->\n @if (type() === 'bar') {\n @for (bar of barSegments(); track bar.index) {\n <rect\n class=\"talos-sparkline-bar\"\n [class.talos-sparkline-bar-hovered]=\"isHovering() && hoveredPoint()?.index === bar.index\"\n [attr.x]=\"bar.x\"\n [attr.y]=\"bar.y\"\n [attr.width]=\"bar.width\"\n [attr.height]=\"bar.height\"\n [attr.rx]=\"barRadius()\"\n [attr.ry]=\"barRadius()\"\n [attr.fill]=\"bar.color\"\n (click)=\"onPointClick(bar)\"\n />\n }\n }\n\n <!-- Highlight Markers -->\n @for (marker of markersToRender(); track marker.index) {\n <circle\n class=\"talos-sparkline-marker\"\n [attr.cx]=\"marker.x\"\n [attr.cy]=\"marker.y\"\n [attr.r]=\"markerRadius()\"\n [attr.fill]=\"marker.color || effectiveColor().stroke\"\n [attr.stroke]=\"'#ffffff'\"\n [attr.stroke-width]=\"1.5\"\n (click)=\"onPointClick(marker)\"\n />\n }\n\n <!-- Interactive Hover Crosshair / Cursor Dot (Line/Area only) -->\n @if (type() !== 'bar' && isHovering() && hoveredPoint(); as pt) {\n <line\n class=\"talos-sparkline-cursor-line\"\n [attr.x1]=\"pt.x\"\n [attr.y1]=\"0\"\n [attr.x2]=\"pt.x\"\n [attr.y2]=\"svgHeight()\"\n />\n <circle\n class=\"talos-sparkline-hover-dot-outer\"\n [attr.cx]=\"pt.x\"\n [attr.cy]=\"pt.y\"\n [attr.r]=\"markerRadius() + 2.5\"\n [attr.fill]=\"effectiveColor().stroke\"\n opacity=\"0.25\"\n />\n <circle\n class=\"talos-sparkline-hover-dot\"\n [attr.cx]=\"pt.x\"\n [attr.cy]=\"pt.y\"\n [attr.r]=\"markerRadius() + 0.5\"\n [attr.fill]=\"effectiveColor().stroke\"\n stroke=\"#ffffff\"\n [attr.stroke-width]=\"1.5\"\n />\n }\n</svg>\n\n<!-- Floating Tooltip on Hover -->\n@if (showTooltip() && isHovering() && hoveredPoint(); as pt) {\n <div\n class=\"talos-sparkline-tooltip\"\n [style.left.px]=\"pt.x\"\n >\n @if (pt.label) {\n <span class=\"talos-sparkline-tooltip-label\">{{ pt.label }}</span>\n }\n <span class=\"talos-sparkline-tooltip-value\">{{ valueFormatter()(pt.value) }}</span>\n </div>\n}\n","import { NgModule } from '@angular/core';\nimport { TalosSparklineComponent } from './sparkline.component';\n\n@NgModule({\n imports: [TalosSparklineComponent],\n exports: [TalosSparklineComponent]\n})\nexport class TalosSparklineModule {}\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 * Types and interfaces for TalosMiniDonutComponent\n */\n\nexport type MiniDonutSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'custom';\n\nexport type MiniDonutLineCap = 'round' | 'butt';\n\nexport type MiniDonutColorScheme =\n | 'primary'\n | 'success'\n | 'danger'\n | 'warning'\n | 'info'\n | 'violet'\n | 'emerald'\n | 'rose'\n | 'amber'\n | 'cyan'\n | 'slate'\n | string;\n\nexport interface MiniDonutSegment {\n value: number;\n color?: string;\n label?: string;\n tooltip?: string;\n id?: string;\n}\n\nexport interface ComputedDonutSegment {\n index: number;\n value: number;\n percentage: number;\n color: string;\n label?: string;\n tooltip?: string;\n dashArray: string;\n dashOffset: number;\n pathLength: number;\n}\n","import { Component, computed, input, output } from '@angular/core';\nimport {\n ComputedDonutSegment,\n MiniDonutColorScheme,\n MiniDonutLineCap,\n MiniDonutSegment,\n MiniDonutSize\n} from './mini-donut.types';\n\nconst PRESET_COLORS: Record<string, string> = {\n primary: '#2563eb',\n blue: '#3b82f6',\n success: '#16a34a',\n emerald: '#10b981',\n danger: '#ef4444',\n rose: '#f43f5e',\n warning: '#f59e0b',\n amber: '#d97706',\n info: '#0284c7',\n cyan: '#06b6d4',\n violet: '#8b5cf6',\n purple: '#9333ea',\n pink: '#ec4899',\n slate: '#64748b'\n};\n\nconst DEFAULT_PALETTE = ['#3b82f6', '#10b981', '#8b5cf6', '#f59e0b', '#ec4899', '#06b6d4'];\n\nconst SIZE_PRESETS: Record<Exclude<MiniDonutSize, 'custom'>, { px: number; stroke: number }> = {\n xs: { px: 24, stroke: 3 },\n sm: { px: 32, stroke: 4 },\n md: { px: 48, stroke: 5 },\n lg: { px: 64, stroke: 6 },\n xl: { px: 88, stroke: 8 }\n};\n\n@Component({\n selector: 'talos-mini-donut',\n templateUrl: './mini-donut.component.html',\n styleUrl: './mini-donut.component.scss',\n host: {\n 'class': 'talos-mini-donut',\n '[class.talos-mini-donut-xs]': 'size() === \"xs\"',\n '[class.talos-mini-donut-sm]': 'size() === \"sm\"',\n '[class.talos-mini-donut-md]': 'size() === \"md\"',\n '[class.talos-mini-donut-lg]': 'size() === \"lg\"',\n '[class.talos-mini-donut-xl]': 'size() === \"xl\"',\n '[class.talos-mini-donut-animated]': 'animated()',\n '[style.width.px]': 'pixelDimension()',\n '[style.height.px]': 'pixelDimension()',\n '[attr.role]': '\"meter\"',\n '[attr.aria-valuenow]': 'currentAriaValue()',\n '[attr.aria-valuemin]': 'min()',\n '[attr.aria-valuemax]': 'max()',\n '[attr.aria-label]': 'computedAriaLabel()'\n }\n})\nexport class TalosMiniDonutComponent {\n /** Single progress value (e.g. 75 or 450) */\n readonly value = input<number | null>(null);\n\n /** Minimum value for single progress mode */\n readonly min = input<number>(0);\n\n /** Maximum value for single progress mode */\n readonly max = input<number>(100);\n\n /** Multi-segment dataset */\n readonly segments = input<MiniDonutSegment[] | null>(null);\n\n /** Size preset */\n readonly size = input<MiniDonutSize>('md');\n\n /** Custom dimension override in px */\n readonly dimension = input<number | null>(null);\n\n /** Custom stroke width override */\n readonly strokeWidth = input<number | null>(null);\n\n /** Color scheme or hex string for single progress mode */\n readonly color = input<MiniDonutColorScheme>('primary');\n\n /** Background track ring color */\n readonly trackColor = input<string | null>(null);\n\n /** Show background track */\n readonly showTrack = input<boolean>(true);\n\n /** SVG stroke linecap */\n readonly lineCap = input<MiniDonutLineCap>('round');\n\n /** Gap spacing between segments in multi-segment mode (in px) */\n readonly gap = input<number>(2);\n\n /** Show built-in center percentage or text */\n readonly showCenterText = input<boolean>(false);\n\n /** Explicit center primary text override */\n readonly centerText = input<string | null>(null);\n\n /** Secondary center subtext */\n readonly centerSubtext = input<string | null>(null);\n\n /** Enable smooth CSS animation */\n readonly animated = input<boolean>(true);\n\n /** Custom ARIA label */\n readonly ariaLabel = input<string | null>(null);\n\n /** Segment click event */\n readonly segmentClick = output<MiniDonutSegment>();\n\n // Internal SVG coordinate constants (viewBox is 0 0 100 100)\n protected readonly svgSize = 100;\n protected readonly center = 50;\n\n /** Computed pixel dimension */\n readonly pixelDimension = computed(() => {\n const custom = this.dimension();\n if (custom !== null) return custom;\n const s = this.size();\n return s !== 'custom' ? SIZE_PRESETS[s].px : 48;\n });\n\n /** Computed stroke width in SVG coordinates */\n readonly computedStrokeWidth = computed(() => {\n const custom = this.strokeWidth();\n if (custom !== null) {\n // Scale according to ratio with pixel dimension\n const px = this.pixelDimension();\n return (custom / px) * this.svgSize;\n }\n const s = this.size();\n const preset = s !== 'custom' ? SIZE_PRESETS[s] : SIZE_PRESETS['md'];\n return (preset.stroke / preset.px) * this.svgSize;\n });\n\n /** Radius in SVG coordinates */\n readonly radius = computed(() => {\n const sw = this.computedStrokeWidth();\n return (this.svgSize - sw) / 2;\n });\n\n /** Circumference */\n readonly circumference = computed(() => {\n return 2 * Math.PI * this.radius();\n });\n\n /** Effective single progress color */\n readonly effectiveColor = computed(() => {\n const c = this.color();\n return PRESET_COLORS[c] || c;\n });\n\n /** Computed percentage for single progress mode */\n readonly singlePercentage = computed(() => {\n const val = this.value();\n if (val === null) return 0;\n const minVal = this.min();\n const maxVal = this.max();\n if (maxVal <= minVal) return 0;\n const pct = ((val - minVal) / (maxVal - minVal)) * 100;\n return Math.min(100, Math.max(0, pct));\n });\n\n /** Single progress dash offset/array */\n readonly singleDashArray = computed(() => {\n const circ = this.circumference();\n const pct = this.singlePercentage();\n const filled = (pct / 100) * circ;\n return `${filled} ${circ}`;\n });\n\n /** Computed multi-segment values with offsets */\n readonly computedSegments = computed<ComputedDonutSegment[]>(() => {\n const segs = this.segments();\n if (!segs || segs.length === 0) return [];\n\n const circ = this.circumference();\n const totalVal = segs.reduce((acc, s) => acc + Math.max(0, s.value), 0);\n if (totalVal <= 0) return [];\n\n const gapPx = this.gap();\n const count = segs.length;\n const totalGap = count > 1 ? count * gapPx : 0;\n const availableCirc = Math.max(0, circ - totalGap);\n\n let accumulatedOffset = 0;\n\n return segs.map((seg, idx) => {\n const pct = (Math.max(0, seg.value) / totalVal) * 100;\n const length = (Math.max(0, seg.value) / totalVal) * availableCirc;\n const color = seg.color ? (PRESET_COLORS[seg.color] || seg.color) : DEFAULT_PALETTE[idx % DEFAULT_PALETTE.length];\n\n const dashArray = `${length} ${circ}`;\n // Dashoffset starts at accumulatedOffset (negative because SVG stroke-dashoffset clockwise)\n const dashOffset = -accumulatedOffset;\n\n accumulatedOffset += length + (count > 1 ? gapPx : 0);\n\n return {\n index: idx,\n value: seg.value,\n percentage: pct,\n color,\n label: seg.label,\n tooltip: seg.tooltip,\n dashArray,\n dashOffset,\n pathLength: circ\n };\n });\n });\n\n /** Display text inside center */\n readonly computedCenterText = computed(() => {\n const explicit = this.centerText();\n if (explicit !== null) return explicit;\n if (this.value() !== null) {\n return `${Math.round(this.singlePercentage())}%`;\n }\n return '';\n });\n\n /** ARIA attributes */\n readonly currentAriaValue = computed(() => {\n if (this.value() !== null) return this.value();\n const segs = this.segments();\n if (segs && segs.length > 0) return segs.reduce((a, b) => a + b.value, 0);\n return 0;\n });\n\n readonly computedAriaLabel = computed(() => {\n const custom = this.ariaLabel();\n if (custom) return custom;\n if (this.value() !== null) {\n return `Progress: ${Math.round(this.singlePercentage())}%`;\n }\n const segs = this.segments();\n if (segs && segs.length > 0) {\n return `Donut chart with ${segs.length} categories`;\n }\n return 'Mini donut chart';\n });\n\n protected onSegmentClick(segIndex: number): void {\n const rawSegs = this.segments();\n if (rawSegs && rawSegs[segIndex]) {\n this.segmentClick.emit(rawSegs[segIndex]);\n }\n }\n}\n","<svg\n class=\"talos-mini-donut-svg\"\n [attr.viewBox]=\"'0 0 ' + svgSize + ' ' + svgSize\"\n aria-hidden=\"true\"\n>\n <!-- Background Track -->\n @if (showTrack()) {\n <circle\n class=\"talos-mini-donut-track\"\n [attr.cx]=\"center\"\n [attr.cy]=\"center\"\n [attr.r]=\"radius()\"\n [attr.stroke-width]=\"computedStrokeWidth()\"\n [attr.stroke]=\"trackColor() || 'var(--talos-border-color, #e2e8f0)'\"\n fill=\"none\"\n />\n }\n\n <!-- Single Value Progress Mode -->\n @if (segments() === null && value() !== null) {\n <circle\n class=\"talos-mini-donut-progress\"\n [attr.cx]=\"center\"\n [attr.cy]=\"center\"\n [attr.r]=\"radius()\"\n [attr.stroke-width]=\"computedStrokeWidth()\"\n [attr.stroke]=\"effectiveColor()\"\n [attr.stroke-dasharray]=\"singleDashArray()\"\n [attr.stroke-linecap]=\"lineCap()\"\n fill=\"none\"\n />\n }\n\n <!-- Multi-Segment Mode -->\n @if (segments() !== null) {\n @for (seg of computedSegments(); track seg.index) {\n <circle\n class=\"talos-mini-donut-segment\"\n [attr.cx]=\"center\"\n [attr.cy]=\"center\"\n [attr.r]=\"radius()\"\n [attr.stroke-width]=\"computedStrokeWidth()\"\n [attr.stroke]=\"seg.color\"\n [attr.stroke-dasharray]=\"seg.dashArray\"\n [attr.stroke-dashoffset]=\"seg.dashOffset\"\n [attr.stroke-linecap]=\"lineCap()\"\n fill=\"none\"\n (click)=\"onSegmentClick(seg.index)\"\n />\n }\n }\n</svg>\n\n<!-- Center Content Slot or Built-in Text -->\n<div class=\"talos-mini-donut-center\">\n <ng-content>\n @if (showCenterText() && computedCenterText()) {\n <span class=\"talos-mini-donut-center-text\">{{ computedCenterText() }}</span>\n @if (centerSubtext()) {\n <span class=\"talos-mini-donut-center-subtext\">{{ centerSubtext() }}</span>\n }\n }\n </ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { TalosMiniDonutComponent } from './mini-donut.component';\n\n@NgModule({\n imports: [TalosMiniDonutComponent],\n exports: [TalosMiniDonutComponent]\n})\nexport class TalosMiniDonutModule {}\n","/**\n * Types and interfaces for TalosMiniGaugeComponent\n */\n\nexport type MiniGaugeType = 'semi-circle' | 'arch' | 'linear';\n\nexport type GaugeSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'responsive' | 'custom';\n\nexport type MiniGaugeIndicator = 'arc' | 'needle' | 'dot';\n\nexport interface GaugeThreshold {\n from: number;\n to: number;\n color: string;\n label?: string;\n}\n\nexport interface GaugeMarker {\n value: number;\n color?: string;\n label?: string;\n shape?: 'line' | 'dot' | 'triangle';\n}\n","import { Component, computed, input } from '@angular/core';\nimport {\n GaugeSize,\n GaugeThreshold,\n MiniGaugeIndicator,\n MiniGaugeType\n} from './mini-gauge.types';\n\nconst PRESET_COLORS: Record<string, string> = {\n primary: '#2563eb',\n blue: '#3b82f6',\n success: '#16a34a',\n emerald: '#10b981',\n danger: '#ef4444',\n rose: '#f43f5e',\n warning: '#f59e0b',\n amber: '#d97706',\n info: '#0284c7',\n cyan: '#06b6d4',\n violet: '#8b5cf6',\n slate: '#64748b'\n};\n\nconst DEFAULT_THRESHOLDS: GaugeThreshold[] = [\n { from: 0, to: 60, color: '#10b981' },\n { from: 60, to: 85, color: '#f59e0b' },\n { from: 85, to: 100, color: '#ef4444' }\n];\n\ninterface ArcSegment {\n path: string;\n color: string;\n from: number;\n to: number;\n isFirst: boolean;\n isLast: boolean;\n}\n\n@Component({\n selector: 'talos-mini-gauge',\n templateUrl: './mini-gauge.component.html',\n styleUrl: './mini-gauge.component.scss',\n host: {\n 'class': 'talos-mini-gauge',\n '[class.talos-gauge-semi-circle]': 'type() === \"semi-circle\"',\n '[class.talos-gauge-arch]': 'type() === \"arch\"',\n '[class.talos-gauge-linear]': 'type() === \"linear\"',\n '[class.talos-gauge-xs]': 'size() === \"xs\"',\n '[class.talos-gauge-sm]': 'size() === \"sm\"',\n '[class.talos-gauge-md]': 'size() === \"md\"',\n '[class.talos-gauge-lg]': 'size() === \"lg\"',\n '[class.talos-gauge-xl]': 'size() === \"xl\"',\n '[class.talos-gauge-responsive]': 'size() === \"responsive\"',\n '[class.talos-gauge-animated]': 'animated()',\n '[style.width]': 'hostWidth()',\n '[style.height]': 'hostHeight()',\n '[attr.role]': '\"meter\"',\n '[attr.aria-valuenow]': 'value()',\n '[attr.aria-valuemin]': 'min()',\n '[attr.aria-valuemax]': 'max()',\n '[attr.aria-label]': 'computedAriaLabel()'\n }\n})\nexport class TalosMiniGaugeComponent {\n /** Current gauge value */\n readonly value = input<number>(0);\n\n /** Minimum gauge scale */\n readonly min = input<number>(0);\n\n /** Maximum gauge scale */\n readonly max = input<number>(100);\n\n /** Optional target benchmark marker value */\n readonly target = input<number | null>(null);\n\n /** Gauge rendering style */\n readonly type = input<MiniGaugeType>('semi-circle');\n\n /** Value indicator pointer style: arc fill, needle, or dot */\n readonly indicator = input<MiniGaugeIndicator>('arc');\n\n /** Custom colored threshold zones */\n readonly thresholds = input<GaugeThreshold[] | null>(null);\n\n /** Base color or palette when no thresholds are used */\n readonly color = input<string>('primary');\n\n /** Background track color */\n readonly trackColor = input<string | null>(null);\n\n /** Preset size */\n readonly size = input<GaugeSize>('md');\n\n /** Custom width */\n readonly width = input<number | string | null>(null);\n\n /** Custom height */\n readonly height = input<number | string | null>(null);\n\n /** Arc stroke width */\n readonly strokeWidth = input<number>(8);\n\n /** Arc stroke linecap style ('round' | 'butt') */\n readonly lineCap = input<'round' | 'butt'>('round');\n\n /** Show numerical value readout in center/bottom */\n readonly showValue = input<boolean>(true);\n\n /** Show min and max numbers at gauge edges */\n readonly showMinMax = input<boolean>(false);\n\n /** Unit label string (e.g. '%', 'ms', 'rpm') */\n readonly unit = input<string>('');\n\n /** Value formatter */\n readonly valueFormatter = input<(val: number) => string>((val) => val.toLocaleString());\n\n /** Custom ARIA label */\n readonly ariaLabel = input<string | null>(null);\n\n /** Enable animation */\n readonly animated = input<boolean>(true);\n\n /** SVG Coordinate constants */\n protected readonly cx = 50;\n protected readonly cySemi = 44;\n protected readonly cyArch = 42;\n protected readonly radius = 36;\n\n /** Needle length tailored per circular gauge type */\n readonly needleLength = computed(() => {\n return this.type() === 'semi-circle' ? 30 : 26;\n });\n\n readonly hostWidth = computed(() => {\n const custom = this.width();\n if (custom !== null) return typeof custom === 'number' ? `${custom}px` : custom;\n if (this.size() === 'responsive') return '100%';\n return null;\n });\n\n readonly hostHeight = computed(() => {\n const custom = this.height();\n if (custom !== null) return typeof custom === 'number' ? `${custom}px` : custom;\n return null;\n });\n\n /** Clamped and normalized ratio [0..1] */\n readonly normalizedRatio = computed(() => {\n const val = this.value();\n const minVal = this.min();\n const maxVal = this.max();\n if (maxVal <= minVal) return 0;\n return Math.min(1, Math.max(0, (val - minVal) / (maxVal - minVal)));\n });\n\n /** Target ratio [0..1] */\n readonly targetRatio = computed(() => {\n const tgt = this.target();\n if (tgt === null) return null;\n const minVal = this.min();\n const maxVal = this.max();\n if (maxVal <= minVal) return 0;\n return Math.min(1, Math.max(0, (tgt - minVal) / (maxVal - minVal)));\n });\n\n /** ViewBox string based on gauge type */\n readonly viewBox = computed(() => {\n const t = this.type();\n if (t === 'semi-circle') return '0 0 100 50';\n if (t === 'arch') return '0 0 100 66';\n return '0 0 100 14';\n });\n\n /** Start & End angles in degrees for circular gauge types */\n readonly angleSpan = computed(() => {\n const t = this.type();\n if (t === 'semi-circle') {\n return { start: 180, end: 0, total: 180 };\n }\n // Arch: 240 degree arc from 210° (bottom-left) to -30° (bottom-right)\n return { start: 210, end: -30, total: 240 };\n });\n\n /** Current value angle in degrees */\n readonly currentAngle = computed(() => {\n const { start, total } = this.angleSpan();\n const ratio = this.normalizedRatio();\n return start - ratio * total;\n });\n\n /** Needle transform for needle indicator */\n readonly needleTransform = computed(() => {\n const t = this.type();\n const cy = t === 'semi-circle' ? this.cySemi : this.cyArch;\n const angle = this.currentAngle();\n // SVG rotation: angle 0 is right, 180 is left. Standard SVG rotate origin is center.\n const svgRotation = 180 - angle;\n return `rotate(${svgRotation} ${this.cx} ${cy})`;\n });\n\n /** Target marker position & rotation */\n readonly targetMarkerProps = computed(() => {\n const ratio = this.targetRatio();\n if (ratio === null) return null;\n\n const t = this.type();\n if (t === 'linear') {\n return { x: ratio * 100, y: 0, rotation: 0 };\n }\n\n const { start, total } = this.angleSpan();\n const angle = start - ratio * total;\n const cy = t === 'semi-circle' ? this.cySemi : this.cyArch;\n const rad = (angle * Math.PI) / 180;\n const r = this.radius;\n\n const x = this.cx + r * Math.cos(rad);\n const y = cy - r * Math.sin(rad);\n\n return { x, y, angle };\n });\n\n /** Dot transform for dot indicator (rotates along the circular arc path) */\n readonly dotTransform = computed(() => {\n const t = this.type();\n const cy = t === 'semi-circle' ? this.cySemi : this.cyArch;\n const angle = this.currentAngle();\n // SVG rotation: angle 0 is right, 180 is left. Standard SVG rotate origin is center.\n const svgRotation = 180 - angle;\n return `rotate(${svgRotation} ${this.cx} ${cy})`;\n });\n\n /** Dot indicator position */\n readonly dotIndicatorPosition = computed(() => {\n const t = this.type();\n const cy = t === 'semi-circle' ? this.cySemi : this.cyArch;\n const angle = this.currentAngle();\n const rad = (angle * Math.PI) / 180;\n const r = this.radius;\n\n const x = this.cx + r * Math.cos(rad);\n const y = cy - r * Math.sin(rad);\n return { x, y };\n });\n\n /** Base track SVG path */\n readonly trackPath = computed(() => {\n const t = this.type();\n if (t === 'linear') return '';\n\n const { start, end } = this.angleSpan();\n const cy = t === 'semi-circle' ? this.cySemi : this.cyArch;\n return this.createArcSvgPath(this.cx, cy, this.radius, start, end);\n });\n\n /** Active value arc SVG path */\n readonly valueArcPath = computed(() => {\n const t = this.type();\n if (t === 'linear') return '';\n\n const { start } = this.angleSpan();\n const curAngle = this.currentAngle();\n const cy = t === 'semi-circle' ? this.cySemi : this.cyArch;\n\n // Minimum small arc to prevent SVG zero-length render glitches\n const safeEndAngle = Math.abs(curAngle - start) < 0.1 ? start - 0.1 : curAngle;\n return this.createArcSvgPath(this.cx, cy, this.radius, start, safeEndAngle);\n });\n\n /** Active color based on thresholds or color input */\n readonly activeColor = computed(() => {\n const val = this.value();\n const ths = this.thresholds();\n\n if (ths && ths.length > 0) {\n for (const th of ths) {\n if (val >= th.from && val <= th.to) {\n return PRESET_COLORS[th.color] || th.color;\n }\n }\n return PRESET_COLORS[ths[ths.length - 1].color] || ths[ths.length - 1].color;\n }\n\n const c = this.color();\n return PRESET_COLORS[c] || c;\n });\n\n /** Threshold band segments */\n readonly thresholdSegments = computed<ArcSegment[]>(() => {\n const ths = this.thresholds();\n if (!ths || ths.length === 0) return [];\n\n const t = this.type();\n const minVal = this.min();\n const maxVal = this.max();\n const span = maxVal - minVal;\n if (span <= 0) return [];\n\n const { start, total } = this.angleSpan();\n const cy = t === 'semi-circle' ? this.cySemi : this.cyArch;\n\n return ths.map((th, idx) => {\n const fromRatio = Math.min(1, Math.max(0, (th.from - minVal) / span));\n const toRatio = Math.min(1, Math.max(0, (th.to - minVal) / span));\n\n const angleStart = start - fromRatio * total;\n const angleEnd = start - toRatio * total;\n\n const path = t !== 'linear' ? this.createArcSvgPath(this.cx, cy, this.radius, angleStart, angleEnd) : '';\n const color = PRESET_COLORS[th.color] || th.color;\n\n return {\n path,\n color,\n from: th.from,\n to: th.to,\n isFirst: idx === 0,\n isLast: idx === ths.length - 1\n };\n });\n });\n\n readonly computedAriaLabel = computed(() => {\n const custom = this.ariaLabel();\n if (custom) return custom;\n const u = this.unit() ? ` ${this.unit()}` : '';\n return `Gauge: ${this.valueFormatter()(this.value())}${u} (Range ${this.min()} to ${this.max()})`;\n });\n\n /** Helper to generate SVG Arc Path 'M x1 y1 A r r 0 largeArc sweep x2 y2' */\n private createArcSvgPath(\n cx: number,\n cy: number,\n r: number,\n startAngleDeg: number,\n endAngleDeg: number\n ): string {\n const startRad = (startAngleDeg * Math.PI) / 180;\n const endRad = (endAngleDeg * Math.PI) / 180;\n\n const x1 = cx + r * Math.cos(startRad);\n const y1 = cy - r * Math.sin(startRad);\n\n const x2 = cx + r * Math.cos(endRad);\n const y2 = cy - r * Math.sin(endRad);\n\n // Delta angle in degrees clockwise\n const deltaAngle = startAngleDeg - endAngleDeg;\n const largeArcFlag = deltaAngle > 180 ? 1 : 0;\n const sweepFlag = 1; // clockwise downwards\n\n return `M ${x1.toFixed(2)} ${y1.toFixed(2)} A ${r} ${r} 0 ${largeArcFlag} ${sweepFlag} ${x2.toFixed(2)} ${y2.toFixed(2)}`;\n }\n}\n","<svg\n class=\"talos-mini-gauge-svg\"\n [attr.viewBox]=\"viewBox()\"\n aria-hidden=\"true\"\n>\n <!-- Circular Types: Semi-circle and Arch -->\n @if (type() === 'semi-circle' || type() === 'arch') {\n <!-- Full Background Track (if no thresholds or as base) -->\n @if (thresholds() === null) {\n <path\n class=\"talos-gauge-track\"\n [attr.d]=\"trackPath()\"\n [attr.stroke]=\"trackColor() || 'var(--talos-border-color, #e2e8f0)'\"\n [attr.stroke-width]=\"strokeWidth()\"\n fill=\"none\"\n [attr.stroke-linecap]=\"lineCap()\"\n />\n }\n\n <!-- Colored Threshold Bands with curved outer ends -->\n @if (thresholds() !== null) {\n @for (band of thresholdSegments(); track band.from) {\n <path\n class=\"talos-gauge-threshold-band\"\n [attr.d]=\"band.path\"\n [attr.stroke]=\"band.color\"\n [attr.stroke-width]=\"strokeWidth()\"\n fill=\"none\"\n [attr.stroke-linecap]=\"lineCap() === 'round' && (band.isFirst || band.isLast) ? 'round' : 'butt'\"\n />\n }\n }\n\n <!-- Value Indicator: Arc Fill -->\n @if (indicator() === 'arc' && thresholds() === null) {\n <path\n class=\"talos-gauge-value-arc\"\n [attr.d]=\"valueArcPath()\"\n [attr.stroke]=\"activeColor()\"\n [attr.stroke-width]=\"strokeWidth()\"\n fill=\"none\"\n [attr.stroke-linecap]=\"lineCap()\"\n />\n }\n\n <!-- Value Indicator: Needle -->\n @if (indicator() === 'needle') {\n <g\n class=\"talos-gauge-needle-group\"\n [attr.transform]=\"needleTransform()\"\n >\n <line\n [attr.x1]=\"cx\"\n [attr.y1]=\"type() === 'semi-circle' ? cySemi : cyArch\"\n [attr.x2]=\"cx - needleLength()\"\n [attr.y2]=\"type() === 'semi-circle' ? cySemi : cyArch\"\n [attr.stroke]=\"activeColor()\"\n stroke-width=\"2.5\"\n stroke-linecap=\"round\"\n />\n <circle\n [attr.cx]=\"cx\"\n [attr.cy]=\"type() === 'semi-circle' ? cySemi : cyArch\"\n r=\"4\"\n [attr.fill]=\"activeColor()\"\n stroke=\"#ffffff\"\n stroke-width=\"1.5\"\n />\n <circle\n [attr.cx]=\"cx\"\n [attr.cy]=\"type() === 'semi-circle' ? cySemi : cyArch\"\n r=\"1.5\"\n fill=\"#ffffff\"\n />\n </g>\n }\n\n <!-- Value Indicator: Dot Glow Marker -->\n @if (indicator() === 'dot') {\n <g\n class=\"talos-gauge-dot-group\"\n [attr.transform]=\"dotTransform()\"\n >\n <circle\n class=\"talos-gauge-dot-outer\"\n [attr.cx]=\"cx - radius\"\n [attr.cy]=\"type() === 'semi-circle' ? cySemi : cyArch\"\n r=\"6\"\n [attr.fill]=\"activeColor()\"\n opacity=\"0.3\"\n />\n <circle\n class=\"talos-gauge-dot\"\n [attr.cx]=\"cx - radius\"\n [attr.cy]=\"type() === 'semi-circle' ? cySemi : cyArch\"\n r=\"3.5\"\n [attr.fill]=\"activeColor()\"\n stroke=\"#ffffff\"\n stroke-width=\"1.5\"\n />\n </g>\n }\n\n <!-- Target Marker Tick -->\n @if (targetMarkerProps(); as tgt) {\n <circle\n class=\"talos-gauge-target-tick\"\n [attr.cx]=\"tgt.x\"\n [attr.cy]=\"tgt.y\"\n r=\"2.5\"\n fill=\"var(--talos-text-color, #0f172a)\"\n stroke=\"#ffffff\"\n stroke-width=\"1\"\n />\n }\n }\n\n <!-- Linear / Bullet Type -->\n @if (type() === 'linear') {\n <!-- Linear Track -->\n <rect\n class=\"talos-gauge-linear-track\"\n x=\"0\"\n y=\"2\"\n width=\"100\"\n height=\"8\"\n rx=\"4\"\n ry=\"4\"\n [attr.fill]=\"trackColor() || 'var(--talos-border-color, #e2e8f0)'\"\n />\n\n <!-- Linear Value Fill -->\n <rect\n class=\"talos-gauge-linear-fill\"\n x=\"0\"\n y=\"2\"\n [attr.width]=\"normalizedRatio() * 100\"\n height=\"8\"\n rx=\"4\"\n ry=\"4\"\n [attr.fill]=\"activeColor()\"\n />\n\n <!-- Linear Target Marker -->\n @if (targetRatio() !== null) {\n <line\n class=\"talos-gauge-linear-target\"\n [attr.x1]=\"targetRatio()! * 100\"\n y1=\"0\"\n [attr.x2]=\"targetRatio()! * 100\"\n y2=\"12\"\n stroke=\"var(--talos-text-color, #0f172a)\"\n stroke-width=\"2.5\"\n stroke-linecap=\"round\"\n />\n }\n }\n</svg>\n\n<!-- Center / Bottom Readout -->\n@if (showValue()) {\n <div class=\"talos-gauge-readout\">\n <span class=\"talos-gauge-value\">{{ valueFormatter()(value()) }}</span>\n @if (unit()) {\n <span class=\"talos-gauge-unit\">{{ unit() }}</span>\n }\n </div>\n}\n\n<!-- Min / Max labels -->\n@if (showMinMax()) {\n <div class=\"talos-gauge-minmax\">\n <span class=\"talos-gauge-min\">{{ min() }}</span>\n <span class=\"talos-gauge-max\">{{ max() }}</span>\n </div>\n}\n","import { NgModule } from '@angular/core';\nimport { TalosMiniGaugeComponent } from './mini-gauge.component';\n\n@NgModule({\n imports: [TalosMiniGaugeComponent],\n exports: [TalosMiniGaugeComponent]\n})\nexport class TalosMiniGaugeModule {}\n","/**\n * Color math and conversion utilities for Talos UI.\n * Zero-dependency, pure functions supporting HEX, RGB/RGBA, HSL/HSLA, and HSV/HSVA.\n */\n\nexport interface RgbaColor {\n r: number; // 0 - 255\n g: number; // 0 - 255\n b: number; // 0 - 255\n a: number; // 0 - 1\n}\n\nexport interface HslaColor {\n h: number; // 0 - 360\n s: number; // 0 - 100\n l: number; // 0 - 100\n a: number; // 0 - 1\n}\n\nexport interface HsvaColor {\n h: number; // 0 - 360\n s: number; // 0 - 100\n v: number; // 0 - 100\n a: number; // 0 - 1\n}\n\nexport type ColorFormat = 'hex' | 'rgb' | 'hsl' | 'hsv';\n\n/** Clamp a number between min and max */\nexport function clamp(val: number, min: number, max: number): number {\n return Math.min(Math.max(val, min), max);\n}\n\n/** Round number to given precision */\nexport function round(val: number, precision: number = 0): number {\n const factor = Math.pow(10, precision);\n return Math.round(val * factor) / factor;\n}\n\n/** Convert HEX string (#fff, #ffffff, #ffffffff) to RGBA */\nexport function hexToRgb(hex: string): RgbaColor | null {\n if (!hex || typeof hex !== 'string') return null;\n\n let clean = hex.trim().replace(/^#/, '');\n\n // 3-digit hex (#rgb)\n if (clean.length === 3) {\n clean = clean.split('').map(c => c + c).join('') + 'ff';\n }\n // 4-digit hex (#rgba)\n else if (clean.length === 4) {\n clean = clean.split('').map(c => c + c).join('');\n }\n // 6-digit hex (#rrggbb)\n else if (clean.length === 6) {\n clean = clean + 'ff';\n }\n\n if (clean.length !== 8 || !/^[0-9a-fA-F]{8}$/.test(clean)) {\n return null;\n }\n\n const r = parseInt(clean.substring(0, 2), 16);\n const g = parseInt(clean.substring(2, 4), 16);\n const b = parseInt(clean.substring(4, 6), 16);\n const a = round(parseInt(clean.substring(6, 8), 16) / 255, 3);\n\n return { r, g, b, a };\n}\n\n/** Convert RGBA to 6 or 8-digit HEX string */\nexport function rgbToHex(rgba: RgbaColor, includeAlpha: boolean = true): string {\n const r = clamp(Math.round(rgba.r), 0, 255).toString(16).padStart(2, '0');\n const g = clamp(Math.round(rgba.g), 0, 255).toString(16).padStart(2, '0');\n const b = clamp(Math.round(rgba.b), 0, 255).toString(16).padStart(2, '0');\n\n if (includeAlpha && rgba.a !== undefined && rgba.a < 1) {\n const a = clamp(Math.round(rgba.a * 255), 0, 255).toString(16).padStart(2, '0');\n return `#${r}${g}${b}${a}`;\n }\n\n return `#${r}${g}${b}`;\n}\n\n/** Convert RGBA to HSVA */\nexport function rgbToHsv(rgba: RgbaColor): HsvaColor {\n const r = rgba.r / 255;\n const g = rgba.g / 255;\n const b = rgba.b / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const delta = max - min;\n\n let h = 0;\n if (delta !== 0) {\n if (max === r) {\n h = ((g - b) / delta + (g < b ? 6 : 0)) * 60;\n } else if (max === g) {\n h = ((b - r) / delta + 2) * 60;\n } else {\n h = ((r - g) / delta + 4) * 60;\n }\n }\n\n const s = max === 0 ? 0 : (delta / max) * 100;\n const v = max * 100;\n\n return {\n h: round(h, 1),\n s: round(s, 1),\n v: round(v, 1),\n a: rgba.a !== undefined ? round(rgba.a, 3) : 1\n };\n}\n\n/** Convert HSVA to RGBA */\nexport function hsvToRgb(hsva: HsvaColor): RgbaColor {\n const h = (hsva.h % 360 + 360) % 360;\n const s = clamp(hsva.s, 0, 100) / 100;\n const v = clamp(hsva.v, 0, 100) / 100;\n\n const c = v * s;\n const x = c * (1 - Math.abs(((h / 60) % 2) - 1));\n const m = v - c;\n\n let r1 = 0, g1 = 0, b1 = 0;\n\n if (h >= 0 && h < 60) {\n r1 = c; g1 = x; b1 = 0;\n } else if (h >= 60 && h < 120) {\n r1 = x; g1 = c; b1 = 0;\n } else if (h >= 120 && h < 180) {\n r1 = 0; g1 = c; b1 = x;\n } else if (h >= 180 && h < 240) {\n r1 = 0; g1 = x; b1 = c;\n } else if (h >= 240 && h < 300) {\n r1 = x; g1 = 0; b1 = c;\n } else {\n r1 = c; g1 = 0; b1 = x;\n }\n\n return {\n r: Math.round((r1 + m) * 255),\n g: Math.round((g1 + m) * 255),\n b: Math.round((b1 + m) * 255),\n a: hsva.a !== undefined ? round(hsva.a, 3) : 1\n };\n}\n\n/** Convert RGBA to HSLA */\nexport function rgbToHsl(rgba: RgbaColor): HslaColor {\n const r = rgba.r / 255;\n const g = rgba.g / 255;\n const b = rgba.b / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const delta = max - min;\n const l = (max + min) / 2;\n\n let h = 0;\n let s = 0;\n\n if (delta !== 0) {\n s = l > 0.5 ? delta / (2 - max - min) : delta / (max + min);\n\n if (max === r) {\n h = ((g - b) / delta + (g < b ? 6 : 0)) * 60;\n } else if (max === g) {\n h = ((b - r) / delta + 2) * 60;\n } else {\n h = ((r - g) / delta + 4) * 60;\n }\n }\n\n return {\n h: round(h, 1),\n s: round(s * 100, 1),\n l: round(l * 100, 1),\n a: rgba.a !== undefined ? round(rgba.a, 3) : 1\n };\n}\n\n/** Convert HSLA to RGBA */\nexport function hslToRgb(hsla: HslaColor): RgbaColor {\n const h = (hsla.h % 360 + 360) % 360;\n const s = clamp(hsla.s, 0, 100) / 100;\n const l = clamp(hsla.l, 0, 100) / 100;\n\n const c = (1 - Math.abs(2 * l - 1)) * s;\n const x = c * (1 - Math.abs(((h / 60) % 2) - 1));\n const m = l - c / 2;\n\n let r1 = 0, g1 = 0, b1 = 0;\n\n if (h >= 0 && h < 60) {\n r1 = c; g1 = x; b1 = 0;\n } else if (h >= 60 && h < 120) {\n r1 = x; g1 = c; b1 = 0;\n } else if (h >= 120 && h < 180) {\n r1 = 0; g1 = c; b1 = x;\n } else if (h >= 180 && h < 240) {\n r1 = 0; g1 = x; b1 = c;\n } else if (h >= 240 && h < 300) {\n r1 = x; g1 = 0; b1 = c;\n } else {\n r1 = c; g1 = 0; b1 = x;\n }\n\n return {\n r: Math.round((r1 + m) * 255),\n g: Math.round((g1 + m) * 255),\n b: Math.round((b1 + m) * 255),\n a: hsla.a !== undefined ? round(hsla.a, 3) : 1\n };\n}\n\n/** Convert HSVA to HSLA */\nexport function hsvToHsl(hsva: HsvaColor): HslaColor {\n return rgbToHsl(hsvToRgb(hsva));\n}\n\n/** Convert HSLA to HSVA */\nexport function hslToHsv(hsla: HslaColor): HsvaColor {\n return rgbToHsv(hslToRgb(hsla));\n}\n\n/** Parse any CSS color format (hex, rgb, rgba, hsl, hsla) into RGBA */\nexport function parseColor(color: string): RgbaColor | null {\n if (!color || typeof color !== 'string') return null;\n const str = color.trim().toLowerCase();\n\n // Try HEX\n if (str.startsWith('#') || /^[0-9a-fA-F]{3,8}$/.test(str)) {\n return hexToRgb(str.startsWith('#') ? str : `#${str}`);\n }\n\n // Try RGB / RGBA\n const rgbMatch = str.match(/^rgba?\\s*\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)(?:\\s*,\\s*([\\d.%]+))?\\s*\\)$/);\n if (rgbMatch) {\n const r = clamp(parseFloat(rgbMatch[1]), 0, 255);\n const g = clamp(parseFloat(rgbMatch[2]), 0, 255);\n const b = clamp(parseFloat(rgbMatch[3]), 0, 255);\n let a = 1;\n if (rgbMatch[4] !== undefined) {\n if (rgbMatch[4].endsWith('%')) {\n a = clamp(parseFloat(rgbMatch[4]) / 100, 0, 1);\n } else {\n a = clamp(parseFloat(rgbMatch[4]), 0, 1);\n }\n }\n return { r, g, b, a: round(a, 3) };\n }\n\n // Try HSL / HSLA\n const hslMatch = str.match(/^hsla?\\s*\\(\\s*([\\d.]+)(?:deg)?\\s*,\\s*([\\d.]+)%\\s*,\\s*([\\d.]+)%(?:\\s*,\\s*([\\d.%]+))?\\s*\\)$/);\n if (hslMatch) {\n const h = (parseFloat(hslMatch[1]) % 360 + 360) % 360;\n const s = clamp(parseFloat(hslMatch[2]), 0, 100);\n const l = clamp(parseFloat(hslMatch[3]), 0, 100);\n let a = 1;\n if (hslMatch[4] !== undefined) {\n if (hslMatch[4].endsWith('%')) {\n a = clamp(parseFloat(hslMatch[4]) / 100, 0, 1);\n } else {\n a = clamp(parseFloat(hslMatch[4]), 0, 1);\n }\n }\n return hslToRgb({ h, s, l, a: round(a, 3) });\n }\n\n // Known named colors fallback\n const NAMED_COLORS: Record<string, string> = {\n transparent: '#00000000',\n black: '#000000',\n white: '#ffffff',\n red: '#ef4444',\n green: '#22c55e',\n blue: '#3b82f6',\n yellow: '#eab308',\n orange: '#f97316',\n purple: '#a855f7',\n pink: '#ec4899',\n gray: '#6b7280',\n slate: '#64748b'\n };\n\n if (NAMED_COLORS[str]) {\n return hexToRgb(NAMED_COLORS[str]);\n }\n\n return null;\n}\n\n/** Format an RGBA color into the desired string format */\nexport function formatColor(rgba: RgbaColor, format: ColorFormat, includeAlpha: boolean = true): string {\n const hasAlpha = includeAlpha && rgba.a !== undefined && rgba.a < 1;\n\n switch (format) {\n case 'hex':\n return rgbToHex(rgba, includeAlpha);\n case 'rgb':\n return hasAlpha\n ? `rgba(${Math.round(rgba.r)}, ${Math.round(rgba.g)}, ${Math.round(rgba.b)}, ${round(rgba.a, 2)})`\n : `rgb(${Math.round(rgba.r)}, ${Math.round(rgba.g)}, ${Math.round(rgba.b)})`;\n case 'hsl': {\n const hsl = rgbToHsl(rgba);\n return hasAlpha\n ? `hsla(${Math.round(hsl.h)}, ${Math.round(hsl.s)}%, ${Math.round(hsl.l)}%, ${round(hsl.a, 2)})`\n : `hsl(${Math.round(hsl.h)}, ${Math.round(hsl.s)}%, ${Math.round(hsl.l)}%)`;\n }\n case 'hsv': {\n const hsv = rgbToHsv(rgba);\n return hasAlpha\n ? `hsva(${Math.round(hsv.h)}, ${Math.round(hsv.s)}%, ${Math.round(hsv.v)}%, ${round(hsv.a, 2)})`\n : `hsv(${Math.round(hsv.h)}, ${Math.round(hsv.s)}%, ${Math.round(hsv.v)}%)`;\n }\n default:\n return rgbToHex(rgba, includeAlpha);\n }\n}\n\n/** Check whether a string is a valid color */\nexport function isValidColor(color: string): boolean {\n return parseColor(color) !== null;\n}\n\n/** Calculate relative luminance of an RGBA color (WCAG 2.0 formula) */\nexport function getLuminance(rgba: RgbaColor): number {\n const a = [rgba.r, rgba.g, rgba.b].map(v => {\n v /= 255;\n return v <= 0.03928 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\n });\n return 0.2126 * a[0] + 0.7152 * a[1] + 0.0722 * a[2];\n}\n\n/** Calculate contrast ratio between two colors */\nexport function getContrastRatio(color1: RgbaColor, color2: RgbaColor): number {\n const lum1 = getLuminance(color1);\n const lum2 = getLuminance(color2);\n const brightest = Math.max(lum1, lum2);\n const darkest = Math.min(lum1, lum2);\n return (brightest + 0.05) / (darkest + 0.05);\n}\n\n/** Check if color is light (useful for dynamic text/icon contrast) */\nexport function isLightColor(rgba: RgbaColor): boolean {\n // If highly transparent, assume light background\n if (rgba.a !== undefined && rgba.a < 0.4) return true;\n return getLuminance(rgba) > 0.45;\n}\n","import { HslaColor, HsvaColor, RgbaColor, ColorFormat } from '@weeehaoooz/talos-ui/core';\n\nexport type ColorPickerSize = 'sm' | 'md' | 'lg';\n\nexport interface ColorPresetGroup {\n label: string;\n colors: string[];\n}\n\nexport type ColorPresetItem = string | ColorPresetGroup;\n\nexport interface ColorChangeEvent {\n /** The formatted string representation according to the current format */\n value: string;\n /** Normalized HEX string (with alpha if applicable) */\n hex: string;\n /** RGBA representation */\n rgba: RgbaColor;\n /** HSLA representation */\n hsla: HslaColor;\n /** HSVA representation */\n hsva: HsvaColor;\n}\n\nexport const DEFAULT_COLOR_PRESETS: ColorPresetGroup[] = [\n {\n label: 'Talos Brand',\n colors: [\n '#3b82f6', // Blue\n '#6366f1', // Indigo\n '#8b5cf6', // Violet\n '#ec4899', // Pink\n '#f43f5e', // Rose\n '#ef4444', // Red\n '#f97316', // Orange\n '#eab308', // Yellow\n '#10b981', // Emerald\n '#06b6d4', // Cyan\n '#64748b', // Slate\n '#0f172a' // Dark\n ]\n },\n {\n label: 'Pastel & Muted',\n colors: [\n '#93c5fd', // Light Blue\n '#a5b4fc', // Light Indigo\n '#c4b5fd', // Light Violet\n '#f9a8d4', // Light Pink\n '#fda4af', // Light Rose\n '#fca5a5', // Light Red\n '#fdba74', // Light Orange\n '#fde047', // Light Yellow\n '#6ee7b7', // Light Emerald\n '#67e8f9', // Light Cyan\n '#cbd5e1', // Light Slate\n '#ffffff' // Pure White\n ]\n }\n];\n","import {\n Component,\n ElementRef,\n ViewChild,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n output,\n signal\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { OverlayModule, CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n ColorPresetGroup,\n ColorPresetItem,\n ColorPickerSize,\n ColorChangeEvent,\n DEFAULT_COLOR_PRESETS\n} from './color-picker.types';\nimport {\n ColorFormat,\n HsvaColor,\n RgbaColor,\n clamp,\n formatColor,\n hexToRgb,\n hslToRgb,\n hsvToRgb,\n isLightColor,\n parseColor,\n rgbToHex,\n rgbToHsl,\n rgbToHsv,\n round\n} from '@weeehaoooz/talos-ui/core';\n\nlet uniqueColorPickerIdCounter = 0;\n\n@Component({\n selector: 'talos-color-picker',\n imports: [OverlayModule, CdkConnectedOverlay, CdkOverlayOrigin, FormsModule, NgTemplateOutlet],\n templateUrl: './color-picker.component.html',\n styleUrl: './color-picker.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TalosColorPickerComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'talos-color-picker-host',\n '[class.is-open]': 'isOpen()',\n '[class.is-inline]': 'inline()',\n '[class.is-disabled]': 'effectiveDisabled()',\n '[class.is-readonly]': 'readonly()',\n '[class.has-label]': '!!label()',\n '[class.is-floating]': 'floatingLabel()',\n '[class.is-floated]': 'isFloated()',\n '[class.color-picker-sm]': 'size() === \"sm\"',\n '[class.color-picker-md]': 'size() === \"md\"',\n '[class.color-picker-lg]': 'size() === \"lg\"'\n }\n})\nexport class TalosColorPickerComponent implements ControlValueAccessor {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n // Signal Inputs\n readonly value = input<string>('#3b82f6');\n readonly format = input<ColorFormat>('hex');\n readonly showAlpha = input<boolean>(true);\n readonly presets = input<ColorPresetItem[]>(DEFAULT_COLOR_PRESETS);\n readonly showPresets = input<boolean>(true);\n readonly showRecent = input<boolean>(true);\n readonly showEyeDropper = input<boolean>(true);\n readonly showInputs = input<boolean>(true);\n readonly showFormatSwitcher = input<boolean>(true);\n readonly inline = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly label = input<string>('');\n readonly placeholder = input<string>('Select color');\n readonly size = input<ColorPickerSize>('md');\n readonly clearable = input<boolean>(false);\n readonly floatingLabel = input<boolean>(false);\n readonly id = input<string>('');\n\n // Signal Outputs\n readonly colorChange = output<string>();\n readonly colorDetailsChange = output<ColorChangeEvent>();\n readonly formatChange = output<ColorFormat>();\n readonly opened = output<void>();\n readonly closed = output<void>();\n readonly cleared = output<void>();\n\n // View Children\n @ViewChild('satValCanvas') satValCanvas?: ElementRef<HTMLDivElement>;\n @ViewChild('hueTrack') hueTrack?: ElementRef<HTMLDivElement>;\n @ViewChild('alphaTrack') alphaTrack?: ElementRef<HTMLDivElement>;\n @ViewChild('triggerBtn') triggerBtn?: ElementRef<HTMLButtonElement>;\n @ViewChild('triggerInput') triggerInput?: ElementRef<HTMLInputElement>;\n\n // Component IDs\n private readonly autoId = `talos-color-picker-${uniqueColorPickerIdCounter++}`;\n readonly componentId = computed(() => this.id() || this.autoId);\n readonly inputId = computed(() => `${this.componentId()}-input`);\n\n // ControlValueAccessor internal state\n readonly formControlDisabled = signal<boolean>(false);\n readonly effectiveDisabled = computed(() => this.disabled() || this.formControlDisabled());\n\n // Reactive State\n readonly isOpen = signal<boolean>(false);\n readonly isInputFocused = signal<boolean>(false);\n readonly manualInputValue = signal<string>('');\n readonly currentHsva = signal<HsvaColor>({ h: 217, s: 76, v: 96, a: 1 });\n readonly currentFormat = signal<ColorFormat>('hex');\n readonly recentColors = signal<string[]>([]);\n readonly copied = signal<boolean>(false);\n\n // Input editing temporary state\n readonly inputHex = signal<string>('#3b82f6');\n readonly inputR = signal<number>(59);\n readonly inputG = signal<number>(130);\n readonly inputB = signal<number>(246);\n readonly inputA = signal<number>(100);\n readonly inputH = signal<number>(217);\n readonly inputS = signal<number>(91);\n readonly inputL = signal<number>(60);\n\n // Dragging interaction state\n private isDraggingSatVal = false;\n private isDraggingHue = false;\n private isDraggingAlpha = false;\n\n // 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: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -6\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 6\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -6\n }\n ];\n\n // Derived Color representations\n readonly currentRgba = computed<RgbaColor>(() => hsvToRgb(this.currentHsva()));\n readonly currentHsla = computed(() => rgbToHsl(this.currentRgba()));\n readonly currentHex = computed(() => rgbToHex(this.currentRgba(), this.showAlpha()));\n readonly pureHueHex = computed(() => rgbToHex(hsvToRgb({ h: this.currentHsva().h, s: 100, v: 100, a: 1 }), false));\n readonly isLight = computed(() => isLightColor(this.currentRgba()));\n readonly isFloated = computed(() => !!this.formattedColor() || this.isOpen() || this.isInputFocused());\n\n readonly formattedColor = computed(() => {\n return formatColor(this.currentRgba(), this.currentFormat(), this.showAlpha());\n });\n\n readonly rgbaString = computed(() => {\n const rgba = this.currentRgba();\n return `rgba(${rgba.r}, ${rgba.g}, ${rgba.b}, ${rgba.a})`;\n });\n\n readonly hasEyeDropper = computed(() => {\n return typeof window !== 'undefined' && 'EyeDropper' in window;\n });\n\n // Normalized preset palettes\n readonly normalizedPresets = computed<ColorPresetGroup[]>(() => {\n const raw = this.presets();\n if (!raw || raw.length === 0) return [];\n\n const groups: ColorPresetGroup[] = [];\n let standardGroup: string[] = [];\n\n for (const item of raw) {\n if (typeof item === 'string') {\n standardGroup.push(item);\n } else if (item && typeof item === 'object' && Array.isArray(item.colors)) {\n if (standardGroup.length > 0) {\n groups.push({ label: 'Palette', colors: standardGroup });\n standardGroup = [];\n }\n groups.push(item);\n }\n }\n\n if (standardGroup.length > 0) {\n groups.push({ label: 'Palette', colors: standardGroup });\n }\n\n return groups;\n });\n\n // ControlValueAccessor Callbacks\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n // Sync initial format\n effect(() => {\n this.currentFormat.set(this.format());\n });\n\n // Sync input value if provided\n effect(() => {\n const val = this.value();\n if (val) {\n this.setColorFromExternal(val, false);\n }\n });\n\n // Keep editing input fields in sync with current color\n effect(() => {\n const rgba = this.currentRgba();\n const hsla = this.currentHsla();\n const hex = this.currentHex();\n\n this.inputHex.set(hex);\n this.inputR.set(rgba.r);\n this.inputG.set(rgba.g);\n this.inputB.set(rgba.b);\n this.inputA.set(Math.round(rgba.a * 100));\n this.inputH.set(Math.round(hsla.h));\n this.inputS.set(Math.round(hsla.s));\n this.inputL.set(Math.round(hsla.l));\n });\n }\n\n // --- ControlValueAccessor Methods ---\n writeValue(value: string | null): void {\n if (value) {\n this.setColorFromExternal(value, false);\n }\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.formControlDisabled.set(isDisabled);\n }\n\n // --- External and Internal Color Updates ---\n private setColorFromExternal(colorStr: string, emit: boolean = true): void {\n const parsed = parseColor(colorStr);\n if (!parsed) return;\n\n const hsva = rgbToHsv(parsed);\n this.currentHsva.set(hsva);\n\n if (emit) {\n this.notifyColorChange();\n }\n }\n\n private updateHsva(newHsva: Partial<HsvaColor>, emit: boolean = true): void {\n this.currentHsva.update(current => {\n const updated: HsvaColor = {\n h: newHsva.h !== undefined ? (newHsva.h % 360 + 360) % 360 : current.h,\n s: newHsva.s !== undefined ? clamp(newHsva.s, 0, 100) : current.s,\n v: newHsva.v !== undefined ? clamp(newHsva.v, 0, 100) : current.v,\n a: newHsva.a !== undefined ? clamp(newHsva.a, 0, 1) : current.a\n };\n return updated;\n });\n\n if (emit) {\n this.notifyColorChange();\n }\n }\n\n private notifyColorChange(): void {\n const formatted = this.formattedColor();\n const hex = this.currentHex();\n const rgba = this.currentRgba();\n const hsla = this.currentHsla();\n const hsva = this.currentHsva();\n\n this.onChange(formatted);\n this.colorChange.emit(formatted);\n this.colorDetailsChange.emit({\n value: formatted,\n hex,\n rgba,\n hsla,\n hsva\n });\n }\n\n // --- Dropdown Management ---\n toggleDropdown(event?: Event): void {\n if (event) event.stopPropagation();\n if (this.effectiveDisabled() || this.readonly() || this.inline()) return;\n\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open(): void {\n if (this.effectiveDisabled() || this.readonly() || this.isOpen() || this.inline()) return;\n this.isOpen.set(true);\n this.opened.emit();\n }\n\n close(): void {\n if (!this.isOpen() || this.inline()) return;\n this.isOpen.set(false);\n this.onTouched();\n this.recordRecentColor(this.formattedColor());\n this.closed.emit();\n }\n\n onDocumentClick(event: MouseEvent): void {\n if (this.inline() || !this.isOpen()) return;\n\n const target = event.target as HTMLElement;\n if (!this.elementRef.nativeElement.contains(target)) {\n this.close();\n }\n }\n\n clear(event?: MouseEvent): void {\n if (event) event.stopPropagation();\n if (this.effectiveDisabled() || this.readonly()) return;\n\n this.manualInputValue.set('');\n this.currentHsva.set({ h: 217, s: 76, v: 96, a: 1 });\n this.onChange('');\n this.cleared.emit();\n this.colorChange.emit('');\n }\n\n // --- Trigger Input Handlers ---\n onTriggerFocus(): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n this.isInputFocused.set(true);\n this.manualInputValue.set(this.formattedColor());\n }\n\n onTriggerBlur(event: FocusEvent): void {\n this.isInputFocused.set(false);\n const target = event.target as HTMLInputElement;\n const val = target.value.trim();\n if (val) {\n const parsed = parseColor(val);\n if (parsed) {\n const hsva = rgbToHsv(parsed);\n this.currentHsva.set(hsva);\n this.notifyColorChange();\n } else {\n target.value = this.formattedColor();\n }\n } else if (this.clearable()) {\n this.clear();\n } else {\n target.value = this.formattedColor();\n }\n this.onTouched();\n }\n\n onTriggerInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n const val = target.value;\n this.manualInputValue.set(val);\n\n const trimmed = val.trim();\n if (trimmed) {\n const parsed = parseColor(trimmed);\n if (parsed) {\n const hsva = rgbToHsv(parsed);\n this.currentHsva.set(hsva);\n this.notifyColorChange();\n }\n }\n }\n\n onTriggerEnter(event: Event): void {\n const target = event.target as HTMLInputElement;\n target.blur();\n }\n\n // --- Saturation & Value 2D Canvas Handlers ---\n onSatValMouseDown(event: MouseEvent): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n event.preventDefault();\n this.isDraggingSatVal = true;\n this.updateSatValFromCoord(event.clientX, event.clientY);\n\n const onMouseMove = (moveEvent: MouseEvent) => {\n if (this.isDraggingSatVal) {\n this.updateSatValFromCoord(moveEvent.clientX, moveEvent.clientY);\n }\n };\n\n const onMouseUp = () => {\n this.isDraggingSatVal = false;\n window.removeEventListener('mousemove', onMouseMove);\n window.removeEventListener('mouseup', onMouseUp);\n };\n\n window.addEventListener('mousemove', onMouseMove);\n window.addEventListener('mouseup', onMouseUp);\n }\n\n onSatValTouchStart(event: TouchEvent): void {\n if (this.effectiveDisabled() || this.readonly() || !event.touches[0]) return;\n this.isDraggingSatVal = true;\n this.updateSatValFromCoord(event.touches[0].clientX, event.touches[0].clientY);\n\n const onTouchMove = (moveEvent: TouchEvent) => {\n if (this.isDraggingSatVal && moveEvent.touches[0]) {\n this.updateSatValFromCoord(moveEvent.touches[0].clientX, moveEvent.touches[0].clientY);\n }\n };\n\n const onTouchEnd = () => {\n this.isDraggingSatVal = false;\n window.removeEventListener('touchmove', onTouchMove);\n window.removeEventListener('touchend', onTouchEnd);\n };\n\n window.addEventListener('touchmove', onTouchMove, { passive: true });\n window.addEventListener('touchend', onTouchEnd);\n }\n\n private updateSatValFromCoord(clientX: number, clientY: number): void {\n const el = this.satValCanvas?.nativeElement;\n if (!el) return;\n\n const rect = el.getBoundingClientRect();\n const x = clamp(clientX - rect.left, 0, rect.width);\n const y = clamp(clientY - rect.top, 0, rect.height);\n\n const s = round((x / rect.width) * 100, 1);\n const v = round((1 - y / rect.height) * 100, 1);\n\n this.updateHsva({ s, v });\n }\n\n onSatValKeyDown(event: KeyboardEvent): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n\n const step = event.shiftKey ? 10 : 1;\n let s = this.currentHsva().s;\n let v = this.currentHsva().v;\n let handled = false;\n\n switch (event.key) {\n case 'ArrowLeft':\n s = clamp(s - step, 0, 100);\n handled = true;\n break;\n case 'ArrowRight':\n s = clamp(s + step, 0, 100);\n handled = true;\n break;\n case 'ArrowUp':\n v = clamp(v + step, 0, 100);\n handled = true;\n break;\n case 'ArrowDown':\n v = clamp(v - step, 0, 100);\n handled = true;\n break;\n }\n\n if (handled) {\n event.preventDefault();\n this.updateHsva({ s, v });\n }\n }\n\n // --- Hue Slider Handlers ---\n onHueMouseDown(event: MouseEvent): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n event.preventDefault();\n this.isDraggingHue = true;\n this.updateHueFromCoord(event.clientX);\n\n const onMouseMove = (moveEvent: MouseEvent) => {\n if (this.isDraggingHue) {\n this.updateHueFromCoord(moveEvent.clientX);\n }\n };\n\n const onMouseUp = () => {\n this.isDraggingHue = false;\n window.removeEventListener('mousemove', onMouseMove);\n window.removeEventListener('mouseup', onMouseUp);\n };\n\n window.addEventListener('mousemove', onMouseMove);\n window.addEventListener('mouseup', onMouseUp);\n }\n\n onHueTouchStart(event: TouchEvent): void {\n if (this.effectiveDisabled() || this.readonly() || !event.touches[0]) return;\n this.isDraggingHue = true;\n this.updateHueFromCoord(event.touches[0].clientX);\n\n const onTouchMove = (moveEvent: TouchEvent) => {\n if (this.isDraggingHue && moveEvent.touches[0]) {\n this.updateHueFromCoord(moveEvent.touches[0].clientX);\n }\n };\n\n const onTouchEnd = () => {\n this.isDraggingHue = false;\n window.removeEventListener('touchmove', onTouchMove);\n window.removeEventListener('touchend', onTouchEnd);\n };\n\n window.addEventListener('touchmove', onTouchMove, { passive: true });\n window.addEventListener('touchend', onTouchEnd);\n }\n\n private updateHueFromCoord(clientX: number): void {\n const el = this.hueTrack?.nativeElement;\n if (!el) return;\n\n const rect = el.getBoundingClientRect();\n const x = clamp(clientX - rect.left, 0, rect.width);\n const h = round((x / rect.width) * 360, 1);\n\n this.updateHsva({ h });\n }\n\n onHueKeyDown(event: KeyboardEvent): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n\n const step = event.shiftKey ? 10 : 1;\n let h = this.currentHsva().h;\n let handled = false;\n\n if (event.key === 'ArrowLeft' || event.key === 'ArrowDown') {\n h = (h - step % 360 + 360) % 360;\n handled = true;\n } else if (event.key === 'ArrowRight' || event.key === 'ArrowUp') {\n h = (h + step) % 360;\n handled = true;\n }\n\n if (handled) {\n event.preventDefault();\n this.updateHsva({ h });\n }\n }\n\n // --- Alpha Slider Handlers ---\n onAlphaMouseDown(event: MouseEvent): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n event.preventDefault();\n this.isDraggingAlpha = true;\n this.updateAlphaFromCoord(event.clientX);\n\n const onMouseMove = (moveEvent: MouseEvent) => {\n if (this.isDraggingAlpha) {\n this.updateAlphaFromCoord(moveEvent.clientX);\n }\n };\n\n const onMouseUp = () => {\n this.isDraggingAlpha = false;\n window.removeEventListener('mousemove', onMouseMove);\n window.removeEventListener('mouseup', onMouseUp);\n };\n\n window.addEventListener('mousemove', onMouseMove);\n window.addEventListener('mouseup', onMouseUp);\n }\n\n onAlphaTouchStart(event: TouchEvent): void {\n if (this.effectiveDisabled() || this.readonly() || !event.touches[0]) return;\n this.isDraggingAlpha = true;\n this.updateAlphaFromCoord(event.touches[0].clientX);\n\n const onTouchMove = (moveEvent: TouchEvent) => {\n if (this.isDraggingAlpha && moveEvent.touches[0]) {\n this.updateAlphaFromCoord(moveEvent.touches[0].clientX);\n }\n };\n\n const onTouchEnd = () => {\n this.isDraggingAlpha = false;\n window.removeEventListener('touchmove', onTouchMove);\n window.removeEventListener('touchend', onTouchEnd);\n };\n\n window.addEventListener('touchmove', onTouchMove, { passive: true });\n window.addEventListener('touchend', onTouchEnd);\n }\n\n private updateAlphaFromCoord(clientX: number): void {\n const el = this.alphaTrack?.nativeElement;\n if (!el) return;\n\n const rect = el.getBoundingClientRect();\n const x = clamp(clientX - rect.left, 0, rect.width);\n const a = round(x / rect.width, 2);\n\n this.updateHsva({ a });\n }\n\n onAlphaKeyDown(event: KeyboardEvent): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n\n const step = event.shiftKey ? 0.1 : 0.01;\n let a = this.currentHsva().a;\n let handled = false;\n\n if (event.key === 'ArrowLeft' || event.key === 'ArrowDown') {\n a = clamp(a - step, 0, 1);\n handled = true;\n } else if (event.key === 'ArrowRight' || event.key === 'ArrowUp') {\n a = clamp(a + step, 0, 1);\n handled = true;\n }\n\n if (handled) {\n event.preventDefault();\n this.updateHsva({ a });\n }\n }\n\n // --- EyeDropper Integration ---\n async pickWithEyeDropper(): Promise<void> {\n if (this.effectiveDisabled() || this.readonly() || !this.hasEyeDropper()) return;\n\n try {\n // @ts-expect-error EyeDropper is a modern browser API\n const eyeDropper = new window.EyeDropper();\n const result = await eyeDropper.open();\n if (result && result.sRGBHex) {\n this.setColorFromExternal(result.sRGBHex);\n }\n } catch {\n // EyeDropper cancelled or dismissed\n }\n }\n\n // --- Copy to Clipboard ---\n async copyColor(): Promise<void> {\n if (typeof navigator === 'undefined' || !navigator.clipboard) return;\n\n try {\n await navigator.clipboard.writeText(this.formattedColor());\n this.copied.set(true);\n setTimeout(() => {\n this.copied.set(false);\n }, 1800);\n } catch {\n // Copy failed\n }\n }\n\n // --- Format Switcher ---\n switchFormat(format: ColorFormat): void {\n this.currentFormat.set(format);\n this.formatChange.emit(format);\n this.notifyColorChange();\n }\n\n // --- Direct Inputs ---\n onHexInputChange(val: string): void {\n const trimmed = val.trim();\n if (hexToRgb(trimmed)) {\n this.setColorFromExternal(trimmed);\n }\n }\n\n onRgbaInputChange(): void {\n const r = clamp(this.inputR() || 0, 0, 255);\n const g = clamp(this.inputG() || 0, 0, 255);\n const b = clamp(this.inputB() || 0, 0, 255);\n const a = clamp((this.inputA() ?? 100) / 100, 0, 1);\n\n const hsva = rgbToHsv({ r, g, b, a });\n this.currentHsva.set(hsva);\n this.notifyColorChange();\n }\n\n onHslaInputChange(): void {\n const h = (this.inputH() || 0) % 360;\n const s = clamp(this.inputS() || 0, 0, 100);\n const l = clamp(this.inputL() || 0, 0, 100);\n const a = clamp((this.inputA() ?? 100) / 100, 0, 1);\n\n const rgba = hslToRgb({ h, s, l, a });\n const hsva = rgbToHsv(rgba);\n this.currentHsva.set(hsva);\n this.notifyColorChange();\n }\n\n // --- Swatch Preset Click & Recent Storage ---\n selectPreset(color: string): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n this.setColorFromExternal(color);\n }\n\n private recordRecentColor(color: string): void {\n if (!this.showRecent() || !color) return;\n const currentList = this.recentColors();\n const filtered = currentList.filter(c => c.toLowerCase() !== color.toLowerCase());\n this.recentColors.set([color, ...filtered].slice(0, 8));\n }\n}\n","@if (!inline()) {\n<!-- Standard Trigger Button / Popover Mode -->\n<div class=\"talos-color-picker-wrapper\" [class.is-floating]=\"floatingLabel()\">\n @if (label() && !floatingLabel()) {\n <label [for]=\"inputId()\" class=\"talos-field-label\">{{ label() }}</label>\n }\n\n <div #triggerBtn cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" class=\"talos-color-picker-trigger\"\n [class.is-focused]=\"isOpen()\" [class.is-disabled]=\"effectiveDisabled()\"\n [attr.tabindex]=\"effectiveDisabled() ? -1 : 0\" [attr.role]=\"'button'\" [attr.aria-haspopup]=\"'dialog'\"\n [attr.aria-expanded]=\"isOpen()\" [attr.aria-label]=\"label() || placeholder()\" (click)=\"toggleDropdown()\"\n (keydown.enter)=\"toggleDropdown()\" (keydown.space)=\"toggleDropdown()\">\n\n <!-- Swatch Pill Preview -->\n <div class=\"swatch-preview-box\" role=\"button\" tabindex=\"-1\" aria-label=\"Open color palette\" (click)=\"toggleDropdown($event)\">\n <div class=\"swatch-checkerboard\"></div>\n <div class=\"swatch-fill\" [style.background-color]=\"rgbaString()\"></div>\n </div>\n\n <!-- Color Value Input Field -->\n <input\n #triggerInput\n [id]=\"inputId()\"\n type=\"text\"\n class=\"color-picker-input\"\n [value]=\"isInputFocused() ? manualInputValue() : formattedColor()\"\n [placeholder]=\"floatingLabel() && !isFloated() ? '' : placeholder()\"\n [disabled]=\"effectiveDisabled()\"\n [readonly]=\"readonly()\"\n (input)=\"onTriggerInput($event)\"\n (focus)=\"onTriggerFocus()\"\n (blur)=\"onTriggerBlur($event)\"\n (keydown.enter)=\"onTriggerEnter($event)\"\n [attr.aria-label]=\"label() || placeholder()\"\n />\n\n <!-- Clear Button -->\n @if (clearable() && formattedColor() && !effectiveDisabled() && !readonly()) {\n <button type=\"button\" class=\"clear-button\" aria-label=\"Clear color\" (click)=\"clear($event)\">\n <svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" stroke=\"currentColor\" stroke-width=\"2\" fill=\"none\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n </button>\n }\n\n <!-- Dropdown Chevron Indicator -->\n <button type=\"button\" class=\"dropdown-chevron-icon\" [class.is-rotated]=\"isOpen()\"\n aria-label=\"Toggle color palette\" tabindex=\"-1\" (click)=\"toggleDropdown($event)\">\n <svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" stroke=\"currentColor\" stroke-width=\"2\" fill=\"none\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"6 9 12 15 18 9\"></polyline>\n </svg>\n </button>\n\n @if (label() && floatingLabel()) {\n <label [for]=\"inputId()\" class=\"talos-floating-label\" [class.is-floated]=\"isFloated()\">{{ label() }}</label>\n }\n </div>\n\n <!-- CDK Connected Popover Overlay -->\n <ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"origin\" [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\" (overlayOutsideClick)=\"close()\" (detach)=\"close()\">\n <div class=\"talos-color-picker-panel talos-popover-panel\" (click)=\"$event.stopPropagation()\">\n <ng-container *ngTemplateOutlet=\"pickerContentTpl\"></ng-container>\n </div>\n </ng-template>\n</div>\n} @else {\n<!-- Inline / Embedded Mode -->\n<div class=\"talos-color-picker-panel talos-inline-panel\">\n @if (label()) {\n <div class=\"panel-header-title\">{{ label() }}</div>\n }\n <ng-container *ngTemplateOutlet=\"pickerContentTpl\"></ng-container>\n</div>\n}\n\n<!-- Main Color Picker Content Template -->\n<ng-template #pickerContentTpl>\n <div class=\"picker-inner-container\">\n\n <!-- 1. Saturation & Value 2D Canvas -->\n <div #satValCanvas class=\"sat-val-canvas\" [style.background-color]=\"pureHueHex()\" tabindex=\"0\" role=\"slider\"\n aria-label=\"Color saturation and brightness\"\n [attr.aria-valuetext]=\"'Saturation ' + currentHsva().s + '%, Brightness ' + currentHsva().v + '%'\"\n (mousedown)=\"onSatValMouseDown($event)\" (touchstart)=\"onSatValTouchStart($event)\"\n (keydown)=\"onSatValKeyDown($event)\">\n <div class=\"sat-gradient-white\"></div>\n <div class=\"val-gradient-black\"></div>\n\n <!-- Handle Pin -->\n <div class=\"sat-val-handle\" [class.is-light-handle]=\"!isLight()\" [style.left.%]=\"currentHsva().s\"\n [style.top.%]=\"100 - currentHsva().v\" [style.background-color]=\"rgbaString()\">\n </div>\n </div>\n\n <!-- 2. Sliders & Action Bar -->\n <div class=\"sliders-action-bar\">\n <!-- Sliders Column -->\n <div class=\"sliders-column\">\n <!-- Hue Rainbow Slider Track -->\n <div #hueTrack class=\"hue-slider-track\" tabindex=\"0\" role=\"slider\" aria-label=\"Hue spectrum\" aria-valuemin=\"0\"\n aria-valuemax=\"360\" [attr.aria-valuenow]=\"currentHsva().h\" (mousedown)=\"onHueMouseDown($event)\"\n (touchstart)=\"onHueTouchStart($event)\" (keydown)=\"onHueKeyDown($event)\">\n <div class=\"slider-thumb\" [style.left.%]=\"(currentHsva().h / 360) * 100\"\n [style.background-color]=\"pureHueHex()\">\n </div>\n </div>\n\n <!-- Alpha Opacity Slider Track -->\n @if (showAlpha()) {\n <div #alphaTrack class=\"alpha-slider-track\" tabindex=\"0\" role=\"slider\" aria-label=\"Color opacity\"\n aria-valuemin=\"0\" aria-valuemax=\"1\" [attr.aria-valuenow]=\"currentHsva().a\"\n (mousedown)=\"onAlphaMouseDown($event)\" (touchstart)=\"onAlphaTouchStart($event)\"\n (keydown)=\"onAlphaKeyDown($event)\">\n <div class=\"alpha-checkerboard-bg\"></div>\n <div class=\"alpha-gradient-overlay\"\n [style.background]=\"'linear-gradient(to right, transparent, ' + pureHueHex() + ')'\">\n </div>\n <div class=\"slider-thumb\" [style.left.%]=\"currentHsva().a * 100\" [style.background-color]=\"rgbaString()\">\n </div>\n </div>\n }\n </div>\n\n <!-- Action & Preview Column -->\n <div class=\"action-preview-column\">\n <!-- Color Preview Circle -->\n <div class=\"swatch-circle-preview\" [title]=\"formattedColor()\">\n <div class=\"swatch-checkerboard\"></div>\n <div class=\"swatch-fill\" [style.background-color]=\"rgbaString()\"></div>\n </div>\n\n <!-- Quick Action Buttons -->\n <div class=\"quick-actions-row\">\n @if (showEyeDropper() && hasEyeDropper()) {\n <button type=\"button\" class=\"icon-action-button\" title=\"Pick color from screen\"\n aria-label=\"Pick color from screen\" (click)=\"pickWithEyeDropper()\">\n <svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path\n d=\"m12 9-8.414 8.414A2 2 0 0 0 3 18.828v1.344a2 2 0 0 1-.586 1.414A2 2 0 0 1 3.828 21h1.344a2 2 0 0 0 1.414-.586L15 12\" />\n <path d=\"m18 9 .4.4a1 1 0 1 1-3 3l-3.8-3.8a1 1 0 1 1 3-3l.4.4 3.4-3.4a1 1 0 1 1 3 3z\" />\n <path d=\"m2 22 .414-.414\" />\n </svg>\n </button>\n }\n\n <button type=\"button\" class=\"icon-action-button\" [class.is-copied]=\"copied()\"\n [title]=\"copied() ? 'Copied to clipboard!' : 'Copy color string'\" aria-label=\"Copy color string\"\n (click)=\"copyColor()\">\n @if (copied()) {\n <svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" stroke=\"currentColor\" stroke-width=\"2\" fill=\"none\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"copy-success-icon\">\n <polyline points=\"20 6 9 17 4 12\"></polyline>\n </svg>\n } @else {\n <svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" stroke=\"currentColor\" stroke-width=\"2\" fill=\"none\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"></rect>\n <path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"></path>\n </svg>\n }\n </button>\n </div>\n </div>\n </div>\n\n <!-- 3. Format Switcher & Channel Inputs -->\n @if (showInputs()) {\n <div class=\"inputs-section\">\n @if (showFormatSwitcher()) {\n <div class=\"format-tabs-bar\">\n <button type=\"button\" class=\"format-tab-btn\" [class.is-active]=\"currentFormat() === 'hex'\"\n (click)=\"switchFormat('hex')\">\n HEX\n </button>\n <button type=\"button\" class=\"format-tab-btn\" [class.is-active]=\"currentFormat() === 'rgb'\"\n (click)=\"switchFormat('rgb')\">\n RGB\n </button>\n <button type=\"button\" class=\"format-tab-btn\" [class.is-active]=\"currentFormat() === 'hsl'\"\n (click)=\"switchFormat('hsl')\">\n HSL\n </button>\n </div>\n }\n\n <!-- Channel Inputs Grid -->\n <div class=\"channel-inputs-grid\">\n @if (currentFormat() === 'hex') {\n <!-- HEX Input -->\n <div class=\"input-field-group hex-field\">\n <input type=\"text\" class=\"channel-input hex-input\" [ngModel]=\"inputHex()\"\n (ngModelChange)=\"onHexInputChange($event)\" placeholder=\"#3B82F6\" aria-label=\"Hex color value\" />\n <span class=\"field-caption\">HEX</span>\n </div>\n } @else if (currentFormat() === 'rgb') {\n <!-- RGB Inputs -->\n <div class=\"input-field-group\">\n <input type=\"number\" min=\"0\" max=\"255\" class=\"channel-input\" [(ngModel)]=\"inputR\"\n (ngModelChange)=\"onRgbaInputChange()\" aria-label=\"Red\" />\n <span class=\"field-caption\">R</span>\n </div>\n <div class=\"input-field-group\">\n <input type=\"number\" min=\"0\" max=\"255\" class=\"channel-input\" [(ngModel)]=\"inputG\"\n (ngModelChange)=\"onRgbaInputChange()\" aria-label=\"Green\" />\n <span class=\"field-caption\">G</span>\n </div>\n <div class=\"input-field-group\">\n <input type=\"number\" min=\"0\" max=\"255\" class=\"channel-input\" [(ngModel)]=\"inputB\"\n (ngModelChange)=\"onRgbaInputChange()\" aria-label=\"Blue\" />\n <span class=\"field-caption\">B</span>\n </div>\n } @else if (currentFormat() === 'hsl') {\n <!-- HSL Inputs -->\n <div class=\"input-field-group\">\n <input type=\"number\" min=\"0\" max=\"360\" class=\"channel-input\" [(ngModel)]=\"inputH\"\n (ngModelChange)=\"onHslaInputChange()\" aria-label=\"Hue\" />\n <span class=\"field-caption\">H</span>\n </div>\n <div class=\"input-field-group\">\n <input type=\"number\" min=\"0\" max=\"100\" class=\"channel-input\" [(ngModel)]=\"inputS\"\n (ngModelChange)=\"onHslaInputChange()\" aria-label=\"Saturation\" />\n <span class=\"field-caption\">S%</span>\n </div>\n <div class=\"input-field-group\">\n <input type=\"number\" min=\"0\" max=\"100\" class=\"channel-input\" [(ngModel)]=\"inputL\"\n (ngModelChange)=\"onHslaInputChange()\" aria-label=\"Lightness\" />\n <span class=\"field-caption\">L%</span>\n </div>\n }\n\n <!-- Alpha Input (Common for all non-hex or with alpha) -->\n @if (showAlpha()) {\n <div class=\"input-field-group alpha-field\">\n <input type=\"number\" min=\"0\" max=\"100\" class=\"channel-input\" [(ngModel)]=\"inputA\"\n (ngModelChange)=\"currentFormat() === 'hsl' ? onHslaInputChange() : onRgbaInputChange()\"\n aria-label=\"Opacity Percentage\" />\n <span class=\"field-caption\">A%</span>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- 4. Preset Color Swatches -->\n @if (showPresets() && normalizedPresets().length > 0) {\n <div class=\"presets-section\">\n @for (group of normalizedPresets(); track group.label) {\n @if (normalizedPresets().length > 1) {\n <div class=\"preset-group-title\">{{ group.label }}</div>\n }\n <div class=\"swatches-grid\">\n @for (color of group.colors; track color) {\n <button type=\"button\" class=\"swatch-btn\"\n [class.is-selected]=\"currentHex().toLowerCase() === color.toLowerCase()\" [style.background-color]=\"color\"\n [title]=\"color\" [attr.aria-label]=\"'Select preset color ' + color\" (click)=\"selectPreset(color)\">\n @if (currentHex().toLowerCase() === color.toLowerCase()) {\n <svg viewBox=\"0 0 24 24\" width=\"12\" height=\"12\" stroke=\"currentColor\" stroke-width=\"3\" fill=\"none\"\n stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"swatch-check-icon\">\n <polyline points=\"20 6 9 17 4 12\"></polyline>\n </svg>\n }\n </button>\n }\n </div>\n }\n </div>\n }\n\n <!-- 5. Recent Colors -->\n @if (showRecent() && recentColors().length > 0) {\n <div class=\"recent-section\">\n <div class=\"recent-group-title\">Recent Colors</div>\n <div class=\"swatches-grid recent-grid\">\n @for (color of recentColors(); track color) {\n <button type=\"button\" class=\"swatch-btn\"\n [class.is-selected]=\"currentHex().toLowerCase() === color.toLowerCase()\" [style.background-color]=\"color\"\n [title]=\"color\" [attr.aria-label]=\"'Select recent color ' + color\" (click)=\"selectPreset(color)\">\n </button>\n }\n </div>\n </div>\n }\n\n </div>\n</ng-template>","import { NgModule } from '@angular/core';\nimport { TalosColorPickerComponent } from './color-picker.component';\n\n@NgModule({\n imports: [TalosColorPickerComponent],\n exports: [TalosColorPickerComponent]\n})\nexport class TalosColorPickerModule {}\n","import {\n Component,\n ElementRef,\n ViewChildren,\n QueryList,\n computed,\n effect,\n forwardRef,\n input,\n output,\n signal,\n AfterViewInit\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { OtpCompletedEvent, OtpInputType, OtpSize, OtpSplitConfig, OtpVariant } from './otp.types';\n\nlet uniqueOtpId = 0;\n\n@Component({\n selector: 'talos-otp, talos-otp-input, talos-pin-input',\n imports: [],\n templateUrl: './otp.component.html',\n styleUrl: './otp.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TalosOtpComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'talos-otp-host',\n '[class.is-disabled]': 'effectiveDisabled()',\n '[class.is-readonly]': 'readonly()',\n '[class.is-invalid]': 'effectiveInvalid()',\n '[class.otp-sm]': 'size() === \"sm\"',\n '[class.otp-md]': 'size() === \"md\"',\n '[class.otp-lg]': 'size() === \"lg\"',\n '[class.otp-outlined]': 'variant() === \"outlined\"',\n '[class.otp-filled]': 'variant() === \"filled\"',\n '[class.otp-underlined]': 'variant() === \"underlined\"'\n }\n})\nexport class TalosOtpComponent implements ControlValueAccessor, AfterViewInit {\n @ViewChildren('slotInput') slotInputs!: QueryList<ElementRef<HTMLInputElement>>;\n\n /** Total number of OTP digits/slots */\n readonly length = input<number>(6);\n\n /** Expected character input type ('number', 'text', 'password', 'alphanumeric') */\n readonly type = input<OtpInputType>('number');\n\n /** Visual variant ('outlined' | 'filled' | 'underlined') */\n readonly variant = input<OtpVariant>('outlined');\n\n /** Size scale ('sm' | 'md' | 'lg') */\n readonly size = input<OtpSize>('md');\n\n /** Whether to visually mask input characters */\n readonly mask = input<boolean>(false);\n\n /** Character to display when masked */\n readonly maskChar = input<string>('•');\n\n /** Single placeholder character for empty slots */\n readonly placeholder = input<string>('');\n\n /** Disabled state */\n readonly disabled = input<boolean>(false);\n\n /** Readonly state */\n readonly readonly = input<boolean>(false);\n\n /** Error / Invalid state */\n readonly invalid = input<boolean>(false);\n\n /** Automatically focus first slot on init */\n readonly autoFocus = input<boolean>(false);\n\n /** Optional separator character between slots or groups (e.g. '-') */\n readonly separator = input<string>('');\n\n /**\n * Split configuration: number (interval), number[] (group sizes), or string (e.g. '3,3' or '2-2-2')\n */\n readonly split = input<OtpSplitConfig | undefined>(undefined);\n\n /** Frequency of separator insertion (e.g. 3 for grouping by 3) */\n readonly separatorInterval = input<number | undefined>(undefined);\n\n /** Custom grouping sizes, e.g. [3, 3] or [4, 4] */\n readonly grouping = input<OtpSplitConfig | undefined>(undefined);\n\n /** Whether to allow alphanumeric characters when type is text or alphanumeric */\n readonly allowAlphanumeric = input<boolean>(false);\n\n /** Component HTML ID prefix */\n readonly id = input<string>('');\n\n /** Accessible label */\n readonly ariaLabel = input<string>('One-time password');\n\n /** Emitted whenever the combined value changes */\n readonly valueChange = output<string>();\n\n /** Emitted when all slots are filled */\n readonly completed = output<string>();\n\n /** Emitted with structured complete state */\n readonly otpChange = output<OtpCompletedEvent>();\n\n // Internal reactive state\n private readonly defaultId = `talos-otp-${++uniqueOtpId}`;\n readonly elementId = computed(() => this.id() || this.defaultId);\n\n private readonly disabledState = signal<boolean>(false);\n readonly effectiveDisabled = computed(() => this.disabled() || this.disabledState());\n readonly effectiveInvalid = computed(() => this.invalid());\n\n /** Slots array for iteration */\n readonly slotIndices = computed(() => {\n const len = Math.max(1, Math.min(16, this.length()));\n return Array.from({ length: len }, (_, i) => i);\n });\n\n /** Digit array holding current slot values */\n readonly digitValues = signal<string[]>([]);\n readonly focusedIndex = signal<number>(-1);\n\n // Set of indices after which a separator should appear\n readonly separatorIndices = computed<Set<number>>(() => {\n const indices = new Set<number>();\n const total = this.slotIndices().length;\n const sep = this.separator();\n const userSplit = this.parseSplit(this.split() ?? this.grouping());\n\n // If no separator string is provided or user explicitly disabled split:\n if (!sep || userSplit === 'none') {\n return indices;\n }\n\n // Check for explicit user split / grouping configuration\n const userInterval = this.separatorInterval();\n\n // If explicit grouping / array split is provided:\n if (Array.isArray(userSplit) && userSplit.length > 0) {\n let cumulative = 0;\n let splitCount = 0;\n for (let i = 0; i < userSplit.length - 1 && splitCount < 4; i++) {\n const chunkSize = Math.min(4, Math.max(1, userSplit[i]));\n cumulative += chunkSize;\n if (cumulative - 1 < total - 1) {\n indices.add(cumulative - 1);\n splitCount++;\n }\n }\n return indices;\n }\n\n // If explicit interval number is provided (via split or separatorInterval):\n const explicitInterval = typeof userSplit === 'number' ? userSplit : userInterval;\n if (explicitInterval != null && explicitInterval > 0) {\n const interval = Math.min(4, Math.max(1, explicitInterval));\n let splitCount = 0;\n for (let i = interval - 1; i < total - 1 && splitCount < 4; i += interval) {\n indices.add(i);\n splitCount++;\n }\n return indices;\n }\n\n // Automatic default split mode (no explicit split configured):\n // Suppress separators for 4 digits and below\n if (total < 5) {\n return indices;\n }\n\n // Automatic balanced grouping for 5+ digits (chunks of max 4, max 4 splits)\n let interval: number;\n if (total <= 8) {\n interval = Math.min(4, Math.ceil(total / 2));\n } else if (total <= 12) {\n interval = Math.min(4, Math.ceil(total / 3));\n } else {\n interval = 4;\n }\n\n let splitCount = 0;\n for (let i = interval - 1; i < total - 1 && splitCount < 4; i += interval) {\n indices.add(i);\n splitCount++;\n }\n\n return indices;\n });\n\n private parseSplit(config: OtpSplitConfig | undefined): number[] | number | 'none' | undefined {\n if (config == null) return undefined;\n if (config === 'none' || config === false || config === 0) return 'none';\n if (config === true) return undefined;\n if (typeof config === 'number') return config > 0 ? config : 'none';\n if (Array.isArray(config)) return config;\n if (typeof config === 'string') {\n const trimmed = config.trim().toLowerCase();\n if (trimmed === 'none' || trimmed === 'false' || trimmed === '0' || trimmed === 'off' || trimmed === 'no') {\n return 'none';\n }\n if (trimmed === 'auto' || trimmed === 'true') {\n return undefined;\n }\n if (/^\\d+$/.test(trimmed)) {\n return parseInt(trimmed, 10);\n }\n const parts = trimmed\n .replace(/^\\[|\\]$/g, '')\n .split(/[\\s,\\-]+/)\n .map(p => parseInt(p.trim(), 10))\n .filter(n => !isNaN(n) && n > 0);\n if (parts.length > 0) {\n return parts;\n }\n }\n return undefined;\n }\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n // Keep digitValues in sync with length\n effect(\n () => {\n const len = this.slotIndices().length;\n const current = this.digitValues();\n if (current.length !== len) {\n const next = Array.from({ length: len }, (_, i) => current[i] || '');\n this.digitValues.set(next);\n }\n },\n { allowSignalWrites: true }\n );\n }\n\n ngAfterViewInit(): void {\n if (this.autoFocus() && !this.effectiveDisabled() && !this.readonly()) {\n setTimeout(() => this.focusSlot(0), 50);\n }\n }\n\n /** Gets native input type for slots */\n getInputType(): string {\n if (this.mask() || this.type() === 'password') {\n return 'password';\n }\n return 'text';\n }\n\n /** Gets appropriate inputMode for mobile keyboards */\n getInputMode(): string {\n if (this.type() === 'number') {\n return 'numeric';\n }\n return 'text';\n }\n\n /** Value representation for slot */\n getSlotDisplayValue(index: number): string {\n const val = this.digitValues()[index] || '';\n return val;\n }\n\n onSlotFocus(index: number, event: FocusEvent): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n this.focusedIndex.set(index);\n const target = event.target as HTMLInputElement;\n if (target) {\n target.select();\n }\n }\n\n onSlotBlur(): void {\n this.focusedIndex.set(-1);\n this.onTouched();\n }\n\n onSlotKeyDown(event: KeyboardEvent, index: number): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n\n const key = event.key;\n\n if (key === 'Backspace') {\n event.preventDefault();\n const currentValues = [...this.digitValues()];\n if (currentValues[index]) {\n currentValues[index] = '';\n this.updateValues(currentValues);\n } else if (index > 0) {\n currentValues[index - 1] = '';\n this.updateValues(currentValues);\n this.focusSlot(index - 1);\n }\n return;\n }\n\n if (key === 'Delete') {\n event.preventDefault();\n const currentValues = [...this.digitValues()];\n currentValues[index] = '';\n this.updateValues(currentValues);\n return;\n }\n\n if (key === 'ArrowLeft') {\n event.preventDefault();\n if (index > 0) {\n this.focusSlot(index - 1);\n }\n return;\n }\n\n if (key === 'ArrowRight') {\n event.preventDefault();\n if (index < this.slotIndices().length - 1) {\n this.focusSlot(index + 1);\n }\n return;\n }\n\n if (key === 'Home') {\n event.preventDefault();\n this.focusSlot(0);\n return;\n }\n\n if (key === 'End') {\n event.preventDefault();\n this.focusSlot(this.slotIndices().length - 1);\n return;\n }\n\n // Single character input\n if (key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {\n if (this.isValidCharacter(key)) {\n event.preventDefault();\n const currentValues = [...this.digitValues()];\n currentValues[index] = this.type() === 'alphanumeric' ? key.toUpperCase() : key;\n this.updateValues(currentValues);\n\n if (index < this.slotIndices().length - 1) {\n this.focusSlot(index + 1);\n }\n } else {\n event.preventDefault();\n }\n }\n }\n\n onSlotInput(event: Event, index: number): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n\n const inputEl = event.target as HTMLInputElement;\n const rawVal = inputEl.value;\n\n if (!rawVal) {\n const currentValues = [...this.digitValues()];\n currentValues[index] = '';\n this.updateValues(currentValues);\n return;\n }\n\n const lastChar = rawVal.slice(-1);\n if (this.isValidCharacter(lastChar)) {\n const currentValues = [...this.digitValues()];\n currentValues[index] = this.type() === 'alphanumeric' ? lastChar.toUpperCase() : lastChar;\n this.updateValues(currentValues);\n\n if (index < this.slotIndices().length - 1) {\n this.focusSlot(index + 1);\n }\n } else {\n inputEl.value = this.digitValues()[index] || '';\n }\n }\n\n onPaste(event: ClipboardEvent, startIndex: number): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n\n event.preventDefault();\n const clipboardData = event.clipboardData?.getData('text') || '';\n if (!clipboardData) return;\n\n const cleanChars = clipboardData\n .split('')\n .filter(char => this.isValidCharacter(char))\n .map(char => (this.type() === 'alphanumeric' ? char.toUpperCase() : char));\n\n if (cleanChars.length === 0) return;\n\n const totalSlots = this.slotIndices().length;\n const currentValues = [...this.digitValues()];\n\n // If pasted full string, start from 0; otherwise start from focused slot\n const start = cleanChars.length >= totalSlots ? 0 : startIndex;\n\n for (let i = 0; i < cleanChars.length && start + i < totalSlots; i++) {\n currentValues[start + i] = cleanChars[i];\n }\n\n this.updateValues(currentValues);\n\n const nextIndex = Math.min(start + cleanChars.length, totalSlots - 1);\n this.focusSlot(nextIndex);\n }\n\n /** Validates whether a single character is allowed based on input type */\n private isValidCharacter(char: string): boolean {\n if (this.type() === 'number') {\n return /^[0-9]$/.test(char);\n }\n if (this.type() === 'alphanumeric' || this.allowAlphanumeric()) {\n return /^[a-zA-Z0-9]$/.test(char);\n }\n return true;\n }\n\n /** Focuses the slot input at the specified index */\n focusSlot(index: number): void {\n if (!this.slotInputs) return;\n const inputsArray = this.slotInputs.toArray();\n if (inputsArray[index]) {\n inputsArray[index].nativeElement.focus();\n inputsArray[index].nativeElement.select();\n }\n }\n\n /** Clears all slot values */\n clear(): void {\n const emptyValues = Array.from({ length: this.slotIndices().length }, () => '');\n this.updateValues(emptyValues);\n this.focusSlot(0);\n }\n\n /** Updates internal state, triggers CVA, and emits change events */\n private updateValues(values: string[]): void {\n this.digitValues.set(values);\n const combinedValue = values.join('');\n const total = this.slotIndices().length;\n const isComplete = combinedValue.length === total && values.every(v => v.length > 0);\n\n this.onChange(combinedValue);\n this.valueChange.emit(combinedValue);\n this.otpChange.emit({ value: combinedValue, isComplete });\n\n if (isComplete) {\n this.completed.emit(combinedValue);\n }\n }\n\n // --- ControlValueAccessor Implementation ---\n writeValue(obj: any): void {\n const str = obj != null ? String(obj) : '';\n const total = this.slotIndices().length;\n const newValues = Array.from({ length: total }, (_, i) => str[i] || '');\n this.digitValues.set(newValues);\n }\n\n registerOnChange(fn: (val: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabledState.set(isDisabled);\n }\n}\n","<div\n class=\"talos-otp-container\"\n role=\"group\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.id]=\"elementId()\"\n>\n @for (index of slotIndices(); track index) {\n <div\n class=\"talos-otp-slot-wrapper\"\n [class.is-focused]=\"focusedIndex() === index\"\n [class.is-filled]=\"!!digitValues()[index]\"\n >\n <input\n #slotInput\n class=\"talos-otp-slot\"\n [type]=\"getInputType()\"\n [attr.inputmode]=\"getInputMode()\"\n autocomplete=\"one-time-code\"\n [value]=\"getSlotDisplayValue(index)\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"effectiveDisabled()\"\n [readOnly]=\"readonly()\"\n [attr.aria-label]=\"'Digit ' + (index + 1) + ' of ' + slotIndices().length\"\n [attr.aria-invalid]=\"effectiveInvalid()\"\n (focus)=\"onSlotFocus(index, $event)\"\n (blur)=\"onSlotBlur()\"\n (keydown)=\"onSlotKeyDown($event, index)\"\n (input)=\"onSlotInput($event, index)\"\n (paste)=\"onPaste($event, index)\"\n />\n </div>\n\n @if (separatorIndices().has(index)) {\n <span class=\"talos-otp-separator\" aria-hidden=\"true\">\n {{ separator() || '–' }}\n </span>\n }\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { TalosOtpComponent } from './otp.component';\n\n@NgModule({\n imports: [TalosOtpComponent],\n exports: [TalosOtpComponent]\n})\nexport class TalosOtpModule {}\n","import {\n Component,\n DestroyRef,\n ElementRef,\n TemplateRef,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n output,\n signal,\n untracked\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { Subject, Observable, from, isObservable, of } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, switchMap, catchError } from 'rxjs/operators';\nimport {\n CdkDragDrop,\n CdkDrag,\n CdkDropList,\n CdkDropListGroup,\n CdkDragPlaceholder,\n CdkDragPreview,\n CdkDragHandle,\n moveItemInArray,\n transferArrayItem\n} from '@angular/cdk/drag-drop';\nimport {\n LucideChevronRight,\n LucideChevronLeft,\n LucideChevronsRight,\n LucideChevronsLeft,\n LucideChevronUp,\n LucideChevronDown,\n LucideChevronsUp,\n LucideChevronsDown,\n LucideSearch,\n LucideX,\n LucideLoader2,\n LucideGripVertical\n} from '@lucide/angular';\nimport {\n TalosTransferEvent,\n TalosTransferItem,\n TalosTransferListItemContext,\n TalosTransferSelectionChange,\n TransferListDirection,\n TransferListFilterFn,\n TransferListItemDescriptionFn,\n TransferListItemDisabledFn,\n TransferListItemKeyFn,\n TransferListItemLabelFn,\n TransferListPane,\n TransferListSearchMode,\n TransferListDragMode,\n TransferListSearchHandler,\n TransferListSearchQueryEvent,\n TransferListSearchErrorEvent,\n TransferListSize,\n TransferListVariant\n} from './transfer-list.types';\n\nlet uniqueTransferListIdCounter = 0;\n\n@Component({\n selector: 'talos-transfer-list',\n imports: [\n FormsModule,\n NgTemplateOutlet,\n CdkDropListGroup,\n CdkDropList,\n CdkDrag,\n CdkDragPlaceholder,\n CdkDragPreview,\n CdkDragHandle,\n LucideChevronRight,\n LucideChevronLeft,\n LucideChevronsRight,\n LucideChevronsLeft,\n LucideChevronUp,\n LucideChevronDown,\n LucideChevronsUp,\n LucideChevronsDown,\n LucideSearch,\n LucideX,\n LucideLoader2,\n LucideGripVertical\n ],\n templateUrl: './transfer-list.component.html',\n styleUrl: './transfer-list.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TalosTransferListComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'talos-transfer-list-host',\n '[class.transfer-size-sm]': 'size() === \"sm\"',\n '[class.transfer-size-md]': 'size() === \"md\"',\n '[class.transfer-size-lg]': 'size() === \"lg\"',\n '[class.transfer-variant-outlined]': 'variant() === \"outlined\"',\n '[class.transfer-variant-elevated]': 'variant() === \"elevated\"',\n '[class.transfer-variant-flat]': 'variant() === \"flat\"',\n '[class.transfer-variant-bordered]': 'variant() === \"bordered\"',\n '[class.is-disabled]': 'effectiveDisabled()',\n '[class.is-loading]': 'loading()',\n '[class.is-card-drag]': 'dragDrop() && !useDragHandle()'\n }\n})\nexport class TalosTransferListComponent<T = unknown> implements ControlValueAccessor {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n\n // Signal Inputs\n readonly source = input<readonly T[] | T[]>([]);\n readonly target = input<readonly T[] | T[]>([]);\n readonly titles = input<[string, string]>(['Available', 'Selected']);\n readonly searchable = input<boolean>(true);\n readonly searchMode = input<TransferListSearchMode>('client');\n readonly searchPlaceholder = input<string | [string, string]>('Search items...');\n readonly sourceSearchQuery = input<string>('');\n readonly targetSearchQuery = input<string>('');\n readonly searchDebounce = input<number>(300);\n readonly searchHandler = input<TransferListSearchHandler<T> | null>(null);\n readonly sourceSearchHandler = input<((query: string) => Observable<T[]> | Promise<T[]> | T[]) | null>(null);\n readonly targetSearchHandler = input<((query: string) => Observable<T[]> | Promise<T[]> | T[]) | null>(null);\n readonly sourceLoading = input<boolean>(false);\n readonly targetLoading = input<boolean>(false);\n readonly loading = input<boolean>(false);\n readonly disabled = input<boolean>(false);\n readonly showSelectAll = input<boolean>(true);\n readonly showMoveAll = input<boolean>(true);\n readonly showReorder = input<boolean>(false);\n readonly dragDrop = input<boolean>(true);\n readonly dragMode = input<TransferListDragMode>('handle');\n readonly dragHandle = input<boolean | null>(null);\n readonly size = input<TransferListSize>('md');\n readonly variant = input<TransferListVariant>('outlined');\n readonly height = input<string | number | null>(null);\n readonly listWidth = input<string | number | null>(null);\n readonly itemKey = input<keyof T | TransferListItemKeyFn<T> | null>(null);\n readonly itemLabel = input<keyof T | TransferListItemLabelFn<T> | null>(null);\n readonly itemDescription = input<keyof T | TransferListItemDescriptionFn<T> | null>(null);\n readonly itemDisabled = input<keyof T | TransferListItemDisabledFn<T> | null>(null);\n readonly filterFn = input<TransferListFilterFn<T> | null>(null);\n readonly itemTemplate = input<TemplateRef<TalosTransferListItemContext<T>> | null>(null);\n readonly emptySourceText = input<string>('No items available');\n readonly emptyTargetText = input<string>('No items selected');\n readonly searchingText = input<string>('Searching remote catalog...');\n readonly noMatchesText = input<string>('No matches found for');\n readonly id = input<string>('');\n\n // Computed Search States\n readonly isSourceSearching = computed(() => Boolean(this.internalSourceQuery().trim()));\n readonly isTargetSearching = computed(() => Boolean(this.internalTargetQuery().trim()));\n\n // Computed Drag Handle mode\n readonly useDragHandle = computed(() => {\n const customHandle = this.dragHandle();\n if (customHandle !== null && customHandle !== undefined) {\n return Boolean(customHandle);\n }\n return this.dragMode() === 'handle';\n });\n\n // Signal Outputs\n readonly sourceChange = output<T[]>();\n readonly targetChange = output<T[]>();\n readonly transfer = output<TalosTransferEvent<T>>();\n readonly search = output<TransferListSearchQueryEvent>();\n readonly sourceSearchChange = output<string>();\n readonly targetSearchChange = output<string>();\n readonly searchError = output<TransferListSearchErrorEvent>();\n readonly selectionChange = output<TalosTransferSelectionChange<T>>();\n readonly targetReorder = output<T[]>();\n\n // Unique ID\n private readonly autoId = `talos-transfer-list-${uniqueTransferListIdCounter++}`;\n readonly componentId = computed(() => this.id() || this.autoId);\n\n // Form Control Value Accessor state\n private readonly formDisabled = signal<boolean>(false);\n readonly effectiveDisabled = computed(() => this.disabled() || this.formDisabled());\n\n // Internal Data State\n readonly internalSource = signal<T[]>([]);\n readonly internalTarget = signal<T[]>([]);\n\n // Selection Sets\n readonly sourceSelectedKeys = signal<Set<string | number>>(new Set());\n readonly targetSelectedKeys = signal<Set<string | number>>(new Set());\n\n // Search Queries & State\n readonly internalSourceQuery = signal<string>('');\n readonly internalTargetQuery = signal<string>('');\n readonly internalSourceLoading = signal<boolean>(false);\n readonly internalTargetLoading = signal<boolean>(false);\n readonly effectiveSourceLoading = computed(() => this.sourceLoading() || this.internalSourceLoading());\n readonly effectiveTargetLoading = computed(() => this.targetLoading() || this.internalTargetLoading());\n\n // Debounced Search Subjects\n private readonly sourceSearchSubject$ = new Subject<string>();\n private readonly targetSearchSubject$ = new Subject<string>();\n private readonly destroyRef = inject(DestroyRef);\n\n // CVA callbacks\n private onChange: (value: unknown) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n // Sync external source\n effect(() => {\n const src = this.source();\n untracked(() => {\n this.internalSource.set(Array.isArray(src) ? [...src] : []);\n this.pruneSelections();\n });\n });\n\n // Sync external target\n effect(() => {\n const tgt = this.target();\n untracked(() => {\n this.internalTarget.set(Array.isArray(tgt) ? [...tgt] : []);\n this.pruneSelections();\n });\n });\n\n // Sync external search queries\n effect(() => {\n const q = this.sourceSearchQuery();\n untracked(() => this.internalSourceQuery.set(q));\n });\n\n effect(() => {\n const q = this.targetSearchQuery();\n untracked(() => this.internalTargetQuery.set(q));\n });\n\n // Setup debounced server search pipeline\n this.sourceSearchSubject$\n .pipe(\n debounceTime(this.searchDebounce()),\n distinctUntilChanged(),\n switchMap(query => this.processSearchRequest(query, 'source')),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe();\n\n this.targetSearchSubject$\n .pipe(\n debounceTime(this.searchDebounce()),\n distinctUntilChanged(),\n switchMap(query => this.processSearchRequest(query, 'target')),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe();\n }\n\n // Placeholders\n readonly sourcePlaceholder = computed(() => {\n const p = this.searchPlaceholder();\n return Array.isArray(p) ? p[0] : p;\n });\n\n readonly targetPlaceholder = computed(() => {\n const p = this.searchPlaceholder();\n return Array.isArray(p) ? p[1] : p;\n });\n\n readonly containerHeight = computed(() => {\n const h = this.height();\n if (h !== null && h !== undefined) {\n return typeof h === 'number' ? `${h}px` : h;\n }\n switch (this.size()) {\n case 'sm':\n return '260px';\n case 'lg':\n return '380px';\n case 'md':\n default:\n return '320px';\n }\n });\n\n readonly effectivePaneWidth = computed(() => {\n const w = this.listWidth();\n if (w !== null && w !== undefined) {\n return typeof w === 'number' ? `${w}px` : w;\n }\n return null;\n });\n\n // Key / Label / Disabled extractors\n getItemKey(item: T, fallbackIndex = 0): string | number {\n if (item === null || item === undefined) return fallbackIndex;\n const keyProp = this.itemKey();\n if (typeof keyProp === 'function') {\n return (keyProp as TransferListItemKeyFn<T>)(item);\n }\n if (typeof keyProp === 'string' && item && typeof item === 'object') {\n const val = (item as Record<string, unknown>)[keyProp];\n if (val !== undefined && val !== null) return String(val);\n }\n if (typeof item === 'object') {\n const rec = item as Record<string, unknown>;\n if (rec['id'] !== undefined && rec['id'] !== null) return String(rec['id']);\n if (rec['key'] !== undefined && rec['key'] !== null) return String(rec['key']);\n if (rec['value'] !== undefined && rec['value'] !== null) return String(rec['value']);\n }\n return String(item);\n }\n\n getItemLabel(item: T): string {\n if (item === null || item === undefined) return '';\n const labelProp = this.itemLabel();\n if (typeof labelProp === 'function') {\n return (labelProp as TransferListItemLabelFn<T>)(item);\n }\n if (typeof labelProp === 'string' && item && typeof item === 'object') {\n const val = (item as Record<string, unknown>)[labelProp];\n if (val !== undefined && val !== null) return String(val);\n }\n if (typeof item === 'object') {\n const rec = item as Record<string, unknown>;\n if (rec['label'] !== undefined) return String(rec['label']);\n if (rec['name'] !== undefined) return String(rec['name']);\n if (rec['title'] !== undefined) return String(rec['title']);\n }\n return String(item);\n }\n\n getItemDescription(item: T): string | undefined {\n if (item === null || item === undefined) return undefined;\n const descProp = this.itemDescription();\n if (typeof descProp === 'function') {\n return (descProp as TransferListItemDescriptionFn<T>)(item);\n }\n if (typeof descProp === 'string' && item && typeof item === 'object') {\n const val = (item as Record<string, unknown>)[descProp];\n if (val !== undefined && val !== null) return String(val);\n }\n if (typeof item === 'object') {\n const rec = item as Record<string, unknown>;\n if (rec['description'] !== undefined) return String(rec['description']);\n }\n return undefined;\n }\n\n isItemDisabled(item: T): boolean {\n if (this.effectiveDisabled()) return true;\n if (item === null || item === undefined) return false;\n const disProp = this.itemDisabled();\n if (typeof disProp === 'function') {\n return (disProp as TransferListItemDisabledFn<T>)(item);\n }\n if (typeof disProp === 'string' && item && typeof item === 'object') {\n return Boolean((item as Record<string, unknown>)[disProp]);\n }\n if (typeof item === 'object') {\n const rec = item as Record<string, unknown>;\n if (rec['disabled'] !== undefined) return Boolean(rec['disabled']);\n }\n return false;\n }\n\n // Filtered Source & Target\n readonly filteredSource = computed(() => {\n const list = this.internalSource();\n if (this.searchMode() === 'server') return list;\n const q = this.internalSourceQuery().trim().toLowerCase();\n if (!q) return list;\n const customFilter = this.filterFn();\n if (customFilter) {\n return list.filter(item => customFilter(item, q, 'source'));\n }\n return list.filter(item => {\n const label = this.getItemLabel(item).toLowerCase();\n const desc = (this.getItemDescription(item) || '').toLowerCase();\n return label.includes(q) || desc.includes(q);\n });\n });\n\n readonly filteredTarget = computed(() => {\n const list = this.internalTarget();\n if (this.searchMode() === 'server') return list;\n const q = this.internalTargetQuery().trim().toLowerCase();\n if (!q) return list;\n const customFilter = this.filterFn();\n if (customFilter) {\n return list.filter(item => customFilter(item, q, 'target'));\n }\n return list.filter(item => {\n const label = this.getItemLabel(item).toLowerCase();\n const desc = (this.getItemDescription(item) || '').toLowerCase();\n return label.includes(q) || desc.includes(q);\n });\n });\n\n // Source Stats\n readonly sourceSelectedCount = computed(() => {\n const sel = this.sourceSelectedKeys();\n let count = 0;\n for (const item of this.filteredSource()) {\n if (sel.has(this.getItemKey(item))) count++;\n }\n return count;\n });\n\n readonly isSourceAllSelected = computed(() => {\n const list = this.filteredSource().filter(item => !this.isItemDisabled(item));\n if (list.length === 0) return false;\n const sel = this.sourceSelectedKeys();\n return list.every(item => sel.has(this.getItemKey(item)));\n });\n\n readonly isSourceIndeterminate = computed(() => {\n const list = this.filteredSource().filter(item => !this.isItemDisabled(item));\n if (list.length === 0) return false;\n const selCount = this.sourceSelectedCount();\n return selCount > 0 && selCount < list.length;\n });\n\n // Target Stats\n readonly targetSelectedCount = computed(() => {\n const sel = this.targetSelectedKeys();\n let count = 0;\n for (const item of this.filteredTarget()) {\n if (sel.has(this.getItemKey(item))) count++;\n }\n return count;\n });\n\n readonly isTargetAllSelected = computed(() => {\n const list = this.filteredTarget().filter(item => !this.isItemDisabled(item));\n if (list.length === 0) return false;\n const sel = this.targetSelectedKeys();\n return list.every(item => sel.has(this.getItemKey(item)));\n });\n\n readonly isTargetIndeterminate = computed(() => {\n const list = this.filteredTarget().filter(item => !this.isItemDisabled(item));\n if (list.length === 0) return false;\n const selCount = this.targetSelectedCount();\n return selCount > 0 && selCount < list.length;\n });\n\n // Item Context Generator\n getItemContext(item: T, pane: TransferListPane, index: number): TalosTransferListItemContext<T> {\n const key = this.getItemKey(item, index);\n const sel = pane === 'source' ? this.sourceSelectedKeys() : this.targetSelectedKeys();\n return {\n $implicit: item,\n item,\n pane,\n selected: sel.has(key),\n disabled: this.isItemDisabled(item),\n index\n };\n }\n\n // Selection Toggles\n toggleSourceItem(item: T): void {\n if (this.isItemDisabled(item)) return;\n const key = this.getItemKey(item);\n this.sourceSelectedKeys.update(set => {\n const next = new Set(set);\n if (next.has(key)) next.delete(key);\n else next.add(key);\n return next;\n });\n this.emitSelectionChange();\n }\n\n toggleTargetItem(item: T): void {\n if (this.isItemDisabled(item)) return;\n const key = this.getItemKey(item);\n this.targetSelectedKeys.update(set => {\n const next = new Set(set);\n if (next.has(key)) next.delete(key);\n else next.add(key);\n return next;\n });\n this.emitSelectionChange();\n }\n\n toggleSelectAllSource(): void {\n if (this.effectiveDisabled()) return;\n const list = this.filteredSource().filter(item => !this.isItemDisabled(item));\n if (this.isSourceAllSelected()) {\n // Unselect all in visible source\n this.sourceSelectedKeys.update(set => {\n const next = new Set(set);\n for (const item of list) next.delete(this.getItemKey(item));\n return next;\n });\n } else {\n // Select all in visible source\n this.sourceSelectedKeys.update(set => {\n const next = new Set(set);\n for (const item of list) next.add(this.getItemKey(item));\n return next;\n });\n }\n this.emitSelectionChange();\n }\n\n toggleSelectAllTarget(): void {\n if (this.effectiveDisabled()) return;\n const list = this.filteredTarget().filter(item => !this.isItemDisabled(item));\n if (this.isTargetAllSelected()) {\n this.targetSelectedKeys.update(set => {\n const next = new Set(set);\n for (const item of list) next.delete(this.getItemKey(item));\n return next;\n });\n } else {\n this.targetSelectedKeys.update(set => {\n const next = new Set(set);\n for (const item of list) next.add(this.getItemKey(item));\n return next;\n });\n }\n this.emitSelectionChange();\n }\n\n private emitSelectionChange(): void {\n const srcSelKeys = Array.from(this.sourceSelectedKeys());\n const tgtSelKeys = Array.from(this.targetSelectedKeys());\n const srcMap = new Map(this.internalSource().map(i => [this.getItemKey(i), i]));\n const tgtMap = new Map(this.internalTarget().map(i => [this.getItemKey(i), i]));\n\n const sourceSelected = srcSelKeys.map(k => srcMap.get(k)).filter((i): i is T => i !== undefined);\n const targetSelected = tgtSelKeys.map(k => tgtMap.get(k)).filter((i): i is T => i !== undefined);\n\n this.selectionChange.emit({\n sourceSelected,\n targetSelected,\n sourceSelectedKeys: srcSelKeys,\n targetSelectedKeys: tgtSelKeys\n });\n }\n\n private pruneSelections(): void {\n const srcKeys = new Set(this.internalSource().map(i => this.getItemKey(i)));\n const tgtKeys = new Set(this.internalTarget().map(i => this.getItemKey(i)));\n\n this.sourceSelectedKeys.update(set => {\n const next = new Set<string | number>();\n for (const k of set) {\n if (srcKeys.has(k)) next.add(k);\n }\n return next;\n });\n\n this.targetSelectedKeys.update(set => {\n const next = new Set<string | number>();\n for (const k of set) {\n if (tgtKeys.has(k)) next.add(k);\n }\n return next;\n });\n }\n\n // Search Handlers\n onSourceSearch(value: string): void {\n this.internalSourceQuery.set(value);\n if (this.searchMode() === 'server') {\n this.sourceSearchSubject$.next(value);\n } else {\n this.sourceSearchChange.emit(value);\n this.search.emit({ query: value, pane: 'source' });\n }\n }\n\n onTargetSearch(value: string): void {\n this.internalTargetQuery.set(value);\n if (this.searchMode() === 'server') {\n this.targetSearchSubject$.next(value);\n } else {\n this.targetSearchChange.emit(value);\n this.search.emit({ query: value, pane: 'target' });\n }\n }\n\n clearSourceSearch(): void {\n this.onSourceSearch('');\n }\n\n clearTargetSearch(): void {\n this.onTargetSearch('');\n }\n\n /**\n * Process asynchronous server-side search request via configured handlers.\n */\n private processSearchRequest(query: string, pane: TransferListPane): Observable<unknown> {\n this.search.emit({ query, pane });\n if (pane === 'source') {\n this.sourceSearchChange.emit(query);\n } else {\n this.targetSearchChange.emit(query);\n }\n\n const handler = pane === 'source'\n ? (this.sourceSearchHandler() || this.searchHandler())\n : (this.targetSearchHandler() || this.searchHandler());\n\n if (!handler) {\n return of(null);\n }\n\n if (pane === 'source') this.internalSourceLoading.set(true);\n else this.internalTargetLoading.set(true);\n\n try {\n const result = handler(query, pane);\n const obs$: Observable<T[]> = isObservable(result)\n ? (result as Observable<T[]>)\n : from(Promise.resolve(result as T[] | Promise<T[]>));\n\n return obs$.pipe(\n switchMap(items => {\n if (Array.isArray(items)) {\n if (pane === 'source') {\n this.internalSource.set([...items]);\n this.sourceChange.emit([...items]);\n } else {\n this.internalTarget.set([...items]);\n this.targetChange.emit([...items]);\n }\n this.pruneSelections();\n }\n if (pane === 'source') this.internalSourceLoading.set(false);\n else this.internalTargetLoading.set(false);\n return of(items);\n }),\n catchError(err => {\n if (pane === 'source') this.internalSourceLoading.set(false);\n else this.internalTargetLoading.set(false);\n this.searchError.emit({ error: err, query, pane });\n return of(null);\n })\n );\n } catch (err) {\n if (pane === 'source') this.internalSourceLoading.set(false);\n else this.internalTargetLoading.set(false);\n this.searchError.emit({ error: err, query, pane });\n return of(null);\n }\n }\n\n // Move Actions\n moveToTarget(): void {\n if (this.effectiveDisabled() || this.sourceSelectedCount() === 0) return;\n const sel = this.sourceSelectedKeys();\n const currentSource = this.internalSource();\n const currentTarget = this.internalTarget();\n\n const moved: T[] = [];\n const remainingSource: T[] = [];\n\n for (const item of currentSource) {\n if (sel.has(this.getItemKey(item)) && !this.isItemDisabled(item)) {\n moved.push(item);\n } else {\n remainingSource.push(item);\n }\n }\n\n if (moved.length === 0) return;\n\n const newTarget = [...currentTarget, ...moved];\n this.internalSource.set(remainingSource);\n this.internalTarget.set(newTarget);\n this.sourceSelectedKeys.set(new Set());\n\n this.notifyChanges(remainingSource, newTarget, moved, 'toTarget');\n }\n\n moveAllToTarget(): void {\n if (this.effectiveDisabled() || this.filteredSource().length === 0) return;\n const currentSource = this.internalSource();\n const currentTarget = this.internalTarget();\n const visibleKeys = new Set(this.filteredSource().map(i => this.getItemKey(i)));\n\n const moved: T[] = [];\n const remainingSource: T[] = [];\n\n for (const item of currentSource) {\n if (visibleKeys.has(this.getItemKey(item)) && !this.isItemDisabled(item)) {\n moved.push(item);\n } else {\n remainingSource.push(item);\n }\n }\n\n if (moved.length === 0) return;\n\n const newTarget = [...currentTarget, ...moved];\n this.internalSource.set(remainingSource);\n this.internalTarget.set(newTarget);\n this.sourceSelectedKeys.set(new Set());\n\n this.notifyChanges(remainingSource, newTarget, moved, 'toTarget');\n }\n\n moveToSource(): void {\n if (this.effectiveDisabled() || this.targetSelectedCount() === 0) return;\n const sel = this.targetSelectedKeys();\n const currentSource = this.internalSource();\n const currentTarget = this.internalTarget();\n\n const moved: T[] = [];\n const remainingTarget: T[] = [];\n\n for (const item of currentTarget) {\n if (sel.has(this.getItemKey(item)) && !this.isItemDisabled(item)) {\n moved.push(item);\n } else {\n remainingTarget.push(item);\n }\n }\n\n if (moved.length === 0) return;\n\n const newSource = [...currentSource, ...moved];\n this.internalSource.set(newSource);\n this.internalTarget.set(remainingTarget);\n this.targetSelectedKeys.set(new Set());\n\n this.notifyChanges(newSource, remainingTarget, moved, 'toSource');\n }\n\n moveAllToSource(): void {\n if (this.effectiveDisabled() || this.filteredTarget().length === 0) return;\n const currentSource = this.internalSource();\n const currentTarget = this.internalTarget();\n const visibleKeys = new Set(this.filteredTarget().map(i => this.getItemKey(i)));\n\n const moved: T[] = [];\n const remainingTarget: T[] = [];\n\n for (const item of currentTarget) {\n if (visibleKeys.has(this.getItemKey(item)) && !this.isItemDisabled(item)) {\n moved.push(item);\n } else {\n remainingTarget.push(item);\n }\n }\n\n if (moved.length === 0) return;\n\n const newSource = [...currentSource, ...moved];\n this.internalSource.set(newSource);\n this.internalTarget.set(remainingTarget);\n this.targetSelectedKeys.set(new Set());\n\n this.notifyChanges(newSource, remainingTarget, moved, 'toSource');\n }\n\n // Reordering Actions for Target List\n moveTargetTop(): void {\n if (this.effectiveDisabled() || this.targetSelectedCount() === 0) return;\n const sel = this.targetSelectedKeys();\n const list = [...this.internalTarget()];\n const selected: T[] = [];\n const unselected: T[] = [];\n\n for (const item of list) {\n if (sel.has(this.getItemKey(item))) selected.push(item);\n else unselected.push(item);\n }\n\n const reordered = [...selected, ...unselected];\n this.internalTarget.set(reordered);\n this.targetReorder.emit(reordered);\n this.notifyChanges(this.internalSource(), reordered, [], 'toTarget');\n }\n\n moveTargetUp(): void {\n if (this.effectiveDisabled() || this.targetSelectedCount() === 0) return;\n const sel = this.targetSelectedKeys();\n const list = [...this.internalTarget()];\n\n for (let i = 1; i < list.length; i++) {\n const item = list[i];\n if (item && sel.has(this.getItemKey(item))) {\n const prevItem = list[i - 1];\n if (prevItem && !sel.has(this.getItemKey(prevItem))) {\n list[i] = prevItem;\n list[i - 1] = item;\n }\n }\n }\n\n this.internalTarget.set(list);\n this.targetReorder.emit(list);\n this.notifyChanges(this.internalSource(), list, [], 'toTarget');\n }\n\n moveTargetDown(): void {\n if (this.effectiveDisabled() || this.targetSelectedCount() === 0) return;\n const sel = this.targetSelectedKeys();\n const list = [...this.internalTarget()];\n\n for (let i = list.length - 2; i >= 0; i--) {\n const item = list[i];\n if (item && sel.has(this.getItemKey(item))) {\n const nextItem = list[i + 1];\n if (nextItem && !sel.has(this.getItemKey(nextItem))) {\n list[i] = nextItem;\n list[i + 1] = item;\n }\n }\n }\n\n this.internalTarget.set(list);\n this.targetReorder.emit(list);\n this.notifyChanges(this.internalSource(), list, [], 'toTarget');\n }\n\n moveTargetBottom(): void {\n if (this.effectiveDisabled() || this.targetSelectedCount() === 0) return;\n const sel = this.targetSelectedKeys();\n const list = [...this.internalTarget()];\n const selected: T[] = [];\n const unselected: T[] = [];\n\n for (const item of list) {\n if (sel.has(this.getItemKey(item))) selected.push(item);\n else unselected.push(item);\n }\n\n const reordered = [...unselected, ...selected];\n this.internalTarget.set(reordered);\n this.targetReorder.emit(reordered);\n this.notifyChanges(this.internalSource(), reordered, [], 'toTarget');\n }\n\n // CDK Drag and Drop\n onCdkDrop(event: CdkDragDrop<T[]>): void {\n if (this.effectiveDisabled()) return;\n\n if (event.previousContainer === event.container) {\n // Reordering within the same list\n const list = [...event.container.data];\n moveItemInArray(list, event.previousIndex, event.currentIndex);\n\n if (event.container.id.includes('source')) {\n this.internalSource.set(list);\n this.sourceChange.emit(list);\n } else {\n this.internalTarget.set(list);\n this.targetChange.emit(list);\n this.targetReorder.emit(list);\n this.onChange(list);\n }\n } else {\n // Moving between source and target lists\n const sourceList = [...event.previousContainer.data];\n const targetList = [...event.container.data];\n\n transferArrayItem(\n sourceList,\n targetList,\n event.previousIndex,\n event.currentIndex\n );\n\n const isToTarget = event.container.id.includes('target');\n const movedItem = targetList[event.currentIndex] as T;\n\n if (isToTarget) {\n this.internalSource.set(sourceList);\n this.internalTarget.set(targetList);\n this.notifyChanges(sourceList, targetList, [movedItem], 'toTarget');\n } else {\n this.internalTarget.set(sourceList);\n this.internalSource.set(targetList);\n this.notifyChanges(targetList, sourceList, [movedItem], 'toSource');\n }\n this.pruneSelections();\n this.emitSelectionChange();\n }\n }\n\n private notifyChanges(\n source: T[],\n target: T[],\n moved: T[],\n direction: TransferListDirection\n ): void {\n this.sourceChange.emit(source);\n this.targetChange.emit(target);\n this.transfer.emit({ source, target, moved, direction });\n this.onChange(target);\n this.onTouched();\n }\n\n // ControlValueAccessor Implementation\n writeValue(value: unknown): void {\n if (Array.isArray(value)) {\n this.internalTarget.set([...value]);\n } else {\n this.internalTarget.set([]);\n }\n this.pruneSelections();\n }\n\n registerOnChange(fn: (value: unknown) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.formDisabled.set(isDisabled);\n }\n}\n","<div class=\"talos-transfer-list-container\" cdkDropListGroup [style.--transfer-height]=\"containerHeight()\">\n <!-- ========================================== -->\n <!-- SOURCE PANE (Available Items) -->\n <!-- ========================================== -->\n <div class=\"talos-transfer-pane talos-transfer-pane-source\" [style.width]=\"effectivePaneWidth()\">\n <!-- Pane Header -->\n <div class=\"talos-transfer-header\">\n <div class=\"talos-transfer-header-left\">\n @if (showSelectAll()) {\n <label class=\"talos-transfer-checkbox-wrap\" [class.is-disabled]=\"effectiveDisabled()\">\n <input\n type=\"checkbox\"\n class=\"talos-transfer-native-checkbox\"\n [checked]=\"isSourceAllSelected()\"\n [indeterminate]=\"isSourceIndeterminate()\"\n [disabled]=\"effectiveDisabled()\"\n (change)=\"toggleSelectAllSource()\"\n [attr.aria-label]=\"'Select all in ' + titles()[0]\"\n />\n <span class=\"talos-transfer-checkbox-custom\"></span>\n </label>\n }\n <span class=\"talos-transfer-title\">{{ titles()[0] }}</span>\n </div>\n <span class=\"talos-transfer-counter\" [attr.aria-live]=\"'polite'\">\n {{ sourceSelectedCount() }} / {{ filteredSource().length }}\n @if (isSourceSearching() && filteredSource().length !== internalSource().length) {\n <span class=\"talos-transfer-filter-tag\">filtered</span>\n }\n </span>\n </div>\n\n <!-- Optional Search Bar -->\n @if (searchable()) {\n <div class=\"talos-transfer-search-wrapper\">\n <svg lucideSearch class=\"talos-transfer-search-icon\" [size]=\"14\"></svg>\n <input\n type=\"text\"\n class=\"talos-transfer-search-input\"\n [placeholder]=\"sourcePlaceholder()\"\n [value]=\"internalSourceQuery()\"\n (input)=\"onSourceSearch($any($event.target).value)\"\n [disabled]=\"effectiveDisabled()\"\n [attr.aria-label]=\"'Search ' + titles()[0]\"\n />\n @if (effectiveSourceLoading()) {\n <svg lucideLoader2 class=\"talos-transfer-search-spinner talos-spin\" [size]=\"14\"></svg>\n } @else if (internalSourceQuery()) {\n <button\n type=\"button\"\n class=\"talos-transfer-search-clear\"\n (click)=\"clearSourceSearch()\"\n [attr.aria-label]=\"'Clear source search'\"\n >\n <svg lucideX [size]=\"12\"></svg>\n </button>\n }\n\n @if (effectiveSourceLoading()) {\n <div class=\"talos-transfer-search-progress\"></div>\n }\n </div>\n }\n\n <!-- Source Items List -->\n <div\n class=\"talos-transfer-list-body\"\n cdkDropList\n [id]=\"componentId() + '-source-list'\"\n [cdkDropListData]=\"internalSource()\"\n [cdkDropListDisabled]=\"!dragDrop() || effectiveDisabled()\"\n (cdkDropListDropped)=\"onCdkDrop($event)\"\n role=\"listbox\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"titles()[0]\"\n >\n @if (effectiveSourceLoading()) {\n <div class=\"talos-transfer-loading-state\">\n <svg lucideLoader2 class=\"talos-spin\" [size]=\"20\"></svg>\n <span>{{ isSourceSearching() ? searchingText() : 'Loading items...' }}</span>\n </div>\n } @else if (filteredSource().length === 0) {\n <div class=\"talos-transfer-empty-state\">\n @if (isSourceSearching()) {\n <span>{{ noMatchesText() }} &ldquo;<strong>{{ internalSourceQuery() }}</strong>&rdquo;</span>\n <button type=\"button\" class=\"talos-transfer-clear-filter-btn\" (click)=\"clearSourceSearch()\">\n Clear filter\n </button>\n } @else {\n <span>{{ emptySourceText() }}</span>\n }\n </div>\n } @else {\n @for (item of filteredSource(); track getItemKey(item, $index); let i = $index) {\n @let isSel = sourceSelectedKeys().has(getItemKey(item, i));\n @let isDis = isItemDisabled(item);\n\n <div\n class=\"talos-transfer-item\"\n [class.is-selected]=\"isSel\"\n [class.is-disabled]=\"isDis\"\n cdkDrag\n [cdkDragData]=\"item\"\n [cdkDragDisabled]=\"!dragDrop() || isDis || effectiveDisabled()\"\n (click)=\"toggleSourceItem(item)\"\n role=\"option\"\n [attr.aria-selected]=\"isSel\"\n [attr.aria-disabled]=\"isDis\"\n tabindex=\"0\"\n (keydown.space)=\"$event.preventDefault(); toggleSourceItem(item)\"\n (keydown.enter)=\"$event.preventDefault(); toggleSourceItem(item)\"\n >\n <!-- CDK Drag Placeholder -->\n <div class=\"talos-transfer-drag-placeholder\" *cdkDragPlaceholder></div>\n\n <!-- CDK Drag Preview -->\n <div class=\"talos-transfer-drag-preview\" *cdkDragPreview>\n <span class=\"preview-label\">{{ getItemLabel(item) }}</span>\n </div>\n\n <!-- Drag Handle -->\n @if (dragDrop() && useDragHandle() && !isDis && !effectiveDisabled()) {\n <div class=\"talos-transfer-drag-handle\" cdkDragHandle (click)=\"$event.stopPropagation()\">\n <svg lucideGripVertical [size]=\"14\"></svg>\n </div>\n }\n\n <!-- Checkbox -->\n <label class=\"talos-transfer-checkbox-wrap\" (click)=\"$event.stopPropagation()\">\n <input\n type=\"checkbox\"\n class=\"talos-transfer-native-checkbox\"\n [checked]=\"isSel\"\n [disabled]=\"isDis || effectiveDisabled()\"\n (change)=\"toggleSourceItem(item)\"\n [attr.aria-label]=\"'Select ' + getItemLabel(item)\"\n />\n <span class=\"talos-transfer-checkbox-custom\"></span>\n </label>\n\n <!-- Custom Template or Default View -->\n <div class=\"talos-transfer-item-content\">\n @if (itemTemplate()) {\n <ng-container\n *ngTemplateOutlet=\"itemTemplate()!; context: getItemContext(item, 'source', i)\"\n ></ng-container>\n } @else {\n <div class=\"talos-transfer-item-text\">\n <span class=\"talos-transfer-item-label\">{{ getItemLabel(item) }}</span>\n @if (getItemDescription(item); as desc) {\n <span class=\"talos-transfer-item-desc\">{{ desc }}</span>\n }\n </div>\n }\n </div>\n </div>\n }\n }\n </div>\n </div>\n\n <!-- ========================================== -->\n <!-- ACTION CONTROLS TOOLBAR -->\n <!-- ========================================== -->\n <div class=\"talos-transfer-actions\" role=\"toolbar\" aria-label=\"Transfer Actions\">\n <!-- Move Selected to Target (>) -->\n <button\n type=\"button\"\n class=\"talos-transfer-action-btn\"\n [class.is-active]=\"sourceSelectedCount() > 0 && !effectiveDisabled()\"\n [disabled]=\"sourceSelectedCount() === 0 || effectiveDisabled()\"\n (click)=\"moveToTarget()\"\n [attr.aria-label]=\"'Move selected to ' + titles()[1]\"\n title=\"Move selected right\"\n >\n <svg lucideChevronRight [size]=\"16\"></svg>\n </button>\n\n <!-- Move All to Target (>>) -->\n @if (showMoveAll()) {\n <button\n type=\"button\"\n class=\"talos-transfer-action-btn\"\n [class.is-active]=\"filteredSource().length > 0 && !effectiveDisabled()\"\n [disabled]=\"filteredSource().length === 0 || effectiveDisabled()\"\n (click)=\"moveAllToTarget()\"\n [attr.aria-label]=\"'Move all to ' + titles()[1]\"\n title=\"Move all right\"\n >\n <svg lucideChevronsRight [size]=\"16\"></svg>\n </button>\n }\n\n <!-- Move Selected to Source (<) -->\n <button\n type=\"button\"\n class=\"talos-transfer-action-btn\"\n [class.is-active]=\"targetSelectedCount() > 0 && !effectiveDisabled()\"\n [disabled]=\"targetSelectedCount() === 0 || effectiveDisabled()\"\n (click)=\"moveToSource()\"\n [attr.aria-label]=\"'Move selected to ' + titles()[0]\"\n title=\"Move selected left\"\n >\n <svg lucideChevronLeft [size]=\"16\"></svg>\n </button>\n\n <!-- Move All to Source (<<) -->\n @if (showMoveAll()) {\n <button\n type=\"button\"\n class=\"talos-transfer-action-btn\"\n [class.is-active]=\"filteredTarget().length > 0 && !effectiveDisabled()\"\n [disabled]=\"filteredTarget().length === 0 || effectiveDisabled()\"\n (click)=\"moveAllToSource()\"\n [attr.aria-label]=\"'Move all to ' + titles()[0]\"\n title=\"Move all left\"\n >\n <svg lucideChevronsLeft [size]=\"16\"></svg>\n </button>\n }\n </div>\n\n <!-- ========================================== -->\n <!-- TARGET PANE (Selected Items) -->\n <!-- ========================================== -->\n <div class=\"talos-transfer-pane talos-transfer-pane-target\" [style.width]=\"effectivePaneWidth()\">\n <!-- Pane Header -->\n <div class=\"talos-transfer-header\">\n <div class=\"talos-transfer-header-left\">\n @if (showSelectAll()) {\n <label class=\"talos-transfer-checkbox-wrap\" [class.is-disabled]=\"effectiveDisabled()\">\n <input\n type=\"checkbox\"\n class=\"talos-transfer-native-checkbox\"\n [checked]=\"isTargetAllSelected()\"\n [indeterminate]=\"isTargetIndeterminate()\"\n [disabled]=\"effectiveDisabled()\"\n (change)=\"toggleSelectAllTarget()\"\n [attr.aria-label]=\"'Select all in ' + titles()[1]\"\n />\n <span class=\"talos-transfer-checkbox-custom\"></span>\n </label>\n }\n <span class=\"talos-transfer-title\">{{ titles()[1] }}</span>\n </div>\n <span class=\"talos-transfer-counter\" [attr.aria-live]=\"'polite'\">\n {{ targetSelectedCount() }} / {{ filteredTarget().length }}\n @if (isTargetSearching() && filteredTarget().length !== internalTarget().length) {\n <span class=\"talos-transfer-filter-tag\">filtered</span>\n }\n </span>\n </div>\n\n <!-- Optional Search Bar -->\n @if (searchable()) {\n <div class=\"talos-transfer-search-wrapper\">\n <svg lucideSearch class=\"talos-transfer-search-icon\" [size]=\"14\"></svg>\n <input\n type=\"text\"\n class=\"talos-transfer-search-input\"\n [placeholder]=\"targetPlaceholder()\"\n [value]=\"internalTargetQuery()\"\n (input)=\"onTargetSearch($any($event.target).value)\"\n [disabled]=\"effectiveDisabled()\"\n [attr.aria-label]=\"'Search ' + titles()[1]\"\n />\n @if (effectiveTargetLoading()) {\n <svg lucideLoader2 class=\"talos-transfer-search-spinner talos-spin\" [size]=\"14\"></svg>\n } @else if (internalTargetQuery()) {\n <button\n type=\"button\"\n class=\"talos-transfer-search-clear\"\n (click)=\"clearTargetSearch()\"\n [attr.aria-label]=\"'Clear target search'\"\n >\n <svg lucideX [size]=\"12\"></svg>\n </button>\n }\n\n @if (effectiveTargetLoading()) {\n <div class=\"talos-transfer-search-progress\"></div>\n }\n </div>\n }\n\n <!-- Target Items List -->\n <div\n class=\"talos-transfer-list-body\"\n cdkDropList\n [id]=\"componentId() + '-target-list'\"\n [cdkDropListData]=\"internalTarget()\"\n [cdkDropListDisabled]=\"!dragDrop() || effectiveDisabled()\"\n (cdkDropListDropped)=\"onCdkDrop($event)\"\n role=\"listbox\"\n [attr.aria-multiselectable]=\"true\"\n [attr.aria-label]=\"titles()[1]\"\n >\n @if (effectiveTargetLoading()) {\n <div class=\"talos-transfer-loading-state\">\n <svg lucideLoader2 class=\"talos-spin\" [size]=\"20\"></svg>\n <span>{{ isTargetSearching() ? searchingText() : 'Loading items...' }}</span>\n </div>\n } @else if (filteredTarget().length === 0) {\n <div class=\"talos-transfer-empty-state\">\n @if (isTargetSearching()) {\n <span>{{ noMatchesText() }} &ldquo;<strong>{{ internalTargetQuery() }}</strong>&rdquo;</span>\n <button type=\"button\" class=\"talos-transfer-clear-filter-btn\" (click)=\"clearTargetSearch()\">\n Clear filter\n </button>\n } @else {\n <span>{{ emptyTargetText() }}</span>\n }\n </div>\n } @else {\n @for (item of filteredTarget(); track getItemKey(item, $index); let i = $index) {\n @let isSel = targetSelectedKeys().has(getItemKey(item, i));\n @let isDis = isItemDisabled(item);\n\n <div\n class=\"talos-transfer-item\"\n [class.is-selected]=\"isSel\"\n [class.is-disabled]=\"isDis\"\n cdkDrag\n [cdkDragData]=\"item\"\n [cdkDragDisabled]=\"!dragDrop() || isDis || effectiveDisabled()\"\n (click)=\"toggleTargetItem(item)\"\n role=\"option\"\n [attr.aria-selected]=\"isSel\"\n [attr.aria-disabled]=\"isDis\"\n tabindex=\"0\"\n (keydown.space)=\"$event.preventDefault(); toggleTargetItem(item)\"\n (keydown.enter)=\"$event.preventDefault(); toggleTargetItem(item)\"\n >\n <!-- CDK Drag Placeholder -->\n <div class=\"talos-transfer-drag-placeholder\" *cdkDragPlaceholder></div>\n\n <!-- CDK Drag Preview -->\n <div class=\"talos-transfer-drag-preview\" *cdkDragPreview>\n <span class=\"preview-label\">{{ getItemLabel(item) }}</span>\n </div>\n\n <!-- Drag Handle -->\n @if (dragDrop() && useDragHandle() && !isDis && !effectiveDisabled()) {\n <div class=\"talos-transfer-drag-handle\" cdkDragHandle (click)=\"$event.stopPropagation()\">\n <svg lucideGripVertical [size]=\"14\"></svg>\n </div>\n }\n\n <!-- Checkbox -->\n <label class=\"talos-transfer-checkbox-wrap\" (click)=\"$event.stopPropagation()\">\n <input\n type=\"checkbox\"\n class=\"talos-transfer-native-checkbox\"\n [checked]=\"isSel\"\n [disabled]=\"isDis || effectiveDisabled()\"\n (change)=\"toggleTargetItem(item)\"\n [attr.aria-label]=\"'Select ' + getItemLabel(item)\"\n />\n <span class=\"talos-transfer-checkbox-custom\"></span>\n </label>\n\n <!-- Custom Template or Default View -->\n <div class=\"talos-transfer-item-content\">\n @if (itemTemplate()) {\n <ng-container\n *ngTemplateOutlet=\"itemTemplate()!; context: getItemContext(item, 'target', i)\"\n ></ng-container>\n } @else {\n <div class=\"talos-transfer-item-text\">\n <span class=\"talos-transfer-item-label\">{{ getItemLabel(item) }}</span>\n @if (getItemDescription(item); as desc) {\n <span class=\"talos-transfer-item-desc\">{{ desc }}</span>\n }\n </div>\n }\n </div>\n </div>\n }\n }\n </div>\n </div>\n\n <!-- ========================================== -->\n <!-- OPTIONAL TARGET REORDER TOOLBAR -->\n <!-- ========================================== -->\n @if (showReorder()) {\n <div class=\"talos-transfer-reorder-actions\" role=\"toolbar\" aria-label=\"Reorder Target Items\">\n <!-- Move Top -->\n <button\n type=\"button\"\n class=\"talos-transfer-action-btn\"\n [class.is-active]=\"targetSelectedCount() > 0 && !effectiveDisabled()\"\n [disabled]=\"targetSelectedCount() === 0 || effectiveDisabled()\"\n (click)=\"moveTargetTop()\"\n title=\"Move to top\"\n aria-label=\"Move selected items to top\"\n >\n <svg lucideChevronsUp [size]=\"16\"></svg>\n </button>\n\n <!-- Move Up -->\n <button\n type=\"button\"\n class=\"talos-transfer-action-btn\"\n [class.is-active]=\"targetSelectedCount() > 0 && !effectiveDisabled()\"\n [disabled]=\"targetSelectedCount() === 0 || effectiveDisabled()\"\n (click)=\"moveTargetUp()\"\n title=\"Move up\"\n aria-label=\"Move selected items up\"\n >\n <svg lucideChevronUp [size]=\"16\"></svg>\n </button>\n\n <!-- Move Down -->\n <button\n type=\"button\"\n class=\"talos-transfer-action-btn\"\n [class.is-active]=\"targetSelectedCount() > 0 && !effectiveDisabled()\"\n [disabled]=\"targetSelectedCount() === 0 || effectiveDisabled()\"\n (click)=\"moveTargetDown()\"\n title=\"Move down\"\n aria-label=\"Move selected items down\"\n >\n <svg lucideChevronDown [size]=\"16\"></svg>\n </button>\n\n <!-- Move Bottom -->\n <button\n type=\"button\"\n class=\"talos-transfer-action-btn\"\n [class.is-active]=\"targetSelectedCount() > 0 && !effectiveDisabled()\"\n [disabled]=\"targetSelectedCount() === 0 || effectiveDisabled()\"\n (click)=\"moveTargetBottom()\"\n title=\"Move to bottom\"\n aria-label=\"Move selected items to bottom\"\n >\n <svg lucideChevronsDown [size]=\"16\"></svg>\n </button>\n </div>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { TalosTransferListComponent } from './transfer-list.component';\n\n@NgModule({\n imports: [TalosTransferListComponent],\n exports: [TalosTransferListComponent]\n})\nexport class TalosTransferListModule {}\n","import {\n Component,\n ElementRef,\n computed,\n forwardRef,\n inject,\n input,\n output,\n signal\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n RatingAnimationMode,\n RatingChangeEvent,\n RatingHoverEvent,\n RatingLabelPosition,\n RatingSize,\n RatingVariant\n} from './rating.types';\n\nlet ratingCounter = 0;\n\n@Component({\n selector: 'talos-rating, talos-rate',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TalosRatingComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'talos-rating-host',\n '[class.is-disabled]': 'effectiveDisabled()',\n '[class.is-readonly]': 'effectiveReadonly()',\n '[class.is-interactive]': '!effectiveDisabled() && !effectiveReadonly()',\n '[class.is-focused]': 'isFocused()',\n '[class.rating-sm]': 'size() === \"sm\"',\n '[class.rating-md]': 'size() === \"md\"',\n '[class.rating-lg]': 'size() === \"lg\"',\n '[class.rating-xl]': 'size() === \"xl\"',\n '[class.variant-warning]': 'variant() === \"warning\"',\n '[class.variant-primary]': 'variant() === \"primary\"',\n '[class.variant-danger]': 'variant() === \"danger\"',\n '[class.variant-success]': 'variant() === \"success\"',\n '[class.variant-purple]': 'variant() === \"purple\"',\n '[class.variant-custom]': 'variant() === \"custom\"',\n '[class.label-bottom]': 'labelPosition() === \"bottom\"',\n '[class.anim-none]': 'effectiveAnimation() === \"none\"',\n '[class.anim-subtle]': 'effectiveAnimation() === \"subtle\"',\n '[class.anim-pop]': 'effectiveAnimation() === \"pop\"',\n '[class.anim-particles]': 'effectiveAnimation() === \"particles\"',\n '[class.anim-full]': 'effectiveAnimation() === \"full\"',\n '[attr.role]': '\"slider\"',\n '[attr.tabindex]': 'effectiveDisabled() ? -1 : 0',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-valuenow]': 'currentValue()',\n '[attr.aria-valuemin]': '0',\n '[attr.aria-valuemax]': 'max()',\n '[attr.aria-readonly]': 'effectiveReadonly()',\n '[attr.aria-disabled]': 'effectiveDisabled()',\n '(keydown)': 'onKeyDown($event)',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '(mouseleave)': 'onMouseLeave()'\n },\n templateUrl: './rating.component.html',\n styleUrl: './rating.component.scss'\n})\nexport class TalosRatingComponent implements ControlValueAccessor {\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private animationTimeout: ReturnType<typeof setTimeout> | null = null;\n\n // --- Inputs ---\n /** Current numerical rating value */\n readonly value = input<number>(0);\n\n /** Maximum rating count / total stars (default: 5) */\n readonly max = input<number>(5);\n\n /** Whether clicking the current value resets/clears to 0 (default: true) */\n readonly allowClear = input<boolean>(true);\n\n /** Read-only display mode */\n readonly readonly = input<boolean>(false);\n\n /** Disabled state */\n readonly disabled = input<boolean>(false);\n\n /** Sizing scale ('sm' | 'md' | 'lg' | 'xl') */\n readonly size = input<RatingSize>('md');\n\n /** Visual color variant ('warning' | 'primary' | 'danger' | 'success' | 'purple' | 'custom') */\n readonly variant = input<RatingVariant>('warning');\n\n /** Custom HEX or CSS color code when variant is 'custom' or overriding */\n readonly color = input<string>('');\n\n /** Animation mode ('none' | 'subtle' | 'pop' | 'particles' | 'full') */\n readonly animation = input<RatingAnimationMode>('full');\n\n /** Whether animations are enabled (default: true) */\n readonly animated = input<boolean>(true);\n\n /** Tooltip/label strings for each star index (1-based) */\n readonly tooltips = input<string[]>([]);\n\n /** Whether to show numeric score badge */\n readonly showScore = input<boolean>(false);\n\n /** Whether to show text label from tooltips or current state */\n readonly showLabel = input<boolean>(false);\n\n /** Position of score/tooltip label */\n readonly labelPosition = input<RatingLabelPosition>('right');\n\n /** Component HTML ID */\n readonly id = input<string>('');\n\n /** Accessibility label */\n readonly ariaLabel = input<string>('Rating');\n\n // --- Outputs ---\n /** Emitted when value changes */\n readonly valueChange = output<number>();\n\n /** Emitted with old and new values */\n readonly rateChange = output<RatingChangeEvent>();\n\n /** Emitted when hovering over rating items */\n readonly hoverChange = output<RatingHoverEvent>();\n\n /** Emitted when rating is cleared */\n readonly cleared = output<void>();\n\n // --- Internal State ---\n private readonly defaultId = `talos-rating-${++ratingCounter}`;\n readonly elementId = computed(() => this.id() || this.defaultId);\n\n readonly internalValue = signal<number>(0);\n readonly hoverValue = signal<number | null>(null);\n readonly isDisabled = signal<boolean>(false);\n readonly isTouched = signal<boolean>(false);\n readonly isFocused = signal<boolean>(false);\n\n /** Index of currently pop-animating star */\n readonly animatingIndex = signal<number | null>(null);\n\n /** Index of currently particle-bursting star */\n readonly activeBurstIndex = signal<number | null>(null);\n\n // --- Computed States ---\n readonly effectiveDisabled = computed(() => this.disabled() || this.isDisabled());\n readonly effectiveReadonly = computed(() => this.readonly());\n\n readonly effectiveAnimation = computed<RatingAnimationMode>(() => {\n if (!this.animated()) return 'none';\n return this.animation();\n });\n\n readonly showParticles = computed(() => {\n const anim = this.effectiveAnimation();\n return anim === 'particles' || anim === 'full';\n });\n\n readonly showPop = computed(() => {\n const anim = this.effectiveAnimation();\n return anim === 'pop' || anim === 'full';\n });\n\n readonly currentValue = computed(() => {\n const internal = this.internalValue();\n const prop = this.value();\n const val = internal !== 0 || this.isTouched() ? internal : prop;\n return Math.max(0, Math.min(this.max(), Math.round(Number(val) || 0)));\n });\n\n readonly displayValue = computed(() => {\n const hover = this.hoverValue();\n if (hover !== null) {\n return hover;\n }\n return this.currentValue();\n });\n\n /** Array of star item indices [1, 2, ..., max] */\n readonly items = computed(() => {\n const count = Math.max(1, Math.floor(this.max()));\n return Array.from({ length: count }, (_, i) => i + 1);\n });\n\n /** Active tooltip text based on current display value */\n readonly activeTooltip = computed(() => {\n const list = this.tooltips();\n if (!list || list.length === 0) return '';\n const val = this.displayValue();\n if (val <= 0) return '';\n const index = Math.min(list.length - 1, Math.max(0, Math.ceil(val) - 1));\n return list[index] || '';\n });\n\n // --- ControlValueAccessor ---\n private onChange: (val: number) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(val: number): void {\n const num = val === null || val === undefined || isNaN(val) ? 0 : Math.round(Number(val));\n this.internalValue.set(Math.max(0, Math.min(this.max(), num)));\n }\n\n registerOnChange(fn: (val: number) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.isDisabled.set(isDisabled);\n }\n\n // --- Hover and Click Handlers ---\n onItemMouseEnter(index: number): void {\n if (this.effectiveDisabled() || this.effectiveReadonly()) return;\n this.hoverValue.set(index);\n this.hoverChange.emit({ value: index, index });\n }\n\n onItemClick(index: number): void {\n if (this.effectiveDisabled() || this.effectiveReadonly()) return;\n\n const current = this.currentValue();\n let nextVal = index;\n\n // Clearable toggle on re-clicking the current rating\n if (this.allowClear() && current === index) {\n nextVal = 0;\n this.cleared.emit();\n } else {\n // Trigger click pop & particle explosion if animation enabled\n if (this.effectiveAnimation() !== 'none') {\n this.triggerClickEffects(index);\n }\n }\n\n this.setValue(nextVal);\n }\n\n onMouseLeave(): void {\n if (this.effectiveDisabled() || this.effectiveReadonly()) return;\n this.hoverValue.set(null);\n this.hoverChange.emit({ value: 0, index: -1 });\n }\n\n private triggerClickEffects(index: number): void {\n if (this.animationTimeout) {\n clearTimeout(this.animationTimeout);\n this.animationTimeout = null;\n }\n\n this.animatingIndex.set(index);\n this.activeBurstIndex.set(index);\n\n this.animationTimeout = setTimeout(() => {\n this.animatingIndex.set(null);\n this.activeBurstIndex.set(null);\n this.animationTimeout = null;\n }, 600);\n }\n\n // --- Keyboard Navigation ---\n onKeyDown(event: KeyboardEvent): void {\n if (this.effectiveDisabled() || this.effectiveReadonly()) return;\n\n const current = this.currentValue();\n let nextVal = current;\n\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowUp':\n event.preventDefault();\n nextVal = Math.min(this.max(), current + 1);\n if (this.effectiveAnimation() !== 'none' && nextVal > current) {\n this.triggerClickEffects(nextVal);\n }\n this.setValue(nextVal);\n break;\n\n case 'ArrowLeft':\n case 'ArrowDown':\n event.preventDefault();\n nextVal = Math.max(0, current - 1);\n this.setValue(nextVal);\n break;\n\n case 'Home':\n event.preventDefault();\n nextVal = 0;\n this.setValue(nextVal);\n break;\n\n case 'End':\n event.preventDefault();\n nextVal = this.max();\n if (this.effectiveAnimation() !== 'none') {\n this.triggerClickEffects(nextVal);\n }\n this.setValue(nextVal);\n break;\n\n case 'Enter':\n case ' ':\n event.preventDefault();\n if (this.effectiveAnimation() !== 'none' && current > 0) {\n this.triggerClickEffects(current);\n }\n this.setValue(current);\n break;\n }\n }\n\n onFocus(): void {\n if (this.effectiveDisabled()) return;\n this.isFocused.set(true);\n }\n\n onBlur(): void {\n this.isFocused.set(false);\n this.markAsTouched();\n }\n\n private setValue(val: number): void {\n const oldValue = this.currentValue();\n const clamped = Math.max(0, Math.min(this.max(), Math.round(val)));\n\n this.internalValue.set(clamped);\n this.hoverValue.set(null);\n this.onChange(clamped);\n this.valueChange.emit(clamped);\n this.rateChange.emit({ value: clamped, oldValue });\n this.markAsTouched();\n }\n\n private markAsTouched(): void {\n if (!this.isTouched()) {\n this.isTouched.set(true);\n this.onTouched();\n }\n }\n\n isItemActive(index: number): boolean {\n return this.displayValue() >= index;\n }\n}\n","<div\n class=\"talos-rating-container\"\n [id]=\"elementId()\"\n [style.--talos-rating-custom-color]=\"color() || null\"\n>\n <div class=\"talos-rating-stars\" role=\"presentation\">\n @for (i of items(); track i) {\n <button\n type=\"button\"\n class=\"talos-rating-star-btn\"\n [class.is-active]=\"isItemActive(i)\"\n [class.is-hovered]=\"hoverValue() !== null && hoverValue()! >= i\"\n [class.is-animating]=\"animatingIndex() === i && showPop()\"\n [attr.aria-label]=\"i + ' of ' + max() + ' stars'\"\n [disabled]=\"effectiveDisabled() || effectiveReadonly()\"\n (mouseenter)=\"onItemMouseEnter(i)\"\n (click)=\"onItemClick(i)\"\n >\n <svg\n class=\"talos-star-svg\"\n viewBox=\"0 0 24 24\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\" />\n </svg>\n\n <!-- Particle Celebration Spark Burst -->\n @if (activeBurstIndex() === i && showParticles()) {\n <span class=\"talos-rating-particles\" aria-hidden=\"true\">\n <span class=\"particle p-1\"></span>\n <span class=\"particle p-2\"></span>\n <span class=\"particle p-3\"></span>\n <span class=\"particle p-4\"></span>\n <span class=\"particle p-5\"></span>\n <span class=\"particle p-6\"></span>\n <span class=\"particle p-7\"></span>\n <span class=\"particle p-8\"></span>\n </span>\n }\n </button>\n }\n </div>\n\n <!-- Optional Descriptor / Score Label -->\n @if (showScore() || showLabel() || activeTooltip()) {\n <div class=\"talos-rating-label-wrapper\">\n @if (showScore()) {\n <span class=\"talos-rating-score-pill\">\n {{ displayValue() }}<span class=\"score-max\">/{{ max() }}</span>\n </span>\n }\n @if ((showLabel() || tooltips().length > 0) && activeTooltip()) {\n <span class=\"talos-rating-desc-text\">{{ activeTooltip() }}</span>\n }\n </div>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { TalosRatingComponent } from './rating.component';\n\n@NgModule({\n imports: [TalosRatingComponent],\n exports: [TalosRatingComponent]\n})\nexport class TalosRatingModule {}\n","/*\n * Public API Surface of @weeehaoooz/talos-ui\n *\n * This root barrel re-exports everything for backward compatibility.\n * Each feature module is also individually accessible via its own\n * secondary entry points (e.g. '@weeehaoooz/talos-ui/button').\n */\n\n// Layout components & services\nexport * from './layout/layout.service';\nexport * from './layout/main-layout/main-layout.component';\nexport * from './layout/side-panel/side-panel.component';\nexport * from './layout/card';\nexport * from './layout/expansion-panel';\n\n// Nav components & models\nexport * from './nav/side-nav/side-nav.component';\nexport * from './nav/top-nav/top-nav.component';\nexport * from './nav/top-nav/top-nav.module';\nexport * from './nav/top-nav/top-nav.types';\nexport * from './nav/nav-group/nav-group.component';\nexport * from './nav/nav-item/nav-item.component';\nexport * from './nav/theme-toggle/theme-toggle.component';\nexport * from './nav/side-nav.module';\n\n\n// Select input components & module\nexport * from './form/select-input/select-input/select-input.component';\nexport * from './form/select-input/option/option.component';\nexport * from './form/select-input/option-group/option-group.component';\nexport * from './form/select-input/cascade-select/cascade-select.component';\nexport * from './form/select-input/cascade-select/cascade-select.types';\nexport * from './form/select-input/select-input.module';\n\n\n\n\n// Button directive & types\nexport * from './button/button/button.directive';\n\n// Button group component, directive & module\nexport * from './button/button-group/button-group/button-group.component';\nexport * from './button/button-group/button-group-item/button-group-item.directive';\nexport * from './button/button-group/button-group.module';\n\n// Tooltip directive\nexport * from './feedback/tooltip/tooltip.directive';\n\n// Input & Textarea directive\nexport * from './form/input/input.directive';\n\n// Input Prefix & Suffix Affix directives & module\nexport * from './form/affix/affix.directives';\nexport * from './form/affix/affix.module';\n\n// Password Input component, directive & types\nexport * from './form/password-input/password-input.types';\nexport * from './form/password-input/password-input.component';\nexport * from './form/password-input/password-input.directive';\nexport * from './form/password-input/password-input.module';\n\n// Form Field wrapper component & module\nexport * from './form/form-field/form-field.component';\nexport * from './form/form-field/form-field.module';\n\n// Checkbox directive, group, parent directive, component & module\nexport * from './form/checkbox/checkbox/checkbox.directive';\nexport * from './form/checkbox/checkbox-group/checkbox-group.directive';\nexport * from './form/checkbox/checkbox-group/checkbox-group.component';\nexport * from './form/checkbox/checkbox-parent/checkbox-parent.directive';\nexport * from './form/checkbox/checkbox/checkbox.component';\nexport * from './form/checkbox/checkbox.module';\n\n// DatePicker, DateTimePicker & Range Picker components\nexport * from './core/date-utils';\nexport * from './form/date-picker/date-picker.component';\nexport * from './form/date-time-picker/date-time-picker.component';\nexport * from './form/date-range-picker/date-range-picker.component';\nexport * from './form/date-range-picker/date-range-types';\nexport * from './form/date-time-range-picker/date-time-range-picker.component';\n\n// Radio directive, group, component & module\nexport * from './form/radio/radio/radio.directive';\nexport * from './form/radio/radio-group/radio-group.component';\nexport * from './form/radio/radio/radio.component';\nexport * from './form/radio/radio.module';\n\n// Snackbar service, components & module\nexport * from './feedback/snackbar/snackbar.types';\nexport * from './feedback/snackbar/snackbar.service';\nexport * from './feedback/snackbar/snackbar/snackbar.component';\nexport * from './feedback/snackbar/snackbar-container/snackbar-container.component';\nexport * from './feedback/snackbar/snackbar.module';\n\n// Slide toggle directive, component & module\nexport * from './form/slide-toggle/slide-toggle.directive';\nexport * from './form/slide-toggle/slide-toggle.component';\nexport * from './form/slide-toggle/slide-toggle.module';\n\n// Autocomplete component, module & types\nexport * from './form/autocomplete/autocomplete.types';\nexport * from './form/autocomplete/autocomplete.component';\nexport * from './form/autocomplete/autocomplete.module';\n\n// Heatmap component, module & types\nexport * from './data-viz/heatmap/heatmap.types';\nexport * from './data-viz/heatmap/heatmap.component';\nexport * from './data-viz/heatmap/heatmap.module';\n\n// Category Bar component, module & types\nexport * from './data-viz/category-bar/category-bar.types';\nexport * from './data-viz/category-bar/category-bar.component';\nexport * from './data-viz/category-bar/category-bar.module';\n\n// Range Input component, directive, module & types\nexport * from './form/range-input/range-input.types';\nexport * from './form/range-input/range-input.directive';\nexport * from './form/range-input/range-input.component';\nexport * from './form/range-input/range-input.module';\n\n// Status Tag component, module & types\nexport * from './data-display/status-tag/status-tag.types';\nexport * from './data-display/status-tag/status-tag.component';\nexport * from './data-display/status-tag/status-tag.module';\n\n// Chips component, module & types\nexport * from './form/chips/chips.types';\nexport * from './form/chips/chip/chip.component';\nexport * from './form/chips/chips/chips.component';\nexport * from './form/chips/chips.module';\n\n// Dialog / Modal service, components, directives, module & types\nexport * from './feedback/dialog/dialog.types';\nexport * from './feedback/dialog/dialog-ref';\nexport * from './feedback/dialog/dialog.service';\nexport * from './feedback/dialog/dialog.directives';\nexport * from './feedback/dialog/dialog-header/dialog-header.component';\nexport * from './feedback/dialog/dialog-content/dialog-content.component';\nexport * from './feedback/dialog/dialog-footer/dialog-footer.component';\nexport * from './feedback/dialog/confirm-dialog/confirm-dialog.component';\nexport * from './feedback/dialog/dialog.module';\n\n// Drop Zone component, directive, module & types\nexport * from './form/drop-zone/drop-zone.types';\nexport * from './form/drop-zone/drop-zone.directive';\nexport * from './form/drop-zone/drop-zone.component';\nexport * from './form/drop-zone/drop-zone.module';\n\n// Badge directive, module & types\nexport * from './data-display/badge/badge.types';\nexport * from './data-display/badge/badge.directive';\nexport * from './data-display/badge/badge.module';\n\n// Alert service, components, directives, module & types\nexport * from './feedback/alert/alert.types';\nexport * from './feedback/alert/alert.service';\nexport * from './feedback/alert/alert.directives';\nexport * from './feedback/alert/alert/alert.component';\nexport * from './feedback/alert/alert-container/alert-container.component';\nexport * from './feedback/alert/alert.module';\n\n// Tooltip directive, component & types\nexport * from './feedback/tooltip/tooltip.directive';\n\n// Timeline components, directives, module & types\nexport * from './data-display/timeline/timeline.types';\nexport * from './data-display/timeline/timeline.directives';\nexport * from './data-display/timeline/timeline.component';\nexport * from './data-display/timeline/timeline-item.component';\nexport * from './data-display/timeline/timeline.module';\n\n// Sparkline component, module & types\nexport * from './data-viz/sparkline/sparkline.types';\nexport * from './data-viz/sparkline/sparkline.component';\nexport * from './data-viz/sparkline/sparkline.module';\n\n// Trend Indicator component, module & types\nexport * from './data-display/trend-indicator/trend-indicator.types';\nexport * from './data-display/trend-indicator/trend-indicator.component';\nexport * from './data-display/trend-indicator/trend-indicator.module';\n\n// Mini Donut component, module & types\nexport * from './data-viz/mini-donut/mini-donut.types';\nexport * from './data-viz/mini-donut/mini-donut.component';\nexport * from './data-viz/mini-donut/mini-donut.module';\n\n// Mini Gauge component, module & types\nexport * from './data-viz/mini-gauge/mini-gauge.types';\nexport * from './data-viz/mini-gauge/mini-gauge.component';\nexport * from './data-viz/mini-gauge/mini-gauge.module';\n\n// Color Picker component, module, types & utilities\nexport * from './core/color-utils';\nexport * from './form/color-picker/color-picker.types';\nexport * from './form/color-picker/color-picker.component';\nexport * from './form/color-picker/color-picker.module';\n\n// OTP / PIN Input component, module & types\nexport * from './form/otp/otp.types';\nexport * from './form/otp/otp.component';\nexport * from './form/otp/otp.module';\n\n// Transfer List component, module & types\nexport * from './form/transfer-list/transfer-list.types';\nexport * from './form/transfer-list/transfer-list.component';\nexport * from './form/transfer-list/transfer-list.module';\n\n// Rating / Star Review component, module & types\nexport * from './form/rating/rating.types';\nexport * from './form/rating/rating.component';\nexport * from './form/rating/rating.module';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["TalosButtonDirective","uniqueIdCounter","LayoutService","TalosTooltipDirective","TalosTooltipComponent","dfIsValid","dfFormat","dfParse","formatDate","parseFlexibleDate","DatePickerComponent","DateRangePickerComponent","i1","PRESET_COLORS","hsvToRgb","rgbToHsl","rgbToHex","isLightColor","formatColor","parseColor","rgbToHsv","clamp","round","hexToRgb","hslToRgb"],"mappings":"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"}