@tailng-ui/components 0.16.0 → 0.18.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 (257) hide show
  1. package/package.json +17 -6
  2. package/src/lib/feedback/empty/tng-empty.component.d.ts +16 -1
  3. package/src/lib/feedback/empty/tng-empty.component.d.ts.map +1 -1
  4. package/src/lib/feedback/empty/tng-empty.component.js +47 -57
  5. package/src/lib/feedback/empty/tng-empty.component.js.map +1 -1
  6. package/src/lib/feedback/index.d.ts +0 -5
  7. package/src/lib/feedback/index.d.ts.map +1 -1
  8. package/src/lib/feedback/index.js +4 -5
  9. package/src/lib/feedback/index.js.map +1 -1
  10. package/src/lib/feedback/progress-bar/tng-progress-bar.component.d.ts +4 -0
  11. package/src/lib/feedback/progress-bar/tng-progress-bar.component.d.ts.map +1 -1
  12. package/src/lib/feedback/progress-bar/tng-progress-bar.component.js +16 -26
  13. package/src/lib/feedback/progress-bar/tng-progress-bar.component.js.map +1 -1
  14. package/src/lib/feedback/progress-spinner/tng-progress-spinner.component.d.ts +4 -0
  15. package/src/lib/feedback/progress-spinner/tng-progress-spinner.component.d.ts.map +1 -1
  16. package/src/lib/feedback/progress-spinner/tng-progress-spinner.component.js +18 -32
  17. package/src/lib/feedback/progress-spinner/tng-progress-spinner.component.js.map +1 -1
  18. package/src/lib/feedback/skeleton/tng-skeleton.component.d.ts +4 -0
  19. package/src/lib/feedback/skeleton/tng-skeleton.component.d.ts.map +1 -1
  20. package/src/lib/feedback/skeleton/tng-skeleton.component.js +14 -20
  21. package/src/lib/feedback/skeleton/tng-skeleton.component.js.map +1 -1
  22. package/src/lib/feedback/toast/tng-toast.component.d.ts +4 -1
  23. package/src/lib/feedback/toast/tng-toast.component.d.ts.map +1 -1
  24. package/src/lib/feedback/toast/tng-toast.component.js +17 -19
  25. package/src/lib/feedback/toast/tng-toast.component.js.map +1 -1
  26. package/src/lib/form/autocomplete/tng-autocomplete.component.d.ts +4 -0
  27. package/src/lib/form/autocomplete/tng-autocomplete.component.d.ts.map +1 -1
  28. package/src/lib/form/autocomplete/tng-autocomplete.component.js +46 -49
  29. package/src/lib/form/autocomplete/tng-autocomplete.component.js.map +1 -1
  30. package/src/lib/form/button-toggle/tng-button-toggle-group.component.d.ts +3 -0
  31. package/src/lib/form/button-toggle/tng-button-toggle-group.component.d.ts.map +1 -1
  32. package/src/lib/form/button-toggle/tng-button-toggle-group.component.js +33 -58
  33. package/src/lib/form/button-toggle/tng-button-toggle-group.component.js.map +1 -1
  34. package/src/lib/form/button-toggle/tng-button-toggle.component.d.ts +3 -0
  35. package/src/lib/form/button-toggle/tng-button-toggle.component.d.ts.map +1 -1
  36. package/src/lib/form/button-toggle/tng-button-toggle.component.js +15 -26
  37. package/src/lib/form/button-toggle/tng-button-toggle.component.js.map +1 -1
  38. package/src/lib/form/checkbox/tng-checkbox.component.d.ts +3 -0
  39. package/src/lib/form/checkbox/tng-checkbox.component.d.ts.map +1 -1
  40. package/src/lib/form/checkbox/tng-checkbox.component.js +32 -42
  41. package/src/lib/form/checkbox/tng-checkbox.component.js.map +1 -1
  42. package/src/lib/form/chips/tng-chips.component.d.ts +3 -0
  43. package/src/lib/form/chips/tng-chips.component.d.ts.map +1 -1
  44. package/src/lib/form/chips/tng-chips.component.js +14 -19
  45. package/src/lib/form/chips/tng-chips.component.js.map +1 -1
  46. package/src/lib/form/combobox/tng-combobox.component.d.ts +3 -0
  47. package/src/lib/form/combobox/tng-combobox.component.d.ts.map +1 -1
  48. package/src/lib/form/combobox/tng-combobox.component.js +10 -13
  49. package/src/lib/form/combobox/tng-combobox.component.js.map +1 -1
  50. package/src/lib/form/datepicker/tng-datepicker.component.d.ts +4 -1
  51. package/src/lib/form/datepicker/tng-datepicker.component.d.ts.map +1 -1
  52. package/src/lib/form/datepicker/tng-datepicker.component.js +58 -98
  53. package/src/lib/form/datepicker/tng-datepicker.component.js.map +1 -1
  54. package/src/lib/form/form-field/tng-form-field.component.d.ts +3 -0
  55. package/src/lib/form/form-field/tng-form-field.component.d.ts.map +1 -1
  56. package/src/lib/form/form-field/tng-form-field.component.js +28 -33
  57. package/src/lib/form/form-field/tng-form-field.component.js.map +1 -1
  58. package/src/lib/form/index.d.ts +0 -20
  59. package/src/lib/form/index.d.ts.map +1 -1
  60. package/src/lib/form/index.js +4 -20
  61. package/src/lib/form/index.js.map +1 -1
  62. package/src/lib/form/input/tng-input.component.d.ts +9 -3
  63. package/src/lib/form/input/tng-input.component.d.ts.map +1 -1
  64. package/src/lib/form/input/tng-input.component.js +96 -81
  65. package/src/lib/form/input/tng-input.component.js.map +1 -1
  66. package/src/lib/form/input-otp/tng-input-otp.component.d.ts +3 -0
  67. package/src/lib/form/input-otp/tng-input-otp.component.d.ts.map +1 -1
  68. package/src/lib/form/input-otp/tng-input-otp.component.js +55 -69
  69. package/src/lib/form/input-otp/tng-input-otp.component.js.map +1 -1
  70. package/src/lib/form/label/tng-label.component.d.ts +3 -0
  71. package/src/lib/form/label/tng-label.component.d.ts.map +1 -1
  72. package/src/lib/form/label/tng-label.component.js +12 -19
  73. package/src/lib/form/label/tng-label.component.js.map +1 -1
  74. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.d.ts +4 -0
  75. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.d.ts.map +1 -1
  76. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.js +40 -43
  77. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.component.js.map +1 -1
  78. package/src/lib/form/multiselect/tng-multiselect.component.d.ts +4 -0
  79. package/src/lib/form/multiselect/tng-multiselect.component.d.ts.map +1 -1
  80. package/src/lib/form/multiselect/tng-multiselect.component.js +49 -52
  81. package/src/lib/form/multiselect/tng-multiselect.component.js.map +1 -1
  82. package/src/lib/form/radio/tng-radio.component.d.ts +3 -0
  83. package/src/lib/form/radio/tng-radio.component.d.ts.map +1 -1
  84. package/src/lib/form/radio/tng-radio.component.js +18 -33
  85. package/src/lib/form/radio/tng-radio.component.js.map +1 -1
  86. package/src/lib/form/select/tng-select.component.d.ts +4 -0
  87. package/src/lib/form/select/tng-select.component.d.ts.map +1 -1
  88. package/src/lib/form/select/tng-select.component.js +52 -53
  89. package/src/lib/form/select/tng-select.component.js.map +1 -1
  90. package/src/lib/form/select/tng-select.slots.d.ts +5 -0
  91. package/src/lib/form/select/tng-select.slots.d.ts.map +1 -1
  92. package/src/lib/form/select/tng-select.slots.js +21 -17
  93. package/src/lib/form/select/tng-select.slots.js.map +1 -1
  94. package/src/lib/form/slider/tng-slider.component.d.ts +3 -0
  95. package/src/lib/form/slider/tng-slider.component.d.ts.map +1 -1
  96. package/src/lib/form/slider/tng-slider.component.js +14 -27
  97. package/src/lib/form/slider/tng-slider.component.js.map +1 -1
  98. package/src/lib/form/switch/tng-switch.component.d.ts +3 -0
  99. package/src/lib/form/switch/tng-switch.component.d.ts.map +1 -1
  100. package/src/lib/form/switch/tng-switch.component.js +15 -24
  101. package/src/lib/form/switch/tng-switch.component.js.map +1 -1
  102. package/src/lib/form/textarea/tng-textarea.component.d.ts +3 -0
  103. package/src/lib/form/textarea/tng-textarea.component.d.ts.map +1 -1
  104. package/src/lib/form/textarea/tng-textarea.component.js +19 -36
  105. package/src/lib/form/textarea/tng-textarea.component.js.map +1 -1
  106. package/src/lib/form/toggle/tng-toggle.component.d.ts +3 -0
  107. package/src/lib/form/toggle/tng-toggle.component.d.ts.map +1 -1
  108. package/src/lib/form/toggle/tng-toggle.component.js +41 -41
  109. package/src/lib/form/toggle/tng-toggle.component.js.map +1 -1
  110. package/src/lib/form/toggle-group/tng-toggle-group.component.d.ts +4 -0
  111. package/src/lib/form/toggle-group/tng-toggle-group.component.d.ts.map +1 -1
  112. package/src/lib/form/toggle-group/tng-toggle-group.component.js +28 -31
  113. package/src/lib/form/toggle-group/tng-toggle-group.component.js.map +1 -1
  114. package/src/lib/layout/accordion/tng-accordion.component.d.ts +10 -0
  115. package/src/lib/layout/accordion/tng-accordion.component.d.ts.map +1 -1
  116. package/src/lib/layout/accordion/tng-accordion.component.js +49 -148
  117. package/src/lib/layout/accordion/tng-accordion.component.js.map +1 -1
  118. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.d.ts +3 -0
  119. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.d.ts.map +1 -1
  120. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.js +10 -13
  121. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.component.js.map +1 -1
  122. package/src/lib/layout/card/tng-card.component.d.ts +21 -0
  123. package/src/lib/layout/card/tng-card.component.d.ts.map +1 -1
  124. package/src/lib/layout/card/tng-card.component.js +92 -136
  125. package/src/lib/layout/card/tng-card.component.js.map +1 -1
  126. package/src/lib/layout/collapsible/tng-collapsible.component.d.ts +3 -0
  127. package/src/lib/layout/collapsible/tng-collapsible.component.d.ts.map +1 -1
  128. package/src/lib/layout/collapsible/tng-collapsible.component.js +17 -24
  129. package/src/lib/layout/collapsible/tng-collapsible.component.js.map +1 -1
  130. package/src/lib/layout/drawer/tng-drawer.component.d.ts +4 -0
  131. package/src/lib/layout/drawer/tng-drawer.component.d.ts.map +1 -1
  132. package/src/lib/layout/drawer/tng-drawer.component.js +48 -51
  133. package/src/lib/layout/drawer/tng-drawer.component.js.map +1 -1
  134. package/src/lib/layout/grid/tng-grid.component.d.ts +8 -0
  135. package/src/lib/layout/grid/tng-grid.component.d.ts.map +1 -1
  136. package/src/lib/layout/grid/tng-grid.component.js +48 -110
  137. package/src/lib/layout/grid/tng-grid.component.js.map +1 -1
  138. package/src/lib/layout/index.d.ts +1 -8
  139. package/src/lib/layout/index.d.ts.map +1 -1
  140. package/src/lib/layout/index.js +5 -8
  141. package/src/lib/layout/index.js.map +1 -1
  142. package/src/lib/layout/separator/tng-separator.component.d.ts +3 -0
  143. package/src/lib/layout/separator/tng-separator.component.d.ts.map +1 -1
  144. package/src/lib/layout/separator/tng-separator.component.js +11 -16
  145. package/src/lib/layout/separator/tng-separator.component.js.map +1 -1
  146. package/src/lib/layout/stepper/tng-stepper.component.d.ts +3 -0
  147. package/src/lib/layout/stepper/tng-stepper.component.d.ts.map +1 -1
  148. package/src/lib/layout/stepper/tng-stepper.component.js +10 -13
  149. package/src/lib/layout/stepper/tng-stepper.component.js.map +1 -1
  150. package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.d.ts +4 -0
  151. package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.d.ts.map +1 -1
  152. package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.js +47 -49
  153. package/src/lib/navigation/breadcrumb/tng-breadcrumb-item.component.js.map +1 -1
  154. package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.d.ts +4 -0
  155. package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.d.ts.map +1 -1
  156. package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.js +16 -18
  157. package/src/lib/navigation/breadcrumb/tng-breadcrumb-link.component.js.map +1 -1
  158. package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.d.ts +4 -0
  159. package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.d.ts.map +1 -1
  160. package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.js +10 -12
  161. package/src/lib/navigation/breadcrumb/tng-breadcrumb-list.component.js.map +1 -1
  162. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator-template.directive.d.ts +3 -0
  163. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator-template.directive.d.ts.map +1 -1
  164. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator-template.directive.js +12 -10
  165. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator-template.directive.js.map +1 -1
  166. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.d.ts +4 -0
  167. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.d.ts.map +1 -1
  168. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.js +12 -14
  169. package/src/lib/navigation/breadcrumb/tng-breadcrumb-separator.component.js.map +1 -1
  170. package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.d.ts +4 -0
  171. package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.d.ts.map +1 -1
  172. package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.js +23 -25
  173. package/src/lib/navigation/breadcrumb/tng-breadcrumb.component.js.map +1 -1
  174. package/src/lib/navigation/context-menu/tng-context-menu.component.d.ts +5 -0
  175. package/src/lib/navigation/context-menu/tng-context-menu.component.d.ts.map +1 -1
  176. package/src/lib/navigation/context-menu/tng-context-menu.component.js +24 -26
  177. package/src/lib/navigation/context-menu/tng-context-menu.component.js.map +1 -1
  178. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.d.ts +4 -0
  179. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.d.ts.map +1 -1
  180. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.js +19 -23
  181. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.component.js.map +1 -1
  182. package/src/lib/navigation/index.d.ts +0 -12
  183. package/src/lib/navigation/index.d.ts.map +1 -1
  184. package/src/lib/navigation/index.js +4 -12
  185. package/src/lib/navigation/index.js.map +1 -1
  186. package/src/lib/navigation/menu/tng-menu-trigger-for.directive.d.ts +3 -0
  187. package/src/lib/navigation/menu/tng-menu-trigger-for.directive.d.ts.map +1 -1
  188. package/src/lib/navigation/menu/tng-menu-trigger-for.directive.js +22 -20
  189. package/src/lib/navigation/menu/tng-menu-trigger-for.directive.js.map +1 -1
  190. package/src/lib/navigation/menu/tng-menu.component.d.ts +5 -0
  191. package/src/lib/navigation/menu/tng-menu.component.d.ts.map +1 -1
  192. package/src/lib/navigation/menu/tng-menu.component.js +21 -23
  193. package/src/lib/navigation/menu/tng-menu.component.js.map +1 -1
  194. package/src/lib/navigation/menubar/tng-menubar.component.d.ts +5 -0
  195. package/src/lib/navigation/menubar/tng-menubar.component.d.ts.map +1 -1
  196. package/src/lib/navigation/menubar/tng-menubar.component.js +20 -22
  197. package/src/lib/navigation/menubar/tng-menubar.component.js.map +1 -1
  198. package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.d.ts +4 -0
  199. package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.d.ts.map +1 -1
  200. package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.js +11 -13
  201. package/src/lib/navigation/navigation-menu/tng-navigation-menu.component.js.map +1 -1
  202. package/src/lib/navigation/tabs/tng-tabs.component.d.ts +5 -0
  203. package/src/lib/navigation/tabs/tng-tabs.component.d.ts.map +1 -1
  204. package/src/lib/navigation/tabs/tng-tabs.component.js +32 -34
  205. package/src/lib/navigation/tabs/tng-tabs.component.js.map +1 -1
  206. package/src/lib/navigation/toolbar/tng-toolbar.component.d.ts +4 -0
  207. package/src/lib/navigation/toolbar/tng-toolbar.component.d.ts.map +1 -1
  208. package/src/lib/navigation/toolbar/tng-toolbar.component.js +11 -13
  209. package/src/lib/navigation/toolbar/tng-toolbar.component.js.map +1 -1
  210. package/src/lib/overlay/dialog/tng-dialog.component.d.ts +4 -0
  211. package/src/lib/overlay/dialog/tng-dialog.component.d.ts.map +1 -1
  212. package/src/lib/overlay/dialog/tng-dialog.component.js +18 -25
  213. package/src/lib/overlay/dialog/tng-dialog.component.js.map +1 -1
  214. package/src/lib/overlay/index.d.ts +0 -3
  215. package/src/lib/overlay/index.d.ts.map +1 -1
  216. package/src/lib/overlay/index.js +4 -3
  217. package/src/lib/overlay/index.js.map +1 -1
  218. package/src/lib/overlay/popover/tng-popover.component.d.ts +4 -0
  219. package/src/lib/overlay/popover/tng-popover.component.d.ts.map +1 -1
  220. package/src/lib/overlay/popover/tng-popover.component.js +23 -37
  221. package/src/lib/overlay/popover/tng-popover.component.js.map +1 -1
  222. package/src/lib/overlay/tooltip/tng-tooltip.component.d.ts +4 -0
  223. package/src/lib/overlay/tooltip/tng-tooltip.component.d.ts.map +1 -1
  224. package/src/lib/overlay/tooltip/tng-tooltip.component.js +17 -21
  225. package/src/lib/overlay/tooltip/tng-tooltip.component.js.map +1 -1
  226. package/src/lib/utility/avatar/tng-avatar.component.d.ts +4 -1
  227. package/src/lib/utility/avatar/tng-avatar.component.d.ts.map +1 -1
  228. package/src/lib/utility/avatar/tng-avatar.component.js +20 -22
  229. package/src/lib/utility/avatar/tng-avatar.component.js.map +1 -1
  230. package/src/lib/utility/badge/tng-badge.component.d.ts +4 -0
  231. package/src/lib/utility/badge/tng-badge.component.d.ts.map +1 -1
  232. package/src/lib/utility/badge/tng-badge.component.js +13 -10
  233. package/src/lib/utility/badge/tng-badge.component.js.map +1 -1
  234. package/src/lib/utility/button/tng-button.component.d.ts +4 -1
  235. package/src/lib/utility/button/tng-button.component.d.ts.map +1 -1
  236. package/src/lib/utility/button/tng-button.component.js +19 -29
  237. package/src/lib/utility/button/tng-button.component.js.map +1 -1
  238. package/src/lib/utility/code-block/tng-code-block.component.d.ts +4 -0
  239. package/src/lib/utility/code-block/tng-code-block.component.d.ts.map +1 -1
  240. package/src/lib/utility/code-block/tng-code-block.component.js +73 -103
  241. package/src/lib/utility/code-block/tng-code-block.component.js.map +1 -1
  242. package/src/lib/utility/copy-button/tng-copy-button.component.d.ts +4 -1
  243. package/src/lib/utility/copy-button/tng-copy-button.component.d.ts.map +1 -1
  244. package/src/lib/utility/copy-button/tng-copy-button.component.js +28 -36
  245. package/src/lib/utility/copy-button/tng-copy-button.component.js.map +1 -1
  246. package/src/lib/utility/index.d.ts +1 -9
  247. package/src/lib/utility/index.d.ts.map +1 -1
  248. package/src/lib/utility/index.js +5 -8
  249. package/src/lib/utility/index.js.map +1 -1
  250. package/src/lib/utility/tag/tng-tag.component.d.ts +4 -1
  251. package/src/lib/utility/tag/tng-tag.component.d.ts.map +1 -1
  252. package/src/lib/utility/tag/tng-tag.component.js +18 -24
  253. package/src/lib/utility/tag/tng-tag.component.js.map +1 -1
  254. package/src/lib/utility/tree/tng-tree.component.d.ts +4 -1
  255. package/src/lib/utility/tree/tng-tree.component.d.ts.map +1 -1
  256. package/src/lib/utility/tree/tng-tree.component.js +23 -25
  257. package/src/lib/utility/tree/tng-tree.component.js.map +1 -1
@@ -1,6 +1,6 @@
1
- import { __decorate } from "tslib";
2
1
  import { booleanAttribute, Component, computed, input, output, signal, } from '@angular/core';
3
2
  import { TngCopy } from '@tailng-ui/primitives';
3
+ import * as i0 from "@angular/core";
4
4
  const defaultResetDelay = 1500;
5
5
  function toNormalizedCopyError(value) {
6
6
  if (value instanceof Error) {
@@ -30,27 +30,21 @@ export function resolveTngCopyButtonIconState(state) {
30
30
  }
31
31
  return 'copy';
32
32
  }
33
- let TngCopyButtonComponent = class TngCopyButtonComponent {
34
- appearance = input('outline');
35
- copiedIconText = input('✓');
36
- copyLabel = input('Copy');
37
- copyIconText = input('⧉');
38
- copiedLabel = input('Copied');
39
- copyingLabel = input('Copying...');
40
- disabled = input(false, {
41
- transform: booleanAttribute,
42
- });
43
- errorLabel = input('Copy failed');
44
- from = input(null);
45
- ignoreSelectors = input(null);
46
- resetDelay = input(defaultResetDelay, {
47
- transform: coerceTngCopyButtonResetDelay,
48
- });
49
- size = input('md');
50
- showIcon = input(true, {
51
- transform: booleanAttribute,
52
- });
53
- text = input(undefined);
33
+ export class TngCopyButtonComponent {
34
+ appearance = input('outline', ...(ngDevMode ? [{ debugName: "appearance" }] : []));
35
+ copiedIconText = input('✓', ...(ngDevMode ? [{ debugName: "copiedIconText" }] : []));
36
+ copyLabel = input('Copy', ...(ngDevMode ? [{ debugName: "copyLabel" }] : []));
37
+ copyIconText = input('⧉', ...(ngDevMode ? [{ debugName: "copyIconText" }] : []));
38
+ copiedLabel = input('Copied', ...(ngDevMode ? [{ debugName: "copiedLabel" }] : []));
39
+ copyingLabel = input('Copying...', ...(ngDevMode ? [{ debugName: "copyingLabel" }] : []));
40
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: booleanAttribute });
41
+ errorLabel = input('Copy failed', ...(ngDevMode ? [{ debugName: "errorLabel" }] : []));
42
+ from = input(null, ...(ngDevMode ? [{ debugName: "from" }] : []));
43
+ ignoreSelectors = input(null, ...(ngDevMode ? [{ debugName: "ignoreSelectors" }] : []));
44
+ resetDelay = input(defaultResetDelay, { ...(ngDevMode ? { debugName: "resetDelay" } : {}), transform: coerceTngCopyButtonResetDelay });
45
+ size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : []));
46
+ showIcon = input(true, { ...(ngDevMode ? { debugName: "showIcon" } : {}), transform: booleanAttribute });
47
+ text = input(undefined, ...(ngDevMode ? [{ debugName: "text" }] : []));
54
48
  tngCopied = output();
55
49
  tngCopyError = output();
56
50
  liveMessage = computed(() => {
@@ -62,7 +56,7 @@ let TngCopyButtonComponent = class TngCopyButtonComponent {
62
56
  return this.errorLabel();
63
57
  }
64
58
  return '';
65
- });
59
+ }, ...(ngDevMode ? [{ debugName: "liveMessage" }] : []));
66
60
  label = computed(() => {
67
61
  const state = this.state();
68
62
  if (state === 'copying') {
@@ -75,9 +69,9 @@ let TngCopyButtonComponent = class TngCopyButtonComponent {
75
69
  return this.errorLabel();
76
70
  }
77
71
  return this.copyLabel();
78
- });
79
- iconState = computed(() => resolveTngCopyButtonIconState(this.state()));
80
- state = signal('idle');
72
+ }, ...(ngDevMode ? [{ debugName: "label" }] : []));
73
+ iconState = computed(() => resolveTngCopyButtonIconState(this.state()), ...(ngDevMode ? [{ debugName: "iconState" }] : []));
74
+ state = signal('idle', ...(ngDevMode ? [{ debugName: "state" }] : []));
81
75
  resetTimer = null;
82
76
  ngOnDestroy() {
83
77
  this.clearResetTimer();
@@ -114,14 +108,12 @@ let TngCopyButtonComponent = class TngCopyButtonComponent {
114
108
  this.resetTimer = null;
115
109
  }, this.resetDelay());
116
110
  }
117
- };
118
- TngCopyButtonComponent = __decorate([
119
- Component({
120
- selector: 'tng-copy-button',
121
- imports: [TngCopy],
122
- templateUrl: './tng-copy-button.component.html',
123
- styleUrl: './tng-copy-button.component.css',
124
- })
125
- ], TngCopyButtonComponent);
126
- export { TngCopyButtonComponent };
111
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngCopyButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
112
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.1", type: TngCopyButtonComponent, isStandalone: true, selector: "tng-copy-button", inputs: { appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, copiedIconText: { classPropertyName: "copiedIconText", publicName: "copiedIconText", isSignal: true, isRequired: false, transformFunction: null }, copyLabel: { classPropertyName: "copyLabel", publicName: "copyLabel", isSignal: true, isRequired: false, transformFunction: null }, copyIconText: { classPropertyName: "copyIconText", publicName: "copyIconText", isSignal: true, isRequired: false, transformFunction: null }, copiedLabel: { classPropertyName: "copiedLabel", publicName: "copiedLabel", isSignal: true, isRequired: false, transformFunction: null }, copyingLabel: { classPropertyName: "copyingLabel", publicName: "copyingLabel", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, errorLabel: { classPropertyName: "errorLabel", publicName: "errorLabel", isSignal: true, isRequired: false, transformFunction: null }, from: { classPropertyName: "from", publicName: "from", isSignal: true, isRequired: false, transformFunction: null }, ignoreSelectors: { classPropertyName: "ignoreSelectors", publicName: "ignoreSelectors", isSignal: true, isRequired: false, transformFunction: null }, resetDelay: { classPropertyName: "resetDelay", publicName: "resetDelay", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, showIcon: { classPropertyName: "showIcon", publicName: "showIcon", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { tngCopied: "tngCopied", tngCopyError: "tngCopyError" }, ngImport: i0, template: "<button\n tngCopy\n class=\"tng-copy-button\"\n type=\"button\"\n [disabled]=\"disabled()\"\n [tngCopyText]=\"text()\"\n [tngCopyFrom]=\"from()\"\n [tngCopyIgnoreSelectors]=\"ignoreSelectors()\"\n [tngCopyDisabled]=\"disabled()\"\n [attr.data-appearance]=\"appearance()\"\n [attr.data-size]=\"size()\"\n [attr.data-state]=\"state()\"\n (click)=\"onHostClick()\"\n (tngCopied)=\"onPrimitiveCopied($event)\"\n (tngCopyError)=\"onPrimitiveCopyError($event)\"\n>\n @if (showIcon()) {\n <span class=\"tng-copy-button__icon\" aria-hidden=\"true\">\n @if (iconState() === 'copied') {\n <ng-content select=\"[copiedIcon]\">{{ copiedIconText() }}</ng-content>\n } @else {\n <ng-content select=\"[copyIcon]\">{{ copyIconText() }}</ng-content>\n }\n </span>\n }\n <span class=\"tng-copy-button__label\">{{ label() }}</span>\n</button>\n\n<span class=\"tng-copy-live-region\" aria-live=\"polite\">{{ liveMessage() }}</span>\n", styles: [":host {\n display: inline-flex;\n}\n\n.tng-copy-button {\n align-items: center;\n appearance: none;\n border: 1px solid transparent;\n border-radius: 0.6rem;\n cursor: pointer;\n display: inline-flex;\n font-family: inherit;\n font-size: 0.875rem;\n font-weight: 600;\n gap: 0.45rem;\n justify-content: center;\n line-height: 1;\n transition:\n background-color 120ms ease,\n border-color 120ms ease,\n color 120ms ease,\n opacity 120ms ease;\n}\n\n.tng-copy-button[data-size='sm'] {\n min-height: 2rem;\n padding: 0 0.7rem;\n}\n\n.tng-copy-button[data-size='md'] {\n min-height: 2.5rem;\n padding: 0 0.95rem;\n}\n\n.tng-copy-button[data-appearance='solid'] {\n background: var(--tng-semantic-accent-brand);\n color: var(--tng-color-white);\n}\n\n.tng-copy-button[data-appearance='outline'] {\n background: transparent;\n border-color: var(--tng-semantic-border-strong);\n color: var(--tng-semantic-foreground-primary);\n}\n\n.tng-copy-button[data-appearance='ghost'] {\n background: transparent;\n color: var(--tng-semantic-foreground-primary);\n}\n\n.tng-copy-button[data-state='copied'] {\n background: var(--tng-semantic-accent-success);\n border-color: transparent;\n color: var(--tng-color-white);\n}\n\n.tng-copy-button[data-state='error'] {\n background: var(--tng-semantic-accent-danger);\n border-color: transparent;\n color: var(--tng-color-white);\n}\n\n.tng-copy-button:focus-visible {\n box-shadow: 0 0 0 3px var(--tng-semantic-focus-ring);\n outline: none;\n}\n\n.tng-copy-button:disabled,\n.tng-copy-button[data-copy-disabled] {\n cursor: not-allowed;\n opacity: 0.55;\n}\n\n.tng-copy-button__icon {\n align-items: center;\n display: inline-flex;\n font-size: 1em;\n justify-content: center;\n line-height: 1;\n}\n\n.tng-copy-button__label {\n line-height: 1;\n}\n\n.tng-copy-live-region {\n border: 0;\n clip: rect(0 0 0 0);\n clip-path: inset(50%);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n}\n"], dependencies: [{ kind: "directive", type: TngCopy, selector: "[tngCopy], [tngCopyButton]", inputs: ["tngCopyButtonText", "tngCopyButtonTarget", "tngCopyButtonFormat", "tngCopyButtonSuccessDurationMs", "tngCopyButtonDisabled", "tngCopyButtonHotkey", "tngCopyButtonAnnounce", "tngCopyButtonSuccessMessage", "tngCopyButtonErrorMessage", "tngCopyDisabled", "tngCopyFrom", "tngCopyIgnoreSelectors", "tngCopyText"], outputs: ["tngCopy", "tngCopied", "tngCopySuccess", "tngCopyError", "tngCopyAnnounced"], exportAs: ["tngCopy"] }] });
113
+ }
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngCopyButtonComponent, decorators: [{
115
+ type: Component,
116
+ args: [{ selector: 'tng-copy-button', imports: [TngCopy], template: "<button\n tngCopy\n class=\"tng-copy-button\"\n type=\"button\"\n [disabled]=\"disabled()\"\n [tngCopyText]=\"text()\"\n [tngCopyFrom]=\"from()\"\n [tngCopyIgnoreSelectors]=\"ignoreSelectors()\"\n [tngCopyDisabled]=\"disabled()\"\n [attr.data-appearance]=\"appearance()\"\n [attr.data-size]=\"size()\"\n [attr.data-state]=\"state()\"\n (click)=\"onHostClick()\"\n (tngCopied)=\"onPrimitiveCopied($event)\"\n (tngCopyError)=\"onPrimitiveCopyError($event)\"\n>\n @if (showIcon()) {\n <span class=\"tng-copy-button__icon\" aria-hidden=\"true\">\n @if (iconState() === 'copied') {\n <ng-content select=\"[copiedIcon]\">{{ copiedIconText() }}</ng-content>\n } @else {\n <ng-content select=\"[copyIcon]\">{{ copyIconText() }}</ng-content>\n }\n </span>\n }\n <span class=\"tng-copy-button__label\">{{ label() }}</span>\n</button>\n\n<span class=\"tng-copy-live-region\" aria-live=\"polite\">{{ liveMessage() }}</span>\n", styles: [":host {\n display: inline-flex;\n}\n\n.tng-copy-button {\n align-items: center;\n appearance: none;\n border: 1px solid transparent;\n border-radius: 0.6rem;\n cursor: pointer;\n display: inline-flex;\n font-family: inherit;\n font-size: 0.875rem;\n font-weight: 600;\n gap: 0.45rem;\n justify-content: center;\n line-height: 1;\n transition:\n background-color 120ms ease,\n border-color 120ms ease,\n color 120ms ease,\n opacity 120ms ease;\n}\n\n.tng-copy-button[data-size='sm'] {\n min-height: 2rem;\n padding: 0 0.7rem;\n}\n\n.tng-copy-button[data-size='md'] {\n min-height: 2.5rem;\n padding: 0 0.95rem;\n}\n\n.tng-copy-button[data-appearance='solid'] {\n background: var(--tng-semantic-accent-brand);\n color: var(--tng-color-white);\n}\n\n.tng-copy-button[data-appearance='outline'] {\n background: transparent;\n border-color: var(--tng-semantic-border-strong);\n color: var(--tng-semantic-foreground-primary);\n}\n\n.tng-copy-button[data-appearance='ghost'] {\n background: transparent;\n color: var(--tng-semantic-foreground-primary);\n}\n\n.tng-copy-button[data-state='copied'] {\n background: var(--tng-semantic-accent-success);\n border-color: transparent;\n color: var(--tng-color-white);\n}\n\n.tng-copy-button[data-state='error'] {\n background: var(--tng-semantic-accent-danger);\n border-color: transparent;\n color: var(--tng-color-white);\n}\n\n.tng-copy-button:focus-visible {\n box-shadow: 0 0 0 3px var(--tng-semantic-focus-ring);\n outline: none;\n}\n\n.tng-copy-button:disabled,\n.tng-copy-button[data-copy-disabled] {\n cursor: not-allowed;\n opacity: 0.55;\n}\n\n.tng-copy-button__icon {\n align-items: center;\n display: inline-flex;\n font-size: 1em;\n justify-content: center;\n line-height: 1;\n}\n\n.tng-copy-button__label {\n line-height: 1;\n}\n\n.tng-copy-live-region {\n border: 0;\n clip: rect(0 0 0 0);\n clip-path: inset(50%);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n}\n"] }]
117
+ }], propDecorators: { appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], copiedIconText: [{ type: i0.Input, args: [{ isSignal: true, alias: "copiedIconText", required: false }] }], copyLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "copyLabel", required: false }] }], copyIconText: [{ type: i0.Input, args: [{ isSignal: true, alias: "copyIconText", required: false }] }], copiedLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "copiedLabel", required: false }] }], copyingLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "copyingLabel", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], errorLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorLabel", required: false }] }], from: [{ type: i0.Input, args: [{ isSignal: true, alias: "from", required: false }] }], ignoreSelectors: [{ type: i0.Input, args: [{ isSignal: true, alias: "ignoreSelectors", required: false }] }], resetDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "resetDelay", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], showIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "showIcon", required: false }] }], text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }], tngCopied: [{ type: i0.Output, args: ["tngCopied"] }], tngCopyError: [{ type: i0.Output, args: ["tngCopyError"] }] } });
118
+ export { TngCopyButtonComponent as TngCopyButton };
127
119
  //# sourceMappingURL=tng-copy-button.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tng-copy-button.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/copy-button/tng-copy-button.component.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n booleanAttribute,\n Component,\n computed,\n input,\n output,\n signal,\n type OnDestroy,\n} from '@angular/core';\nimport { TngCopy } from '@tailng-ui/primitives';\nimport type { TngCopyFromTarget, TngCopyIgnoreSelectorsInput } from '@tailng-ui/primitives';\n\nconst defaultResetDelay = 1500;\n\ntype TngCopyButtonState = 'copied' | 'copying' | 'error' | 'idle';\nexport type TngCopyButtonAppearance = 'ghost' | 'outline' | 'solid';\nexport type TngCopyButtonSize = 'md' | 'sm';\ntype TngCopyButtonIconState = 'copied' | 'copy';\n\nfunction toNormalizedCopyError(value: unknown): Error {\n if (value instanceof Error) {\n return value;\n }\n\n if (typeof value === 'object' && value !== null && 'error' in value) {\n const nested = (value as { error: unknown }).error;\n if (nested instanceof Error) {\n return nested;\n }\n }\n\n return new Error('Copy failed.');\n}\n\nfunction toRoundedPositiveNumber(value: number): number {\n return Math.max(0, Math.round(value));\n}\n\nexport function coerceTngCopyButtonResetDelay(value: number | string): number {\n const numericValue = typeof value === 'number' ? value : Number(value);\n if (!Number.isFinite(numericValue)) {\n return defaultResetDelay;\n }\n\n return toRoundedPositiveNumber(numericValue);\n}\n\nexport function resolveTngCopyButtonIconState(state: TngCopyButtonState): TngCopyButtonIconState {\n if (state === 'copied') {\n return 'copied';\n }\n\n return 'copy';\n}\n\n@Component({\n selector: 'tng-copy-button',\n imports: [TngCopy],\n templateUrl: './tng-copy-button.component.html',\n styleUrl: './tng-copy-button.component.css',\n})\nexport class TngCopyButtonComponent implements OnDestroy {\n public readonly appearance = input<TngCopyButtonAppearance>('outline');\n public readonly copiedIconText = input<string>('✓');\n public readonly copyLabel = input<string>('Copy');\n public readonly copyIconText = input<string>('⧉');\n public readonly copiedLabel = input<string>('Copied');\n public readonly copyingLabel = input<string>('Copying...');\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly errorLabel = input<string>('Copy failed');\n public readonly from = input<TngCopyFromTarget>(null);\n public readonly ignoreSelectors = input<TngCopyIgnoreSelectorsInput>(null);\n public readonly resetDelay = input<number, number | string>(defaultResetDelay, {\n transform: coerceTngCopyButtonResetDelay,\n });\n public readonly size = input<TngCopyButtonSize>('md');\n public readonly showIcon = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly text = input<string | null | undefined>(undefined);\n\n public readonly tngCopied = output<string>();\n public readonly tngCopyError = output<Error>();\n\n protected readonly liveMessage = computed((): string => {\n const state = this.state();\n if (state === 'copied') {\n return this.copiedLabel();\n }\n\n if (state === 'error') {\n return this.errorLabel();\n }\n\n return '';\n });\n\n protected readonly label = computed((): string => {\n const state = this.state();\n if (state === 'copying') {\n return this.copyingLabel();\n }\n\n if (state === 'copied') {\n return this.copiedLabel();\n }\n\n if (state === 'error') {\n return this.errorLabel();\n }\n\n return this.copyLabel();\n });\n\n protected readonly iconState = computed<TngCopyButtonIconState>(() =>\n resolveTngCopyButtonIconState(this.state()),\n );\n\n protected readonly state = signal<TngCopyButtonState>('idle');\n\n private resetTimer: ReturnType<typeof setTimeout> | null = null;\n\n public ngOnDestroy(): void {\n this.clearResetTimer();\n }\n\n protected onHostClick(): void {\n if (this.disabled()) {\n return;\n }\n\n this.state.set('copying');\n }\n\n protected onPrimitiveCopied(payload: string): void {\n this.state.set('copied');\n this.tngCopied.emit(payload);\n this.scheduleReset();\n }\n\n protected onPrimitiveCopyError(...args: readonly unknown[]): void {\n const [error] = args;\n const normalizedError = toNormalizedCopyError(error);\n this.state.set('error');\n this.tngCopyError.emit(normalizedError);\n this.scheduleReset();\n }\n\n private clearResetTimer(): void {\n if (this.resetTimer === null) {\n return;\n }\n\n clearTimeout(this.resetTimer);\n this.resetTimer = null;\n }\n\n private scheduleReset(): void {\n this.clearResetTimer();\n this.resetTimer = setTimeout((): void => {\n this.state.set('idle');\n this.resetTimer = null;\n }, this.resetDelay());\n }\n}\n"]}
1
+ {"version":3,"file":"tng-copy-button.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/copy-button/tng-copy-button.component.ts","../../../../../../../../libs/tailng-ui/components/src/lib/utility/copy-button/tng-copy-button.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n booleanAttribute,\n Component,\n computed,\n input,\n output,\n signal,\n type OnDestroy,\n} from '@angular/core';\nimport { TngCopy } from '@tailng-ui/primitives';\nimport type { TngCopyFromTarget, TngCopyIgnoreSelectorsInput } from '@tailng-ui/primitives';\n\nconst defaultResetDelay = 1500;\n\ntype TngCopyButtonState = 'copied' | 'copying' | 'error' | 'idle';\nexport type TngCopyButtonAppearance = 'ghost' | 'outline' | 'solid';\nexport type TngCopyButtonSize = 'md' | 'sm';\ntype TngCopyButtonIconState = 'copied' | 'copy';\n\nfunction toNormalizedCopyError(value: unknown): Error {\n if (value instanceof Error) {\n return value;\n }\n\n if (typeof value === 'object' && value !== null && 'error' in value) {\n const nested = (value as { error: unknown }).error;\n if (nested instanceof Error) {\n return nested;\n }\n }\n\n return new Error('Copy failed.');\n}\n\nfunction toRoundedPositiveNumber(value: number): number {\n return Math.max(0, Math.round(value));\n}\n\nexport function coerceTngCopyButtonResetDelay(value: number | string): number {\n const numericValue = typeof value === 'number' ? value : Number(value);\n if (!Number.isFinite(numericValue)) {\n return defaultResetDelay;\n }\n\n return toRoundedPositiveNumber(numericValue);\n}\n\nexport function resolveTngCopyButtonIconState(state: TngCopyButtonState): TngCopyButtonIconState {\n if (state === 'copied') {\n return 'copied';\n }\n\n return 'copy';\n}\n\n@Component({\n selector: 'tng-copy-button',\n imports: [TngCopy],\n templateUrl: './tng-copy-button.component.html',\n styleUrl: './tng-copy-button.component.css',\n})\nexport class TngCopyButtonComponent implements OnDestroy {\n public readonly appearance = input<TngCopyButtonAppearance>('outline');\n public readonly copiedIconText = input<string>('✓');\n public readonly copyLabel = input<string>('Copy');\n public readonly copyIconText = input<string>('⧉');\n public readonly copiedLabel = input<string>('Copied');\n public readonly copyingLabel = input<string>('Copying...');\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly errorLabel = input<string>('Copy failed');\n public readonly from = input<TngCopyFromTarget>(null);\n public readonly ignoreSelectors = input<TngCopyIgnoreSelectorsInput>(null);\n public readonly resetDelay = input<number, number | string>(defaultResetDelay, {\n transform: coerceTngCopyButtonResetDelay,\n });\n public readonly size = input<TngCopyButtonSize>('md');\n public readonly showIcon = input<boolean, boolean | string>(true, {\n transform: booleanAttribute,\n });\n public readonly text = input<string | null | undefined>(undefined);\n\n public readonly tngCopied = output<string>();\n public readonly tngCopyError = output<Error>();\n\n protected readonly liveMessage = computed((): string => {\n const state = this.state();\n if (state === 'copied') {\n return this.copiedLabel();\n }\n\n if (state === 'error') {\n return this.errorLabel();\n }\n\n return '';\n });\n\n protected readonly label = computed((): string => {\n const state = this.state();\n if (state === 'copying') {\n return this.copyingLabel();\n }\n\n if (state === 'copied') {\n return this.copiedLabel();\n }\n\n if (state === 'error') {\n return this.errorLabel();\n }\n\n return this.copyLabel();\n });\n\n protected readonly iconState = computed<TngCopyButtonIconState>(() =>\n resolveTngCopyButtonIconState(this.state()),\n );\n\n protected readonly state = signal<TngCopyButtonState>('idle');\n\n private resetTimer: ReturnType<typeof setTimeout> | null = null;\n\n public ngOnDestroy(): void {\n this.clearResetTimer();\n }\n\n protected onHostClick(): void {\n if (this.disabled()) {\n return;\n }\n\n this.state.set('copying');\n }\n\n protected onPrimitiveCopied(payload: string): void {\n this.state.set('copied');\n this.tngCopied.emit(payload);\n this.scheduleReset();\n }\n\n protected onPrimitiveCopyError(...args: readonly unknown[]): void {\n const [error] = args;\n const normalizedError = toNormalizedCopyError(error);\n this.state.set('error');\n this.tngCopyError.emit(normalizedError);\n this.scheduleReset();\n }\n\n private clearResetTimer(): void {\n if (this.resetTimer === null) {\n return;\n }\n\n clearTimeout(this.resetTimer);\n this.resetTimer = null;\n }\n\n private scheduleReset(): void {\n this.clearResetTimer();\n this.resetTimer = setTimeout((): void => {\n this.state.set('idle');\n this.resetTimer = null;\n }, this.resetDelay());\n }\n}\nexport { TngCopyButtonComponent as TngCopyButton };\n","<button\n tngCopy\n class=\"tng-copy-button\"\n type=\"button\"\n [disabled]=\"disabled()\"\n [tngCopyText]=\"text()\"\n [tngCopyFrom]=\"from()\"\n [tngCopyIgnoreSelectors]=\"ignoreSelectors()\"\n [tngCopyDisabled]=\"disabled()\"\n [attr.data-appearance]=\"appearance()\"\n [attr.data-size]=\"size()\"\n [attr.data-state]=\"state()\"\n (click)=\"onHostClick()\"\n (tngCopied)=\"onPrimitiveCopied($event)\"\n (tngCopyError)=\"onPrimitiveCopyError($event)\"\n>\n @if (showIcon()) {\n <span class=\"tng-copy-button__icon\" aria-hidden=\"true\">\n @if (iconState() === 'copied') {\n <ng-content select=\"[copiedIcon]\">{{ copiedIconText() }}</ng-content>\n } @else {\n <ng-content select=\"[copyIcon]\">{{ copyIconText() }}</ng-content>\n }\n </span>\n }\n <span class=\"tng-copy-button__label\">{{ label() }}</span>\n</button>\n\n<span class=\"tng-copy-live-region\" aria-live=\"polite\">{{ liveMessage() }}</span>\n"]}
@@ -1,17 +1,9 @@
1
1
  export * from './avatar/tng-avatar.component';
2
- export { TngAvatarComponent as TngAvatar } from './avatar/tng-avatar.component';
3
2
  export * from './badge/tng-badge.component';
4
- export { TngBadgeComponent as TngBadge } from './badge/tng-badge.component';
5
3
  export * from './button/tng-button.component';
6
- export { TngButtonComponent as TngButton } from './button/tng-button.component';
7
4
  export * from './code-block/tng-code-block.component';
8
- export { TngCodeBlockComponent as TngCodeBlock } from './code-block/tng-code-block.component';
9
- export { TNG_CODE_HIGHLIGHTING_CONFIG, TNG_CODE_HIGHLIGHTING_RESOLVER, TNG_BUILTIN_CODE_HIGHLIGHTERS, TNG_DEFAULT_CODE_HIGHLIGHTER_ID, TngCodeHighlightingResolver, createTngCodeHighlighterAdapter, escapeTngCodeHtml, highlightWithTngCodeHighlightingConfig, normalizeTngCodeHighlighterId, normalizeTngCodeLanguage, provideTngCodeHighlighting, resolveTngCodeHighlightingConfig, tngPlainCodeHighlighterAdapter, } from './code-block/highlighting';
10
- export type { TngCodeHighlightInput, TngCodeHighlightingResolverLike, TngCodeHighlightRequest, TngCodeHighlightResult, TngCodeHighlighterAdapter, TngProvideCodeHighlightingOptions, TngResolvedCodeHighlightingConfig, } from './code-block/highlighting';
5
+ export * from './code-block/highlighting';
11
6
  export * from './copy-button/tng-copy-button.component';
12
- export { TngCopyButtonComponent as TngCopyButton } from './copy-button/tng-copy-button.component';
13
7
  export * from './tag/tng-tag.component';
14
- export { TngTagComponent as TngTag } from './tag/tng-tag.component';
15
8
  export * from './tree/tng-tree.component';
16
- export { TngTreeComponent as TngTree } from './tree/tng-tree.component';
17
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../libs/tailng-ui/components/src/lib/utility/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,IAAI,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAChF,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,IAAI,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5E,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,IAAI,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAChF,cAAc,uCAAuC,CAAC;AACtD,OAAO,EAAE,qBAAqB,IAAI,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAC9F,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,EAC9B,6BAA6B,EAC7B,+BAA+B,EAC/B,2BAA2B,EAC3B,+BAA+B,EAC/B,iBAAiB,EACjB,sCAAsC,EACtC,6BAA6B,EAC7B,wBAAwB,EACxB,0BAA0B,EAC1B,gCAAgC,EAChC,8BAA8B,GAC/B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,qBAAqB,EACrB,+BAA+B,EAC/B,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,EACzB,iCAAiC,EACjC,iCAAiC,GAClC,MAAM,2BAA2B,CAAC;AACnC,cAAc,yCAAyC,CAAC;AACxD,OAAO,EAAE,sBAAsB,IAAI,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAClG,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,eAAe,IAAI,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACpE,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,gBAAgB,IAAI,OAAO,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../libs/tailng-ui/components/src/lib/utility/index.ts"],"names":[],"mappings":"AAKA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uCAAuC,CAAC;AACtD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yCAAyC,CAAC;AACxD,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC"}
@@ -1,16 +1,13 @@
1
+ // Utility components
2
+ //
3
+ // Note: keep exports aligned with `src/index.ts` (root barrel) so the public API stays stable.
4
+ // The root barrel will re-export this file.
1
5
  export * from './avatar/tng-avatar.component';
2
- export { TngAvatarComponent as TngAvatar } from './avatar/tng-avatar.component';
3
6
  export * from './badge/tng-badge.component';
4
- export { TngBadgeComponent as TngBadge } from './badge/tng-badge.component';
5
7
  export * from './button/tng-button.component';
6
- export { TngButtonComponent as TngButton } from './button/tng-button.component';
7
8
  export * from './code-block/tng-code-block.component';
8
- export { TngCodeBlockComponent as TngCodeBlock } from './code-block/tng-code-block.component';
9
- export { TNG_CODE_HIGHLIGHTING_CONFIG, TNG_CODE_HIGHLIGHTING_RESOLVER, TNG_BUILTIN_CODE_HIGHLIGHTERS, TNG_DEFAULT_CODE_HIGHLIGHTER_ID, TngCodeHighlightingResolver, createTngCodeHighlighterAdapter, escapeTngCodeHtml, highlightWithTngCodeHighlightingConfig, normalizeTngCodeHighlighterId, normalizeTngCodeLanguage, provideTngCodeHighlighting, resolveTngCodeHighlightingConfig, tngPlainCodeHighlighterAdapter, } from './code-block/highlighting';
9
+ export * from './code-block/highlighting';
10
10
  export * from './copy-button/tng-copy-button.component';
11
- export { TngCopyButtonComponent as TngCopyButton } from './copy-button/tng-copy-button.component';
12
11
  export * from './tag/tng-tag.component';
13
- export { TngTagComponent as TngTag } from './tag/tng-tag.component';
14
12
  export * from './tree/tng-tree.component';
15
- export { TngTreeComponent as TngTree } from './tree/tng-tree.component';
16
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/tailng-ui/components/src/lib/utility/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,IAAI,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAChF,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,iBAAiB,IAAI,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5E,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,kBAAkB,IAAI,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAChF,cAAc,uCAAuC,CAAC;AACtD,OAAO,EAAE,qBAAqB,IAAI,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAC9F,OAAO,EACL,4BAA4B,EAC5B,8BAA8B,EAC9B,6BAA6B,EAC7B,+BAA+B,EAC/B,2BAA2B,EAC3B,+BAA+B,EAC/B,iBAAiB,EACjB,sCAAsC,EACtC,6BAA6B,EAC7B,wBAAwB,EACxB,0BAA0B,EAC1B,gCAAgC,EAChC,8BAA8B,GAC/B,MAAM,2BAA2B,CAAC;AAUnC,cAAc,yCAAyC,CAAC;AACxD,OAAO,EAAE,sBAAsB,IAAI,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAClG,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,eAAe,IAAI,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACpE,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,gBAAgB,IAAI,OAAO,EAAE,MAAM,2BAA2B,CAAC","sourcesContent":["export * from './avatar/tng-avatar.component';\nexport { TngAvatarComponent as TngAvatar } from './avatar/tng-avatar.component';\nexport * from './badge/tng-badge.component';\nexport { TngBadgeComponent as TngBadge } from './badge/tng-badge.component';\nexport * from './button/tng-button.component';\nexport { TngButtonComponent as TngButton } from './button/tng-button.component';\nexport * from './code-block/tng-code-block.component';\nexport { TngCodeBlockComponent as TngCodeBlock } from './code-block/tng-code-block.component';\nexport {\n TNG_CODE_HIGHLIGHTING_CONFIG,\n TNG_CODE_HIGHLIGHTING_RESOLVER,\n TNG_BUILTIN_CODE_HIGHLIGHTERS,\n TNG_DEFAULT_CODE_HIGHLIGHTER_ID,\n TngCodeHighlightingResolver,\n createTngCodeHighlighterAdapter,\n escapeTngCodeHtml,\n highlightWithTngCodeHighlightingConfig,\n normalizeTngCodeHighlighterId,\n normalizeTngCodeLanguage,\n provideTngCodeHighlighting,\n resolveTngCodeHighlightingConfig,\n tngPlainCodeHighlighterAdapter,\n} from './code-block/highlighting';\nexport type {\n TngCodeHighlightInput,\n TngCodeHighlightingResolverLike,\n TngCodeHighlightRequest,\n TngCodeHighlightResult,\n TngCodeHighlighterAdapter,\n TngProvideCodeHighlightingOptions,\n TngResolvedCodeHighlightingConfig,\n} from './code-block/highlighting';\nexport * from './copy-button/tng-copy-button.component';\nexport { TngCopyButtonComponent as TngCopyButton } from './copy-button/tng-copy-button.component';\nexport * from './tag/tng-tag.component';\nexport { TngTagComponent as TngTag } from './tag/tng-tag.component';\nexport * from './tree/tng-tree.component';\nexport { TngTreeComponent as TngTree } from './tree/tng-tree.component';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/tailng-ui/components/src/lib/utility/index.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,EAAE;AACF,+FAA+F;AAC/F,4CAA4C;AAE5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uCAAuC,CAAC;AACtD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yCAAyC,CAAC;AACxD,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC","sourcesContent":["// Utility components\n//\n// Note: keep exports aligned with `src/index.ts` (root barrel) so the public API stays stable.\n// The root barrel will re-export this file.\n\nexport * from './avatar/tng-avatar.component';\nexport * from './badge/tng-badge.component';\nexport * from './button/tng-button.component';\nexport * from './code-block/tng-code-block.component';\nexport * from './code-block/highlighting';\nexport * from './copy-button/tng-copy-button.component';\nexport * from './tag/tng-tag.component';\nexport * from './tree/tng-tree.component';\n"]}
@@ -1,3 +1,4 @@
1
+ import * as i0 from "@angular/core";
1
2
  type TngTagAppearance = 'outline' | 'soft' | 'solid';
2
3
  type TngTagShape = 'pill' | 'rounded';
3
4
  type TngTagSize = 'md' | 'sm';
@@ -13,6 +14,8 @@ export declare class TngTagComponent {
13
14
  readonly tone: import("@angular/core").InputSignal<TngTagTone>;
14
15
  readonly removed: import("@angular/core").OutputEmitterRef<void>;
15
16
  onRemoved(): void;
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<TngTagComponent, never>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<TngTagComponent, "tng-tag", never, { "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "closeAriaLabel": { "alias": "closeAriaLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; }, { "removed": "removed"; }, never, ["[tngTagIcon]", "*"], true, never>;
16
19
  }
17
- export {};
20
+ export { TngTagComponent as TngTag };
18
21
  //# sourceMappingURL=tng-tag.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tng-tag.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/tag/tng-tag.component.ts"],"names":[],"mappings":"AAMA,KAAK,gBAAgB,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AACrD,KAAK,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AACtC,KAAK,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC;AAC9B,KAAK,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAExE,qBAMa,eAAe;IAC1B,SAAgB,UAAU,wDAAmC;IAC7D,SAAgB,cAAc,qDAA8B;IAC5D,SAAgB,QAAQ,8EAErB;IACH,SAAgB,KAAK,qDAA8B;IACnD,SAAgB,SAAS,8EAEtB;IACH,SAAgB,KAAK,mDAA8B;IACnD,SAAgB,IAAI,kDAA2B;IAC/C,SAAgB,IAAI,kDAAgC;IAEpD,SAAgB,OAAO,iDAAkB;IAElC,SAAS,IAAI,IAAI;CAGzB"}
1
+ {"version":3,"file":"tng-tag.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/tag/tng-tag.component.ts"],"names":[],"mappings":";AAMA,KAAK,gBAAgB,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AACrD,KAAK,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AACtC,KAAK,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC;AAC9B,KAAK,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAExE,qBAMa,eAAe;IAC1B,SAAgB,UAAU,wDAAmC;IAC7D,SAAgB,cAAc,qDAA8B;IAC5D,SAAgB,QAAQ,8EAErB;IACH,SAAgB,KAAK,qDAA8B;IACnD,SAAgB,SAAS,8EAEtB;IACH,SAAgB,KAAK,mDAA8B;IACnD,SAAgB,IAAI,kDAA2B;IAC/C,SAAgB,IAAI,kDAAgC;IAEpD,SAAgB,OAAO,iDAAkB;IAElC,SAAS,IAAI,IAAI;yCAhBb,eAAe;2CAAf,eAAe;CAmB3B;AACD,OAAO,EAAE,eAAe,IAAI,MAAM,EAAE,CAAC"}
@@ -1,31 +1,25 @@
1
- import { __decorate } from "tslib";
2
1
  import { booleanAttribute, Component, input, output } from '@angular/core';
3
2
  import { TngTag as TngTagPrimitive, TngTagClose as TngTagClosePrimitive, } from '@tailng-ui/primitives';
4
- let TngTagComponent = class TngTagComponent {
5
- appearance = input('soft');
6
- closeAriaLabel = input(null);
7
- disabled = input(false, {
8
- transform: booleanAttribute,
9
- });
10
- label = input(null);
11
- removable = input(false, {
12
- transform: booleanAttribute,
13
- });
14
- shape = input('pill');
15
- size = input('md');
16
- tone = input('neutral');
3
+ import * as i0 from "@angular/core";
4
+ export class TngTagComponent {
5
+ appearance = input('soft', ...(ngDevMode ? [{ debugName: "appearance" }] : []));
6
+ closeAriaLabel = input(null, ...(ngDevMode ? [{ debugName: "closeAriaLabel" }] : []));
7
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: booleanAttribute });
8
+ label = input(null, ...(ngDevMode ? [{ debugName: "label" }] : []));
9
+ removable = input(false, { ...(ngDevMode ? { debugName: "removable" } : {}), transform: booleanAttribute });
10
+ shape = input('pill', ...(ngDevMode ? [{ debugName: "shape" }] : []));
11
+ size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : []));
12
+ tone = input('neutral', ...(ngDevMode ? [{ debugName: "tone" }] : []));
17
13
  removed = output();
18
14
  onRemoved() {
19
15
  this.removed.emit();
20
16
  }
21
- };
22
- TngTagComponent = __decorate([
23
- Component({
24
- selector: 'tng-tag',
25
- imports: [TngTagPrimitive, TngTagClosePrimitive],
26
- templateUrl: './tng-tag.component.html',
27
- styleUrl: './tng-tag.component.css',
28
- })
29
- ], TngTagComponent);
30
- export { TngTagComponent };
17
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngTagComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
18
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.1", type: TngTagComponent, isStandalone: true, selector: "tng-tag", inputs: { appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, closeAriaLabel: { classPropertyName: "closeAriaLabel", publicName: "closeAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, removable: { classPropertyName: "removable", publicName: "removable", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, tone: { classPropertyName: "tone", publicName: "tone", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { removed: "removed" }, ngImport: i0, template: "<span\n tngTag\n class=\"tng-tag\"\n [tngTagDisabled]=\"disabled()\"\n [tngTagLabel]=\"label()\"\n [tngTagRemovable]=\"removable()\"\n [attr.data-appearance]=\"appearance()\"\n [attr.data-size]=\"size()\"\n [attr.data-shape]=\"shape()\"\n [attr.data-tone]=\"tone()\"\n (tngTagRemoved)=\"onRemoved()\"\n>\n <ng-content select=\"[tngTagIcon]\" />\n <span class=\"tng-tag__content\">\n <ng-content />\n </span>\n @if (removable()) {\n <button\n tngTagClose\n class=\"tng-tag__close\"\n [tngTagCloseAriaLabel]=\"closeAriaLabel()\"\n [disabled]=\"disabled()\"\n type=\"button\"\n >\n <span class=\"tng-tag__close-glyph\" aria-hidden=\"true\">\u00D7</span>\n </button>\n }\n</span>\n", styles: [":host {\n display: inline-flex;\n}\n\n.tng-tag {\n align-items: center;\n border: 1px solid transparent;\n display: inline-flex;\n font-size: 0.78rem;\n font-weight: 600;\n gap: 0.3rem;\n line-height: 1;\n min-height: 1.55rem;\n padding: 0 0.55rem;\n}\n\n.tng-tag[data-size='sm'] {\n font-size: 0.72rem;\n min-height: 1.35rem;\n padding: 0 0.45rem;\n}\n\n.tng-tag[data-size='md'] {\n font-size: 0.78rem;\n min-height: 1.55rem;\n padding: 0 0.55rem;\n}\n\n.tng-tag[data-disabled] {\n opacity: 0.62;\n}\n\n.tng-tag__content {\n align-items: center;\n display: inline-flex;\n}\n\n.tng-tag [data-slot='tag-icon'] {\n align-items: center;\n display: inline-flex;\n flex: 0 0 auto;\n}\n\n.tng-tag__close {\n align-items: center;\n appearance: none;\n background: transparent;\n border: 0;\n border-radius: 9999px;\n color: currentColor;\n cursor: pointer;\n display: inline-flex;\n flex: 0 0 auto;\n font: inherit;\n height: 1rem;\n justify-content: center;\n margin-inline-start: 0.1rem;\n padding: 0;\n width: 1rem;\n}\n\n.tng-tag__close:focus-visible {\n box-shadow: 0 0 0 2px var(--tng-semantic-focus-ring);\n outline: none;\n}\n\n.tng-tag__close[data-disabled] {\n cursor: not-allowed;\n}\n\n.tng-tag__close-glyph {\n font-size: 0.85em;\n line-height: 1;\n}\n\n.tng-tag[data-shape='pill'] {\n border-radius: 9999px;\n}\n\n.tng-tag[data-shape='rounded'] {\n border-radius: 0.5rem;\n}\n\n.tng-tag[data-appearance='solid'][data-tone='neutral'] {\n background: var(--tng-semantic-background-surface);\n color: var(--tng-semantic-foreground-primary);\n}\n\n.tng-tag[data-appearance='soft'][data-tone='neutral'] {\n background: color-mix(in srgb, var(--tng-semantic-foreground-secondary) 20%, transparent);\n color: var(--tng-semantic-foreground-primary);\n}\n\n.tng-tag[data-appearance='outline'][data-tone='neutral'] {\n border-color: var(--tng-semantic-border-strong);\n color: var(--tng-semantic-foreground-secondary);\n}\n\n.tng-tag[data-appearance='solid'][data-tone='success'] {\n background: var(--tng-semantic-accent-success);\n color: var(--tng-color-white);\n}\n\n.tng-tag[data-appearance='soft'][data-tone='success'] {\n background: color-mix(in srgb, var(--tng-semantic-accent-success) 20%, transparent);\n color: var(--tng-semantic-accent-success);\n}\n\n.tng-tag[data-appearance='outline'][data-tone='success'] {\n border-color: var(--tng-semantic-accent-success);\n color: var(--tng-semantic-accent-success);\n}\n\n.tng-tag[data-appearance='solid'][data-tone='warning'] {\n background: var(--tng-semantic-foreground-secondary);\n color: var(--tng-semantic-background-canvas);\n}\n\n.tng-tag[data-appearance='soft'][data-tone='warning'] {\n background: color-mix(in srgb, var(--tng-semantic-foreground-secondary) 25%, transparent);\n color: var(--tng-semantic-foreground-primary);\n}\n\n.tng-tag[data-appearance='outline'][data-tone='warning'] {\n border-color: var(--tng-semantic-border-strong);\n color: var(--tng-semantic-foreground-secondary);\n}\n\n.tng-tag[data-appearance='solid'][data-tone='danger'] {\n background: var(--tng-semantic-accent-danger);\n color: var(--tng-color-white);\n}\n\n.tng-tag[data-appearance='soft'][data-tone='danger'] {\n background: color-mix(in srgb, var(--tng-semantic-accent-danger) 20%, transparent);\n color: var(--tng-semantic-accent-danger);\n}\n\n.tng-tag[data-appearance='outline'][data-tone='danger'] {\n border-color: var(--tng-semantic-accent-danger);\n color: var(--tng-semantic-accent-danger);\n}\n\n.tng-tag[data-appearance='solid'][data-tone='info'] {\n background: var(--tng-semantic-accent-brand);\n color: var(--tng-color-white);\n}\n\n.tng-tag[data-appearance='soft'][data-tone='info'] {\n background: color-mix(in srgb, var(--tng-semantic-accent-brand) 20%, transparent);\n color: var(--tng-semantic-accent-brand);\n}\n\n.tng-tag[data-appearance='outline'][data-tone='info'] {\n border-color: var(--tng-semantic-accent-brand);\n color: var(--tng-semantic-accent-brand);\n}\n"], dependencies: [{ kind: "directive", type: TngTagPrimitive, selector: "[tngTag]", inputs: ["tngTagDisabled", "tngTagRemovable", "tngTagLabel"], outputs: ["tngTagRemoved"], exportAs: ["tngTag"] }, { kind: "directive", type: TngTagClosePrimitive, selector: "[tngTagClose]", inputs: ["tngTagCloseAriaLabel"], exportAs: ["tngTagClose"] }] });
19
+ }
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngTagComponent, decorators: [{
21
+ type: Component,
22
+ args: [{ selector: 'tng-tag', imports: [TngTagPrimitive, TngTagClosePrimitive], template: "<span\n tngTag\n class=\"tng-tag\"\n [tngTagDisabled]=\"disabled()\"\n [tngTagLabel]=\"label()\"\n [tngTagRemovable]=\"removable()\"\n [attr.data-appearance]=\"appearance()\"\n [attr.data-size]=\"size()\"\n [attr.data-shape]=\"shape()\"\n [attr.data-tone]=\"tone()\"\n (tngTagRemoved)=\"onRemoved()\"\n>\n <ng-content select=\"[tngTagIcon]\" />\n <span class=\"tng-tag__content\">\n <ng-content />\n </span>\n @if (removable()) {\n <button\n tngTagClose\n class=\"tng-tag__close\"\n [tngTagCloseAriaLabel]=\"closeAriaLabel()\"\n [disabled]=\"disabled()\"\n type=\"button\"\n >\n <span class=\"tng-tag__close-glyph\" aria-hidden=\"true\">\u00D7</span>\n </button>\n }\n</span>\n", styles: [":host {\n display: inline-flex;\n}\n\n.tng-tag {\n align-items: center;\n border: 1px solid transparent;\n display: inline-flex;\n font-size: 0.78rem;\n font-weight: 600;\n gap: 0.3rem;\n line-height: 1;\n min-height: 1.55rem;\n padding: 0 0.55rem;\n}\n\n.tng-tag[data-size='sm'] {\n font-size: 0.72rem;\n min-height: 1.35rem;\n padding: 0 0.45rem;\n}\n\n.tng-tag[data-size='md'] {\n font-size: 0.78rem;\n min-height: 1.55rem;\n padding: 0 0.55rem;\n}\n\n.tng-tag[data-disabled] {\n opacity: 0.62;\n}\n\n.tng-tag__content {\n align-items: center;\n display: inline-flex;\n}\n\n.tng-tag [data-slot='tag-icon'] {\n align-items: center;\n display: inline-flex;\n flex: 0 0 auto;\n}\n\n.tng-tag__close {\n align-items: center;\n appearance: none;\n background: transparent;\n border: 0;\n border-radius: 9999px;\n color: currentColor;\n cursor: pointer;\n display: inline-flex;\n flex: 0 0 auto;\n font: inherit;\n height: 1rem;\n justify-content: center;\n margin-inline-start: 0.1rem;\n padding: 0;\n width: 1rem;\n}\n\n.tng-tag__close:focus-visible {\n box-shadow: 0 0 0 2px var(--tng-semantic-focus-ring);\n outline: none;\n}\n\n.tng-tag__close[data-disabled] {\n cursor: not-allowed;\n}\n\n.tng-tag__close-glyph {\n font-size: 0.85em;\n line-height: 1;\n}\n\n.tng-tag[data-shape='pill'] {\n border-radius: 9999px;\n}\n\n.tng-tag[data-shape='rounded'] {\n border-radius: 0.5rem;\n}\n\n.tng-tag[data-appearance='solid'][data-tone='neutral'] {\n background: var(--tng-semantic-background-surface);\n color: var(--tng-semantic-foreground-primary);\n}\n\n.tng-tag[data-appearance='soft'][data-tone='neutral'] {\n background: color-mix(in srgb, var(--tng-semantic-foreground-secondary) 20%, transparent);\n color: var(--tng-semantic-foreground-primary);\n}\n\n.tng-tag[data-appearance='outline'][data-tone='neutral'] {\n border-color: var(--tng-semantic-border-strong);\n color: var(--tng-semantic-foreground-secondary);\n}\n\n.tng-tag[data-appearance='solid'][data-tone='success'] {\n background: var(--tng-semantic-accent-success);\n color: var(--tng-color-white);\n}\n\n.tng-tag[data-appearance='soft'][data-tone='success'] {\n background: color-mix(in srgb, var(--tng-semantic-accent-success) 20%, transparent);\n color: var(--tng-semantic-accent-success);\n}\n\n.tng-tag[data-appearance='outline'][data-tone='success'] {\n border-color: var(--tng-semantic-accent-success);\n color: var(--tng-semantic-accent-success);\n}\n\n.tng-tag[data-appearance='solid'][data-tone='warning'] {\n background: var(--tng-semantic-foreground-secondary);\n color: var(--tng-semantic-background-canvas);\n}\n\n.tng-tag[data-appearance='soft'][data-tone='warning'] {\n background: color-mix(in srgb, var(--tng-semantic-foreground-secondary) 25%, transparent);\n color: var(--tng-semantic-foreground-primary);\n}\n\n.tng-tag[data-appearance='outline'][data-tone='warning'] {\n border-color: var(--tng-semantic-border-strong);\n color: var(--tng-semantic-foreground-secondary);\n}\n\n.tng-tag[data-appearance='solid'][data-tone='danger'] {\n background: var(--tng-semantic-accent-danger);\n color: var(--tng-color-white);\n}\n\n.tng-tag[data-appearance='soft'][data-tone='danger'] {\n background: color-mix(in srgb, var(--tng-semantic-accent-danger) 20%, transparent);\n color: var(--tng-semantic-accent-danger);\n}\n\n.tng-tag[data-appearance='outline'][data-tone='danger'] {\n border-color: var(--tng-semantic-accent-danger);\n color: var(--tng-semantic-accent-danger);\n}\n\n.tng-tag[data-appearance='solid'][data-tone='info'] {\n background: var(--tng-semantic-accent-brand);\n color: var(--tng-color-white);\n}\n\n.tng-tag[data-appearance='soft'][data-tone='info'] {\n background: color-mix(in srgb, var(--tng-semantic-accent-brand) 20%, transparent);\n color: var(--tng-semantic-accent-brand);\n}\n\n.tng-tag[data-appearance='outline'][data-tone='info'] {\n border-color: var(--tng-semantic-accent-brand);\n color: var(--tng-semantic-accent-brand);\n}\n"] }]
23
+ }], propDecorators: { appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], closeAriaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeAriaLabel", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], removable: [{ type: i0.Input, args: [{ isSignal: true, alias: "removable", required: false }] }], shape: [{ type: i0.Input, args: [{ isSignal: true, alias: "shape", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], tone: [{ type: i0.Input, args: [{ isSignal: true, alias: "tone", required: false }] }], removed: [{ type: i0.Output, args: ["removed"] }] } });
24
+ export { TngTagComponent as TngTag };
31
25
  //# sourceMappingURL=tng-tag.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tng-tag.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/tag/tng-tag.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EACL,MAAM,IAAI,eAAe,EACzB,WAAW,IAAI,oBAAoB,GACpC,MAAM,uBAAuB,CAAC;AAaxB,IAAM,eAAe,GAArB,MAAM,eAAe;IACV,UAAU,GAAG,KAAK,CAAmB,MAAM,CAAC,CAAC;IAC7C,cAAc,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IAC5C,QAAQ,GAAG,KAAK,CAA4B,KAAK,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,KAAK,GAAG,KAAK,CAAgB,IAAI,CAAC,CAAC;IACnC,SAAS,GAAG,KAAK,CAA4B,KAAK,EAAE;QAClE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,KAAK,GAAG,KAAK,CAAc,MAAM,CAAC,CAAC;IACnC,IAAI,GAAG,KAAK,CAAa,IAAI,CAAC,CAAC;IAC/B,IAAI,GAAG,KAAK,CAAa,SAAS,CAAC,CAAC;IAEpC,OAAO,GAAG,MAAM,EAAQ,CAAC;IAElC,SAAS;QACd,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;CACF,CAAA;AAnBY,eAAe;IAN3B,SAAS,CAAC;QACT,QAAQ,EAAE,SAAS;QACnB,OAAO,EAAE,CAAC,eAAe,EAAE,oBAAoB,CAAC;QAChD,WAAW,EAAE,0BAA0B;QACvC,QAAQ,EAAE,yBAAyB;KACpC,CAAC;GACW,eAAe,CAmB3B","sourcesContent":["import { booleanAttribute, Component, input, output } from '@angular/core';\nimport {\n TngTag as TngTagPrimitive,\n TngTagClose as TngTagClosePrimitive,\n} from '@tailng-ui/primitives';\n\ntype TngTagAppearance = 'outline' | 'soft' | 'solid';\ntype TngTagShape = 'pill' | 'rounded';\ntype TngTagSize = 'md' | 'sm';\ntype TngTagTone = 'danger' | 'info' | 'neutral' | 'success' | 'warning';\n\n@Component({\n selector: 'tng-tag',\n imports: [TngTagPrimitive, TngTagClosePrimitive],\n templateUrl: './tng-tag.component.html',\n styleUrl: './tng-tag.component.css',\n})\nexport class TngTagComponent {\n public readonly appearance = input<TngTagAppearance>('soft');\n public readonly closeAriaLabel = input<string | null>(null);\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly label = input<string | null>(null);\n public readonly removable = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly shape = input<TngTagShape>('pill');\n public readonly size = input<TngTagSize>('md');\n public readonly tone = input<TngTagTone>('neutral');\n\n public readonly removed = output<void>();\n\n public onRemoved(): void {\n this.removed.emit();\n }\n}\n"]}
1
+ {"version":3,"file":"tng-tag.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/tag/tng-tag.component.ts","../../../../../../../../libs/tailng-ui/components/src/lib/utility/tag/tng-tag.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EACL,MAAM,IAAI,eAAe,EACzB,WAAW,IAAI,oBAAoB,GACpC,MAAM,uBAAuB,CAAC;;AAa/B,MAAM,OAAO,eAAe;IACV,UAAU,GAAG,KAAK,CAAmB,MAAM,sDAAC,CAAC;IAC7C,cAAc,GAAG,KAAK,CAAgB,IAAI,0DAAC,CAAC;IAC5C,QAAQ,GAAG,KAAK,CAA4B,KAAK,qDAC/D,SAAS,EAAE,gBAAgB,GAC3B,CAAC;IACa,KAAK,GAAG,KAAK,CAAgB,IAAI,iDAAC,CAAC;IACnC,SAAS,GAAG,KAAK,CAA4B,KAAK,sDAChE,SAAS,EAAE,gBAAgB,GAC3B,CAAC;IACa,KAAK,GAAG,KAAK,CAAc,MAAM,iDAAC,CAAC;IACnC,IAAI,GAAG,KAAK,CAAa,IAAI,gDAAC,CAAC;IAC/B,IAAI,GAAG,KAAK,CAAa,SAAS,gDAAC,CAAC;IAEpC,OAAO,GAAG,MAAM,EAAQ,CAAC;IAElC,SAAS;QACd,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;uGAlBU,eAAe;2FAAf,eAAe,ymCCjB5B,guBA4BA,q+HDfY,eAAe,qKAAE,oBAAoB;;2FAIpC,eAAe;kBAN3B,SAAS;+BACE,SAAS,WACV,CAAC,eAAe,EAAE,oBAAoB,CAAC;;AAwBlD,OAAO,EAAE,eAAe,IAAI,MAAM,EAAE,CAAC","sourcesContent":["import { booleanAttribute, Component, input, output } from '@angular/core';\nimport {\n TngTag as TngTagPrimitive,\n TngTagClose as TngTagClosePrimitive,\n} from '@tailng-ui/primitives';\n\ntype TngTagAppearance = 'outline' | 'soft' | 'solid';\ntype TngTagShape = 'pill' | 'rounded';\ntype TngTagSize = 'md' | 'sm';\ntype TngTagTone = 'danger' | 'info' | 'neutral' | 'success' | 'warning';\n\n@Component({\n selector: 'tng-tag',\n imports: [TngTagPrimitive, TngTagClosePrimitive],\n templateUrl: './tng-tag.component.html',\n styleUrl: './tng-tag.component.css',\n})\nexport class TngTagComponent {\n public readonly appearance = input<TngTagAppearance>('soft');\n public readonly closeAriaLabel = input<string | null>(null);\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly label = input<string | null>(null);\n public readonly removable = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly shape = input<TngTagShape>('pill');\n public readonly size = input<TngTagSize>('md');\n public readonly tone = input<TngTagTone>('neutral');\n\n public readonly removed = output<void>();\n\n public onRemoved(): void {\n this.removed.emit();\n }\n}\nexport { TngTagComponent as TngTag };\n","<span\n tngTag\n class=\"tng-tag\"\n [tngTagDisabled]=\"disabled()\"\n [tngTagLabel]=\"label()\"\n [tngTagRemovable]=\"removable()\"\n [attr.data-appearance]=\"appearance()\"\n [attr.data-size]=\"size()\"\n [attr.data-shape]=\"shape()\"\n [attr.data-tone]=\"tone()\"\n (tngTagRemoved)=\"onRemoved()\"\n>\n <ng-content select=\"[tngTagIcon]\" />\n <span class=\"tng-tag__content\">\n <ng-content />\n </span>\n @if (removable()) {\n <button\n tngTagClose\n class=\"tng-tag__close\"\n [tngTagCloseAriaLabel]=\"closeAriaLabel()\"\n [disabled]=\"disabled()\"\n type=\"button\"\n >\n <span class=\"tng-tag__close-glyph\" aria-hidden=\"true\">×</span>\n </button>\n }\n</span>\n"]}
@@ -1,4 +1,5 @@
1
1
  import type { OnDestroy } from '@angular/core';
2
+ import * as i0 from "@angular/core";
2
3
  type TngTreeKeyboardEvent = Readonly<{
3
4
  altKey: boolean;
4
5
  key: string;
@@ -67,6 +68,8 @@ export declare class TngTreeComponent implements OnDestroy {
67
68
  private runKeyAction;
68
69
  private selectActiveNode;
69
70
  private selectNode;
71
+ static ɵfac: i0.ɵɵFactoryDeclaration<TngTreeComponent, never>;
72
+ static ɵcmp: i0.ɵɵComponentDeclaration<TngTreeComponent, "tng-tree", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "defaultExpandedIds": { "alias": "defaultExpandedIds"; "required": false; "isSignal": true; }; "defaultSelectedId": { "alias": "defaultSelectedId"; "required": false; "isSignal": true; }; "nodes": { "alias": "nodes"; "required": false; "isSignal": true; }; }, { "selectedIdChange": "selectedIdChange"; }, never, ["*"], true, never>;
70
73
  }
71
- export {};
74
+ export { TngTreeComponent as TngTree };
72
75
  //# sourceMappingURL=tng-tree.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tng-tree.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/tree/tng-tree.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,SAAS,EAAE,MAAM,eAAe,CAAC;AAiB3D,KAAK,oBAAoB,GAAG,QAAQ,CAAC;IACnC,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B,CAAC,CAAC;AAEH,KAAK,mBAAmB,GAAG,QAAQ,CAAC;IAClC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B,CAAC,CAAC;AA6BH,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC,CAAC;AAiKH,qBAMa,gBAAiB,YAAW,SAAS;IAChD,SAAgB,SAAS,8CAAyB;IAClD,SAAgB,kBAAkB,yDAAgC;IAClE,SAAgB,iBAAiB,qDAA8B;IAC/D,SAAgB,KAAK;sBAhLP,MAAM,GAAG,IAAI;mBAChB,OAAO;YACd,MAAM;eACH,MAAM;mBACF,MAAM,GAAG,IAAI;UA4KkC;IAE1D,SAAgB,gBAAgB,0DAA2B;IAE3D,SAAS,CAAC,QAAQ,CAAC,kBAAkB,gDAOlC;IACH,SAAS,CAAC,QAAQ,CAAC,UAAU,wDAA+B;IAC5D,SAAS,CAAC,QAAQ,CAAC,MAAM,SAAkB;IAC3C,SAAS,CAAC,QAAQ,CAAC,WAAW;eAzMvB,MAAM;qBACA,MAAM,GAAG,IAAI;kBAChB,OAAO;qBACJ,OAAO;YAChB,MAAM;eACH,MAAM;UAoMqF;IAElG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA+B;IACxD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgD;IAC5E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+C;IACtE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiD;IACzE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgD;IAE3E,OAAO,CAAC,KAAK,CAAgD;IAC7D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoE;IAE9F,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAS7B;IAEL,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAE9B;IAEI,WAAW,IAAI,IAAI;IAInB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAY/D,WAAW,IAAI,IAAI;IAMnB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAWrC,aAAa,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI;IAiBvD,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI7C,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAI7C,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,kBAAkB;IA0B1B,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,UAAU;CAInB"}
1
+ {"version":3,"file":"tng-tree.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/utility/tree/tng-tree.component.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,SAAS,EAAE,MAAM,eAAe,CAAC;;AAiB3D,KAAK,oBAAoB,GAAG,QAAQ,CAAC;IACnC,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B,CAAC,CAAC;AAEH,KAAK,mBAAmB,GAAG,QAAQ,CAAC;IAClC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B,CAAC,CAAC;AA6BH,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC,CAAC;AAiKH,qBAMa,gBAAiB,YAAW,SAAS;IAChD,SAAgB,SAAS,8CAAyB;IAClD,SAAgB,kBAAkB,yDAAgC;IAClE,SAAgB,iBAAiB,qDAA8B;IAC/D,SAAgB,KAAK;sBAhLP,MAAM,GAAG,IAAI;mBAChB,OAAO;YACd,MAAM;eACH,MAAM;mBACF,MAAM,GAAG,IAAI;UA4KkC;IAE1D,SAAgB,gBAAgB,0DAA2B;IAE3D,SAAS,CAAC,QAAQ,CAAC,kBAAkB,gDAOlC;IACH,SAAS,CAAC,QAAQ,CAAC,UAAU,wDAA+B;IAC5D,SAAS,CAAC,QAAQ,CAAC,MAAM,SAAkB;IAC3C,SAAS,CAAC,QAAQ,CAAC,WAAW;eAzMvB,MAAM;qBACA,MAAM,GAAG,IAAI;kBAChB,OAAO;qBACJ,OAAO;YAChB,MAAM;eACH,MAAM;UAoMqF;IAElG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA+B;IACxD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgD;IAC5E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+C;IACtE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiD;IACzE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgD;IAE3E,OAAO,CAAC,KAAK,CAAgD;IAC7D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoE;IAE9F,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAS7B;IAEL,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAE9B;IAEI,WAAW,IAAI,IAAI;IAInB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAY/D,WAAW,IAAI,IAAI;IAMnB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAWrC,aAAa,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI;IAiBvD,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI7C,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAI7C,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,kBAAkB;IA0B1B,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,UAAU;yCAjQP,gBAAgB;2CAAhB,gBAAgB;CAqQ5B;AACD,OAAO,EAAE,gBAAgB,IAAI,OAAO,EAAE,CAAC"}
@@ -1,8 +1,8 @@
1
- import { __decorate } from "tslib";
2
1
  import { Component, computed, effect, input, output, signal, viewChild } from '@angular/core';
3
2
  import { createTngIdFactory } from '@tailng-ui/cdk';
4
3
  import { createTreeModel, createTypeaheadController, } from '@tailng-ui/cdk';
5
4
  import { TngTree as TngTreePrimitive } from '@tailng-ui/primitives';
5
+ import * as i0 from "@angular/core";
6
6
  const createTreeId = createTngIdFactory('tng-tree');
7
7
  const actionByKey = Object.freeze({
8
8
  ArrowDown: 'move-next',
@@ -118,11 +118,11 @@ function resolveTreeKeyAction(event) {
118
118
  function shouldPreventDefault(action) {
119
119
  return action !== 'noop' && action !== 'typeahead';
120
120
  }
121
- let TngTreeComponent = class TngTreeComponent {
122
- ariaLabel = input('Tree');
123
- defaultExpandedIds = input([]);
124
- defaultSelectedId = input(null);
125
- nodes = input([]);
121
+ export class TngTreeComponent {
122
+ ariaLabel = input('Tree', ...(ngDevMode ? [{ debugName: "ariaLabel" }] : []));
123
+ defaultExpandedIds = input([], ...(ngDevMode ? [{ debugName: "defaultExpandedIds" }] : []));
124
+ defaultSelectedId = input(null, ...(ngDevMode ? [{ debugName: "defaultSelectedId" }] : []));
125
+ nodes = input([], ...(ngDevMode ? [{ debugName: "nodes" }] : []));
126
126
  selectedIdChange = output();
127
127
  activeDescendantId = computed(() => {
128
128
  const activeId = this.activeId();
@@ -130,15 +130,15 @@ let TngTreeComponent = class TngTreeComponent {
130
130
  return null;
131
131
  }
132
132
  return this.toItemDomId(activeId);
133
- });
134
- selectedId = signal(null);
133
+ }, ...(ngDevMode ? [{ debugName: "activeDescendantId" }] : []));
134
+ selectedId = signal(null, ...(ngDevMode ? [{ debugName: "selectedId" }] : []));
135
135
  treeId = createTreeId();
136
- visibleRows = computed(() => this.resolveVisibleRows());
137
- activeId = signal(null);
138
- expandedIds = signal(Object.freeze([]));
139
- lookup = signal(createTreeLookup([]));
140
- rootRef = viewChild('rootRef');
141
- visibleIds = signal(Object.freeze([]));
136
+ visibleRows = computed(() => this.resolveVisibleRows(), ...(ngDevMode ? [{ debugName: "visibleRows" }] : []));
137
+ activeId = signal(null, ...(ngDevMode ? [{ debugName: "activeId" }] : []));
138
+ expandedIds = signal(Object.freeze([]), ...(ngDevMode ? [{ debugName: "expandedIds" }] : []));
139
+ lookup = signal(createTreeLookup([]), ...(ngDevMode ? [{ debugName: "lookup" }] : []));
140
+ rootRef = viewChild('rootRef', ...(ngDevMode ? [{ debugName: "rootRef" }] : []));
141
+ visibleIds = signal(Object.freeze([]), ...(ngDevMode ? [{ debugName: "visibleIds" }] : []));
142
142
  model = createTreeModel({ nodes: [] });
143
143
  typeahead = createTypeaheadController({ items: [] });
144
144
  keyActionHandlers = Object.freeze({
@@ -152,7 +152,7 @@ let TngTreeComponent = class TngTreeComponent {
152
152
  });
153
153
  syncInputsEffect = effect(() => {
154
154
  this.rebuildFromInputs(this.nodes(), this.defaultExpandedIds(), this.defaultSelectedId());
155
- });
155
+ }, ...(ngDevMode ? [{ debugName: "syncInputsEffect" }] : []));
156
156
  ngOnDestroy() {
157
157
  this.syncInputsEffect.destroy();
158
158
  }
@@ -323,14 +323,12 @@ let TngTreeComponent = class TngTreeComponent {
323
323
  this.selectedId.set(nodeId);
324
324
  this.selectedIdChange.emit(nodeId);
325
325
  }
326
- };
327
- TngTreeComponent = __decorate([
328
- Component({
329
- selector: 'tng-tree',
330
- imports: [TngTreePrimitive],
331
- templateUrl: './tng-tree.component.html',
332
- styleUrl: './tng-tree.component.css',
333
- })
334
- ], TngTreeComponent);
335
- export { TngTreeComponent };
326
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngTreeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
327
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.1", type: TngTreeComponent, isStandalone: true, selector: "tng-tree", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, defaultExpandedIds: { classPropertyName: "defaultExpandedIds", publicName: "defaultExpandedIds", isSignal: true, isRequired: false, transformFunction: null }, defaultSelectedId: { classPropertyName: "defaultSelectedId", publicName: "defaultSelectedId", isSignal: true, isRequired: false, transformFunction: null }, nodes: { classPropertyName: "nodes", publicName: "nodes", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedIdChange: "selectedIdChange" }, viewQueries: [{ propertyName: "rootRef", first: true, predicate: ["rootRef"], descendants: true, isSignal: true }], ngImport: i0, template: "<section tngTree class=\"tng-tree-shell\">\n <div\n #rootRef\n class=\"tng-tree-root\"\n role=\"tree\"\n tabindex=\"0\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n (focus)=\"onTreeFocus()\"\n (keydown)=\"onTreeKeydown($event)\"\n >\n @if (visibleRows().length > 0) {\n @for (row of visibleRows(); track row.id) {\n <div\n role=\"treeitem\"\n class=\"tng-tree-item\"\n [id]=\"toItemDomId(row.id)\"\n [style.--tng-tree-level]=\"row.depth\"\n [class.tng-tree-item-active]=\"activeDescendantId() === toItemDomId(row.id)\"\n [class.tng-tree-item-selected]=\"row.id === selectedId()\"\n [class.tng-tree-item-disabled]=\"row.disabled\"\n [attr.aria-level]=\"row.depth + 1\"\n [attr.aria-expanded]=\"row.hasChildren ? isExpanded(row.id) : null\"\n [attr.aria-selected]=\"row.disabled ? null : row.id === selectedId()\"\n [attr.aria-disabled]=\"row.disabled ? 'true' : null\"\n >\n @if (row.hasChildren) {\n <button\n type=\"button\"\n class=\"tng-tree-toggle\"\n [disabled]=\"row.disabled\"\n [attr.aria-label]=\"isExpanded(row.id) ? 'Collapse branch' : 'Expand branch'\"\n (click)=\"onToggleClick(row.id, $event)\"\n >\n {{ isExpanded(row.id) ? '-' : '+' }}\n </button>\n } @else {\n <span class=\"tng-tree-toggle tng-tree-toggle-placeholder\" aria-hidden=\"true\">\u2022</span>\n }\n\n <button\n type=\"button\"\n class=\"tng-tree-node\"\n [disabled]=\"row.disabled\"\n (click)=\"onTreeItemClick(row.id)\"\n >\n <span class=\"tng-tree-text\">\n <span class=\"tng-tree-label\">{{ row.label }}</span>\n @if (row.description !== null) {\n <span class=\"tng-tree-description\">{{ row.description }}</span>\n }\n </span>\n </button>\n </div>\n }\n } @else {\n <ng-content />\n }\n </div>\n</section>\n", styles: [":host {\n display: block;\n}\n\n.tng-tree-shell {\n background: var(--tng-semantic-background-base);\n border: 1px solid var(--tng-semantic-border-subtle);\n border-radius: 0.75rem;\n color: var(--tng-semantic-foreground-primary);\n padding: 0.75rem;\n}\n\n.tng-tree-root {\n display: grid;\n gap: 0.125rem;\n outline: none;\n}\n\n.tng-tree-root:focus-visible {\n border-radius: 0.5rem;\n box-shadow: 0 0 0 2px var(--tng-semantic-focus-ring);\n}\n\n.tng-tree-item {\n --tng-tree-level: 0;\n align-items: start;\n border-radius: 0.5rem;\n cursor: default;\n display: grid;\n gap: 0.5rem;\n grid-template-columns: auto minmax(0, 1fr);\n padding: 0.35rem 0.5rem;\n padding-inline-start: calc(0.5rem + (var(--tng-tree-level) * 1rem));\n}\n\n.tng-tree-item-active {\n background: color-mix(in srgb, var(--tng-semantic-focus-ring) 15%, transparent);\n}\n\n.tng-tree-item-selected {\n background: color-mix(in srgb, var(--tng-semantic-accent-brand) 18%, transparent);\n}\n\n.tng-tree-item-disabled {\n cursor: not-allowed;\n opacity: 0.55;\n}\n\n.tng-tree-toggle {\n align-items: center;\n background: transparent;\n border: 1px solid var(--tng-semantic-border-subtle);\n border-radius: 0.35rem;\n color: inherit;\n cursor: pointer;\n display: inline-flex;\n font: inherit;\n font-weight: 700;\n height: 1.2rem;\n justify-content: center;\n line-height: 1;\n margin-top: 0.05rem;\n padding: 0;\n width: 1.2rem;\n}\n\n.tng-tree-toggle:disabled {\n cursor: not-allowed;\n}\n\n.tng-tree-toggle-placeholder {\n border: 0;\n font-size: 0.85rem;\n}\n\n.tng-tree-node {\n background: transparent;\n border: 0;\n color: inherit;\n cursor: pointer;\n display: block;\n font: inherit;\n padding: 0;\n text-align: left;\n width: 100%;\n}\n\n.tng-tree-node:disabled {\n cursor: not-allowed;\n}\n\n.tng-tree-text {\n display: grid;\n gap: 0.1rem;\n}\n\n.tng-tree-label {\n font-weight: 600;\n}\n\n.tng-tree-description {\n color: var(--tng-semantic-foreground-muted);\n font-size: 0.84rem;\n line-height: 1.3;\n}\n"], dependencies: [{ kind: "directive", type: TngTreePrimitive, selector: "[tngTree]", inputs: ["selectionMode", "orientation", "value", "defaultValue", "disabled"], outputs: ["valueChange"], exportAs: ["tngTree"] }] });
328
+ }
329
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngTreeComponent, decorators: [{
330
+ type: Component,
331
+ args: [{ selector: 'tng-tree', imports: [TngTreePrimitive], template: "<section tngTree class=\"tng-tree-shell\">\n <div\n #rootRef\n class=\"tng-tree-root\"\n role=\"tree\"\n tabindex=\"0\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n (focus)=\"onTreeFocus()\"\n (keydown)=\"onTreeKeydown($event)\"\n >\n @if (visibleRows().length > 0) {\n @for (row of visibleRows(); track row.id) {\n <div\n role=\"treeitem\"\n class=\"tng-tree-item\"\n [id]=\"toItemDomId(row.id)\"\n [style.--tng-tree-level]=\"row.depth\"\n [class.tng-tree-item-active]=\"activeDescendantId() === toItemDomId(row.id)\"\n [class.tng-tree-item-selected]=\"row.id === selectedId()\"\n [class.tng-tree-item-disabled]=\"row.disabled\"\n [attr.aria-level]=\"row.depth + 1\"\n [attr.aria-expanded]=\"row.hasChildren ? isExpanded(row.id) : null\"\n [attr.aria-selected]=\"row.disabled ? null : row.id === selectedId()\"\n [attr.aria-disabled]=\"row.disabled ? 'true' : null\"\n >\n @if (row.hasChildren) {\n <button\n type=\"button\"\n class=\"tng-tree-toggle\"\n [disabled]=\"row.disabled\"\n [attr.aria-label]=\"isExpanded(row.id) ? 'Collapse branch' : 'Expand branch'\"\n (click)=\"onToggleClick(row.id, $event)\"\n >\n {{ isExpanded(row.id) ? '-' : '+' }}\n </button>\n } @else {\n <span class=\"tng-tree-toggle tng-tree-toggle-placeholder\" aria-hidden=\"true\">\u2022</span>\n }\n\n <button\n type=\"button\"\n class=\"tng-tree-node\"\n [disabled]=\"row.disabled\"\n (click)=\"onTreeItemClick(row.id)\"\n >\n <span class=\"tng-tree-text\">\n <span class=\"tng-tree-label\">{{ row.label }}</span>\n @if (row.description !== null) {\n <span class=\"tng-tree-description\">{{ row.description }}</span>\n }\n </span>\n </button>\n </div>\n }\n } @else {\n <ng-content />\n }\n </div>\n</section>\n", styles: [":host {\n display: block;\n}\n\n.tng-tree-shell {\n background: var(--tng-semantic-background-base);\n border: 1px solid var(--tng-semantic-border-subtle);\n border-radius: 0.75rem;\n color: var(--tng-semantic-foreground-primary);\n padding: 0.75rem;\n}\n\n.tng-tree-root {\n display: grid;\n gap: 0.125rem;\n outline: none;\n}\n\n.tng-tree-root:focus-visible {\n border-radius: 0.5rem;\n box-shadow: 0 0 0 2px var(--tng-semantic-focus-ring);\n}\n\n.tng-tree-item {\n --tng-tree-level: 0;\n align-items: start;\n border-radius: 0.5rem;\n cursor: default;\n display: grid;\n gap: 0.5rem;\n grid-template-columns: auto minmax(0, 1fr);\n padding: 0.35rem 0.5rem;\n padding-inline-start: calc(0.5rem + (var(--tng-tree-level) * 1rem));\n}\n\n.tng-tree-item-active {\n background: color-mix(in srgb, var(--tng-semantic-focus-ring) 15%, transparent);\n}\n\n.tng-tree-item-selected {\n background: color-mix(in srgb, var(--tng-semantic-accent-brand) 18%, transparent);\n}\n\n.tng-tree-item-disabled {\n cursor: not-allowed;\n opacity: 0.55;\n}\n\n.tng-tree-toggle {\n align-items: center;\n background: transparent;\n border: 1px solid var(--tng-semantic-border-subtle);\n border-radius: 0.35rem;\n color: inherit;\n cursor: pointer;\n display: inline-flex;\n font: inherit;\n font-weight: 700;\n height: 1.2rem;\n justify-content: center;\n line-height: 1;\n margin-top: 0.05rem;\n padding: 0;\n width: 1.2rem;\n}\n\n.tng-tree-toggle:disabled {\n cursor: not-allowed;\n}\n\n.tng-tree-toggle-placeholder {\n border: 0;\n font-size: 0.85rem;\n}\n\n.tng-tree-node {\n background: transparent;\n border: 0;\n color: inherit;\n cursor: pointer;\n display: block;\n font: inherit;\n padding: 0;\n text-align: left;\n width: 100%;\n}\n\n.tng-tree-node:disabled {\n cursor: not-allowed;\n}\n\n.tng-tree-text {\n display: grid;\n gap: 0.1rem;\n}\n\n.tng-tree-label {\n font-weight: 600;\n}\n\n.tng-tree-description {\n color: var(--tng-semantic-foreground-muted);\n font-size: 0.84rem;\n line-height: 1.3;\n}\n"] }]
332
+ }], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], defaultExpandedIds: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultExpandedIds", required: false }] }], defaultSelectedId: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultSelectedId", required: false }] }], nodes: [{ type: i0.Input, args: [{ isSignal: true, alias: "nodes", required: false }] }], selectedIdChange: [{ type: i0.Output, args: ["selectedIdChange"] }], rootRef: [{ type: i0.ViewChild, args: ['rootRef', { isSignal: true }] }] } });
333
+ export { TngTreeComponent as TngTree };
336
334
  //# sourceMappingURL=tng-tree.component.js.map