@weeehaoooz/talos-ui 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. package/README.md +2 -0
  2. package/fesm2022/{weeehaoooz-talos-ui-button-button-group.mjs → weeehaoooz-talos-ui-button.mjs} +115 -18
  3. package/fesm2022/weeehaoooz-talos-ui-button.mjs.map +1 -0
  4. package/fesm2022/weeehaoooz-talos-ui-data-display.mjs +3110 -0
  5. package/fesm2022/weeehaoooz-talos-ui-data-display.mjs.map +1 -0
  6. package/fesm2022/weeehaoooz-talos-ui-data-viz.mjs +2414 -0
  7. package/fesm2022/weeehaoooz-talos-ui-data-viz.mjs.map +1 -0
  8. package/fesm2022/weeehaoooz-talos-ui-dropdown.mjs +1039 -0
  9. package/fesm2022/weeehaoooz-talos-ui-dropdown.mjs.map +1 -0
  10. package/fesm2022/weeehaoooz-talos-ui-feedback.mjs +2885 -0
  11. package/fesm2022/weeehaoooz-talos-ui-feedback.mjs.map +1 -0
  12. package/fesm2022/weeehaoooz-talos-ui-form.mjs +10799 -0
  13. package/fesm2022/weeehaoooz-talos-ui-form.mjs.map +1 -0
  14. package/fesm2022/weeehaoooz-talos-ui-layout.mjs +1320 -11
  15. package/fesm2022/weeehaoooz-talos-ui-layout.mjs.map +1 -1
  16. package/fesm2022/weeehaoooz-talos-ui-nav.mjs +119 -72
  17. package/fesm2022/weeehaoooz-talos-ui-nav.mjs.map +1 -1
  18. package/fesm2022/weeehaoooz-talos-ui.mjs +22190 -15213
  19. package/fesm2022/weeehaoooz-talos-ui.mjs.map +1 -1
  20. package/package.json +20 -135
  21. package/styles/_breadcrumb.scss +16 -0
  22. package/styles/_button-group.scss +156 -7
  23. package/styles/_buttons.scss +156 -8
  24. package/styles/_dropdown.scss +438 -0
  25. package/styles/_form-controls.scss +13 -0
  26. package/styles/_progress-bar.scss +43 -0
  27. package/styles/_skeleton.scss +176 -0
  28. package/styles/_spinner.scss +58 -0
  29. package/styles/_variables.scss +37 -0
  30. package/styles/index.scss +6 -1
  31. package/types/weeehaoooz-talos-ui-button.d.ts +92 -0
  32. package/types/weeehaoooz-talos-ui-button.d.ts.map +1 -0
  33. package/types/weeehaoooz-talos-ui-data-display.d.ts +1018 -0
  34. package/types/weeehaoooz-talos-ui-data-display.d.ts.map +1 -0
  35. package/types/weeehaoooz-talos-ui-data-viz.d.ts +839 -0
  36. package/types/weeehaoooz-talos-ui-data-viz.d.ts.map +1 -0
  37. package/types/weeehaoooz-talos-ui-dropdown.d.ts +187 -0
  38. package/types/weeehaoooz-talos-ui-dropdown.d.ts.map +1 -0
  39. package/types/weeehaoooz-talos-ui-feedback.d.ts +1495 -0
  40. package/types/weeehaoooz-talos-ui-feedback.d.ts.map +1 -0
  41. package/types/weeehaoooz-talos-ui-form.d.ts +2639 -0
  42. package/types/weeehaoooz-talos-ui-form.d.ts.map +1 -0
  43. package/types/weeehaoooz-talos-ui-layout.d.ts +851 -3
  44. package/types/weeehaoooz-talos-ui-layout.d.ts.map +1 -1
  45. package/types/weeehaoooz-talos-ui-nav.d.ts +36 -10
  46. package/types/weeehaoooz-talos-ui-nav.d.ts.map +1 -1
  47. package/types/weeehaoooz-talos-ui.d.ts +6949 -4137
  48. package/types/weeehaoooz-talos-ui.d.ts.map +1 -1
  49. package/fesm2022/weeehaoooz-talos-ui-button-button-group.mjs.map +0 -1
  50. package/fesm2022/weeehaoooz-talos-ui-button-button.mjs +0 -93
  51. package/fesm2022/weeehaoooz-talos-ui-button-button.mjs.map +0 -1
  52. package/fesm2022/weeehaoooz-talos-ui-data-display-badge.mjs +0 -233
  53. package/fesm2022/weeehaoooz-talos-ui-data-display-badge.mjs.map +0 -1
  54. package/fesm2022/weeehaoooz-talos-ui-data-display-status-tag.mjs +0 -361
  55. package/fesm2022/weeehaoooz-talos-ui-data-display-status-tag.mjs.map +0 -1
  56. package/fesm2022/weeehaoooz-talos-ui-data-display-timeline.mjs +0 -312
  57. package/fesm2022/weeehaoooz-talos-ui-data-display-timeline.mjs.map +0 -1
  58. package/fesm2022/weeehaoooz-talos-ui-data-display-trend-indicator.mjs +0 -235
  59. package/fesm2022/weeehaoooz-talos-ui-data-display-trend-indicator.mjs.map +0 -1
  60. package/fesm2022/weeehaoooz-talos-ui-data-viz-category-bar.mjs +0 -462
  61. package/fesm2022/weeehaoooz-talos-ui-data-viz-category-bar.mjs.map +0 -1
  62. package/fesm2022/weeehaoooz-talos-ui-data-viz-heatmap.mjs +0 -805
  63. package/fesm2022/weeehaoooz-talos-ui-data-viz-heatmap.mjs.map +0 -1
  64. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-donut.mjs +0 -267
  65. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-donut.mjs.map +0 -1
  66. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-gauge.mjs +0 -351
  67. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-gauge.mjs.map +0 -1
  68. package/fesm2022/weeehaoooz-talos-ui-data-viz-sparkline.mjs +0 -566
  69. package/fesm2022/weeehaoooz-talos-ui-data-viz-sparkline.mjs.map +0 -1
  70. package/fesm2022/weeehaoooz-talos-ui-feedback-alert.mjs +0 -534
  71. package/fesm2022/weeehaoooz-talos-ui-feedback-alert.mjs.map +0 -1
  72. package/fesm2022/weeehaoooz-talos-ui-feedback-dialog.mjs +0 -446
  73. package/fesm2022/weeehaoooz-talos-ui-feedback-dialog.mjs.map +0 -1
  74. package/fesm2022/weeehaoooz-talos-ui-feedback-snackbar.mjs +0 -376
  75. package/fesm2022/weeehaoooz-talos-ui-feedback-snackbar.mjs.map +0 -1
  76. package/fesm2022/weeehaoooz-talos-ui-feedback-tooltip.mjs +0 -147
  77. package/fesm2022/weeehaoooz-talos-ui-feedback-tooltip.mjs.map +0 -1
  78. package/fesm2022/weeehaoooz-talos-ui-form-affix.mjs +0 -242
  79. package/fesm2022/weeehaoooz-talos-ui-form-affix.mjs.map +0 -1
  80. package/fesm2022/weeehaoooz-talos-ui-form-autocomplete.mjs +0 -514
  81. package/fesm2022/weeehaoooz-talos-ui-form-autocomplete.mjs.map +0 -1
  82. package/fesm2022/weeehaoooz-talos-ui-form-checkbox.mjs +0 -548
  83. package/fesm2022/weeehaoooz-talos-ui-form-checkbox.mjs.map +0 -1
  84. package/fesm2022/weeehaoooz-talos-ui-form-chips.mjs +0 -692
  85. package/fesm2022/weeehaoooz-talos-ui-form-chips.mjs.map +0 -1
  86. package/fesm2022/weeehaoooz-talos-ui-form-color-picker.mjs +0 -761
  87. package/fesm2022/weeehaoooz-talos-ui-form-color-picker.mjs.map +0 -1
  88. package/fesm2022/weeehaoooz-talos-ui-form-date-picker.mjs +0 -896
  89. package/fesm2022/weeehaoooz-talos-ui-form-date-picker.mjs.map +0 -1
  90. package/fesm2022/weeehaoooz-talos-ui-form-date-range-picker.mjs +0 -872
  91. package/fesm2022/weeehaoooz-talos-ui-form-date-range-picker.mjs.map +0 -1
  92. package/fesm2022/weeehaoooz-talos-ui-form-date-time-picker.mjs +0 -119
  93. package/fesm2022/weeehaoooz-talos-ui-form-date-time-picker.mjs.map +0 -1
  94. package/fesm2022/weeehaoooz-talos-ui-form-date-time-range-picker.mjs +0 -135
  95. package/fesm2022/weeehaoooz-talos-ui-form-date-time-range-picker.mjs.map +0 -1
  96. package/fesm2022/weeehaoooz-talos-ui-form-drop-zone.mjs +0 -666
  97. package/fesm2022/weeehaoooz-talos-ui-form-drop-zone.mjs.map +0 -1
  98. package/fesm2022/weeehaoooz-talos-ui-form-form-field.mjs +0 -147
  99. package/fesm2022/weeehaoooz-talos-ui-form-form-field.mjs.map +0 -1
  100. package/fesm2022/weeehaoooz-talos-ui-form-input.mjs +0 -33
  101. package/fesm2022/weeehaoooz-talos-ui-form-input.mjs.map +0 -1
  102. package/fesm2022/weeehaoooz-talos-ui-form-otp.mjs +0 -455
  103. package/fesm2022/weeehaoooz-talos-ui-form-otp.mjs.map +0 -1
  104. package/fesm2022/weeehaoooz-talos-ui-form-password-input.mjs +0 -379
  105. package/fesm2022/weeehaoooz-talos-ui-form-password-input.mjs.map +0 -1
  106. package/fesm2022/weeehaoooz-talos-ui-form-radio.mjs +0 -297
  107. package/fesm2022/weeehaoooz-talos-ui-form-radio.mjs.map +0 -1
  108. package/fesm2022/weeehaoooz-talos-ui-form-range-input.mjs +0 -661
  109. package/fesm2022/weeehaoooz-talos-ui-form-range-input.mjs.map +0 -1
  110. package/fesm2022/weeehaoooz-talos-ui-form-rating.mjs +0 -346
  111. package/fesm2022/weeehaoooz-talos-ui-form-rating.mjs.map +0 -1
  112. package/fesm2022/weeehaoooz-talos-ui-form-select-input.mjs +0 -896
  113. package/fesm2022/weeehaoooz-talos-ui-form-select-input.mjs.map +0 -1
  114. package/fesm2022/weeehaoooz-talos-ui-form-slide-toggle.mjs +0 -252
  115. package/fesm2022/weeehaoooz-talos-ui-form-slide-toggle.mjs.map +0 -1
  116. package/fesm2022/weeehaoooz-talos-ui-form-transfer-list.mjs +0 -916
  117. package/fesm2022/weeehaoooz-talos-ui-form-transfer-list.mjs.map +0 -1
  118. package/types/weeehaoooz-talos-ui-button-button-group.d.ts +0 -59
  119. package/types/weeehaoooz-talos-ui-button-button-group.d.ts.map +0 -1
  120. package/types/weeehaoooz-talos-ui-button-button.d.ts +0 -38
  121. package/types/weeehaoooz-talos-ui-button-button.d.ts.map +0 -1
  122. package/types/weeehaoooz-talos-ui-data-display-badge.d.ts +0 -119
  123. package/types/weeehaoooz-talos-ui-data-display-badge.d.ts.map +0 -1
  124. package/types/weeehaoooz-talos-ui-data-display-status-tag.d.ts +0 -135
  125. package/types/weeehaoooz-talos-ui-data-display-status-tag.d.ts.map +0 -1
  126. package/types/weeehaoooz-talos-ui-data-display-timeline.d.ts +0 -144
  127. package/types/weeehaoooz-talos-ui-data-display-timeline.d.ts.map +0 -1
  128. package/types/weeehaoooz-talos-ui-data-display-trend-indicator.d.ts +0 -83
  129. package/types/weeehaoooz-talos-ui-data-display-trend-indicator.d.ts.map +0 -1
  130. package/types/weeehaoooz-talos-ui-data-viz-category-bar.d.ts +0 -255
  131. package/types/weeehaoooz-talos-ui-data-viz-category-bar.d.ts.map +0 -1
  132. package/types/weeehaoooz-talos-ui-data-viz-heatmap.d.ts +0 -204
  133. package/types/weeehaoooz-talos-ui-data-viz-heatmap.d.ts.map +0 -1
  134. package/types/weeehaoooz-talos-ui-data-viz-mini-donut.d.ts +0 -101
  135. package/types/weeehaoooz-talos-ui-data-viz-mini-donut.d.ts.map +0 -1
  136. package/types/weeehaoooz-talos-ui-data-viz-mini-gauge.d.ts +0 -138
  137. package/types/weeehaoooz-talos-ui-data-viz-mini-gauge.d.ts.map +0 -1
  138. package/types/weeehaoooz-talos-ui-data-viz-sparkline.d.ts +0 -161
  139. package/types/weeehaoooz-talos-ui-data-viz-sparkline.d.ts.map +0 -1
  140. package/types/weeehaoooz-talos-ui-feedback-alert.d.ts +0 -212
  141. package/types/weeehaoooz-talos-ui-feedback-alert.d.ts.map +0 -1
  142. package/types/weeehaoooz-talos-ui-feedback-dialog.d.ts +0 -259
  143. package/types/weeehaoooz-talos-ui-feedback-dialog.d.ts.map +0 -1
  144. package/types/weeehaoooz-talos-ui-feedback-snackbar.d.ts +0 -147
  145. package/types/weeehaoooz-talos-ui-feedback-snackbar.d.ts.map +0 -1
  146. package/types/weeehaoooz-talos-ui-feedback-tooltip.d.ts +0 -32
  147. package/types/weeehaoooz-talos-ui-feedback-tooltip.d.ts.map +0 -1
  148. package/types/weeehaoooz-talos-ui-form-affix.d.ts +0 -88
  149. package/types/weeehaoooz-talos-ui-form-affix.d.ts.map +0 -1
  150. package/types/weeehaoooz-talos-ui-form-autocomplete.d.ts +0 -113
  151. package/types/weeehaoooz-talos-ui-form-autocomplete.d.ts.map +0 -1
  152. package/types/weeehaoooz-talos-ui-form-checkbox.d.ts +0 -165
  153. package/types/weeehaoooz-talos-ui-form-checkbox.d.ts.map +0 -1
  154. package/types/weeehaoooz-talos-ui-form-chips.d.ts +0 -152
  155. package/types/weeehaoooz-talos-ui-form-chips.d.ts.map +0 -1
  156. package/types/weeehaoooz-talos-ui-form-color-picker.d.ts +0 -144
  157. package/types/weeehaoooz-talos-ui-form-color-picker.d.ts.map +0 -1
  158. package/types/weeehaoooz-talos-ui-form-date-picker.d.ts +0 -138
  159. package/types/weeehaoooz-talos-ui-form-date-picker.d.ts.map +0 -1
  160. package/types/weeehaoooz-talos-ui-form-date-range-picker.d.ts +0 -148
  161. package/types/weeehaoooz-talos-ui-form-date-range-picker.d.ts.map +0 -1
  162. package/types/weeehaoooz-talos-ui-form-date-time-picker.d.ts +0 -44
  163. package/types/weeehaoooz-talos-ui-form-date-time-picker.d.ts.map +0 -1
  164. package/types/weeehaoooz-talos-ui-form-date-time-range-picker.d.ts +0 -48
  165. package/types/weeehaoooz-talos-ui-form-date-time-range-picker.d.ts.map +0 -1
  166. package/types/weeehaoooz-talos-ui-form-drop-zone.d.ts +0 -227
  167. package/types/weeehaoooz-talos-ui-form-drop-zone.d.ts.map +0 -1
  168. package/types/weeehaoooz-talos-ui-form-form-field.d.ts +0 -42
  169. package/types/weeehaoooz-talos-ui-form-form-field.d.ts.map +0 -1
  170. package/types/weeehaoooz-talos-ui-form-input.d.ts +0 -15
  171. package/types/weeehaoooz-talos-ui-form-input.d.ts.map +0 -1
  172. package/types/weeehaoooz-talos-ui-form-otp.d.ts +0 -111
  173. package/types/weeehaoooz-talos-ui-form-otp.d.ts.map +0 -1
  174. package/types/weeehaoooz-talos-ui-form-password-input.d.ts +0 -145
  175. package/types/weeehaoooz-talos-ui-form-password-input.d.ts.map +0 -1
  176. package/types/weeehaoooz-talos-ui-form-radio.d.ts +0 -84
  177. package/types/weeehaoooz-talos-ui-form-radio.d.ts.map +0 -1
  178. package/types/weeehaoooz-talos-ui-form-range-input.d.ts +0 -181
  179. package/types/weeehaoooz-talos-ui-form-range-input.d.ts.map +0 -1
  180. package/types/weeehaoooz-talos-ui-form-rating.d.ts +0 -110
  181. package/types/weeehaoooz-talos-ui-form-rating.d.ts.map +0 -1
  182. package/types/weeehaoooz-talos-ui-form-select-input.d.ts +0 -195
  183. package/types/weeehaoooz-talos-ui-form-select-input.d.ts.map +0 -1
  184. package/types/weeehaoooz-talos-ui-form-slide-toggle.d.ts +0 -79
  185. package/types/weeehaoooz-talos-ui-form-slide-toggle.d.ts.map +0 -1
  186. package/types/weeehaoooz-talos-ui-form-transfer-list.d.ts +0 -192
  187. package/types/weeehaoooz-talos-ui-form-transfer-list.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weeehaoooz-talos-ui-form.mjs","sources":["../../../projects/talos-ui/form/affix/affix.directives.ts","../../../projects/talos-ui/form/affix/affix.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/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/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/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/date-picker/date-picker.component.ts","../../../projects/talos-ui/form/date-picker/date-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-picker/date-time-picker.component.ts","../../../projects/talos-ui/form/date-time-picker/date-time-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/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/file-upload-progress.types.ts","../../../projects/talos-ui/form/drop-zone/presigned-upload.service.ts","../../../projects/talos-ui/form/drop-zone/file-upload-progress.component.ts","../../../projects/talos-ui/form/drop-zone/file-upload-progress.component.html","../../../projects/talos-ui/form/drop-zone/presigned-file-upload.component.ts","../../../projects/talos-ui/form/drop-zone/presigned-file-upload.component.html","../../../projects/talos-ui/form/drop-zone/drop-zone.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/input/input.directive.ts","../../../projects/talos-ui/form/number-input/number-input.component.ts","../../../projects/talos-ui/form/number-input/number-input.component.html","../../../projects/talos-ui/form/number-input/number-input.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/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/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/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/form/rating/rating.component.ts","../../../projects/talos-ui/form/rating/rating.component.html","../../../projects/talos-ui/form/rating/rating.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/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/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/weeehaoooz-talos-ui-form.ts"],"sourcesContent":["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","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 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","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 { 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 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 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 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 '../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 effect,\n forwardRef,\n input,\n output,\n signal\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { DateRangePickerComponent, DateRangePreset, DateRangeValue } from '../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, 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 { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n/**\n * Lifecycle status of an individual file upload task.\n */\nexport type UploadTaskStatus =\n | 'idle'\n | 'requesting-url'\n | 'uploading'\n | 'completed'\n | 'error'\n | 'canceled';\n\n/**\n * Payload sent to retrieve a pre-signed upload URL.\n */\nexport interface PresignedUrlRequest {\n file: File;\n fileName: string;\n fileSize: number;\n fileType: string;\n metadata?: Record<string, string>;\n checksum?: string;\n}\n\n/**\n * Response payload containing the pre-signed URL and upload details.\n */\nexport interface PresignedUrlResponse {\n /** The pre-signed URL to upload the file to (e.g. AWS S3, GCS, Azure Blob, or backend endpoint). */\n uploadUrl: string;\n /** Final public or persistent URL of the uploaded asset once complete. */\n fileUrl?: string;\n /** HTTP method to use for the upload. Defaults to 'PUT'. */\n method?: 'PUT' | 'POST';\n /** Optional custom headers required for the upload (e.g. Content-Type, x-amz-acl, etc.). */\n headers?: Record<string, string>;\n /** Optional multipart form data or S3 policy fields if method is 'POST'. */\n formData?: Record<string, string | Blob>;\n /** Optional S3 POST form fields. */\n fields?: Record<string, string>;\n}\n\n/**\n * Handler function or Observable for retrieving pre-signed URLs from the backend.\n */\nexport type PresignedUrlHandlerFn = (\n request: PresignedUrlRequest\n) => Observable<PresignedUrlResponse> | Promise<PresignedUrlResponse>;\n\n/**\n * Options for configuring an individual upload task.\n */\nexport interface UploadFileOptions {\n presignedHandler?: PresignedUrlHandlerFn;\n metadata?: Record<string, string>;\n headers?: Record<string, string>;\n /** Auto-start upload once created. Default: true */\n autoStart?: boolean;\n}\n\n/**\n * Progress details emitted while streaming binary data to the pre-signed URL.\n */\nexport interface UploadProgressEvent {\n loaded: number;\n total: number;\n percentage: number;\n speed: number; // bytes per second\n speedFormatted: string; // e.g. \"1.4 MB/s\"\n timeRemaining?: number; // seconds remaining\n}\n\n/**\n * Active upload task representing a single file being uploaded to a pre-signed URL.\n */\nexport interface UploadTask {\n id: string;\n file: File;\n fileName: string;\n fileSize: number;\n fileType: string;\n status: UploadTaskStatus;\n progress: number; // 0 - 100\n loaded: number;\n total: number;\n speed: number;\n speedFormatted?: string;\n timeRemaining?: number;\n presignedUrl?: string;\n fileUrl?: string;\n errorMessage?: string;\n previewUrl?: string;\n startedAt?: number;\n completedAt?: number;\n cancel?: () => void;\n retry?: () => void;\n}\n\n/**\n * Global configuration options for Talos Presigned Upload.\n */\nexport interface PresignedUploadConfig {\n /** Default backend pre-signed URL handler function */\n getPresignedUrl?: PresignedUrlHandlerFn;\n /** Global HTTP headers to attach to pre-signed upload requests */\n defaultHeaders?: Record<string, string>;\n /** Max concurrent uploads. Default: 3 */\n maxConcurrent?: number;\n /** Simulated latency in ms when using built-in mock mode. Default: 0 */\n simulatedDelayMs?: number;\n}\n\n/**\n * Injection token for global pre-signed upload configuration.\n */\nexport const TALOS_PRESIGNED_UPLOAD_CONFIG = new InjectionToken<PresignedUploadConfig>(\n 'TALOS_PRESIGNED_UPLOAD_CONFIG'\n);\n\n/**\n * Injection token for default presigned URL handler function.\n */\nexport const TALOS_PRESIGNED_URL_HANDLER = new InjectionToken<PresignedUrlHandlerFn>(\n 'TALOS_PRESIGNED_URL_HANDLER'\n);\n","import { inject, Injectable } from '@angular/core';\nimport { from, isObservable, Observable, of, Subject, throwError } from 'rxjs';\nimport {\n PresignedUploadConfig,\n PresignedUrlHandlerFn,\n PresignedUrlRequest,\n PresignedUrlResponse,\n TALOS_PRESIGNED_UPLOAD_CONFIG,\n TALOS_PRESIGNED_URL_HANDLER,\n UploadFileOptions,\n UploadProgressEvent,\n UploadTask,\n UploadTaskStatus\n} from './file-upload-progress.types';\n\nlet taskIdCounter = 0;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TalosPresignedUploadService {\n private readonly config = inject<PresignedUploadConfig>(TALOS_PRESIGNED_UPLOAD_CONFIG, {\n optional: true\n });\n private readonly defaultHandler = inject<PresignedUrlHandlerFn>(TALOS_PRESIGNED_URL_HANDLER, {\n optional: true\n });\n\n /**\n * Creates and starts an upload task for a single file.\n * Handles requesting the pre-signed URL and streaming binary data to it.\n */\n upload(\n file: File,\n options?: UploadFileOptions,\n onUpdate?: (task: UploadTask) => void\n ): UploadTask {\n const id = `upload-${++taskIdCounter}-${Math.random().toString(36).substring(2, 7)}`;\n let previewUrl: string | undefined;\n\n if (file.type.startsWith('image/')) {\n try {\n previewUrl = URL.createObjectURL(file);\n } catch {\n previewUrl = undefined;\n }\n }\n\n const task: UploadTask = {\n id,\n file,\n fileName: file.name,\n fileSize: file.size,\n fileType: file.type || 'application/octet-stream',\n status: 'idle',\n progress: 0,\n loaded: 0,\n total: file.size,\n speed: 0,\n speedFormatted: '0 B/s',\n timeRemaining: undefined,\n previewUrl,\n startedAt: undefined,\n completedAt: undefined\n };\n\n let activeXhr: XMLHttpRequest | null = null;\n let isCanceled = false;\n\n const notify = () => {\n onUpdate?.(task);\n };\n\n task.cancel = () => {\n if (task.status === 'completed' || task.status === 'canceled') return;\n isCanceled = true;\n if (activeXhr) {\n activeXhr.abort();\n activeXhr = null;\n }\n task.status = 'canceled';\n notify();\n };\n\n const startUpload = () => {\n isCanceled = false;\n task.status = 'requesting-url';\n task.errorMessage = undefined;\n task.progress = 0;\n task.loaded = 0;\n task.speed = 0;\n task.speedFormatted = '0 B/s';\n task.startedAt = Date.now();\n notify();\n\n const handler =\n options?.presignedHandler ||\n this.defaultHandler ||\n this.config?.getPresignedUrl ||\n this.createMockPresignedHandler();\n\n const request: PresignedUrlRequest = {\n file,\n fileName: file.name,\n fileSize: file.size,\n fileType: file.type || 'application/octet-stream',\n metadata: options?.metadata\n };\n\n const handlerResult = handler(request);\n const presigned$ = isObservable(handlerResult) ? handlerResult : from(Promise.resolve(handlerResult));\n\n presigned$.subscribe({\n next: (response: PresignedUrlResponse) => {\n if (isCanceled) return;\n task.presignedUrl = response.uploadUrl;\n task.fileUrl = response.fileUrl;\n task.status = 'uploading';\n notify();\n\n // Phase 2: Upload to pre-signed URL\n this.executeUploadToPresignedUrl(response, file, options, {\n onProgress: (progressEvent) => {\n if (isCanceled) return;\n task.status = 'uploading';\n task.progress = progressEvent.percentage;\n task.loaded = progressEvent.loaded;\n task.total = progressEvent.total;\n task.speed = progressEvent.speed;\n task.speedFormatted = progressEvent.speedFormatted;\n task.timeRemaining = progressEvent.timeRemaining;\n notify();\n },\n onComplete: (finalFileUrl) => {\n if (isCanceled) return;\n task.status = 'completed';\n task.progress = 100;\n task.loaded = task.total;\n task.speed = 0;\n task.speedFormatted = undefined;\n task.timeRemaining = 0;\n task.completedAt = Date.now();\n if (finalFileUrl) {\n task.fileUrl = finalFileUrl;\n }\n notify();\n },\n onError: (errMessage) => {\n if (isCanceled) return;\n task.status = 'error';\n task.errorMessage = errMessage;\n task.speed = 0;\n notify();\n },\n setXhr: (xhr) => {\n activeXhr = xhr;\n }\n });\n },\n error: (err) => {\n if (isCanceled) return;\n task.status = 'error';\n task.errorMessage =\n typeof err === 'string'\n ? err\n : err?.message || 'Failed to retrieve pre-signed URL from server.';\n notify();\n }\n });\n };\n\n task.retry = () => {\n startUpload();\n };\n\n if (options?.autoStart !== false) {\n startUpload();\n }\n\n return task;\n }\n\n /**\n * Batch helper to create upload tasks for multiple files.\n */\n uploadBatch(\n files: File[],\n options?: UploadFileOptions,\n onUpdate?: (tasks: UploadTask[]) => void\n ): UploadTask[] {\n const tasks: UploadTask[] = [];\n const notifyAll = () => {\n onUpdate?.([...tasks]);\n };\n\n for (const file of files) {\n const task = this.upload(file, options, () => {\n notifyAll();\n });\n tasks.push(task);\n }\n\n return tasks;\n }\n\n /**\n * Performs the binary transfer to the retrieved pre-signed URL via XMLHttpRequest.\n */\n private executeUploadToPresignedUrl(\n presigned: PresignedUrlResponse,\n file: File,\n options: UploadFileOptions | undefined,\n callbacks: {\n onProgress: (event: UploadProgressEvent) => void;\n onComplete: (fileUrl?: string) => void;\n onError: (message: string) => void;\n setXhr: (xhr: XMLHttpRequest) => void;\n }\n ): void {\n // If uploadUrl is a mock/simulation endpoint\n if (presigned.uploadUrl.startsWith('mock://') || presigned.uploadUrl.startsWith('simulated://')) {\n this.simulateUploadProgress(file, presigned, callbacks);\n return;\n }\n\n const xhr = new XMLHttpRequest();\n callbacks.setXhr(xhr);\n\n const method = presigned.method || 'PUT';\n xhr.open(method, presigned.uploadUrl, true);\n\n // Merge headers: global config, response headers, and task options\n const headers: Record<string, string> = {\n ...(this.config?.defaultHeaders || {}),\n ...(presigned.headers || {}),\n ...(options?.headers || {})\n };\n\n // Set Content-Type if not already provided and not using multipart FormData\n if (!headers['Content-Type'] && !(presigned.formData || presigned.fields)) {\n headers['Content-Type'] = file.type || 'application/octet-stream';\n }\n\n for (const [key, value] of Object.entries(headers)) {\n xhr.setRequestHeader(key, value);\n }\n\n let lastTime = Date.now();\n let lastLoaded = 0;\n const speedSamples: number[] = [];\n\n xhr.upload.onprogress = (e: ProgressEvent) => {\n if (!e.lengthComputable) return;\n\n const now = Date.now();\n const timeDelta = (now - lastTime) / 1000;\n\n let speed = 0;\n if (timeDelta > 0.15) {\n const loadedDelta = e.loaded - lastLoaded;\n const currentSpeed = loadedDelta / timeDelta;\n speedSamples.push(currentSpeed);\n if (speedSamples.length > 5) speedSamples.shift();\n\n speed = speedSamples.reduce((a, b) => a + b, 0) / speedSamples.length;\n lastTime = now;\n lastLoaded = e.loaded;\n }\n\n const percentage = Math.min(99, Math.round((e.loaded / e.total) * 100));\n const remainingBytes = e.total - e.loaded;\n const timeRemaining = speed > 0 ? Math.round(remainingBytes / speed) : undefined;\n\n callbacks.onProgress({\n loaded: e.loaded,\n total: e.total,\n percentage,\n speed,\n speedFormatted: this.formatSpeed(speed),\n timeRemaining\n });\n };\n\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n callbacks.onComplete(presigned.fileUrl);\n } else {\n callbacks.onError(\n `Upload failed with HTTP ${xhr.status}: ${xhr.statusText || 'Unknown server error'}`\n );\n }\n };\n\n xhr.onerror = () => {\n callbacks.onError('Network connection error while uploading to pre-signed URL.');\n };\n\n xhr.onabort = () => {\n // Handled by cancel\n };\n\n // Prepare payload (POST multipart or PUT binary body)\n if (presigned.formData || presigned.fields) {\n const formData = new FormData();\n if (presigned.fields) {\n for (const [k, v] of Object.entries(presigned.fields)) {\n formData.append(k, v);\n }\n }\n if (presigned.formData) {\n for (const [k, v] of Object.entries(presigned.formData)) {\n formData.append(k, v);\n }\n }\n formData.append('file', file);\n xhr.send(formData);\n } else {\n xhr.send(file);\n }\n }\n\n /**\n * Internal simulation runner for development and showcasing without requiring a live cloud bucket.\n */\n private simulateUploadProgress(\n file: File,\n presigned: PresignedUrlResponse,\n callbacks: {\n onProgress: (event: UploadProgressEvent) => void;\n onComplete: (fileUrl?: string) => void;\n onError: (message: string) => void;\n setXhr: (xhr: XMLHttpRequest) => void;\n }\n ): void {\n let loaded = 0;\n const total = file.size || 1024 * 1024;\n const chunkSize = Math.max(Math.round(total / 18), 32 * 1024);\n let speed = 750 * 1024; // ~750 KB/s simulated baseline\n\n const timer = setInterval(() => {\n const variance = (Math.random() - 0.45) * 200 * 1024;\n speed = Math.max(100 * 1024, speed + variance);\n loaded = Math.min(total, loaded + chunkSize + Math.round(Math.random() * chunkSize * 0.5));\n\n const percentage = Math.min(100, Math.round((loaded / total) * 100));\n const remainingBytes = total - loaded;\n const timeRemaining = speed > 0 ? Math.round(remainingBytes / speed) : 0;\n\n if (loaded >= total) {\n clearInterval(timer);\n // Check if user named file 'error' to demonstrate failure states\n if (file.name.toLowerCase().includes('error')) {\n callbacks.onError('Upload to pre-signed S3 bucket rejected: signature expired (403)');\n } else {\n callbacks.onComplete(\n presigned.fileUrl || `https://storage.talos.io/uploads/${encodeURIComponent(file.name)}`\n );\n }\n } else {\n callbacks.onProgress({\n loaded,\n total,\n percentage,\n speed,\n speedFormatted: this.formatSpeed(speed),\n timeRemaining\n });\n }\n }, 180);\n }\n\n /**\n * Creates a default simulated presigned URL handler if none is provided.\n */\n private createMockPresignedHandler(): PresignedUrlHandlerFn {\n return (req: PresignedUrlRequest): Observable<PresignedUrlResponse> => {\n const safeName = encodeURIComponent(req.fileName);\n return new Observable<PresignedUrlResponse>((subscriber) => {\n const timeout = setTimeout(() => {\n if (req.fileName.toLowerCase().includes('presign-error')) {\n subscriber.error(new Error('Failed to generate pre-signed URL: Bucket permissions error.'));\n } else {\n subscriber.next({\n uploadUrl: `mock://s3.amazonaws.com/talos-uploads/${safeName}?token=sample-presigned-token`,\n fileUrl: `https://storage.talos.io/assets/${safeName}`,\n method: 'PUT'\n });\n subscriber.complete();\n }\n }, 500);\n\n return () => clearTimeout(timeout);\n });\n };\n }\n\n /**\n * Format bytes per second into human-readable rate (e.g. \"1.2 MB/s\").\n */\n formatSpeed(bytesPerSecond: number): string {\n if (!bytesPerSecond || bytesPerSecond <= 0) return '0 B/s';\n const k = 1024;\n const sizes = ['B/s', 'KB/s', 'MB/s', 'GB/s'];\n const i = Math.floor(Math.log(bytesPerSecond) / Math.log(k));\n const val = parseFloat((bytesPerSecond / Math.pow(k, i)).toFixed(1));\n return `${val} ${sizes[i] || 'B/s'}`;\n }\n\n /**\n * Format bytes into human-readable size (e.g. \"2.4 MB\").\n */\n formatBytes(bytes: number, decimals = 1): string {\n if (!bytes || 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","import { Component, computed, contentChild, inject, input, output, signal, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UploadTask } from './file-upload-progress.types';\nimport { TalosPresignedUploadService } from './presigned-upload.service';\n\n@Component({\n selector: 'talos-file-upload-progress, talos-upload-progress',\n imports: [CommonModule],\n templateUrl: './file-upload-progress.component.html',\n styleUrl: './file-upload-progress.component.scss',\n host: {\n 'class': 'talos-file-upload-progress-host',\n '[class.has-tasks]': 'hasTasks()',\n '[class.variant-card]': 'variant() === \"card\"',\n '[class.variant-compact]': 'variant() === \"compact\"',\n '[class.variant-minimal]': 'variant() === \"minimal\"'\n }\n})\nexport class TalosFileUploadProgressComponent {\n private readonly uploadService = inject(TalosPresignedUploadService);\n\n // --- Content Projection Queries ---\n /** Optional custom template for extra content inside each task card */\n readonly taskContentTpl = contentChild<TemplateRef<{ $implicit: UploadTask; task: UploadTask }>>('taskContent');\n\n /** Optional custom template for extra action buttons inside each task card */\n readonly taskActionsTpl = contentChild<TemplateRef<{ $implicit: UploadTask; task: UploadTask }>>('taskActions');\n\n // --- Signal Inputs ---\n /** Active list of upload tasks */\n readonly tasks = input<UploadTask[]>([]);\n\n /** Visual layout variant: 'card' (default), 'compact', or 'minimal' */\n readonly variant = input<'card' | 'compact' | 'minimal'>('card');\n\n /** Whether to render top summary stats header */\n readonly showSummary = input<boolean>(true);\n\n /** Allow canceling in-flight uploads */\n readonly allowCancel = input<boolean>(true);\n\n /** Allow retrying failed uploads */\n readonly allowRetry = input<boolean>(true);\n\n /** Allow removing finished or failed tasks from the list */\n readonly allowRemove = input<boolean>(true);\n\n /** Show button to copy file URL upon upload completion */\n readonly allowCopyUrl = input<boolean>(true);\n\n // --- Signal Outputs ---\n readonly taskCancel = output<UploadTask>();\n readonly taskRetry = output<UploadTask>();\n readonly taskRemove = output<UploadTask>();\n readonly taskComplete = output<UploadTask>();\n\n // --- Local UI State ---\n readonly copiedTaskId = signal<string | null>(null);\n readonly failedImageIds = signal<Set<string>>(new Set());\n\n isImgFailed(taskId: string): boolean {\n return this.failedImageIds().has(taskId);\n }\n\n handleImgError(taskId: string): void {\n this.failedImageIds.update((set) => {\n const next = new Set(set);\n next.add(taskId);\n return next;\n });\n }\n\n // --- Computed Metrics ---\n readonly hasTasks = computed(() => this.tasks().length > 0);\n\n readonly totalCount = computed(() => this.tasks().length);\n\n readonly activeCount = computed(\n () =>\n this.tasks().filter((t) => t.status === 'uploading' || t.status === 'requesting-url').length\n );\n\n readonly completedCount = computed(\n () => this.tasks().filter((t) => t.status === 'completed').length\n );\n\n readonly errorCount = computed(\n () => this.tasks().filter((t) => t.status === 'error').length\n );\n\n readonly overallPercentage = computed(() => {\n const list = this.tasks();\n if (list.length === 0) return 0;\n const totalBytes = list.reduce((sum, t) => sum + (t.total || t.fileSize || 1), 0);\n const loadedBytes = list.reduce((sum, t) => sum + (t.loaded || 0), 0);\n if (totalBytes === 0) return 0;\n return Math.min(100, Math.round((loadedBytes / totalBytes) * 100));\n });\n\n // --- Actions ---\n\n cancelTask(task: UploadTask, event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n event.preventDefault();\n }\n if (task.cancel) {\n task.cancel();\n }\n this.taskCancel.emit(task);\n }\n\n retryTask(task: UploadTask, event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n event.preventDefault();\n }\n if (task.retry) {\n task.retry();\n }\n this.taskRetry.emit(task);\n }\n\n removeTask(task: UploadTask, event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n event.preventDefault();\n }\n if (task.previewUrl && task.previewUrl.startsWith('blob:')) {\n URL.revokeObjectURL(task.previewUrl);\n }\n this.taskRemove.emit(task);\n }\n\n copyFileUrl(task: UploadTask, event?: MouseEvent): void {\n if (event) {\n event.stopPropagation();\n event.preventDefault();\n }\n if (!task.fileUrl) return;\n\n navigator.clipboard.writeText(task.fileUrl).then(() => {\n this.copiedTaskId.set(task.id);\n setTimeout(() => {\n if (this.copiedTaskId() === task.id) {\n this.copiedTaskId.set(null);\n }\n }, 2500);\n });\n }\n\n cancelAll(): void {\n for (const task of this.tasks()) {\n if (task.status === 'uploading' || task.status === 'requesting-url') {\n task.cancel?.();\n this.taskCancel.emit(task);\n }\n }\n }\n\n // --- Formatters & Helpers ---\n\n formatBytes(bytes: number): string {\n return this.uploadService.formatBytes(bytes);\n }\n\n formatTimeRemaining(seconds: number | undefined): string {\n if (seconds === undefined || seconds === null || seconds <= 0) return '';\n if (seconds < 60) return `${seconds}s left`;\n const mins = Math.floor(seconds / 60);\n const secs = seconds % 60;\n return `${mins}m ${secs}s left`;\n }\n\n getFileTypeCategory(task: UploadTask): 'image' | 'pdf' | 'doc' | 'archive' | 'audio' | 'video' | 'code' | 'generic' {\n const type = (task.fileType || '').toLowerCase();\n const name = (task.fileName || '').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 /\\.(doc|docx|xls|xlsx|ppt|pptx|txt|rtf|csv)$/.test(name)\n ) {\n return 'doc';\n }\n if (type.includes('zip') || type.includes('compressed') || /\\.(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","@if (hasTasks()) {\n <div class=\"talos-upload-progress-container\" role=\"region\" aria-label=\"Upload Progress\">\n <!-- Top Summary Header -->\n @if (showSummary()) {\n <div class=\"talos-upload-progress-header\">\n <div class=\"talos-upload-summary-info\">\n <span class=\"talos-upload-summary-title\">\n @if (activeCount() > 0) {\n Uploading {{ activeCount() }} of {{ totalCount() }} {{ totalCount() === 1 ? 'file' : 'files' }}\n } @else if (errorCount() > 0) {\n {{ completedCount() }} uploaded, {{ errorCount() }} failed\n } @else {\n {{ completedCount() }} {{ completedCount() === 1 ? 'file' : 'files' }} uploaded successfully\n }\n </span>\n @if (activeCount() > 0) {\n <span class=\"talos-upload-summary-percent\">({{ overallPercentage() }}%)</span>\n }\n </div>\n\n <div class=\"talos-upload-header-actions\">\n <!-- Projected custom batch buttons or toolbars -->\n <ng-content select=\"[talosUploadActions], [headerExtra]\" />\n\n @if (activeCount() > 1 && allowCancel()) {\n <button\n type=\"button\"\n class=\"talos-upload-btn-text btn-cancel-all\"\n (click)=\"cancelAll()\"\n aria-label=\"Cancel all ongoing uploads\"\n >\n Cancel all\n </button>\n }\n </div>\n </div>\n }\n\n <!-- Tasks List -->\n <div class=\"talos-upload-tasks-list\" role=\"list\">\n @for (task of tasks(); track task.id) {\n <div\n class=\"talos-upload-task-card\"\n role=\"listitem\"\n [class.is-requesting]=\"task.status === 'requesting-url'\"\n [class.is-uploading]=\"task.status === 'uploading'\"\n [class.is-completed]=\"task.status === 'completed'\"\n [class.is-error]=\"task.status === 'error'\"\n [class.is-canceled]=\"task.status === 'canceled'\"\n >\n <!-- Left: Thumbnail / File Category Badge -->\n <div class=\"talos-upload-task-preview\" aria-hidden=\"true\">\n @if (task.previewUrl && !isImgFailed(task.id)) {\n <img\n [src]=\"task.previewUrl\"\n [alt]=\"task.fileName\"\n class=\"talos-upload-img-preview\"\n (error)=\"handleImgError(task.id)\"\n />\n } @else {\n @switch (getFileTypeCategory(task)) {\n @case ('image') {\n <div class=\"talos-upload-badge type-image\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\" />\n <circle cx=\"9\" cy=\"9\" r=\"2\" />\n <path d=\"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\" />\n </svg>\n </div>\n }\n @case ('pdf') {\n <div class=\"talos-upload-badge type-pdf\">\n <span>PDF</span>\n </div>\n }\n @case ('doc') {\n <div class=\"talos-upload-badge type-doc\">\n <span>DOC</span>\n </div>\n }\n @case ('archive') {\n <div class=\"talos-upload-badge type-archive\">\n <span>ZIP</span>\n </div>\n }\n @case ('audio') {\n <div class=\"talos-upload-badge type-audio\">\n <span>AUD</span>\n </div>\n }\n @case ('video') {\n <div class=\"talos-upload-badge type-video\">\n <span>VID</span>\n </div>\n }\n @case ('code') {\n <div class=\"talos-upload-badge type-code\">\n <span>&lt;/&gt;</span>\n </div>\n }\n @default {\n <div class=\"talos-upload-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 <!-- Middle: Metadata & Dynamic Progress Bar -->\n <div class=\"talos-upload-task-body\">\n <!-- Row 1: File Name, Size & Live Metrics -->\n <div class=\"talos-upload-row-top\">\n <span class=\"talos-upload-file-name\" [title]=\"task.fileName\">{{ task.fileName }}</span>\n <div class=\"talos-upload-meta-tags\">\n <span class=\"talos-upload-file-size\">{{ formatBytes(task.fileSize) }}</span>\n\n @if (task.status === 'requesting-url') {\n <span class=\"talos-upload-phase-tag phase-requesting\">\n <span class=\"talos-upload-pulse-dot\" aria-hidden=\"true\"></span>\n Getting pre-signed URL...\n </span>\n }\n\n @if (task.status === 'uploading') {\n <span class=\"talos-upload-phase-tag phase-uploading\">\n <span class=\"metric-percent\">{{ task.progress }}%</span>\n @if (task.speedFormatted) {\n <span class=\"metric-divider\">•</span>\n <span class=\"metric-speed\">{{ task.speedFormatted }}</span>\n }\n @if (formatTimeRemaining(task.timeRemaining)) {\n <span class=\"metric-divider\">•</span>\n <span class=\"metric-eta\">{{ formatTimeRemaining(task.timeRemaining) }}</span>\n }\n </span>\n }\n\n @if (task.status === 'completed') {\n <span class=\"talos-upload-phase-tag phase-completed\">\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 Uploaded\n </span>\n }\n\n @if (task.status === 'error') {\n <span class=\"talos-upload-phase-tag phase-error\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\" />\n </svg>\n Failed\n </span>\n }\n\n @if (task.status === 'canceled') {\n <span class=\"talos-upload-phase-tag phase-canceled\">\n Canceled\n </span>\n }\n </div>\n </div>\n\n <!-- Row 2: Progress Track & Bar (Only shown while actively uploading or requesting) -->\n @if (task.status === 'uploading' || task.status === 'requesting-url') {\n <div\n class=\"talos-upload-progress-track\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"task.progress\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-label]=\"'Upload progress for ' + task.fileName\"\n >\n <div\n class=\"talos-upload-progress-bar\"\n [style.width.%]=\"task.progress\"\n [class.is-indeterminate]=\"task.status === 'requesting-url'\"\n ></div>\n </div>\n }\n\n <!-- Row 3: Error Message if failed -->\n @if (task.status === 'error' && task.errorMessage) {\n <div class=\"talos-upload-error-detail\">\n {{ task.errorMessage }}\n </div>\n }\n\n <!-- Custom per-task card content -->\n @if (taskContentTpl()) {\n <div class=\"talos-upload-task-extra\">\n <ng-container *ngTemplateOutlet=\"taskContentTpl()!; context: { $implicit: task, task: task }\" />\n </div>\n }\n <div class=\"talos-upload-task-extra\">\n <ng-content select=\"[taskExtra], [cardExtra], [itemExtra]\" />\n <ng-content />\n </div>\n </div>\n\n <!-- Right: Interactive Control Buttons -->\n <div class=\"talos-upload-task-actions\">\n <!-- Custom per-task card actions -->\n @if (taskActionsTpl()) {\n <ng-container *ngTemplateOutlet=\"taskActionsTpl()!; context: { $implicit: task, task: task }\" />\n }\n <ng-content select=\"[taskAction], [taskActions]\" />\n\n <!-- Copy URL button on complete -->\n @if (task.status === 'completed' && task.fileUrl && allowCopyUrl()) {\n <button\n type=\"button\"\n class=\"talos-upload-icon-btn btn-copy\"\n (click)=\"copyFileUrl(task, $event)\"\n [title]=\"copiedTaskId() === task.id ? 'URL Copied!' : 'Copy file URL'\"\n [attr.aria-label]=\"'Copy URL for ' + task.fileName\"\n >\n @if (copiedTaskId() === task.id) {\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"icon-success\">\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n } @else {\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\" />\n <path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\" />\n </svg>\n }\n </button>\n }\n\n <!-- Retry button on error -->\n @if (task.status === 'error' && allowRetry()) {\n <button\n type=\"button\"\n class=\"talos-upload-icon-btn btn-retry\"\n (click)=\"retryTask(task, $event)\"\n title=\"Retry upload\"\n [attr.aria-label]=\"'Retry uploading ' + task.fileName\"\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 <!-- Cancel button during in-flight upload -->\n @if ((task.status === 'uploading' || task.status === 'requesting-url') && allowCancel()) {\n <button\n type=\"button\"\n class=\"talos-upload-icon-btn btn-cancel\"\n (click)=\"cancelTask(task, $event)\"\n title=\"Cancel upload\"\n [attr.aria-label]=\"'Cancel uploading ' + task.fileName\"\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\n <!-- Remove button on finish or error -->\n @if ((task.status === 'completed' || task.status === 'error' || task.status === 'canceled') && allowRemove()) {\n <button\n type=\"button\"\n class=\"talos-upload-icon-btn btn-remove\"\n (click)=\"removeTask(task, $event)\"\n title=\"Remove from list\"\n [attr.aria-label]=\"'Remove ' + task.fileName\"\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M3 6h18\" />\n <path d=\"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6\" />\n <path d=\"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2\" />\n </svg>\n </button>\n }\n </div>\n </div>\n }\n </div>\n </div>\n}\n","import { Component, computed, inject, input, model, output, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TalosDropZoneComponent } from './drop-zone.component';\nimport { TalosFileUploadProgressComponent } from './file-upload-progress.component';\nimport { TalosPresignedUploadService } from './presigned-upload.service';\nimport {\n PresignedUrlHandlerFn,\n UploadFileOptions,\n UploadTask\n} from './file-upload-progress.types';\nimport { DropZoneRejection, DropZoneSize, DropZoneVariant } from './drop-zone.types';\n\n@Component({\n selector: 'talos-presigned-file-upload',\n imports: [CommonModule, TalosDropZoneComponent, TalosFileUploadProgressComponent],\n templateUrl: './presigned-file-upload.component.html',\n styleUrl: './presigned-file-upload.component.scss',\n host: {\n 'class': 'talos-presigned-file-upload-host',\n '[class.is-disabled]': 'disabled()'\n }\n})\nexport class TalosPresignedFileUploadComponent {\n private readonly uploadService = inject(TalosPresignedUploadService);\n\n // --- Configuration Inputs ---\n /** Custom handler to retrieve pre-signed upload URLs */\n readonly presignedHandler = input<PresignedUrlHandlerFn | undefined>(undefined);\n\n /** Accepted MIME types or extensions (e.g. \"image/*,.pdf\") */\n readonly accept = input<string>('');\n\n /** Allow multiple files selection and drag-drop */\n readonly multiple = input<boolean>(true);\n\n /** Maximum file size in bytes or human-readable format (e.g. 5242880 or '25MB') */\n readonly maxFileSize = input<number | string | null>(null);\n\n /** Minimum file size in bytes or human-readable format */\n readonly minFileSize = input<number | string | null>(null);\n\n /** Maximum total number of files allowed simultaneously */\n readonly maxFiles = input<number | null>(null);\n\n /** Visual layout variant of the drop zone */\n readonly variant = input<DropZoneVariant>('default');\n\n /** Sizing variant of the drop zone */\n readonly size = input<DropZoneSize>('md');\n\n /** Title displayed in the drop zone */\n readonly title = input<string>('Choose a file or drag & drop it here');\n\n /** Subtitle displayed in the drop zone */\n readonly subTitle = input<string>('Files will upload automatically via pre-signed URL');\n\n /** Label for the browse button */\n readonly browseLabel = input<string>('Browse files');\n\n /** Disable user interactions */\n readonly disabled = input<boolean>(false);\n\n /** Read-only mode */\n readonly readonly = input<boolean>(false);\n\n /** Show top summary statistics */\n readonly showSummary = input<boolean>(true);\n\n /** Allow canceling active uploads */\n readonly allowCancel = input<boolean>(true);\n\n /** Allow retrying failed uploads */\n readonly allowRetry = input<boolean>(true);\n\n /** Allow removing tasks from the list */\n readonly allowRemove = input<boolean>(true);\n\n /** Show copy URL action button on completion */\n readonly allowCopyUrl = input<boolean>(true);\n\n /** Additional custom metadata to send when requesting the pre-signed URL */\n readonly metadata = input<Record<string, string> | undefined>(undefined);\n\n /** Additional custom HTTP headers to pass during the binary upload */\n readonly headers = input<Record<string, string> | undefined>(undefined);\n\n // --- Two-Way Model Signal ---\n /** Active and historical upload tasks */\n readonly tasks = model<UploadTask[]>([]);\n\n // --- Signal Outputs ---\n /** Emitted when an individual file finishes uploading successfully */\n readonly uploadComplete = output<UploadTask>();\n\n /** Emitted when all current uploads have completed successfully */\n readonly allCompleted = output<UploadTask[]>();\n\n /** Emitted when an upload encounters an error */\n readonly uploadError = output<UploadTask>();\n\n /** Emitted when a dropped/selected file is rejected due to validation */\n readonly rejected = output<DropZoneRejection[]>();\n\n // --- Internal State & Computed ---\n readonly hasTasks = computed(() => this.tasks().length > 0);\n\n // --- Drop Zone Event Handlers ---\n\n onFilesSelectedOrDropped(rawFiles: File[]): void {\n if (!rawFiles || rawFiles.length === 0 || this.disabled() || this.readonly()) return;\n\n const options: UploadFileOptions = {\n presignedHandler: this.presignedHandler(),\n metadata: this.metadata(),\n headers: this.headers(),\n autoStart: true\n };\n\n const newTasks: UploadTask[] = [];\n const currentTasks = this.tasks();\n\n for (const file of rawFiles) {\n const task = this.uploadService.upload(file, options, (updatedTask) => {\n this.syncTaskState(updatedTask);\n });\n newTasks.push(task);\n }\n\n const merged = this.multiple() ? [...currentTasks, ...newTasks] : newTasks;\n this.tasks.set(merged);\n }\n\n onDropZoneRejections(rejections: DropZoneRejection[]): void {\n this.rejected.emit(rejections);\n }\n\n // --- Progress Task Action Handlers ---\n\n onTaskCancel(task: UploadTask): void {\n this.syncTaskState(task);\n }\n\n onTaskRetry(task: UploadTask): void {\n this.syncTaskState(task);\n }\n\n onTaskRemove(task: UploadTask): void {\n const updated = this.tasks().filter((t) => t.id !== task.id);\n this.tasks.set(updated);\n }\n\n private syncTaskState(task: UploadTask): void {\n const current = this.tasks();\n const updated = current.map((t) => (t.id === task.id ? { ...task } : t));\n this.tasks.set(updated);\n\n if (task.status === 'completed') {\n this.uploadComplete.emit(task);\n\n // Check if all active tasks are now finished\n const hasPending = updated.some(\n (t) => t.status === 'uploading' || t.status === 'requesting-url'\n );\n if (!hasPending && updated.length > 0) {\n this.allCompleted.emit(updated);\n }\n } else if (task.status === 'error') {\n this.uploadError.emit(task);\n }\n }\n}\n","<div class=\"talos-presigned-upload-wrapper\">\n <!-- Interactive File Drop Zone Area -->\n <talos-drop-zone\n [accept]=\"accept()\"\n [multiple]=\"multiple()\"\n [maxFileSize]=\"maxFileSize()\"\n [minFileSize]=\"minFileSize()\"\n [maxFiles]=\"maxFiles()\"\n [variant]=\"variant()\"\n [size]=\"size()\"\n [title]=\"title()\"\n [subTitle]=\"subTitle()\"\n [browseLabel]=\"browseLabel()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [showFileList]=\"false\"\n [autoManageFiles]=\"false\"\n (rawFilesChange)=\"onFilesSelectedOrDropped($event)\"\n (rejected)=\"onDropZoneRejections($event)\"\n />\n\n <!-- Standardized Upload Progress Component Underneath Drop Zone -->\n <talos-file-upload-progress\n [tasks]=\"tasks()\"\n [showSummary]=\"showSummary()\"\n [allowCancel]=\"allowCancel()\"\n [allowRetry]=\"allowRetry()\"\n [allowRemove]=\"allowRemove()\"\n [allowCopyUrl]=\"allowCopyUrl()\"\n (taskCancel)=\"onTaskCancel($event)\"\n (taskRetry)=\"onTaskRetry($event)\"\n (taskRemove)=\"onTaskRemove($event)\"\n >\n <!-- Forward projected content into task cards and header actions -->\n <ng-content select=\"[talosUploadActions], [headerExtra]\" />\n <ng-content select=\"[taskExtra], [cardExtra], [itemExtra]\" />\n <ng-content select=\"[taskAction], [taskActions]\" />\n <ng-content />\n </talos-file-upload-progress>\n</div>\n","import { NgModule } from '@angular/core';\nimport { TalosDropZoneComponent } from './drop-zone.component';\nimport { TalosFileDropDirective } from './drop-zone.directive';\nimport { TalosFileUploadProgressComponent } from './file-upload-progress.component';\nimport { TalosPresignedFileUploadComponent } from './presigned-file-upload.component';\n\n@NgModule({\n imports: [\n TalosDropZoneComponent,\n TalosFileDropDirective,\n TalosFileUploadProgressComponent,\n TalosPresignedFileUploadComponent\n ],\n exports: [\n TalosDropZoneComponent,\n TalosFileDropDirective,\n TalosFileUploadProgressComponent,\n TalosPresignedFileUploadComponent\n ]\n})\nexport class TalosDropZoneModule {}\n","import {\n AfterContentChecked,\n Component,\n ElementRef,\n OnDestroy,\n computed,\n inject,\n input,\n signal\n} from '@angular/core';\nimport { LucideChevronUp, LucideChevronDown } from '@lucide/angular';\n\nlet formFieldUniqueId = 0;\n\n@Component({\n selector: 'talos-form-field',\n imports: [LucideChevronUp, LucideChevronDown],\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.has-stepper]': 'hasStepper()',\n '[class.has-split-stepper]': 'hasSplitStepper()',\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, OnDestroy {\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 readonly numberStepper = input<boolean>(true);\n\n // Internal state\n readonly isFocused = signal<boolean>(false);\n readonly hasValue = signal<boolean>(false);\n readonly isTextarea = signal<boolean>(false);\n readonly isNumberInput = signal<boolean>(false);\n readonly hasPrefix = signal<boolean>(false);\n readonly hasSuffix = signal<boolean>(false);\n readonly hasSplitStepper = signal<boolean>(false);\n readonly hasStepper = computed(() => this.isNumberInput() && this.numberStepper());\n\n private stepTimer: ReturnType<typeof setTimeout> | null = null;\n private stepInterval: ReturnType<typeof setInterval> | null = null;\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 ngOnDestroy(): void {\n this.clearStepTimers();\n }\n\n stepNativeInput(isUp: boolean): void {\n const root = this.elementRef.nativeElement as HTMLElement;\n const inputEl = root.querySelector<HTMLInputElement>('input[type=\"number\"]');\n if (!inputEl || inputEl.disabled || inputEl.readOnly) return;\n\n if (isUp) {\n inputEl.stepUp();\n } else {\n inputEl.stepDown();\n }\n\n inputEl.dispatchEvent(new Event('input', { bubbles: true }));\n inputEl.dispatchEvent(new Event('change', { bubbles: true }));\n this.checkValue();\n }\n\n private hasSteppedOnPointer = false;\n\n onStepperClick(event: MouseEvent, isUp: boolean): void {\n if (this.hasSteppedOnPointer) {\n this.hasSteppedOnPointer = false;\n return;\n }\n this.stepNativeInput(isUp);\n }\n\n onStepperMouseDown(event: MouseEvent | TouchEvent, isUp: boolean): void {\n event.preventDefault();\n this.clearStepTimers();\n this.hasSteppedOnPointer = true;\n\n this.stepNativeInput(isUp);\n\n this.stepTimer = setTimeout(() => {\n this.stepInterval = setInterval(() => {\n this.stepNativeInput(isUp);\n }, 60);\n }, 350);\n\n const stopHolding = () => {\n this.clearStepTimers();\n setTimeout(() => {\n this.hasSteppedOnPointer = false;\n }, 50);\n window.removeEventListener('mouseup', stopHolding);\n window.removeEventListener('touchend', stopHolding);\n window.removeEventListener('touchcancel', stopHolding);\n };\n\n window.addEventListener('mouseup', stopHolding);\n window.addEventListener('touchend', stopHolding);\n window.addEventListener('touchcancel', stopHolding);\n }\n\n private clearStepTimers(): void {\n if (this.stepTimer) {\n clearTimeout(this.stepTimer);\n this.stepTimer = null;\n }\n if (this.stepInterval) {\n clearInterval(this.stepInterval);\n this.stepInterval = null;\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 numberInputEl = root.querySelector<HTMLInputElement>('input[type=\"number\"]');\n this.isNumberInput.set(!!numberInputEl);\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 const isSplit = !!root.querySelector('.split-decrement, .talos-number-split-btn, .stepper-split');\n this.hasSplitStepper.set(isSplit);\n if (isSplit) {\n const splitDecEl = root.querySelector<HTMLElement>('.split-decrement, .talos-number-split-btn');\n const splitWidth = splitDecEl ? splitDecEl.getBoundingClientRect().width : 0;\n if (splitWidth > 0 && splitWidth < 80) {\n root.style.setProperty('--talos-split-left-offset', `${Math.round(splitWidth + 10)}px`);\n } else {\n const defaultWidth = this.size() === 'sm' ? 32 : this.size() === 'lg' ? 44 : 36;\n root.style.setProperty('--talos-split-left-offset', `${defaultWidth + 10}px`);\n }\n } else {\n root.style.removeProperty('--talos-split-left-offset');\n }\n\n const hasStepperActive = !!numberInputEl && this.numberStepper();\n const stepperWidth = hasStepperActive ? 28 : 0;\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) + optional stepper width\n root.style.setProperty('--talos-suffix-offset', `${Math.round(suffixWidth + 16 + stepperWidth)}px`);\n }\n } else if (hasStepperActive) {\n root.style.setProperty('--talos-suffix-offset', `${stepperWidth + 10}px`);\n } else {\n root.style.removeProperty('--talos-suffix-offset');\n }\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 (hasStepper()) {\n <div class=\"talos-form-field-stepper\" [class.is-disabled]=\"disabled()\">\n <button\n type=\"button\"\n class=\"talos-stepper-btn talos-stepper-up\"\n tabindex=\"-1\"\n [disabled]=\"disabled()\"\n (mousedown)=\"onStepperMouseDown($event, true)\"\n (touchstart)=\"onStepperMouseDown($event, true)\"\n (click)=\"onStepperClick($event, true)\"\n aria-label=\"Increment value\"\n >\n <svg lucideChevronUp [size]=\"12\"></svg>\n </button>\n <button\n type=\"button\"\n class=\"talos-stepper-btn talos-stepper-down\"\n tabindex=\"-1\"\n [disabled]=\"disabled()\"\n (mousedown)=\"onStepperMouseDown($event, false)\"\n (touchstart)=\"onStepperMouseDown($event, false)\"\n (click)=\"onStepperClick($event, false)\"\n aria-label=\"Decrement value\"\n >\n <svg lucideChevronDown [size]=\"12\"></svg>\n </button>\n </div>\n }\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 { 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 {\n Component,\n ElementRef,\n OnDestroy,\n ViewChild,\n computed,\n effect,\n forwardRef,\n input,\n output,\n signal\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n LucideChevronUp,\n LucideChevronDown,\n LucidePlus,\n LucideMinus\n} from '@lucide/angular';\nimport { NumberInputSize, NumberStepperVariant } from './number-input.types';\n\nlet uniqueNumberInputId = 0;\n\n@Component({\n selector: 'talos-number-input, talos-number-field',\n imports: [\n LucideChevronUp,\n LucideChevronDown,\n LucidePlus,\n LucideMinus\n ],\n templateUrl: './number-input.component.html',\n styleUrl: './number-input.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TalosNumberInputComponent),\n multi: true\n }\n ],\n host: {\n 'class': 'talos-number-input-host',\n '[class.is-disabled]': 'effectiveDisabled()',\n '[class.is-readonly]': 'readonly()',\n '[class.is-invalid]': 'effectiveInvalid()',\n '[class.is-focused]': 'isFocused()',\n '[class.number-input-sm]': 'size() === \"sm\"',\n '[class.number-input-md]': 'size() === \"md\"',\n '[class.number-input-lg]': 'size() === \"lg\"',\n '[class.stepper-vertical]': 'stepperVariant() === \"vertical\"',\n '[class.stepper-split]': 'stepperVariant() === \"split\"',\n '[class.stepper-none]': 'stepperVariant() === \"none\"'\n }\n})\nexport class TalosNumberInputComponent implements ControlValueAccessor, OnDestroy {\n @ViewChild('nativeInput') inputEl?: ElementRef<HTMLInputElement>;\n\n private readonly autoId = `talos-number-${++uniqueNumberInputId}`;\n\n // ─── Sizing & Configuration Inputs ──────────────────────────────────\n readonly value = input<number | null | undefined>(undefined);\n readonly min = input<number | null>(null);\n readonly max = input<number | null>(null);\n readonly step = input<number>(1);\n readonly precision = input<number | null>(null);\n readonly size = input<NumberInputSize>('md');\n readonly stepperVariant = input<NumberStepperVariant>('vertical');\n readonly placeholder = input<string>('');\n readonly disabled = input<boolean>(false);\n readonly readonly = input<boolean>(false);\n readonly invalid = input<boolean>(false);\n readonly stepHold = input<boolean>(true);\n readonly clampValueOnBlur = input<boolean>(true);\n readonly id = input<string>('');\n readonly name = input<string>('');\n readonly ariaLabel = input<string>('Number input');\n readonly prefixText = input<string>('');\n readonly suffixText = input<string>('');\n\n // ─── Outputs ────────────────────────────────────────────────────────\n readonly valueChange = output<number | null>();\n readonly stepUp = output<number>();\n readonly stepDown = output<number>();\n\n // ─── Internal State ─────────────────────────────────────────────────\n readonly innerValue = signal<number | null>(null);\n readonly isFocused = signal<boolean>(false);\n private formDisabled = signal<boolean>(false);\n\n readonly effectiveDisabled = computed(() => this.disabled() || this.formDisabled());\n readonly effectiveInvalid = computed(() => this.invalid());\n readonly elementId = computed(() => this.id() || this.autoId);\n\n readonly isAtMax = computed(() => {\n const maxVal = this.max();\n const current = this.innerValue();\n return maxVal !== null && current !== null && current >= maxVal;\n });\n\n readonly isAtMin = computed(() => {\n const minVal = this.min();\n const current = this.innerValue();\n return minVal !== null && current !== null && current <= minVal;\n });\n\n private stepTimer: ReturnType<typeof setTimeout> | null = null;\n private stepInterval: ReturnType<typeof setInterval> | null = null;\n\n // CVA Callbacks\n private onChange: (val: number | null) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor() {\n effect(() => {\n const val = this.value();\n if (val !== undefined) {\n const normalized = val === null || isNaN(Number(val)) ? null : Number(val);\n if (normalized !== this.innerValue()) {\n this.innerValue.set(normalized);\n }\n }\n });\n }\n\n ngOnDestroy(): void {\n this.clearStepTimers();\n }\n\n // ─── ControlValueAccessor Implementation ────────────────────────────\n writeValue(val: number | null): void {\n const normalized = val === null || val === undefined || isNaN(Number(val)) ? null : Number(val);\n this.innerValue.set(normalized);\n }\n\n registerOnChange(fn: (val: number | null) => 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 // ─── User Interactions ──────────────────────────────────────────────\n onInputChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n const raw = input.value.trim();\n\n if (raw === '' || raw === '-') {\n this.updateValue(null);\n return;\n }\n\n const parsed = parseFloat(raw);\n if (!isNaN(parsed)) {\n this.updateValue(parsed);\n }\n }\n\n onInputBlur(): void {\n this.isFocused.set(false);\n this.onTouched();\n\n if (this.clampValueOnBlur() && this.innerValue() !== null) {\n const clamped = this.clampAndRound(this.innerValue()!);\n if (clamped !== this.innerValue()) {\n this.updateValue(clamped);\n }\n }\n }\n\n onInputFocus(): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n this.isFocused.set(true);\n }\n\n onKeyDown(event: KeyboardEvent): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n\n switch (event.key) {\n case 'ArrowUp':\n event.preventDefault();\n this.doStep(true, event.shiftKey ? 10 : 1);\n break;\n case 'ArrowDown':\n event.preventDefault();\n this.doStep(false, event.shiftKey ? 10 : 1);\n break;\n case 'PageUp':\n event.preventDefault();\n this.doStep(true, 10);\n break;\n case 'PageDown':\n event.preventDefault();\n this.doStep(false, 10);\n break;\n case 'Home':\n if (this.min() !== null) {\n event.preventDefault();\n this.updateValue(this.min()!);\n }\n break;\n case 'End':\n if (this.max() !== null) {\n event.preventDefault();\n this.updateValue(this.max()!);\n }\n break;\n }\n }\n\n // ─── Stepper Logic ──────────────────────────────────────────────────\n doStep(isUp: boolean, multiplier = 1): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n if (isUp && this.isAtMax()) return;\n if (!isUp && this.isAtMin()) return;\n\n const current = this.innerValue() ?? (this.min() !== null ? this.min()! : 0);\n const stepVal = this.step() * multiplier;\n const nextRaw = isUp ? current + stepVal : current - stepVal;\n const nextClamped = this.clampAndRound(nextRaw);\n\n this.updateValue(nextClamped);\n\n if (isUp) {\n this.stepUp.emit(nextClamped);\n } else {\n this.stepDown.emit(nextClamped);\n }\n }\n\n private hasSteppedOnPointer = false;\n\n onStepperClick(event: MouseEvent, isUp: boolean): void {\n if (this.hasSteppedOnPointer) {\n this.hasSteppedOnPointer = false;\n return;\n }\n this.doStep(isUp);\n }\n\n onStepperMouseDown(event: MouseEvent | TouchEvent, isUp: boolean): void {\n if (this.effectiveDisabled() || this.readonly()) return;\n event.preventDefault();\n this.clearStepTimers();\n this.hasSteppedOnPointer = true;\n\n this.doStep(isUp);\n\n if (!this.stepHold()) return;\n\n this.stepTimer = setTimeout(() => {\n this.stepInterval = setInterval(() => {\n if ((isUp && this.isAtMax()) || (!isUp && this.isAtMin())) {\n this.clearStepTimers();\n return;\n }\n this.doStep(isUp);\n }, 60);\n }, 300);\n\n const stopHolding = () => {\n this.clearStepTimers();\n setTimeout(() => {\n this.hasSteppedOnPointer = false;\n }, 50);\n window.removeEventListener('mouseup', stopHolding);\n window.removeEventListener('touchend', stopHolding);\n window.removeEventListener('touchcancel', stopHolding);\n };\n\n window.addEventListener('mouseup', stopHolding);\n window.addEventListener('touchend', stopHolding);\n window.addEventListener('touchcancel', stopHolding);\n }\n\n private clearStepTimers(): void {\n if (this.stepTimer) {\n clearTimeout(this.stepTimer);\n this.stepTimer = null;\n }\n if (this.stepInterval) {\n clearInterval(this.stepInterval);\n this.stepInterval = null;\n }\n }\n\n private clampAndRound(val: number): number {\n let result = val;\n const minVal = this.min();\n const maxVal = this.max();\n\n if (minVal !== null && result < minVal) {\n result = minVal;\n }\n if (maxVal !== null && result > maxVal) {\n result = maxVal;\n }\n\n return this.roundToPrecision(result);\n }\n\n private roundToPrecision(val: number): number {\n const prec = this.precision();\n if (prec !== null && prec !== undefined) {\n const factor = Math.pow(10, prec);\n return Math.round(val * factor) / factor;\n }\n\n const stepStr = this.step().toString();\n if (stepStr.includes('.')) {\n const decimalPlaces = stepStr.split('.')[1].length;\n const factor = Math.pow(10, decimalPlaces);\n return Math.round(val * factor) / factor;\n }\n\n return Math.round(val * 1e10) / 1e10;\n }\n\n private updateValue(nextVal: number | null): void {\n this.innerValue.set(nextVal);\n this.onChange(nextVal);\n this.valueChange.emit(nextVal);\n }\n\n focus(): void {\n this.inputEl?.nativeElement.focus();\n }\n}\n","<div class=\"talos-number-control-wrapper\" [class.is-focused]=\"isFocused()\" [class.is-invalid]=\"effectiveInvalid()\">\n <!-- Split Variant: Decrement on the far left -->\n @if (stepperVariant() === 'split') {\n <button\n type=\"button\"\n class=\"talos-number-split-btn split-decrement\"\n tabindex=\"-1\"\n [disabled]=\"effectiveDisabled() || readonly() || isAtMin()\"\n (mousedown)=\"onStepperMouseDown($event, false)\"\n (touchstart)=\"onStepperMouseDown($event, false)\"\n (click)=\"onStepperClick($event, false)\"\n aria-label=\"Decrement\"\n >\n <svg lucideMinus [size]=\"14\"></svg>\n </button>\n }\n\n <!-- Prefix Content (Projected or Prop) -->\n <ng-content select=\"[talosPrefix], [talosTextPrefix], [talosLead], [talosStart], [prefix]\"></ng-content>\n @if (prefixText()) {\n <span class=\"talos-number-affix prefix-text\">{{ prefixText() }}</span>\n }\n\n <!-- Native Input Element -->\n <input\n #nativeInput\n type=\"text\"\n inputmode=\"decimal\"\n class=\"talos-number-native-input\"\n [id]=\"elementId()\"\n [name]=\"name()\"\n [value]=\"innerValue() !== null ? innerValue() : ''\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"effectiveDisabled()\"\n [readOnly]=\"readonly()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-valuenow]=\"innerValue()\"\n [attr.aria-valuemin]=\"min()\"\n [attr.aria-valuemax]=\"max()\"\n (input)=\"onInputChange($event)\"\n (focus)=\"onInputFocus()\"\n (blur)=\"onInputBlur()\"\n (keydown)=\"onKeyDown($event)\"\n />\n\n <!-- Suffix Content (Projected or Prop) -->\n <ng-content select=\"[talosSuffix], [talosPostfix], [talosTextSuffix], [talosTextPostfix], [talosTrail], [talosEnd], [suffix]\"></ng-content>\n @if (suffixText()) {\n <span class=\"talos-number-affix suffix-text\">{{ suffixText() }}</span>\n }\n\n <!-- Split Variant: Increment on the far right -->\n @if (stepperVariant() === 'split') {\n <button\n type=\"button\"\n class=\"talos-number-split-btn split-increment\"\n tabindex=\"-1\"\n [disabled]=\"effectiveDisabled() || readonly() || isAtMax()\"\n (mousedown)=\"onStepperMouseDown($event, true)\"\n (touchstart)=\"onStepperMouseDown($event, true)\"\n (click)=\"onStepperClick($event, true)\"\n aria-label=\"Increment\"\n >\n <svg lucidePlus [size]=\"14\"></svg>\n </button>\n }\n\n <!-- Vertical Stacked Chevrons (Default) -->\n @if (stepperVariant() === 'vertical') {\n <div class=\"talos-number-stepper-vertical\">\n <button\n type=\"button\"\n class=\"talos-vertical-btn up-btn\"\n tabindex=\"-1\"\n [disabled]=\"effectiveDisabled() || readonly() || isAtMax()\"\n (mousedown)=\"onStepperMouseDown($event, true)\"\n (touchstart)=\"onStepperMouseDown($event, true)\"\n (click)=\"onStepperClick($event, true)\"\n aria-label=\"Increment\"\n >\n <svg lucideChevronUp [size]=\"13\"></svg>\n </button>\n <button\n type=\"button\"\n class=\"talos-vertical-btn down-btn\"\n tabindex=\"-1\"\n [disabled]=\"effectiveDisabled() || readonly() || isAtMin()\"\n (mousedown)=\"onStepperMouseDown($event, false)\"\n (touchstart)=\"onStepperMouseDown($event, false)\"\n (click)=\"onStepperClick($event, false)\"\n aria-label=\"Decrement\"\n >\n <svg lucideChevronDown [size]=\"13\"></svg>\n </button>\n </div>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { TalosNumberInputComponent } from './number-input.component';\n\n@NgModule({\n imports: [TalosNumberInputComponent],\n exports: [TalosNumberInputComponent]\n})\nexport class TalosNumberInputModule {}\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","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 { 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 { 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","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","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 '[class.placement-top]': 'effectivePlacement() === \"top\"',\n '[class.placement-bottom]': 'effectivePlacement() === \"bottom\"',\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 readonly placement = input<'bottom' | 'top' | 'auto'>('auto');\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 readonly effectivePlacement = signal<'bottom' | 'top'>('bottom');\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\n const placementMode = this.placement();\n if (placementMode === 'top') {\n this.effectivePlacement.set('top');\n } else if (placementMode === 'bottom') {\n this.effectivePlacement.set('bottom');\n } else {\n this.effectivePlacement.set(this.calculateAutoPlacement());\n }\n\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 private calculateAutoPlacement(): 'bottom' | 'top' {\n if (typeof window === 'undefined') return 'bottom';\n const el = this.elementRef?.nativeElement;\n if (!el || typeof el.getBoundingClientRect !== 'function') return 'bottom';\n\n const rect = el.getBoundingClientRect();\n const dropdownEstimatedHeight = 220;\n\n // Viewport space\n const viewportHeight = window.innerHeight || document.documentElement.clientHeight;\n const spaceBelowViewport = viewportHeight - rect.bottom;\n const spaceAboveViewport = rect.top;\n\n // Ancestor scroll/clip containers\n let parent = el.parentElement;\n let spaceBelowContainer = Infinity;\n let spaceAboveContainer = Infinity;\n\n while (parent && parent !== document.body) {\n const style = window.getComputedStyle(parent);\n const overflowY = style.overflowY;\n const overflow = style.overflow;\n if (\n overflow === 'hidden' ||\n overflow === 'auto' ||\n overflow === 'scroll' ||\n overflow === 'clip' ||\n overflowY === 'hidden' ||\n overflowY === 'auto' ||\n overflowY === 'scroll' ||\n overflowY === 'clip'\n ) {\n const parentRect = parent.getBoundingClientRect();\n spaceBelowContainer = Math.min(spaceBelowContainer, parentRect.bottom - rect.bottom);\n spaceAboveContainer = Math.min(spaceAboveContainer, rect.top - parentRect.top);\n }\n parent = parent.parentElement;\n }\n\n const effectiveSpaceBelow = Math.min(spaceBelowViewport, spaceBelowContainer);\n const effectiveSpaceAbove = Math.min(spaceAboveViewport, spaceAboveContainer);\n\n // If space below is not enough for the dropdown, but space above is larger, flip to top\n if (effectiveSpaceBelow < dropdownEstimatedHeight && effectiveSpaceAbove > effectiveSpaceBelow) {\n return 'top';\n }\n\n return 'bottom';\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 {\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 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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}