@lifecorner/angular-ui-kit 3.4.0 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) hide show
  1. package/README.md +12 -2
  2. package/fesm2022/lifecorner-angular-ui-kit-accordion.mjs +454 -0
  3. package/fesm2022/lifecorner-angular-ui-kit-accordion.mjs.map +1 -0
  4. package/fesm2022/lifecorner-angular-ui-kit-alert.mjs +297 -0
  5. package/fesm2022/lifecorner-angular-ui-kit-alert.mjs.map +1 -0
  6. package/fesm2022/lifecorner-angular-ui-kit-app-shell.mjs +190 -0
  7. package/fesm2022/lifecorner-angular-ui-kit-app-shell.mjs.map +1 -0
  8. package/fesm2022/lifecorner-angular-ui-kit-area-chart.mjs +446 -0
  9. package/fesm2022/lifecorner-angular-ui-kit-area-chart.mjs.map +1 -0
  10. package/fesm2022/lifecorner-angular-ui-kit-avatar-group.mjs +158 -0
  11. package/fesm2022/lifecorner-angular-ui-kit-avatar-group.mjs.map +1 -0
  12. package/fesm2022/lifecorner-angular-ui-kit-avatar.mjs +216 -0
  13. package/fesm2022/lifecorner-angular-ui-kit-avatar.mjs.map +1 -0
  14. package/fesm2022/lifecorner-angular-ui-kit-badge.mjs +121 -0
  15. package/fesm2022/lifecorner-angular-ui-kit-badge.mjs.map +1 -0
  16. package/fesm2022/lifecorner-angular-ui-kit-bar-chart.mjs +360 -0
  17. package/fesm2022/lifecorner-angular-ui-kit-bar-chart.mjs.map +1 -0
  18. package/fesm2022/lifecorner-angular-ui-kit-bottom-nav.mjs +344 -0
  19. package/fesm2022/lifecorner-angular-ui-kit-bottom-nav.mjs.map +1 -0
  20. package/fesm2022/lifecorner-angular-ui-kit-breadcrumbs.mjs +191 -0
  21. package/fesm2022/lifecorner-angular-ui-kit-breadcrumbs.mjs.map +1 -0
  22. package/fesm2022/lifecorner-angular-ui-kit-button.mjs +423 -0
  23. package/fesm2022/lifecorner-angular-ui-kit-button.mjs.map +1 -0
  24. package/fesm2022/lifecorner-angular-ui-kit-calendar.mjs +368 -0
  25. package/fesm2022/lifecorner-angular-ui-kit-calendar.mjs.map +1 -0
  26. package/fesm2022/lifecorner-angular-ui-kit-callout.mjs +203 -0
  27. package/fesm2022/lifecorner-angular-ui-kit-callout.mjs.map +1 -0
  28. package/fesm2022/lifecorner-angular-ui-kit-card.mjs +323 -0
  29. package/fesm2022/lifecorner-angular-ui-kit-card.mjs.map +1 -0
  30. package/fesm2022/lifecorner-angular-ui-kit-chat.mjs +790 -0
  31. package/fesm2022/lifecorner-angular-ui-kit-chat.mjs.map +1 -0
  32. package/fesm2022/lifecorner-angular-ui-kit-checkbox.mjs +325 -0
  33. package/fesm2022/lifecorner-angular-ui-kit-checkbox.mjs.map +1 -0
  34. package/fesm2022/lifecorner-angular-ui-kit-chip.mjs +214 -0
  35. package/fesm2022/lifecorner-angular-ui-kit-chip.mjs.map +1 -0
  36. package/fesm2022/lifecorner-angular-ui-kit-choice-prompt.mjs +375 -0
  37. package/fesm2022/lifecorner-angular-ui-kit-choice-prompt.mjs.map +1 -0
  38. package/fesm2022/lifecorner-angular-ui-kit-code-block.mjs +518 -0
  39. package/fesm2022/lifecorner-angular-ui-kit-code-block.mjs.map +1 -0
  40. package/fesm2022/lifecorner-angular-ui-kit-color-picker.mjs +278 -0
  41. package/fesm2022/lifecorner-angular-ui-kit-color-picker.mjs.map +1 -0
  42. package/fesm2022/lifecorner-angular-ui-kit-combobox.mjs +688 -0
  43. package/fesm2022/lifecorner-angular-ui-kit-combobox.mjs.map +1 -0
  44. package/fesm2022/lifecorner-angular-ui-kit-confirm-dialog.mjs +494 -0
  45. package/fesm2022/lifecorner-angular-ui-kit-confirm-dialog.mjs.map +1 -0
  46. package/fesm2022/lifecorner-angular-ui-kit-container.mjs +103 -0
  47. package/fesm2022/lifecorner-angular-ui-kit-container.mjs.map +1 -0
  48. package/fesm2022/lifecorner-angular-ui-kit-copy-field.mjs +308 -0
  49. package/fesm2022/lifecorner-angular-ui-kit-copy-field.mjs.map +1 -0
  50. package/fesm2022/lifecorner-angular-ui-kit-date-range-picker.mjs +466 -0
  51. package/fesm2022/lifecorner-angular-ui-kit-date-range-picker.mjs.map +1 -0
  52. package/fesm2022/lifecorner-angular-ui-kit-datepicker.mjs +810 -0
  53. package/fesm2022/lifecorner-angular-ui-kit-datepicker.mjs.map +1 -0
  54. package/fesm2022/lifecorner-angular-ui-kit-dependency-viewer.mjs +1761 -0
  55. package/fesm2022/lifecorner-angular-ui-kit-dependency-viewer.mjs.map +1 -0
  56. package/fesm2022/lifecorner-angular-ui-kit-description-list.mjs +165 -0
  57. package/fesm2022/lifecorner-angular-ui-kit-description-list.mjs.map +1 -0
  58. package/fesm2022/lifecorner-angular-ui-kit-diff-viewer.mjs +356 -0
  59. package/fesm2022/lifecorner-angular-ui-kit-diff-viewer.mjs.map +1 -0
  60. package/fesm2022/lifecorner-angular-ui-kit-divider.mjs +119 -0
  61. package/fesm2022/lifecorner-angular-ui-kit-divider.mjs.map +1 -0
  62. package/fesm2022/lifecorner-angular-ui-kit-document-viewer.mjs +762 -0
  63. package/fesm2022/lifecorner-angular-ui-kit-document-viewer.mjs.map +1 -0
  64. package/fesm2022/lifecorner-angular-ui-kit-donut-chart.mjs +255 -0
  65. package/fesm2022/lifecorner-angular-ui-kit-donut-chart.mjs.map +1 -0
  66. package/fesm2022/lifecorner-angular-ui-kit-drawer.mjs +308 -0
  67. package/fesm2022/lifecorner-angular-ui-kit-drawer.mjs.map +1 -0
  68. package/fesm2022/lifecorner-angular-ui-kit-email-input.mjs +519 -0
  69. package/fesm2022/lifecorner-angular-ui-kit-email-input.mjs.map +1 -0
  70. package/fesm2022/lifecorner-angular-ui-kit-empty-state.mjs +143 -0
  71. package/fesm2022/lifecorner-angular-ui-kit-empty-state.mjs.map +1 -0
  72. package/fesm2022/lifecorner-angular-ui-kit-error-display.mjs +306 -0
  73. package/fesm2022/lifecorner-angular-ui-kit-error-display.mjs.map +1 -0
  74. package/fesm2022/lifecorner-angular-ui-kit-field-group.mjs +154 -0
  75. package/fesm2022/lifecorner-angular-ui-kit-field-group.mjs.map +1 -0
  76. package/fesm2022/lifecorner-angular-ui-kit-file-upload.mjs +281 -0
  77. package/fesm2022/lifecorner-angular-ui-kit-file-upload.mjs.map +1 -0
  78. package/fesm2022/lifecorner-angular-ui-kit-filter-bar.mjs +258 -0
  79. package/fesm2022/lifecorner-angular-ui-kit-filter-bar.mjs.map +1 -0
  80. package/fesm2022/lifecorner-angular-ui-kit-footer.mjs +200 -0
  81. package/fesm2022/lifecorner-angular-ui-kit-footer.mjs.map +1 -0
  82. package/fesm2022/lifecorner-angular-ui-kit-funnel-chart.mjs +292 -0
  83. package/fesm2022/lifecorner-angular-ui-kit-funnel-chart.mjs.map +1 -0
  84. package/fesm2022/lifecorner-angular-ui-kit-gallery.mjs +563 -0
  85. package/fesm2022/lifecorner-angular-ui-kit-gallery.mjs.map +1 -0
  86. package/fesm2022/lifecorner-angular-ui-kit-gantt-chart.mjs +314 -0
  87. package/fesm2022/lifecorner-angular-ui-kit-gantt-chart.mjs.map +1 -0
  88. package/fesm2022/lifecorner-angular-ui-kit-gauge.mjs +265 -0
  89. package/fesm2022/lifecorner-angular-ui-kit-gauge.mjs.map +1 -0
  90. package/fesm2022/lifecorner-angular-ui-kit-header.mjs +955 -0
  91. package/fesm2022/lifecorner-angular-ui-kit-header.mjs.map +1 -0
  92. package/fesm2022/lifecorner-angular-ui-kit-heatmap.mjs +305 -0
  93. package/fesm2022/lifecorner-angular-ui-kit-heatmap.mjs.map +1 -0
  94. package/fesm2022/lifecorner-angular-ui-kit-hero.mjs +168 -0
  95. package/fesm2022/lifecorner-angular-ui-kit-hero.mjs.map +1 -0
  96. package/fesm2022/lifecorner-angular-ui-kit-icon-names.mjs +9 -0
  97. package/fesm2022/lifecorner-angular-ui-kit-icon-names.mjs.map +1 -0
  98. package/fesm2022/lifecorner-angular-ui-kit-icon.mjs +1026 -0
  99. package/fesm2022/lifecorner-angular-ui-kit-icon.mjs.map +1 -0
  100. package/fesm2022/lifecorner-angular-ui-kit-input.mjs +595 -0
  101. package/fesm2022/lifecorner-angular-ui-kit-input.mjs.map +1 -0
  102. package/fesm2022/lifecorner-angular-ui-kit-internal-chart.mjs +105 -0
  103. package/fesm2022/lifecorner-angular-ui-kit-internal-chart.mjs.map +1 -0
  104. package/fesm2022/lifecorner-angular-ui-kit-internal-overlay.mjs +50 -0
  105. package/fesm2022/lifecorner-angular-ui-kit-internal-overlay.mjs.map +1 -0
  106. package/fesm2022/lifecorner-angular-ui-kit-internal-url.mjs +22 -0
  107. package/fesm2022/lifecorner-angular-ui-kit-internal-url.mjs.map +1 -0
  108. package/fesm2022/lifecorner-angular-ui-kit-kanban-board.mjs +319 -0
  109. package/fesm2022/lifecorner-angular-ui-kit-kanban-board.mjs.map +1 -0
  110. package/fesm2022/lifecorner-angular-ui-kit-line-chart.mjs +413 -0
  111. package/fesm2022/lifecorner-angular-ui-kit-line-chart.mjs.map +1 -0
  112. package/fesm2022/lifecorner-angular-ui-kit-list.mjs +338 -0
  113. package/fesm2022/lifecorner-angular-ui-kit-list.mjs.map +1 -0
  114. package/fesm2022/lifecorner-angular-ui-kit-log-viewer.mjs +813 -0
  115. package/fesm2022/lifecorner-angular-ui-kit-log-viewer.mjs.map +1 -0
  116. package/fesm2022/lifecorner-angular-ui-kit-logo.mjs +226 -0
  117. package/fesm2022/lifecorner-angular-ui-kit-logo.mjs.map +1 -0
  118. package/fesm2022/lifecorner-angular-ui-kit-markdown.mjs +756 -0
  119. package/fesm2022/lifecorner-angular-ui-kit-markdown.mjs.map +1 -0
  120. package/fesm2022/lifecorner-angular-ui-kit-menu.mjs +321 -0
  121. package/fesm2022/lifecorner-angular-ui-kit-menu.mjs.map +1 -0
  122. package/fesm2022/lifecorner-angular-ui-kit-modal.mjs +329 -0
  123. package/fesm2022/lifecorner-angular-ui-kit-modal.mjs.map +1 -0
  124. package/fesm2022/lifecorner-angular-ui-kit-models.mjs +0 -0
  125. package/fesm2022/lifecorner-angular-ui-kit-next-step-card.mjs +419 -0
  126. package/fesm2022/lifecorner-angular-ui-kit-next-step-card.mjs.map +1 -0
  127. package/fesm2022/lifecorner-angular-ui-kit-notification-center.mjs +644 -0
  128. package/fesm2022/lifecorner-angular-ui-kit-notification-center.mjs.map +1 -0
  129. package/fesm2022/lifecorner-angular-ui-kit-number-input.mjs +401 -0
  130. package/fesm2022/lifecorner-angular-ui-kit-number-input.mjs.map +1 -0
  131. package/fesm2022/lifecorner-angular-ui-kit-page-header.mjs +266 -0
  132. package/fesm2022/lifecorner-angular-ui-kit-page-header.mjs.map +1 -0
  133. package/fesm2022/lifecorner-angular-ui-kit-page-layout.mjs +127 -0
  134. package/fesm2022/lifecorner-angular-ui-kit-page-layout.mjs.map +1 -0
  135. package/fesm2022/lifecorner-angular-ui-kit-pagination.mjs +343 -0
  136. package/fesm2022/lifecorner-angular-ui-kit-pagination.mjs.map +1 -0
  137. package/fesm2022/lifecorner-angular-ui-kit-password-input.mjs +696 -0
  138. package/fesm2022/lifecorner-angular-ui-kit-password-input.mjs.map +1 -0
  139. package/fesm2022/lifecorner-angular-ui-kit-pie-chart.mjs +162 -0
  140. package/fesm2022/lifecorner-angular-ui-kit-pie-chart.mjs.map +1 -0
  141. package/fesm2022/lifecorner-angular-ui-kit-pipeline.mjs +159 -0
  142. package/fesm2022/lifecorner-angular-ui-kit-pipeline.mjs.map +1 -0
  143. package/fesm2022/lifecorner-angular-ui-kit-popover.mjs +190 -0
  144. package/fesm2022/lifecorner-angular-ui-kit-popover.mjs.map +1 -0
  145. package/fesm2022/lifecorner-angular-ui-kit-progress-bar.mjs +190 -0
  146. package/fesm2022/lifecorner-angular-ui-kit-progress-bar.mjs.map +1 -0
  147. package/fesm2022/lifecorner-angular-ui-kit-progress-ring.mjs +175 -0
  148. package/fesm2022/lifecorner-angular-ui-kit-progress-ring.mjs.map +1 -0
  149. package/fesm2022/lifecorner-angular-ui-kit-provider-button.mjs +255 -0
  150. package/fesm2022/lifecorner-angular-ui-kit-provider-button.mjs.map +1 -0
  151. package/fesm2022/lifecorner-angular-ui-kit-radar-chart.mjs +309 -0
  152. package/fesm2022/lifecorner-angular-ui-kit-radar-chart.mjs.map +1 -0
  153. package/fesm2022/lifecorner-angular-ui-kit-radio.mjs +708 -0
  154. package/fesm2022/lifecorner-angular-ui-kit-radio.mjs.map +1 -0
  155. package/fesm2022/lifecorner-angular-ui-kit-rating.mjs +327 -0
  156. package/fesm2022/lifecorner-angular-ui-kit-rating.mjs.map +1 -0
  157. package/fesm2022/lifecorner-angular-ui-kit-rich-text-editor.mjs +718 -0
  158. package/fesm2022/lifecorner-angular-ui-kit-rich-text-editor.mjs.map +1 -0
  159. package/fesm2022/lifecorner-angular-ui-kit-scatter-plot.mjs +415 -0
  160. package/fesm2022/lifecorner-angular-ui-kit-scatter-plot.mjs.map +1 -0
  161. package/fesm2022/lifecorner-angular-ui-kit-search-input.mjs +290 -0
  162. package/fesm2022/lifecorner-angular-ui-kit-search-input.mjs.map +1 -0
  163. package/fesm2022/lifecorner-angular-ui-kit-section.mjs +127 -0
  164. package/fesm2022/lifecorner-angular-ui-kit-section.mjs.map +1 -0
  165. package/fesm2022/lifecorner-angular-ui-kit-select.mjs +650 -0
  166. package/fesm2022/lifecorner-angular-ui-kit-select.mjs.map +1 -0
  167. package/fesm2022/lifecorner-angular-ui-kit-sidenav.mjs +691 -0
  168. package/fesm2022/lifecorner-angular-ui-kit-sidenav.mjs.map +1 -0
  169. package/fesm2022/lifecorner-angular-ui-kit-skeleton.mjs +144 -0
  170. package/fesm2022/lifecorner-angular-ui-kit-skeleton.mjs.map +1 -0
  171. package/fesm2022/lifecorner-angular-ui-kit-slider.mjs +204 -0
  172. package/fesm2022/lifecorner-angular-ui-kit-slider.mjs.map +1 -0
  173. package/fesm2022/lifecorner-angular-ui-kit-spacer.mjs +73 -0
  174. package/fesm2022/lifecorner-angular-ui-kit-spacer.mjs.map +1 -0
  175. package/fesm2022/lifecorner-angular-ui-kit-sparkline.mjs +318 -0
  176. package/fesm2022/lifecorner-angular-ui-kit-sparkline.mjs.map +1 -0
  177. package/fesm2022/lifecorner-angular-ui-kit-spinner.mjs +95 -0
  178. package/fesm2022/lifecorner-angular-ui-kit-spinner.mjs.map +1 -0
  179. package/fesm2022/lifecorner-angular-ui-kit-split-pane.mjs +298 -0
  180. package/fesm2022/lifecorner-angular-ui-kit-split-pane.mjs.map +1 -0
  181. package/fesm2022/lifecorner-angular-ui-kit-stack.mjs +162 -0
  182. package/fesm2022/lifecorner-angular-ui-kit-stack.mjs.map +1 -0
  183. package/fesm2022/lifecorner-angular-ui-kit-stacked-bar-chart.mjs +412 -0
  184. package/fesm2022/lifecorner-angular-ui-kit-stacked-bar-chart.mjs.map +1 -0
  185. package/fesm2022/lifecorner-angular-ui-kit-stage-list.mjs +186 -0
  186. package/fesm2022/lifecorner-angular-ui-kit-stage-list.mjs.map +1 -0
  187. package/fesm2022/lifecorner-angular-ui-kit-stat-trend.mjs +224 -0
  188. package/fesm2022/lifecorner-angular-ui-kit-stat-trend.mjs.map +1 -0
  189. package/fesm2022/lifecorner-angular-ui-kit-status-dot.mjs +122 -0
  190. package/fesm2022/lifecorner-angular-ui-kit-status-dot.mjs.map +1 -0
  191. package/fesm2022/lifecorner-angular-ui-kit-stepper.mjs +209 -0
  192. package/fesm2022/lifecorner-angular-ui-kit-stepper.mjs.map +1 -0
  193. package/fesm2022/lifecorner-angular-ui-kit-switch.mjs +249 -0
  194. package/fesm2022/lifecorner-angular-ui-kit-switch.mjs.map +1 -0
  195. package/fesm2022/lifecorner-angular-ui-kit-table.mjs +1434 -0
  196. package/fesm2022/lifecorner-angular-ui-kit-table.mjs.map +1 -0
  197. package/fesm2022/lifecorner-angular-ui-kit-tabs.mjs +407 -0
  198. package/fesm2022/lifecorner-angular-ui-kit-tabs.mjs.map +1 -0
  199. package/fesm2022/lifecorner-angular-ui-kit-tag-input.mjs +380 -0
  200. package/fesm2022/lifecorner-angular-ui-kit-tag-input.mjs.map +1 -0
  201. package/fesm2022/lifecorner-angular-ui-kit-textarea.mjs +440 -0
  202. package/fesm2022/lifecorner-angular-ui-kit-textarea.mjs.map +1 -0
  203. package/fesm2022/lifecorner-angular-ui-kit-theme.mjs +145 -0
  204. package/fesm2022/lifecorner-angular-ui-kit-theme.mjs.map +1 -0
  205. package/fesm2022/lifecorner-angular-ui-kit-timeline.mjs +262 -0
  206. package/fesm2022/lifecorner-angular-ui-kit-timeline.mjs.map +1 -0
  207. package/fesm2022/lifecorner-angular-ui-kit-toast.mjs +352 -0
  208. package/fesm2022/lifecorner-angular-ui-kit-toast.mjs.map +1 -0
  209. package/fesm2022/lifecorner-angular-ui-kit-toggle-group.mjs +215 -0
  210. package/fesm2022/lifecorner-angular-ui-kit-toggle-group.mjs.map +1 -0
  211. package/fesm2022/lifecorner-angular-ui-kit-tokens.mjs +134 -0
  212. package/fesm2022/lifecorner-angular-ui-kit-tokens.mjs.map +1 -0
  213. package/fesm2022/lifecorner-angular-ui-kit-toolbar.mjs +225 -0
  214. package/fesm2022/lifecorner-angular-ui-kit-toolbar.mjs.map +1 -0
  215. package/fesm2022/lifecorner-angular-ui-kit-tooltip.mjs +386 -0
  216. package/fesm2022/lifecorner-angular-ui-kit-tooltip.mjs.map +1 -0
  217. package/fesm2022/lifecorner-angular-ui-kit-tree-view.mjs +509 -0
  218. package/fesm2022/lifecorner-angular-ui-kit-tree-view.mjs.map +1 -0
  219. package/fesm2022/lifecorner-angular-ui-kit-typography.mjs +209 -0
  220. package/fesm2022/lifecorner-angular-ui-kit-typography.mjs.map +1 -0
  221. package/fesm2022/lifecorner-angular-ui-kit-verification-code-input.mjs +365 -0
  222. package/fesm2022/lifecorner-angular-ui-kit-verification-code-input.mjs.map +1 -0
  223. package/fesm2022/lifecorner-angular-ui-kit-waterfall-chart.mjs +371 -0
  224. package/fesm2022/lifecorner-angular-ui-kit-waterfall-chart.mjs.map +1 -0
  225. package/fesm2022/lifecorner-angular-ui-kit.mjs +109 -38925
  226. package/package.json +449 -1
  227. package/types/lifecorner-angular-ui-kit-accordion.d.ts +239 -0
  228. package/types/lifecorner-angular-ui-kit-alert.d.ts +189 -0
  229. package/types/lifecorner-angular-ui-kit-app-shell.d.ts +148 -0
  230. package/types/lifecorner-angular-ui-kit-area-chart.d.ts +180 -0
  231. package/types/lifecorner-angular-ui-kit-avatar-group.d.ts +62 -0
  232. package/types/lifecorner-angular-ui-kit-avatar.d.ts +131 -0
  233. package/types/lifecorner-angular-ui-kit-badge.d.ts +59 -0
  234. package/types/lifecorner-angular-ui-kit-bar-chart.d.ts +157 -0
  235. package/types/lifecorner-angular-ui-kit-bottom-nav.d.ts +184 -0
  236. package/types/lifecorner-angular-ui-kit-breadcrumbs.d.ts +55 -0
  237. package/types/lifecorner-angular-ui-kit-button.d.ts +181 -0
  238. package/types/lifecorner-angular-ui-kit-calendar.d.ts +136 -0
  239. package/types/lifecorner-angular-ui-kit-callout.d.ts +77 -0
  240. package/types/lifecorner-angular-ui-kit-card.d.ts +213 -0
  241. package/types/lifecorner-angular-ui-kit-chat.d.ts +379 -0
  242. package/types/lifecorner-angular-ui-kit-checkbox.d.ts +116 -0
  243. package/types/lifecorner-angular-ui-kit-chip.d.ts +104 -0
  244. package/types/lifecorner-angular-ui-kit-choice-prompt.d.ts +186 -0
  245. package/types/lifecorner-angular-ui-kit-code-block.d.ts +85 -0
  246. package/types/lifecorner-angular-ui-kit-color-picker.d.ts +88 -0
  247. package/types/lifecorner-angular-ui-kit-combobox.d.ts +222 -0
  248. package/types/lifecorner-angular-ui-kit-confirm-dialog.d.ts +211 -0
  249. package/types/lifecorner-angular-ui-kit-container.d.ts +47 -0
  250. package/types/lifecorner-angular-ui-kit-copy-field.d.ts +89 -0
  251. package/types/lifecorner-angular-ui-kit-date-range-picker.d.ts +126 -0
  252. package/types/lifecorner-angular-ui-kit-datepicker.d.ts +363 -0
  253. package/types/lifecorner-angular-ui-kit-dependency-viewer.d.ts +568 -0
  254. package/types/lifecorner-angular-ui-kit-description-list.d.ts +137 -0
  255. package/types/lifecorner-angular-ui-kit-diff-viewer.d.ts +93 -0
  256. package/types/lifecorner-angular-ui-kit-divider.d.ts +66 -0
  257. package/types/lifecorner-angular-ui-kit-document-viewer.d.ts +256 -0
  258. package/types/lifecorner-angular-ui-kit-donut-chart.d.ts +92 -0
  259. package/types/lifecorner-angular-ui-kit-drawer.d.ts +124 -0
  260. package/types/lifecorner-angular-ui-kit-email-input.d.ts +292 -0
  261. package/types/lifecorner-angular-ui-kit-empty-state.d.ts +81 -0
  262. package/types/lifecorner-angular-ui-kit-error-display.d.ts +157 -0
  263. package/types/lifecorner-angular-ui-kit-field-group.d.ts +69 -0
  264. package/types/lifecorner-angular-ui-kit-file-upload.d.ts +122 -0
  265. package/types/lifecorner-angular-ui-kit-filter-bar.d.ts +116 -0
  266. package/types/lifecorner-angular-ui-kit-footer.d.ts +97 -0
  267. package/types/lifecorner-angular-ui-kit-funnel-chart.d.ts +97 -0
  268. package/types/lifecorner-angular-ui-kit-gallery.d.ts +240 -0
  269. package/types/lifecorner-angular-ui-kit-gantt-chart.d.ts +133 -0
  270. package/types/lifecorner-angular-ui-kit-gauge.d.ts +94 -0
  271. package/types/lifecorner-angular-ui-kit-header.d.ts +496 -0
  272. package/types/lifecorner-angular-ui-kit-heatmap.d.ts +126 -0
  273. package/types/lifecorner-angular-ui-kit-hero.d.ts +121 -0
  274. package/types/lifecorner-angular-ui-kit-icon-names.d.ts +21 -0
  275. package/types/lifecorner-angular-ui-kit-icon.d.ts +260 -0
  276. package/types/lifecorner-angular-ui-kit-input.d.ts +346 -0
  277. package/types/lifecorner-angular-ui-kit-internal-chart.d.ts +86 -0
  278. package/types/lifecorner-angular-ui-kit-internal-overlay.d.ts +31 -0
  279. package/types/lifecorner-angular-ui-kit-internal-url.d.ts +22 -0
  280. package/types/lifecorner-angular-ui-kit-kanban-board.d.ts +111 -0
  281. package/types/lifecorner-angular-ui-kit-line-chart.d.ts +186 -0
  282. package/types/lifecorner-angular-ui-kit-list.d.ts +215 -0
  283. package/types/lifecorner-angular-ui-kit-log-viewer.d.ts +355 -0
  284. package/types/lifecorner-angular-ui-kit-logo.d.ts +182 -0
  285. package/types/lifecorner-angular-ui-kit-markdown.d.ts +278 -0
  286. package/types/lifecorner-angular-ui-kit-menu.d.ts +152 -0
  287. package/types/lifecorner-angular-ui-kit-modal.d.ts +207 -0
  288. package/types/lifecorner-angular-ui-kit-models.d.ts +62 -0
  289. package/types/lifecorner-angular-ui-kit-next-step-card.d.ts +262 -0
  290. package/types/lifecorner-angular-ui-kit-notification-center.d.ts +237 -0
  291. package/types/lifecorner-angular-ui-kit-number-input.d.ts +126 -0
  292. package/types/lifecorner-angular-ui-kit-page-header.d.ts +178 -0
  293. package/types/lifecorner-angular-ui-kit-page-layout.d.ts +61 -0
  294. package/types/lifecorner-angular-ui-kit-pagination.d.ts +141 -0
  295. package/types/lifecorner-angular-ui-kit-password-input.d.ts +361 -0
  296. package/types/lifecorner-angular-ui-kit-pie-chart.d.ts +58 -0
  297. package/types/lifecorner-angular-ui-kit-pipeline.d.ts +89 -0
  298. package/types/lifecorner-angular-ui-kit-popover.d.ts +104 -0
  299. package/types/lifecorner-angular-ui-kit-progress-bar.d.ts +116 -0
  300. package/types/lifecorner-angular-ui-kit-progress-ring.d.ts +67 -0
  301. package/types/lifecorner-angular-ui-kit-provider-button.d.ts +137 -0
  302. package/types/lifecorner-angular-ui-kit-radar-chart.d.ts +113 -0
  303. package/types/lifecorner-angular-ui-kit-radio.d.ts +297 -0
  304. package/types/lifecorner-angular-ui-kit-rating.d.ts +115 -0
  305. package/types/lifecorner-angular-ui-kit-rich-text-editor.d.ts +226 -0
  306. package/types/lifecorner-angular-ui-kit-scatter-plot.d.ts +190 -0
  307. package/types/lifecorner-angular-ui-kit-search-input.d.ts +137 -0
  308. package/types/lifecorner-angular-ui-kit-section.d.ts +34 -0
  309. package/types/lifecorner-angular-ui-kit-select.d.ts +274 -0
  310. package/types/lifecorner-angular-ui-kit-sidenav.d.ts +367 -0
  311. package/types/lifecorner-angular-ui-kit-skeleton.d.ts +61 -0
  312. package/types/lifecorner-angular-ui-kit-slider.d.ts +79 -0
  313. package/types/lifecorner-angular-ui-kit-spacer.d.ts +27 -0
  314. package/types/lifecorner-angular-ui-kit-sparkline.d.ts +113 -0
  315. package/types/lifecorner-angular-ui-kit-spinner.d.ts +50 -0
  316. package/types/lifecorner-angular-ui-kit-split-pane.d.ts +131 -0
  317. package/types/lifecorner-angular-ui-kit-stack.d.ts +49 -0
  318. package/types/lifecorner-angular-ui-kit-stacked-bar-chart.d.ts +171 -0
  319. package/types/lifecorner-angular-ui-kit-stage-list.d.ts +69 -0
  320. package/types/lifecorner-angular-ui-kit-stat-trend.d.ts +62 -0
  321. package/types/lifecorner-angular-ui-kit-status-dot.d.ts +62 -0
  322. package/types/lifecorner-angular-ui-kit-stepper.d.ts +113 -0
  323. package/types/lifecorner-angular-ui-kit-switch.d.ts +141 -0
  324. package/types/lifecorner-angular-ui-kit-table.d.ts +632 -0
  325. package/types/lifecorner-angular-ui-kit-tabs.d.ts +196 -0
  326. package/types/lifecorner-angular-ui-kit-tag-input.d.ts +123 -0
  327. package/types/lifecorner-angular-ui-kit-textarea.d.ts +225 -0
  328. package/types/lifecorner-angular-ui-kit-theme.d.ts +91 -0
  329. package/types/lifecorner-angular-ui-kit-timeline.d.ts +162 -0
  330. package/types/lifecorner-angular-ui-kit-toast.d.ts +204 -0
  331. package/types/lifecorner-angular-ui-kit-toggle-group.d.ts +100 -0
  332. package/types/lifecorner-angular-ui-kit-tokens.d.ts +134 -0
  333. package/types/lifecorner-angular-ui-kit-toolbar.d.ts +120 -0
  334. package/types/lifecorner-angular-ui-kit-tooltip.d.ts +120 -0
  335. package/types/lifecorner-angular-ui-kit-tree-view.d.ts +231 -0
  336. package/types/lifecorner-angular-ui-kit-typography.d.ts +126 -0
  337. package/types/lifecorner-angular-ui-kit-verification-code-input.d.ts +187 -0
  338. package/types/lifecorner-angular-ui-kit-waterfall-chart.d.ts +163 -0
  339. package/types/lifecorner-angular-ui-kit.d.ts +109 -17401
  340. package/fesm2022/lifecorner-angular-ui-kit.mjs.map +0 -1
@@ -0,0 +1,314 @@
1
+ import * as i0 from "@angular/core";
2
+ import { ChangeDetectionStrategy, Component, computed, input, output } from "@angular/core";
3
+ var GanttChartComponent = class GanttChartComponent {
4
+ static nextId = 0;
5
+ markerId = `lc-gantt-arrowhead-${++GanttChartComponent.nextId}`;
6
+ tasks = input.required(...ngDevMode ? [{ debugName: "tasks" }] : /* istanbul ignore next */ []);
7
+ dependencies = input([], ...ngDevMode ? [{ debugName: "dependencies" }] : /* istanbul ignore next */ []);
8
+ rowHeight = input(40, ...ngDevMode ? [{ debugName: "rowHeight" }] : /* istanbul ignore next */ []);
9
+ labelWidth = input(200, ...ngDevMode ? [{ debugName: "labelWidth" }] : /* istanbul ignore next */ []);
10
+ dayWidth = input(36, ...ngDevMode ? [{ debugName: "dayWidth" }] : /* istanbul ignore next */ []);
11
+ showToday = input(true, ...ngDevMode ? [{ debugName: "showToday" }] : /* istanbul ignore next */ []);
12
+ locale = input("de-DE", ...ngDevMode ? [{ debugName: "locale" }] : /* istanbul ignore next */ []);
13
+ labelsHeader = input("Aufgaben", ...ngDevMode ? [{ debugName: "labelsHeader" }] : /* istanbul ignore next */ []);
14
+ taskClick = output();
15
+ normalizedTasks = computed(() => this.tasks().map((t) => ({
16
+ id: t.id,
17
+ title: t.title,
18
+ start: t.start instanceof Date ? t.start : new Date(t.start),
19
+ end: t.end instanceof Date ? t.end : new Date(t.end),
20
+ progress: t.progress ?? 0,
21
+ color: t.color ?? "primary",
22
+ group: t.group ?? ""
23
+ })), ...ngDevMode ? [{ debugName: "normalizedTasks" }] : /* istanbul ignore next */ []);
24
+ timelineStart = computed(() => {
25
+ const tasks = this.normalizedTasks();
26
+ if (!tasks.length) return /* @__PURE__ */ new Date();
27
+ const min = Math.min(...tasks.map((t) => t.start.getTime()));
28
+ const d = new Date(min);
29
+ d.setDate(d.getDate() - 2);
30
+ return this.startOfDay(d);
31
+ }, ...ngDevMode ? [{ debugName: "timelineStart" }] : /* istanbul ignore next */ []);
32
+ timelineEnd = computed(() => {
33
+ const tasks = this.normalizedTasks();
34
+ if (!tasks.length) return /* @__PURE__ */ new Date();
35
+ const max = Math.max(...tasks.map((t) => t.end.getTime()));
36
+ const d = new Date(max);
37
+ d.setDate(d.getDate() + 3);
38
+ return this.startOfDay(d);
39
+ }, ...ngDevMode ? [{ debugName: "timelineEnd" }] : /* istanbul ignore next */ []);
40
+ totalDays = computed(() => {
41
+ const start = this.timelineStart();
42
+ const end = this.timelineEnd();
43
+ return Math.ceil((end.getTime() - start.getTime()) / 864e5) + 1;
44
+ }, ...ngDevMode ? [{ debugName: "totalDays" }] : /* istanbul ignore next */ []);
45
+ timelineWidth = computed(() => this.totalDays() * this.dayWidth(), ...ngDevMode ? [{ debugName: "timelineWidth" }] : /* istanbul ignore next */ []);
46
+ dayColumns = computed(() => {
47
+ const start = this.timelineStart();
48
+ const days = this.totalDays();
49
+ const dw = this.dayWidth();
50
+ return Array.from({ length: days }, (_, i) => {
51
+ const d = new Date(start);
52
+ d.setDate(d.getDate() + i);
53
+ return {
54
+ date: d,
55
+ left: i * dw,
56
+ label: d.getDate(),
57
+ isWeekend: d.getDay() === 0 || d.getDay() === 6,
58
+ monthLabel: d.getDate() === 1 ? d.toLocaleDateString(this.locale(), { month: "short" }) : null
59
+ };
60
+ });
61
+ }, ...ngDevMode ? [{ debugName: "dayColumns" }] : /* istanbul ignore next */ []);
62
+ monthHeaders = computed(() => {
63
+ const cols = this.dayColumns();
64
+ const dw = this.dayWidth();
65
+ const locale = this.locale();
66
+ const months = [];
67
+ let current = null;
68
+ for (const col of cols) {
69
+ const label = col.date.toLocaleDateString(locale, {
70
+ month: "short",
71
+ year: "numeric"
72
+ });
73
+ if (!current || current.label !== label) {
74
+ if (current) months.push({
75
+ label: current.label,
76
+ left: current.left,
77
+ width: current.count * dw
78
+ });
79
+ current = {
80
+ label,
81
+ left: col.left,
82
+ count: 1
83
+ };
84
+ } else current.count++;
85
+ }
86
+ if (current) months.push({
87
+ label: current.label,
88
+ left: current.left,
89
+ width: current.count * dw
90
+ });
91
+ return months;
92
+ }, ...ngDevMode ? [{ debugName: "monthHeaders" }] : /* istanbul ignore next */ []);
93
+ bars = computed(() => {
94
+ const tasks = this.normalizedTasks();
95
+ const start = this.timelineStart().getTime();
96
+ const dw = this.dayWidth();
97
+ const rh = this.rowHeight();
98
+ return tasks.map((t, i) => {
99
+ const dayOffset = (t.start.getTime() - start) / 864e5;
100
+ const duration = Math.max((t.end.getTime() - t.start.getTime()) / 864e5, 1);
101
+ return {
102
+ task: t,
103
+ left: dayOffset * dw,
104
+ width: duration * dw,
105
+ top: i * rh,
106
+ progress: Math.min(Math.max(t.progress, 0), 100),
107
+ colorClass: t.color
108
+ };
109
+ });
110
+ }, ...ngDevMode ? [{ debugName: "bars" }] : /* istanbul ignore next */ []);
111
+ depLines = computed(() => {
112
+ const deps = this.dependencies();
113
+ const barsMap = /* @__PURE__ */ new Map();
114
+ for (const bar of this.bars()) barsMap.set(bar.task.id, bar);
115
+ const rh = this.rowHeight();
116
+ return deps.filter((d) => barsMap.has(d.from) && barsMap.has(d.to)).map((d) => {
117
+ const from = barsMap.get(d.from);
118
+ const to = barsMap.get(d.to);
119
+ return {
120
+ x1: from.left + from.width,
121
+ y1: from.top + rh / 2,
122
+ x2: to.left,
123
+ y2: to.top + rh / 2
124
+ };
125
+ });
126
+ }, ...ngDevMode ? [{ debugName: "depLines" }] : /* istanbul ignore next */ []);
127
+ todayLeft = computed(() => {
128
+ if (!this.showToday()) return -1;
129
+ const start = this.timelineStart().getTime();
130
+ const dayOffset = (this.startOfDay(/* @__PURE__ */ new Date()).getTime() - start) / 864e5;
131
+ if (dayOffset < 0 || dayOffset > this.totalDays()) return -1;
132
+ return dayOffset * this.dayWidth();
133
+ }, ...ngDevMode ? [{ debugName: "todayLeft" }] : /* istanbul ignore next */ []);
134
+ gridHeight = computed(() => this.normalizedTasks().length * this.rowHeight(), ...ngDevMode ? [{ debugName: "gridHeight" }] : /* istanbul ignore next */ []);
135
+ onTaskClick(task) {
136
+ this.taskClick.emit(this.tasks().find((t) => t.id === task.id));
137
+ }
138
+ onTaskKeydown(event, task) {
139
+ if (event.key === "Enter" || event.key === " ") {
140
+ event.preventDefault();
141
+ this.onTaskClick(task);
142
+ }
143
+ }
144
+ startOfDay(d) {
145
+ return new Date(d.getFullYear(), d.getMonth(), d.getDate());
146
+ }
147
+ static ɵfac = i0.ɵɵngDeclareFactory({
148
+ minVersion: "12.0.0",
149
+ version: "22.2.2",
150
+ ngImport: i0,
151
+ type: GanttChartComponent,
152
+ deps: [],
153
+ target: i0.ɵɵFactoryTarget.Component
154
+ });
155
+ static ɵcmp = i0.ɵɵngDeclareComponent({
156
+ minVersion: "17.0.0",
157
+ version: "22.2.2",
158
+ type: GanttChartComponent,
159
+ isStandalone: true,
160
+ selector: "lc-gantt-chart",
161
+ inputs: {
162
+ tasks: {
163
+ classPropertyName: "tasks",
164
+ publicName: "tasks",
165
+ isSignal: true,
166
+ isRequired: true,
167
+ transformFunction: null
168
+ },
169
+ dependencies: {
170
+ classPropertyName: "dependencies",
171
+ publicName: "dependencies",
172
+ isSignal: true,
173
+ isRequired: false,
174
+ transformFunction: null
175
+ },
176
+ rowHeight: {
177
+ classPropertyName: "rowHeight",
178
+ publicName: "rowHeight",
179
+ isSignal: true,
180
+ isRequired: false,
181
+ transformFunction: null
182
+ },
183
+ labelWidth: {
184
+ classPropertyName: "labelWidth",
185
+ publicName: "labelWidth",
186
+ isSignal: true,
187
+ isRequired: false,
188
+ transformFunction: null
189
+ },
190
+ dayWidth: {
191
+ classPropertyName: "dayWidth",
192
+ publicName: "dayWidth",
193
+ isSignal: true,
194
+ isRequired: false,
195
+ transformFunction: null
196
+ },
197
+ showToday: {
198
+ classPropertyName: "showToday",
199
+ publicName: "showToday",
200
+ isSignal: true,
201
+ isRequired: false,
202
+ transformFunction: null
203
+ },
204
+ locale: {
205
+ classPropertyName: "locale",
206
+ publicName: "locale",
207
+ isSignal: true,
208
+ isRequired: false,
209
+ transformFunction: null
210
+ },
211
+ labelsHeader: {
212
+ classPropertyName: "labelsHeader",
213
+ publicName: "labelsHeader",
214
+ isSignal: true,
215
+ isRequired: false,
216
+ transformFunction: null
217
+ }
218
+ },
219
+ outputs: { taskClick: "taskClick" },
220
+ ngImport: i0,
221
+ template: "<div class=\"lc-gantt\">\n <div class=\"lc-gantt__container\">\n <!-- Left: Task labels -->\n <div class=\"lc-gantt__labels\" [style.width.px]=\"labelWidth()\">\n <div class=\"lc-gantt__labels-header\">{{ labelsHeader() }}</div>\n @for (bar of bars(); track bar.task.id) {\n <div class=\"lc-gantt__label-row\" [style.height.px]=\"rowHeight()\">\n <span class=\"lc-gantt__label-text\" [title]=\"bar.task.title\">{{ bar.task.title }}</span>\n </div>\n }\n </div>\n\n <!-- Right: Timeline -->\n <div class=\"lc-gantt__timeline-wrapper\">\n <!-- Month headers -->\n <div class=\"lc-gantt__month-row\" [style.width.px]=\"timelineWidth()\">\n @for (mh of monthHeaders(); track mh.label + mh.left) {\n <div class=\"lc-gantt__month-cell\" [style.left.px]=\"mh.left\" [style.width.px]=\"mh.width\">\n {{ mh.label }}\n </div>\n }\n </div>\n\n <!-- Day headers -->\n <div class=\"lc-gantt__day-row\" [style.width.px]=\"timelineWidth()\">\n @for (col of dayColumns(); track col.left) {\n <div\n class=\"lc-gantt__day-cell\"\n [class.lc-gantt__day-cell--weekend]=\"col.isWeekend\"\n [style.left.px]=\"col.left\"\n [style.width.px]=\"dayWidth()\"\n >\n {{ col.label }}\n </div>\n }\n </div>\n\n <!-- Grid + Bars -->\n <div class=\"lc-gantt__grid\" [style.width.px]=\"timelineWidth()\" [style.height.px]=\"gridHeight()\">\n <!-- Weekend columns -->\n @for (col of dayColumns(); track col.left) {\n @if (col.isWeekend) {\n <div class=\"lc-gantt__weekend-bg\" [style.left.px]=\"col.left\" [style.width.px]=\"dayWidth()\" [style.height.px]=\"gridHeight()\"></div>\n }\n }\n\n <!-- Row borders -->\n @for (bar of bars(); track bar.task.id) {\n <div class=\"lc-gantt__row-line\" [style.top.px]=\"bar.top + rowHeight()\"></div>\n }\n\n <!-- Today marker -->\n @if (todayLeft() >= 0) {\n <div class=\"lc-gantt__today\" [style.left.px]=\"todayLeft()\" [style.height.px]=\"gridHeight()\"></div>\n }\n\n <!-- Dependency lines SVG -->\n @if (depLines().length) {\n <svg class=\"lc-gantt__dep-svg\" [attr.width]=\"timelineWidth()\" [attr.height]=\"gridHeight()\">\n <defs>\n <marker [attr.id]=\"markerId\" markerWidth=\"8\" markerHeight=\"6\" refX=\"8\" refY=\"3\" orient=\"auto\">\n <path d=\"M0,0 L8,3 L0,6 Z\" class=\"lc-gantt__arrow\" />\n </marker>\n </defs>\n @for (dep of depLines(); track $index) {\n <path\n [attr.d]=\"'M' + dep.x1 + ',' + dep.y1 + ' C' + (dep.x1 + 20) + ',' + dep.y1 + ' ' + (dep.x2 - 20) + ',' + dep.y2 + ' ' + dep.x2 + ',' + dep.y2\"\n class=\"lc-gantt__dep-line\"\n [attr.marker-end]=\"'url(#' + markerId + ')'\"\n />\n }\n </svg>\n }\n\n <!-- Task bars -->\n @for (bar of bars(); track bar.task.id) {\n <div\n [class]=\"'lc-gantt__bar lc-gantt__bar--' + bar.colorClass\"\n role=\"button\"\n tabindex=\"0\"\n [style.left.px]=\"bar.left\"\n [style.top.px]=\"bar.top + 8\"\n [style.width.px]=\"bar.width\"\n [style.height.px]=\"rowHeight() - 16\"\n [title]=\"bar.task.title + ' (' + bar.progress + '%)'\"\n [attr.aria-label]=\"bar.task.title + ' (' + bar.progress + '%)'\"\n (click)=\"onTaskClick(bar.task)\"\n (keydown)=\"onTaskKeydown($event, bar.task)\"\n >\n @if (bar.progress > 0) {\n <div class=\"lc-gantt__bar-progress\" [style.width.%]=\"bar.progress\"></div>\n }\n <span class=\"lc-gantt__bar-label\">{{ bar.task.title }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n",
222
+ styles: [":host{display:block}.lc-gantt{font-family:var(--typography-font-family, sans-serif);border:1px solid var(--color-border);border-radius:var(--border-radius-md);overflow:hidden;background:var(--color-surface)}.lc-gantt__container{display:flex;overflow:auto}.lc-gantt__labels{flex-shrink:0;border-right:2px solid var(--color-border);background:var(--color-surface-2);position:sticky;left:0;z-index:3}.lc-gantt__labels-header{height:3.5rem;display:flex;align-items:center;padding:0 .75rem;font-size:.75rem;font-weight:600;color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:.025em;border-bottom:1px solid var(--color-border)}.lc-gantt__label-row{display:flex;align-items:center;padding:0 .75rem;border-bottom:1px solid var(--color-divider)}.lc-gantt__label-text{font-size:.8125rem;font-weight:500;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lc-gantt__timeline-wrapper{flex:1;overflow:auto}.lc-gantt__month-row{display:flex;position:relative;height:1.5rem;border-bottom:1px solid var(--color-border);background:var(--color-surface-2)}.lc-gantt__month-cell{position:absolute;top:0;height:100%;display:flex;align-items:center;padding-left:.5rem;font-size:.6875rem;font-weight:600;color:var(--color-text-secondary);border-left:1px solid var(--color-border)}.lc-gantt__day-row{display:flex;position:relative;height:2rem;border-bottom:1px solid var(--color-border);background:var(--color-surface-2)}.lc-gantt__day-cell{position:absolute;top:0;height:100%;display:flex;align-items:center;justify-content:center;font-size:.625rem;color:var(--color-text-secondary);border-left:1px solid var(--color-divider)}.lc-gantt__day-cell--weekend{color:var(--color-text-tertiary);background:color-mix(in srgb,var(--color-border) 30%,transparent)}.lc-gantt__grid{position:relative;min-height:4rem}.lc-gantt__weekend-bg{position:absolute;top:0;background:color-mix(in srgb,var(--color-border) 20%,transparent)}.lc-gantt__row-line{position:absolute;left:0;right:0;height:1px;background:var(--color-divider)}.lc-gantt__today{position:absolute;top:0;width:2px;background:var(--color-error-default);z-index:2;opacity:.7}.lc-gantt__bar{position:absolute;border-radius:var(--border-radius-sm);cursor:pointer;overflow:hidden;display:flex;align-items:center;min-width:.25rem;transition:filter .15s}.lc-gantt__bar:hover{filter:brightness(1.1)}.lc-gantt__bar:focus-visible{outline:none;box-shadow:0 0 0 2px var(--color-surface),0 0 0 4px var(--color-primary-500);z-index:2}.lc-gantt__bar--primary{background:var(--color-primary-500)}.lc-gantt__bar--secondary{background:var(--color-secondary-500)}.lc-gantt__bar--success{background:var(--color-success-default)}.lc-gantt__bar--warning{background:var(--color-warning-default)}.lc-gantt__bar--error{background:var(--color-error-default)}.lc-gantt__bar--info{background:var(--color-info-default)}.lc-gantt__bar-progress{position:absolute;top:0;left:0;height:100%;background:#00000026;border-radius:.25rem 0 0 .25rem}.lc-gantt__bar-label{position:relative;z-index:1;padding:0 .375rem;font-size:.6875rem;font-weight:500;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lc-gantt__dep-svg{position:absolute;top:0;left:0;pointer-events:none;z-index:1}.lc-gantt__dep-line{fill:none;stroke:var(--color-border-strong);stroke-width:1.5}.lc-gantt__arrow{fill:var(--color-text-tertiary)}\n"],
223
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
224
+ });
225
+ };
226
+ i0.ɵɵngDeclareClassMetadata({
227
+ minVersion: "12.0.0",
228
+ version: "22.2.2",
229
+ ngImport: i0,
230
+ type: GanttChartComponent,
231
+ decorators: [{
232
+ type: Component,
233
+ args: [{
234
+ selector: "lc-gantt-chart",
235
+ standalone: true,
236
+ changeDetection: ChangeDetectionStrategy.OnPush,
237
+ template: "<div class=\"lc-gantt\">\n <div class=\"lc-gantt__container\">\n <!-- Left: Task labels -->\n <div class=\"lc-gantt__labels\" [style.width.px]=\"labelWidth()\">\n <div class=\"lc-gantt__labels-header\">{{ labelsHeader() }}</div>\n @for (bar of bars(); track bar.task.id) {\n <div class=\"lc-gantt__label-row\" [style.height.px]=\"rowHeight()\">\n <span class=\"lc-gantt__label-text\" [title]=\"bar.task.title\">{{ bar.task.title }}</span>\n </div>\n }\n </div>\n\n <!-- Right: Timeline -->\n <div class=\"lc-gantt__timeline-wrapper\">\n <!-- Month headers -->\n <div class=\"lc-gantt__month-row\" [style.width.px]=\"timelineWidth()\">\n @for (mh of monthHeaders(); track mh.label + mh.left) {\n <div class=\"lc-gantt__month-cell\" [style.left.px]=\"mh.left\" [style.width.px]=\"mh.width\">\n {{ mh.label }}\n </div>\n }\n </div>\n\n <!-- Day headers -->\n <div class=\"lc-gantt__day-row\" [style.width.px]=\"timelineWidth()\">\n @for (col of dayColumns(); track col.left) {\n <div\n class=\"lc-gantt__day-cell\"\n [class.lc-gantt__day-cell--weekend]=\"col.isWeekend\"\n [style.left.px]=\"col.left\"\n [style.width.px]=\"dayWidth()\"\n >\n {{ col.label }}\n </div>\n }\n </div>\n\n <!-- Grid + Bars -->\n <div class=\"lc-gantt__grid\" [style.width.px]=\"timelineWidth()\" [style.height.px]=\"gridHeight()\">\n <!-- Weekend columns -->\n @for (col of dayColumns(); track col.left) {\n @if (col.isWeekend) {\n <div class=\"lc-gantt__weekend-bg\" [style.left.px]=\"col.left\" [style.width.px]=\"dayWidth()\" [style.height.px]=\"gridHeight()\"></div>\n }\n }\n\n <!-- Row borders -->\n @for (bar of bars(); track bar.task.id) {\n <div class=\"lc-gantt__row-line\" [style.top.px]=\"bar.top + rowHeight()\"></div>\n }\n\n <!-- Today marker -->\n @if (todayLeft() >= 0) {\n <div class=\"lc-gantt__today\" [style.left.px]=\"todayLeft()\" [style.height.px]=\"gridHeight()\"></div>\n }\n\n <!-- Dependency lines SVG -->\n @if (depLines().length) {\n <svg class=\"lc-gantt__dep-svg\" [attr.width]=\"timelineWidth()\" [attr.height]=\"gridHeight()\">\n <defs>\n <marker [attr.id]=\"markerId\" markerWidth=\"8\" markerHeight=\"6\" refX=\"8\" refY=\"3\" orient=\"auto\">\n <path d=\"M0,0 L8,3 L0,6 Z\" class=\"lc-gantt__arrow\" />\n </marker>\n </defs>\n @for (dep of depLines(); track $index) {\n <path\n [attr.d]=\"'M' + dep.x1 + ',' + dep.y1 + ' C' + (dep.x1 + 20) + ',' + dep.y1 + ' ' + (dep.x2 - 20) + ',' + dep.y2 + ' ' + dep.x2 + ',' + dep.y2\"\n class=\"lc-gantt__dep-line\"\n [attr.marker-end]=\"'url(#' + markerId + ')'\"\n />\n }\n </svg>\n }\n\n <!-- Task bars -->\n @for (bar of bars(); track bar.task.id) {\n <div\n [class]=\"'lc-gantt__bar lc-gantt__bar--' + bar.colorClass\"\n role=\"button\"\n tabindex=\"0\"\n [style.left.px]=\"bar.left\"\n [style.top.px]=\"bar.top + 8\"\n [style.width.px]=\"bar.width\"\n [style.height.px]=\"rowHeight() - 16\"\n [title]=\"bar.task.title + ' (' + bar.progress + '%)'\"\n [attr.aria-label]=\"bar.task.title + ' (' + bar.progress + '%)'\"\n (click)=\"onTaskClick(bar.task)\"\n (keydown)=\"onTaskKeydown($event, bar.task)\"\n >\n @if (bar.progress > 0) {\n <div class=\"lc-gantt__bar-progress\" [style.width.%]=\"bar.progress\"></div>\n }\n <span class=\"lc-gantt__bar-label\">{{ bar.task.title }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n",
238
+ styles: [":host{display:block}.lc-gantt{font-family:var(--typography-font-family, sans-serif);border:1px solid var(--color-border);border-radius:var(--border-radius-md);overflow:hidden;background:var(--color-surface)}.lc-gantt__container{display:flex;overflow:auto}.lc-gantt__labels{flex-shrink:0;border-right:2px solid var(--color-border);background:var(--color-surface-2);position:sticky;left:0;z-index:3}.lc-gantt__labels-header{height:3.5rem;display:flex;align-items:center;padding:0 .75rem;font-size:.75rem;font-weight:600;color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:.025em;border-bottom:1px solid var(--color-border)}.lc-gantt__label-row{display:flex;align-items:center;padding:0 .75rem;border-bottom:1px solid var(--color-divider)}.lc-gantt__label-text{font-size:.8125rem;font-weight:500;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lc-gantt__timeline-wrapper{flex:1;overflow:auto}.lc-gantt__month-row{display:flex;position:relative;height:1.5rem;border-bottom:1px solid var(--color-border);background:var(--color-surface-2)}.lc-gantt__month-cell{position:absolute;top:0;height:100%;display:flex;align-items:center;padding-left:.5rem;font-size:.6875rem;font-weight:600;color:var(--color-text-secondary);border-left:1px solid var(--color-border)}.lc-gantt__day-row{display:flex;position:relative;height:2rem;border-bottom:1px solid var(--color-border);background:var(--color-surface-2)}.lc-gantt__day-cell{position:absolute;top:0;height:100%;display:flex;align-items:center;justify-content:center;font-size:.625rem;color:var(--color-text-secondary);border-left:1px solid var(--color-divider)}.lc-gantt__day-cell--weekend{color:var(--color-text-tertiary);background:color-mix(in srgb,var(--color-border) 30%,transparent)}.lc-gantt__grid{position:relative;min-height:4rem}.lc-gantt__weekend-bg{position:absolute;top:0;background:color-mix(in srgb,var(--color-border) 20%,transparent)}.lc-gantt__row-line{position:absolute;left:0;right:0;height:1px;background:var(--color-divider)}.lc-gantt__today{position:absolute;top:0;width:2px;background:var(--color-error-default);z-index:2;opacity:.7}.lc-gantt__bar{position:absolute;border-radius:var(--border-radius-sm);cursor:pointer;overflow:hidden;display:flex;align-items:center;min-width:.25rem;transition:filter .15s}.lc-gantt__bar:hover{filter:brightness(1.1)}.lc-gantt__bar:focus-visible{outline:none;box-shadow:0 0 0 2px var(--color-surface),0 0 0 4px var(--color-primary-500);z-index:2}.lc-gantt__bar--primary{background:var(--color-primary-500)}.lc-gantt__bar--secondary{background:var(--color-secondary-500)}.lc-gantt__bar--success{background:var(--color-success-default)}.lc-gantt__bar--warning{background:var(--color-warning-default)}.lc-gantt__bar--error{background:var(--color-error-default)}.lc-gantt__bar--info{background:var(--color-info-default)}.lc-gantt__bar-progress{position:absolute;top:0;left:0;height:100%;background:#00000026;border-radius:.25rem 0 0 .25rem}.lc-gantt__bar-label{position:relative;z-index:1;padding:0 .375rem;font-size:.6875rem;font-weight:500;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lc-gantt__dep-svg{position:absolute;top:0;left:0;pointer-events:none;z-index:1}.lc-gantt__dep-line{fill:none;stroke:var(--color-border-strong);stroke-width:1.5}.lc-gantt__arrow{fill:var(--color-text-tertiary)}\n"]
239
+ }]
240
+ }],
241
+ propDecorators: {
242
+ tasks: [{
243
+ type: i0.Input,
244
+ args: [{
245
+ isSignal: true,
246
+ alias: "tasks",
247
+ required: true
248
+ }]
249
+ }],
250
+ dependencies: [{
251
+ type: i0.Input,
252
+ args: [{
253
+ isSignal: true,
254
+ alias: "dependencies",
255
+ required: false
256
+ }]
257
+ }],
258
+ rowHeight: [{
259
+ type: i0.Input,
260
+ args: [{
261
+ isSignal: true,
262
+ alias: "rowHeight",
263
+ required: false
264
+ }]
265
+ }],
266
+ labelWidth: [{
267
+ type: i0.Input,
268
+ args: [{
269
+ isSignal: true,
270
+ alias: "labelWidth",
271
+ required: false
272
+ }]
273
+ }],
274
+ dayWidth: [{
275
+ type: i0.Input,
276
+ args: [{
277
+ isSignal: true,
278
+ alias: "dayWidth",
279
+ required: false
280
+ }]
281
+ }],
282
+ showToday: [{
283
+ type: i0.Input,
284
+ args: [{
285
+ isSignal: true,
286
+ alias: "showToday",
287
+ required: false
288
+ }]
289
+ }],
290
+ locale: [{
291
+ type: i0.Input,
292
+ args: [{
293
+ isSignal: true,
294
+ alias: "locale",
295
+ required: false
296
+ }]
297
+ }],
298
+ labelsHeader: [{
299
+ type: i0.Input,
300
+ args: [{
301
+ isSignal: true,
302
+ alias: "labelsHeader",
303
+ required: false
304
+ }]
305
+ }],
306
+ taskClick: [{
307
+ type: i0.Output,
308
+ args: ["taskClick"]
309
+ }]
310
+ }
311
+ });
312
+ export { GanttChartComponent };
313
+
314
+ //# sourceMappingURL=lifecorner-angular-ui-kit-gantt-chart.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecorner-angular-ui-kit-gantt-chart.mjs","names":[],"sources":["../../../../libs/angular-ui-kit/src/lib/gantt-chart/gantt-chart.component.ts","../../../../libs/angular-ui-kit/src/lib/gantt-chart/gantt-chart.component.html"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n input,\n output,\n computed,\n} from '@angular/core';\n\nexport interface GanttDependency {\n from: string;\n to: string;\n}\n\nexport interface GanttTask {\n id: string;\n title: string;\n start: Date | string;\n end: Date | string;\n progress?: number;\n color?: 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info';\n group?: string;\n}\n\ninterface NormalizedTask {\n id: string;\n title: string;\n start: Date;\n end: Date;\n progress: number;\n color: string;\n group: string;\n}\n\ninterface BarLayout {\n task: NormalizedTask;\n left: number;\n width: number;\n top: number;\n progress: number;\n colorClass: string;\n}\n\ninterface DepLine {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n}\n\n@Component({\n selector: 'lc-gantt-chart',\n standalone: true,\n templateUrl: './gantt-chart.component.html',\n styleUrls: ['./gantt-chart.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n/**\n * Gantt chart component for project timeline visualization.\n *\n * Features:\n * - Task bars with progress indicators\n * - Dependency lines with Bézier curves and arrowheads\n * - Monthly and daily header timeline\n * - Today marker line\n * - Weekend highlighting\n * - Configurable row height, label width, day width, locale and label header\n * - Task click event handling (bars are focusable, Enter / Space activate)\n *\n * @example\n * ```html\n * <lc-gantt-chart [tasks]=\"tasks\" [dependencies]=\"deps\" [showToday]=\"true\" />\n * ```\n */\nexport class GanttChartComponent {\n private static nextId = 0;\n\n /**\n * Per-instance id for the SVG arrowhead marker. `<marker id>` is document\n * global, so two charts on one page must not share it.\n */\n protected readonly markerId = `lc-gantt-arrowhead-${++GanttChartComponent.nextId}`;\n\n /** Tasks to display. */\n tasks = input.required<GanttTask[]>();\n\n /** Dependency links between tasks. */\n dependencies = input<GanttDependency[]>([]);\n\n /** Row height in px. */\n rowHeight = input<number>(40);\n\n /** Width of the label column in px. */\n labelWidth = input<number>(200);\n\n /** Column width per day in px. */\n dayWidth = input<number>(36);\n\n /** Show today marker. */\n showToday = input<boolean>(true);\n\n /** BCP 47 locale used for the month header labels. */\n locale = input<string>('de-DE');\n\n /** Header text of the task label column. */\n labelsHeader = input<string>('Aufgaben');\n\n /** Emits when a task bar is clicked / activated via keyboard. */\n taskClick = output<GanttTask>();\n\n private readonly normalizedTasks = computed((): NormalizedTask[] =>\n this.tasks().map(t => ({\n id: t.id,\n title: t.title,\n start: t.start instanceof Date ? t.start : new Date(t.start),\n end: t.end instanceof Date ? t.end : new Date(t.end),\n progress: t.progress ?? 0,\n color: t.color ?? 'primary',\n group: t.group ?? '',\n }))\n );\n\n protected readonly timelineStart = computed(() => {\n const tasks = this.normalizedTasks();\n if (!tasks.length) return new Date();\n const min = Math.min(...tasks.map(t => t.start.getTime()));\n const d = new Date(min);\n d.setDate(d.getDate() - 2);\n return this.startOfDay(d);\n });\n\n protected readonly timelineEnd = computed(() => {\n const tasks = this.normalizedTasks();\n if (!tasks.length) return new Date();\n const max = Math.max(...tasks.map(t => t.end.getTime()));\n const d = new Date(max);\n d.setDate(d.getDate() + 3);\n return this.startOfDay(d);\n });\n\n protected readonly totalDays = computed(() => {\n const start = this.timelineStart();\n const end = this.timelineEnd();\n return Math.ceil((end.getTime() - start.getTime()) / 86400000) + 1;\n });\n\n protected readonly timelineWidth = computed(() => this.totalDays() * this.dayWidth());\n\n protected readonly dayColumns = computed(() => {\n const start = this.timelineStart();\n const days = this.totalDays();\n const dw = this.dayWidth();\n return Array.from({ length: days }, (_, i) => {\n const d = new Date(start);\n d.setDate(d.getDate() + i);\n return {\n date: d,\n left: i * dw,\n label: d.getDate(),\n isWeekend: d.getDay() === 0 || d.getDay() === 6,\n monthLabel: d.getDate() === 1 ? d.toLocaleDateString(this.locale(), { month: 'short' }) : null,\n };\n });\n });\n\n protected readonly monthHeaders = computed(() => {\n const cols = this.dayColumns();\n const dw = this.dayWidth();\n const locale = this.locale();\n const months: { label: string; left: number; width: number }[] = [];\n let current: { label: string; left: number; count: number } | null = null;\n\n for (const col of cols) {\n const label = col.date.toLocaleDateString(locale, { month: 'short', year: 'numeric' });\n if (!current || current.label !== label) {\n if (current) months.push({ label: current.label, left: current.left, width: current.count * dw });\n current = { label, left: col.left, count: 1 };\n } else {\n current.count++;\n }\n }\n if (current) months.push({ label: current.label, left: current.left, width: current.count * dw });\n return months;\n });\n\n protected readonly bars = computed((): BarLayout[] => {\n const tasks = this.normalizedTasks();\n const start = this.timelineStart().getTime();\n const dw = this.dayWidth();\n const rh = this.rowHeight();\n\n return tasks.map((t, i) => {\n const dayOffset = (t.start.getTime() - start) / 86400000;\n const duration = Math.max((t.end.getTime() - t.start.getTime()) / 86400000, 1);\n return {\n task: t,\n left: dayOffset * dw,\n width: duration * dw,\n top: i * rh,\n progress: Math.min(Math.max(t.progress, 0), 100),\n colorClass: t.color,\n };\n });\n });\n\n protected readonly depLines = computed((): DepLine[] => {\n const deps = this.dependencies();\n const barsMap = new Map<string, BarLayout>();\n for (const bar of this.bars()) barsMap.set(bar.task.id, bar);\n const rh = this.rowHeight();\n\n return deps\n .filter(d => barsMap.has(d.from) && barsMap.has(d.to))\n .map(d => {\n const from = barsMap.get(d.from)!;\n const to = barsMap.get(d.to)!;\n return {\n x1: from.left + from.width,\n y1: from.top + rh / 2,\n x2: to.left,\n y2: to.top + rh / 2,\n };\n });\n });\n\n protected readonly todayLeft = computed(() => {\n if (!this.showToday()) return -1;\n const start = this.timelineStart().getTime();\n const now = this.startOfDay(new Date()).getTime();\n const dayOffset = (now - start) / 86400000;\n if (dayOffset < 0 || dayOffset > this.totalDays()) return -1;\n return dayOffset * this.dayWidth();\n });\n\n protected readonly gridHeight = computed(() => this.normalizedTasks().length * this.rowHeight());\n\n protected onTaskClick(task: NormalizedTask): void {\n this.taskClick.emit(this.tasks().find(t => t.id === task.id)!);\n }\n\n protected onTaskKeydown(event: KeyboardEvent, task: NormalizedTask): void {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.onTaskClick(task);\n }\n }\n\n private startOfDay(d: Date): Date {\n return new Date(d.getFullYear(), d.getMonth(), d.getDate());\n }\n}\n","<div class=\"lc-gantt\">\n <div class=\"lc-gantt__container\">\n <!-- Left: Task labels -->\n <div class=\"lc-gantt__labels\" [style.width.px]=\"labelWidth()\">\n <div class=\"lc-gantt__labels-header\">{{ labelsHeader() }}</div>\n @for (bar of bars(); track bar.task.id) {\n <div class=\"lc-gantt__label-row\" [style.height.px]=\"rowHeight()\">\n <span class=\"lc-gantt__label-text\" [title]=\"bar.task.title\">{{ bar.task.title }}</span>\n </div>\n }\n </div>\n\n <!-- Right: Timeline -->\n <div class=\"lc-gantt__timeline-wrapper\">\n <!-- Month headers -->\n <div class=\"lc-gantt__month-row\" [style.width.px]=\"timelineWidth()\">\n @for (mh of monthHeaders(); track mh.label + mh.left) {\n <div class=\"lc-gantt__month-cell\" [style.left.px]=\"mh.left\" [style.width.px]=\"mh.width\">\n {{ mh.label }}\n </div>\n }\n </div>\n\n <!-- Day headers -->\n <div class=\"lc-gantt__day-row\" [style.width.px]=\"timelineWidth()\">\n @for (col of dayColumns(); track col.left) {\n <div\n class=\"lc-gantt__day-cell\"\n [class.lc-gantt__day-cell--weekend]=\"col.isWeekend\"\n [style.left.px]=\"col.left\"\n [style.width.px]=\"dayWidth()\"\n >\n {{ col.label }}\n </div>\n }\n </div>\n\n <!-- Grid + Bars -->\n <div class=\"lc-gantt__grid\" [style.width.px]=\"timelineWidth()\" [style.height.px]=\"gridHeight()\">\n <!-- Weekend columns -->\n @for (col of dayColumns(); track col.left) {\n @if (col.isWeekend) {\n <div class=\"lc-gantt__weekend-bg\" [style.left.px]=\"col.left\" [style.width.px]=\"dayWidth()\" [style.height.px]=\"gridHeight()\"></div>\n }\n }\n\n <!-- Row borders -->\n @for (bar of bars(); track bar.task.id) {\n <div class=\"lc-gantt__row-line\" [style.top.px]=\"bar.top + rowHeight()\"></div>\n }\n\n <!-- Today marker -->\n @if (todayLeft() >= 0) {\n <div class=\"lc-gantt__today\" [style.left.px]=\"todayLeft()\" [style.height.px]=\"gridHeight()\"></div>\n }\n\n <!-- Dependency lines SVG -->\n @if (depLines().length) {\n <svg class=\"lc-gantt__dep-svg\" [attr.width]=\"timelineWidth()\" [attr.height]=\"gridHeight()\">\n <defs>\n <marker [attr.id]=\"markerId\" markerWidth=\"8\" markerHeight=\"6\" refX=\"8\" refY=\"3\" orient=\"auto\">\n <path d=\"M0,0 L8,3 L0,6 Z\" class=\"lc-gantt__arrow\" />\n </marker>\n </defs>\n @for (dep of depLines(); track $index) {\n <path\n [attr.d]=\"'M' + dep.x1 + ',' + dep.y1 + ' C' + (dep.x1 + 20) + ',' + dep.y1 + ' ' + (dep.x2 - 20) + ',' + dep.y2 + ' ' + dep.x2 + ',' + dep.y2\"\n class=\"lc-gantt__dep-line\"\n [attr.marker-end]=\"'url(#' + markerId + ')'\"\n />\n }\n </svg>\n }\n\n <!-- Task bars -->\n @for (bar of bars(); track bar.task.id) {\n <div\n [class]=\"'lc-gantt__bar lc-gantt__bar--' + bar.colorClass\"\n role=\"button\"\n tabindex=\"0\"\n [style.left.px]=\"bar.left\"\n [style.top.px]=\"bar.top + 8\"\n [style.width.px]=\"bar.width\"\n [style.height.px]=\"rowHeight() - 16\"\n [title]=\"bar.task.title + ' (' + bar.progress + '%)'\"\n [attr.aria-label]=\"bar.task.title + ' (' + bar.progress + '%)'\"\n (click)=\"onTaskClick(bar.task)\"\n (keydown)=\"onTaskKeydown($event, bar.task)\"\n >\n @if (bar.progress > 0) {\n <div class=\"lc-gantt__bar-progress\" [style.width.%]=\"bar.progress\"></div>\n }\n <span class=\"lc-gantt__bar-label\">{{ bar.task.title }}</span>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n"],"mappings":"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"}
@@ -0,0 +1,265 @@
1
+ import * as i0 from "@angular/core";
2
+ import { ChangeDetectionStrategy, Component, computed, input } from "@angular/core";
3
+ import { toFinite } from "@lifecorner/angular-ui-kit/internal/chart";
4
+ var GaugeComponent = class GaugeComponent {
5
+ value = input(0, ...ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []);
6
+ max = input(100, ...ngDevMode ? [{ debugName: "max" }] : /* istanbul ignore next */ []);
7
+ color = input("primary", ...ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []);
8
+ size = input("md", ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
9
+ label = input("", ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
10
+ suffix = input("%", ...ngDevMode ? [{ debugName: "suffix" }] : /* istanbul ignore next */ []);
11
+ showValue = input(true, ...ngDevMode ? [{ debugName: "showValue" }] : /* istanbul ignore next */ []);
12
+ formatValue = input(null, ...ngDevMode ? [{ debugName: "formatValue" }] : /* istanbul ignore next */ []);
13
+ ariaLabel = input("", ...ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []);
14
+ SIZE_MAP = {
15
+ sm: 100,
16
+ md: 160,
17
+ lg: 220
18
+ };
19
+ svgSize = computed(() => this.SIZE_MAP[this.size()], ...ngDevMode ? [{ debugName: "svgSize" }] : /* istanbul ignore next */ []);
20
+ svgHeight = computed(() => {
21
+ const s = this.svgSize();
22
+ const sw = this.strokeW();
23
+ return sw + (s - sw * 2) / 2 + 36;
24
+ }, ...ngDevMode ? [{ debugName: "svgHeight" }] : /* istanbul ignore next */ []);
25
+ viewBox = computed(() => {
26
+ return `0 0 ${this.svgSize()} ${this.svgHeight()}`;
27
+ }, ...ngDevMode ? [{ debugName: "viewBox" }] : /* istanbul ignore next */ []);
28
+ cx = computed(() => this.svgSize() / 2, ...ngDevMode ? [{ debugName: "cx" }] : /* istanbul ignore next */ []);
29
+ cy = computed(() => {
30
+ const sw = this.strokeW();
31
+ return sw + (this.svgSize() - sw * 2) / 2;
32
+ }, ...ngDevMode ? [{ debugName: "cy" }] : /* istanbul ignore next */ []);
33
+ radius = computed(() => (this.svgSize() - this.strokeW() * 2) / 2, ...ngDevMode ? [{ debugName: "radius" }] : /* istanbul ignore next */ []);
34
+ strokeW = computed(() => {
35
+ return {
36
+ sm: 8,
37
+ md: 12,
38
+ lg: 16
39
+ }[this.size()];
40
+ }, ...ngDevMode ? [{ debugName: "strokeW" }] : /* istanbul ignore next */ []);
41
+ fraction = computed(() => {
42
+ const m = toFinite(this.max()) || 1;
43
+ return Math.min(Math.max(toFinite(this.value()) / m, 0), 1);
44
+ }, ...ngDevMode ? [{ debugName: "fraction" }] : /* istanbul ignore next */ []);
45
+ trackD = computed(() => {
46
+ const r = this.radius();
47
+ const cxv = this.cx();
48
+ const cyv = this.cy();
49
+ return `M${cxv - r},${cyv} A${r},${r} 0 0 1 ${cxv + r},${cyv}`;
50
+ }, ...ngDevMode ? [{ debugName: "trackD" }] : /* istanbul ignore next */ []);
51
+ valueD = computed(() => {
52
+ const r = this.radius();
53
+ const cxv = this.cx();
54
+ const cyv = this.cy();
55
+ const f = this.fraction();
56
+ if (f <= 0) return "";
57
+ const angle = Math.PI * f;
58
+ const x = cxv - r * Math.cos(angle);
59
+ const y = cyv - r * Math.sin(angle);
60
+ return `M${cxv - r},${cyv} A${r},${r} 0 0 1 ${x},${y}`;
61
+ }, ...ngDevMode ? [{ debugName: "valueD" }] : /* istanbul ignore next */ []);
62
+ formatted(value) {
63
+ const fmt = this.formatValue();
64
+ return fmt ? fmt(value) : `${Math.round(toFinite(value))}${this.suffix()}`;
65
+ }
66
+ displayValue = computed(() => this.formatted(this.value()), ...ngDevMode ? [{ debugName: "displayValue" }] : /* istanbul ignore next */ []);
67
+ effectiveAriaLabel = computed(() => {
68
+ const explicit = this.ariaLabel();
69
+ if (explicit) return explicit;
70
+ const label = this.label();
71
+ const summary = `${this.displayValue()} of ${this.formatted(this.max())}`;
72
+ return label ? `${label}: ${summary}` : `Gauge: ${summary}`;
73
+ }, ...ngDevMode ? [{ debugName: "effectiveAriaLabel" }] : /* istanbul ignore next */ []);
74
+ valueFontSize = computed(() => {
75
+ return {
76
+ sm: "1rem",
77
+ md: "1.5rem",
78
+ lg: "2rem"
79
+ }[this.size()];
80
+ }, ...ngDevMode ? [{ debugName: "valueFontSize" }] : /* istanbul ignore next */ []);
81
+ labelFontSize = computed(() => {
82
+ return {
83
+ sm: "0.625rem",
84
+ md: "0.75rem",
85
+ lg: "0.875rem"
86
+ }[this.size()];
87
+ }, ...ngDevMode ? [{ debugName: "labelFontSize" }] : /* istanbul ignore next */ []);
88
+ static ɵfac = i0.ɵɵngDeclareFactory({
89
+ minVersion: "12.0.0",
90
+ version: "22.2.2",
91
+ ngImport: i0,
92
+ type: GaugeComponent,
93
+ deps: [],
94
+ target: i0.ɵɵFactoryTarget.Component
95
+ });
96
+ static ɵcmp = i0.ɵɵngDeclareComponent({
97
+ minVersion: "17.0.0",
98
+ version: "22.2.2",
99
+ type: GaugeComponent,
100
+ isStandalone: true,
101
+ selector: "lc-gauge",
102
+ inputs: {
103
+ value: {
104
+ classPropertyName: "value",
105
+ publicName: "value",
106
+ isSignal: true,
107
+ isRequired: false,
108
+ transformFunction: null
109
+ },
110
+ max: {
111
+ classPropertyName: "max",
112
+ publicName: "max",
113
+ isSignal: true,
114
+ isRequired: false,
115
+ transformFunction: null
116
+ },
117
+ color: {
118
+ classPropertyName: "color",
119
+ publicName: "color",
120
+ isSignal: true,
121
+ isRequired: false,
122
+ transformFunction: null
123
+ },
124
+ size: {
125
+ classPropertyName: "size",
126
+ publicName: "size",
127
+ isSignal: true,
128
+ isRequired: false,
129
+ transformFunction: null
130
+ },
131
+ label: {
132
+ classPropertyName: "label",
133
+ publicName: "label",
134
+ isSignal: true,
135
+ isRequired: false,
136
+ transformFunction: null
137
+ },
138
+ suffix: {
139
+ classPropertyName: "suffix",
140
+ publicName: "suffix",
141
+ isSignal: true,
142
+ isRequired: false,
143
+ transformFunction: null
144
+ },
145
+ showValue: {
146
+ classPropertyName: "showValue",
147
+ publicName: "showValue",
148
+ isSignal: true,
149
+ isRequired: false,
150
+ transformFunction: null
151
+ },
152
+ formatValue: {
153
+ classPropertyName: "formatValue",
154
+ publicName: "formatValue",
155
+ isSignal: true,
156
+ isRequired: false,
157
+ transformFunction: null
158
+ },
159
+ ariaLabel: {
160
+ classPropertyName: "ariaLabel",
161
+ publicName: "ariaLabel",
162
+ isSignal: true,
163
+ isRequired: false,
164
+ transformFunction: null
165
+ }
166
+ },
167
+ ngImport: i0,
168
+ template: "<svg\n [attr.width]=\"svgSize()\"\n [attr.height]=\"svgHeight()\"\n [attr.viewBox]=\"viewBox()\"\n class=\"lc-gauge\"\n role=\"img\"\n [attr.aria-label]=\"effectiveAriaLabel()\"\n>\n <title>{{ effectiveAriaLabel() }}</title>\n\n <path\n [attr.d]=\"trackD()\"\n [attr.stroke-width]=\"strokeW()\"\n fill=\"none\"\n stroke-linecap=\"round\"\n class=\"lc-gauge__track\"\n />\n\n @if (valueD()) {\n <path\n [attr.d]=\"valueD()\"\n [attr.stroke-width]=\"strokeW()\"\n fill=\"none\"\n stroke-linecap=\"round\"\n [class]=\"'lc-gauge__value-arc lc-gauge__value-arc--' + color()\"\n />\n }\n\n @if (showValue()) {\n <text\n [attr.x]=\"cx()\"\n [attr.y]=\"cy() + 8\"\n text-anchor=\"middle\"\n dominant-baseline=\"auto\"\n class=\"lc-gauge__value-text\"\n [style.font-size]=\"valueFontSize()\"\n >\n {{ displayValue() }}\n </text>\n }\n\n @if (label()) {\n <text\n [attr.x]=\"cx()\"\n [attr.y]=\"cy() + 24\"\n text-anchor=\"middle\"\n dominant-baseline=\"auto\"\n class=\"lc-gauge__label\"\n [style.font-size]=\"labelFontSize()\"\n >\n {{ label() }}\n </text>\n }\n</svg>\n",
169
+ styles: [":host{display:inline-block}.lc-gauge{overflow:visible}.lc-gauge__track{stroke:var(--color-border)}.lc-gauge__value-arc--primary{stroke:var(--color-primary-500)}.lc-gauge__value-arc--secondary{stroke:var(--color-secondary-500)}.lc-gauge__value-arc--success{stroke:var(--color-success-default)}.lc-gauge__value-arc--warning{stroke:var(--color-warning-default)}.lc-gauge__value-arc--error{stroke:var(--color-error-default)}.lc-gauge__value-arc--info{stroke:var(--color-info-default)}.lc-gauge__value-text{font-weight:700;fill:var(--color-text-primary)}.lc-gauge__label{fill:var(--color-text-tertiary);font-weight:500}\n"],
170
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
171
+ });
172
+ };
173
+ i0.ɵɵngDeclareClassMetadata({
174
+ minVersion: "12.0.0",
175
+ version: "22.2.2",
176
+ ngImport: i0,
177
+ type: GaugeComponent,
178
+ decorators: [{
179
+ type: Component,
180
+ args: [{
181
+ selector: "lc-gauge",
182
+ standalone: true,
183
+ changeDetection: ChangeDetectionStrategy.OnPush,
184
+ template: "<svg\n [attr.width]=\"svgSize()\"\n [attr.height]=\"svgHeight()\"\n [attr.viewBox]=\"viewBox()\"\n class=\"lc-gauge\"\n role=\"img\"\n [attr.aria-label]=\"effectiveAriaLabel()\"\n>\n <title>{{ effectiveAriaLabel() }}</title>\n\n <path\n [attr.d]=\"trackD()\"\n [attr.stroke-width]=\"strokeW()\"\n fill=\"none\"\n stroke-linecap=\"round\"\n class=\"lc-gauge__track\"\n />\n\n @if (valueD()) {\n <path\n [attr.d]=\"valueD()\"\n [attr.stroke-width]=\"strokeW()\"\n fill=\"none\"\n stroke-linecap=\"round\"\n [class]=\"'lc-gauge__value-arc lc-gauge__value-arc--' + color()\"\n />\n }\n\n @if (showValue()) {\n <text\n [attr.x]=\"cx()\"\n [attr.y]=\"cy() + 8\"\n text-anchor=\"middle\"\n dominant-baseline=\"auto\"\n class=\"lc-gauge__value-text\"\n [style.font-size]=\"valueFontSize()\"\n >\n {{ displayValue() }}\n </text>\n }\n\n @if (label()) {\n <text\n [attr.x]=\"cx()\"\n [attr.y]=\"cy() + 24\"\n text-anchor=\"middle\"\n dominant-baseline=\"auto\"\n class=\"lc-gauge__label\"\n [style.font-size]=\"labelFontSize()\"\n >\n {{ label() }}\n </text>\n }\n</svg>\n",
185
+ styles: [":host{display:inline-block}.lc-gauge{overflow:visible}.lc-gauge__track{stroke:var(--color-border)}.lc-gauge__value-arc--primary{stroke:var(--color-primary-500)}.lc-gauge__value-arc--secondary{stroke:var(--color-secondary-500)}.lc-gauge__value-arc--success{stroke:var(--color-success-default)}.lc-gauge__value-arc--warning{stroke:var(--color-warning-default)}.lc-gauge__value-arc--error{stroke:var(--color-error-default)}.lc-gauge__value-arc--info{stroke:var(--color-info-default)}.lc-gauge__value-text{font-weight:700;fill:var(--color-text-primary)}.lc-gauge__label{fill:var(--color-text-tertiary);font-weight:500}\n"]
186
+ }]
187
+ }],
188
+ propDecorators: {
189
+ value: [{
190
+ type: i0.Input,
191
+ args: [{
192
+ isSignal: true,
193
+ alias: "value",
194
+ required: false
195
+ }]
196
+ }],
197
+ max: [{
198
+ type: i0.Input,
199
+ args: [{
200
+ isSignal: true,
201
+ alias: "max",
202
+ required: false
203
+ }]
204
+ }],
205
+ color: [{
206
+ type: i0.Input,
207
+ args: [{
208
+ isSignal: true,
209
+ alias: "color",
210
+ required: false
211
+ }]
212
+ }],
213
+ size: [{
214
+ type: i0.Input,
215
+ args: [{
216
+ isSignal: true,
217
+ alias: "size",
218
+ required: false
219
+ }]
220
+ }],
221
+ label: [{
222
+ type: i0.Input,
223
+ args: [{
224
+ isSignal: true,
225
+ alias: "label",
226
+ required: false
227
+ }]
228
+ }],
229
+ suffix: [{
230
+ type: i0.Input,
231
+ args: [{
232
+ isSignal: true,
233
+ alias: "suffix",
234
+ required: false
235
+ }]
236
+ }],
237
+ showValue: [{
238
+ type: i0.Input,
239
+ args: [{
240
+ isSignal: true,
241
+ alias: "showValue",
242
+ required: false
243
+ }]
244
+ }],
245
+ formatValue: [{
246
+ type: i0.Input,
247
+ args: [{
248
+ isSignal: true,
249
+ alias: "formatValue",
250
+ required: false
251
+ }]
252
+ }],
253
+ ariaLabel: [{
254
+ type: i0.Input,
255
+ args: [{
256
+ isSignal: true,
257
+ alias: "ariaLabel",
258
+ required: false
259
+ }]
260
+ }]
261
+ }
262
+ });
263
+ export { GaugeComponent };
264
+
265
+ //# sourceMappingURL=lifecorner-angular-ui-kit-gauge.mjs.map