@tailng-ui/components 0.17.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 +16 -5
  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 +3 -0
  63. package/src/lib/form/input/tng-input.component.d.ts.map +1 -1
  64. package/src/lib/form/input/tng-input.component.js +49 -60
  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, input } from '@angular/core';
3
2
  import { TngCard as TngCardPrimitive, TngCardActions as TngCardActionsPrimitive, TngCardContent as TngCardContentPrimitive, TngCardDescription as TngCardDescriptionPrimitive, TngCardDivider as TngCardDividerPrimitive, TngCardFooter as TngCardFooterPrimitive, TngCardHeader as TngCardHeaderPrimitive, TngCardLink as TngCardLinkPrimitive, TngCardMedia as TngCardMediaPrimitive, TngCardTitle as TngCardTitlePrimitive, } from '@tailng-ui/primitives';
3
+ import * as i0 from "@angular/core";
4
4
  const cardVariants = ['ghost', 'outline', 'solid'];
5
5
  const cardTones = ['danger', 'info', 'neutral', 'primary', 'success', 'warning'];
6
6
  const cardPaddings = ['lg', 'md', 'none', 'sm'];
@@ -37,131 +37,90 @@ function coerceCardActionsAlign(value) {
37
37
  }
38
38
  return defaultCardActionsAlign;
39
39
  }
40
- let TngCardComponent = class TngCardComponent {
41
- elevated = input(false, {
42
- transform: booleanAttribute,
43
- });
44
- interactive = input(false, {
45
- transform: booleanAttribute,
46
- });
47
- padding = input(defaultCardPadding, {
48
- transform: coerceCardPadding,
49
- });
50
- tone = input(defaultCardTone, {
51
- transform: coerceCardTone,
52
- });
53
- variant = input(defaultCardVariant, {
54
- transform: coerceCardVariant,
55
- });
56
- };
57
- TngCardComponent = __decorate([
58
- Component({
59
- selector: 'tng-card',
60
- imports: [TngCardPrimitive],
61
- templateUrl: './tng-card.component.html',
62
- styleUrl: './tng-card.component.css',
63
- })
64
- ], TngCardComponent);
65
- export { TngCardComponent };
66
- let TngCardHeaderComponent = class TngCardHeaderComponent {
67
- };
68
- TngCardHeaderComponent = __decorate([
69
- Component({
70
- selector: 'tng-card-header',
71
- imports: [TngCardHeaderPrimitive],
72
- templateUrl: './tng-card-header.component.html',
73
- styleUrl: './tng-card.component.css',
74
- })
75
- ], TngCardHeaderComponent);
76
- export { TngCardHeaderComponent };
77
- let TngCardTitleComponent = class TngCardTitleComponent {
78
- };
79
- TngCardTitleComponent = __decorate([
80
- Component({
81
- selector: 'tng-card-title',
82
- imports: [TngCardTitlePrimitive],
83
- templateUrl: './tng-card-title.component.html',
84
- styleUrl: './tng-card.component.css',
85
- })
86
- ], TngCardTitleComponent);
87
- export { TngCardTitleComponent };
88
- let TngCardDescriptionComponent = class TngCardDescriptionComponent {
89
- };
90
- TngCardDescriptionComponent = __decorate([
91
- Component({
92
- selector: 'tng-card-description',
93
- imports: [TngCardDescriptionPrimitive],
94
- templateUrl: './tng-card-description.component.html',
95
- styleUrl: './tng-card.component.css',
96
- })
97
- ], TngCardDescriptionComponent);
98
- export { TngCardDescriptionComponent };
99
- let TngCardContentComponent = class TngCardContentComponent {
100
- };
101
- TngCardContentComponent = __decorate([
102
- Component({
103
- selector: 'tng-card-content',
104
- imports: [TngCardContentPrimitive],
105
- templateUrl: './tng-card-content.component.html',
106
- styleUrl: './tng-card.component.css',
107
- })
108
- ], TngCardContentComponent);
109
- export { TngCardContentComponent };
110
- let TngCardFooterComponent = class TngCardFooterComponent {
111
- };
112
- TngCardFooterComponent = __decorate([
113
- Component({
114
- selector: 'tng-card-footer',
115
- imports: [TngCardFooterPrimitive],
116
- templateUrl: './tng-card-footer.component.html',
117
- styleUrl: './tng-card.component.css',
118
- })
119
- ], TngCardFooterComponent);
120
- export { TngCardFooterComponent };
121
- let TngCardMediaComponent = class TngCardMediaComponent {
122
- };
123
- TngCardMediaComponent = __decorate([
124
- Component({
125
- selector: 'tng-card-media',
126
- imports: [TngCardMediaPrimitive],
127
- templateUrl: './tng-card-media.component.html',
128
- styleUrl: './tng-card.component.css',
129
- })
130
- ], TngCardMediaComponent);
131
- export { TngCardMediaComponent };
132
- let TngCardActionsComponent = class TngCardActionsComponent {
133
- align = input(defaultCardActionsAlign, {
134
- transform: coerceCardActionsAlign,
135
- });
136
- };
137
- TngCardActionsComponent = __decorate([
138
- Component({
139
- selector: 'tng-card-actions',
140
- imports: [TngCardActionsPrimitive],
141
- templateUrl: './tng-card-actions.component.html',
142
- styleUrl: './tng-card.component.css',
143
- })
144
- ], TngCardActionsComponent);
145
- export { TngCardActionsComponent };
146
- let TngCardDividerComponent = class TngCardDividerComponent {
147
- };
148
- TngCardDividerComponent = __decorate([
149
- Component({
150
- selector: 'tng-card-divider',
151
- imports: [TngCardDividerPrimitive],
152
- templateUrl: './tng-card-divider.component.html',
153
- styleUrl: './tng-card.component.css',
154
- })
155
- ], TngCardDividerComponent);
156
- export { TngCardDividerComponent };
157
- let TngCardLinkComponent = class TngCardLinkComponent {
158
- ariaLabel = input(null);
159
- disabled = input(false, {
160
- transform: booleanAttribute,
161
- });
162
- href = input('#');
163
- rel = input(null);
164
- target = input(null);
40
+ export class TngCardComponent {
41
+ elevated = input(false, { ...(ngDevMode ? { debugName: "elevated" } : {}), transform: booleanAttribute });
42
+ interactive = input(false, { ...(ngDevMode ? { debugName: "interactive" } : {}), transform: booleanAttribute });
43
+ padding = input(defaultCardPadding, { ...(ngDevMode ? { debugName: "padding" } : {}), transform: coerceCardPadding });
44
+ tone = input(defaultCardTone, { ...(ngDevMode ? { debugName: "tone" } : {}), transform: coerceCardTone });
45
+ variant = input(defaultCardVariant, { ...(ngDevMode ? { debugName: "variant" } : {}), transform: coerceCardVariant });
46
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
47
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.1", type: TngCardComponent, isStandalone: true, selector: "tng-card", inputs: { elevated: { classPropertyName: "elevated", publicName: "elevated", isSignal: true, isRequired: false, transformFunction: null }, interactive: { classPropertyName: "interactive", publicName: "interactive", isSignal: true, isRequired: false, transformFunction: null }, padding: { classPropertyName: "padding", publicName: "padding", isSignal: true, isRequired: false, transformFunction: null }, tone: { classPropertyName: "tone", publicName: "tone", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<article\n tngCard\n class=\"tng-card\"\n [attr.data-padding]=\"padding()\"\n [attr.data-tone]=\"tone()\"\n [attr.data-variant]=\"variant()\"\n [attr.data-elevated]=\"elevated() ? '' : null\"\n [attr.data-interactive]=\"interactive() ? '' : null\"\n>\n <ng-content />\n</article>\n", styles: [":host {\n display: block;\n}\n\n.tng-card {\n background: var(--tng-semantic-background-surface);\n border: 1px solid var(--tng-semantic-border-strong);\n border-radius: 1rem;\n color: var(--tng-semantic-foreground-primary);\n display: grid;\n gap: 1rem;\n padding: 1rem;\n position: relative;\n}\n\n.tng-card[data-padding='none'] {\n padding: 0;\n}\n\n.tng-card[data-padding='sm'] {\n padding: 0.75rem;\n}\n\n.tng-card[data-padding='md'] {\n padding: 1rem;\n}\n\n.tng-card[data-padding='lg'] {\n padding: 1.5rem;\n}\n\n.tng-card[data-elevated] {\n box-shadow: 0 12px 28px color-mix(in srgb, var(--tng-semantic-foreground-primary) 12%, transparent);\n}\n\n.tng-card[data-interactive] {\n transition: border-color 160ms ease, box-shadow 160ms ease;\n}\n\n.tng-card[data-interactive]:focus-within,\n.tng-card[data-interactive]:hover {\n border-color: var(--tng-semantic-accent-brand);\n}\n\n.tng-card[data-variant='ghost'] {\n background: color-mix(in srgb, var(--tng-semantic-background-surface) 55%, transparent);\n}\n\n.tng-card[data-variant='outline'] {\n background: var(--tng-semantic-background-canvas);\n}\n\n.tng-card[data-tone='primary'] {\n border-color: color-mix(in srgb, var(--tng-semantic-accent-brand) 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='success'] {\n border-color: color-mix(in srgb, #16a34a 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='warning'] {\n border-color: color-mix(in srgb, #d97706 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='danger'] {\n border-color: color-mix(in srgb, #dc2626 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='info'] {\n border-color: color-mix(in srgb, #0284c7 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card-header {\n display: grid;\n gap: 0.35rem;\n}\n\n.tng-card-title {\n font-size: 1rem;\n font-weight: 600;\n line-height: 1.3;\n margin: 0;\n}\n\n.tng-card-description {\n color: var(--tng-semantic-foreground-muted);\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0;\n}\n\n.tng-card-content {\n display: grid;\n gap: 0.75rem;\n}\n\n.tng-card-footer {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.75rem;\n justify-content: flex-end;\n}\n\n.tng-card-media {\n border-radius: 0.75rem;\n display: block;\n overflow: hidden;\n}\n\n.tng-card-media :where(img, video) {\n display: block;\n height: auto;\n max-width: 100%;\n width: 100%;\n}\n\n.tng-card-actions {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n justify-content: flex-end;\n}\n\n.tng-card-actions[data-align='start'] {\n justify-content: flex-start;\n}\n\n.tng-card-divider {\n border: 0;\n border-top: 1px solid var(--tng-semantic-border-subtle);\n margin: 0;\n pointer-events: none;\n}\n\n.tng-card-link {\n border-radius: inherit;\n color: inherit;\n display: inline-flex;\n gap: 0.375rem;\n text-decoration: none;\n}\n\n.tng-card-link:focus-visible {\n outline: 2px solid var(--tng-semantic-accent-brand);\n outline-offset: 2px;\n}\n\n.tng-card-link[aria-disabled='true'] {\n cursor: default;\n opacity: 0.65;\n}\n"], dependencies: [{ kind: "directive", type: TngCardPrimitive, selector: "[tngCard]", exportAs: ["tngCard"] }] });
48
+ }
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngCardComponent, decorators: [{
50
+ type: Component,
51
+ args: [{ selector: 'tng-card', imports: [TngCardPrimitive], template: "<article\n tngCard\n class=\"tng-card\"\n [attr.data-padding]=\"padding()\"\n [attr.data-tone]=\"tone()\"\n [attr.data-variant]=\"variant()\"\n [attr.data-elevated]=\"elevated() ? '' : null\"\n [attr.data-interactive]=\"interactive() ? '' : null\"\n>\n <ng-content />\n</article>\n", styles: [":host {\n display: block;\n}\n\n.tng-card {\n background: var(--tng-semantic-background-surface);\n border: 1px solid var(--tng-semantic-border-strong);\n border-radius: 1rem;\n color: var(--tng-semantic-foreground-primary);\n display: grid;\n gap: 1rem;\n padding: 1rem;\n position: relative;\n}\n\n.tng-card[data-padding='none'] {\n padding: 0;\n}\n\n.tng-card[data-padding='sm'] {\n padding: 0.75rem;\n}\n\n.tng-card[data-padding='md'] {\n padding: 1rem;\n}\n\n.tng-card[data-padding='lg'] {\n padding: 1.5rem;\n}\n\n.tng-card[data-elevated] {\n box-shadow: 0 12px 28px color-mix(in srgb, var(--tng-semantic-foreground-primary) 12%, transparent);\n}\n\n.tng-card[data-interactive] {\n transition: border-color 160ms ease, box-shadow 160ms ease;\n}\n\n.tng-card[data-interactive]:focus-within,\n.tng-card[data-interactive]:hover {\n border-color: var(--tng-semantic-accent-brand);\n}\n\n.tng-card[data-variant='ghost'] {\n background: color-mix(in srgb, var(--tng-semantic-background-surface) 55%, transparent);\n}\n\n.tng-card[data-variant='outline'] {\n background: var(--tng-semantic-background-canvas);\n}\n\n.tng-card[data-tone='primary'] {\n border-color: color-mix(in srgb, var(--tng-semantic-accent-brand) 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='success'] {\n border-color: color-mix(in srgb, #16a34a 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='warning'] {\n border-color: color-mix(in srgb, #d97706 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='danger'] {\n border-color: color-mix(in srgb, #dc2626 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='info'] {\n border-color: color-mix(in srgb, #0284c7 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card-header {\n display: grid;\n gap: 0.35rem;\n}\n\n.tng-card-title {\n font-size: 1rem;\n font-weight: 600;\n line-height: 1.3;\n margin: 0;\n}\n\n.tng-card-description {\n color: var(--tng-semantic-foreground-muted);\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0;\n}\n\n.tng-card-content {\n display: grid;\n gap: 0.75rem;\n}\n\n.tng-card-footer {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.75rem;\n justify-content: flex-end;\n}\n\n.tng-card-media {\n border-radius: 0.75rem;\n display: block;\n overflow: hidden;\n}\n\n.tng-card-media :where(img, video) {\n display: block;\n height: auto;\n max-width: 100%;\n width: 100%;\n}\n\n.tng-card-actions {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n justify-content: flex-end;\n}\n\n.tng-card-actions[data-align='start'] {\n justify-content: flex-start;\n}\n\n.tng-card-divider {\n border: 0;\n border-top: 1px solid var(--tng-semantic-border-subtle);\n margin: 0;\n pointer-events: none;\n}\n\n.tng-card-link {\n border-radius: inherit;\n color: inherit;\n display: inline-flex;\n gap: 0.375rem;\n text-decoration: none;\n}\n\n.tng-card-link:focus-visible {\n outline: 2px solid var(--tng-semantic-accent-brand);\n outline-offset: 2px;\n}\n\n.tng-card-link[aria-disabled='true'] {\n cursor: default;\n opacity: 0.65;\n}\n"] }]
52
+ }], propDecorators: { elevated: [{ type: i0.Input, args: [{ isSignal: true, alias: "elevated", required: false }] }], interactive: [{ type: i0.Input, args: [{ isSignal: true, alias: "interactive", required: false }] }], padding: [{ type: i0.Input, args: [{ isSignal: true, alias: "padding", required: false }] }], tone: [{ type: i0.Input, args: [{ isSignal: true, alias: "tone", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
53
+ export class TngCardHeaderComponent {
54
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngCardHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
55
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: TngCardHeaderComponent, isStandalone: true, selector: "tng-card-header", ngImport: i0, template: "<header tngCardHeader class=\"tng-card-header\">\n <ng-content />\n</header>\n", styles: [":host {\n display: block;\n}\n\n.tng-card {\n background: var(--tng-semantic-background-surface);\n border: 1px solid var(--tng-semantic-border-strong);\n border-radius: 1rem;\n color: var(--tng-semantic-foreground-primary);\n display: grid;\n gap: 1rem;\n padding: 1rem;\n position: relative;\n}\n\n.tng-card[data-padding='none'] {\n padding: 0;\n}\n\n.tng-card[data-padding='sm'] {\n padding: 0.75rem;\n}\n\n.tng-card[data-padding='md'] {\n padding: 1rem;\n}\n\n.tng-card[data-padding='lg'] {\n padding: 1.5rem;\n}\n\n.tng-card[data-elevated] {\n box-shadow: 0 12px 28px color-mix(in srgb, var(--tng-semantic-foreground-primary) 12%, transparent);\n}\n\n.tng-card[data-interactive] {\n transition: border-color 160ms ease, box-shadow 160ms ease;\n}\n\n.tng-card[data-interactive]:focus-within,\n.tng-card[data-interactive]:hover {\n border-color: var(--tng-semantic-accent-brand);\n}\n\n.tng-card[data-variant='ghost'] {\n background: color-mix(in srgb, var(--tng-semantic-background-surface) 55%, transparent);\n}\n\n.tng-card[data-variant='outline'] {\n background: var(--tng-semantic-background-canvas);\n}\n\n.tng-card[data-tone='primary'] {\n border-color: color-mix(in srgb, var(--tng-semantic-accent-brand) 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='success'] {\n border-color: color-mix(in srgb, #16a34a 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='warning'] {\n border-color: color-mix(in srgb, #d97706 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='danger'] {\n border-color: color-mix(in srgb, #dc2626 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='info'] {\n border-color: color-mix(in srgb, #0284c7 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card-header {\n display: grid;\n gap: 0.35rem;\n}\n\n.tng-card-title {\n font-size: 1rem;\n font-weight: 600;\n line-height: 1.3;\n margin: 0;\n}\n\n.tng-card-description {\n color: var(--tng-semantic-foreground-muted);\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0;\n}\n\n.tng-card-content {\n display: grid;\n gap: 0.75rem;\n}\n\n.tng-card-footer {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.75rem;\n justify-content: flex-end;\n}\n\n.tng-card-media {\n border-radius: 0.75rem;\n display: block;\n overflow: hidden;\n}\n\n.tng-card-media :where(img, video) {\n display: block;\n height: auto;\n max-width: 100%;\n width: 100%;\n}\n\n.tng-card-actions {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n justify-content: flex-end;\n}\n\n.tng-card-actions[data-align='start'] {\n justify-content: flex-start;\n}\n\n.tng-card-divider {\n border: 0;\n border-top: 1px solid var(--tng-semantic-border-subtle);\n margin: 0;\n pointer-events: none;\n}\n\n.tng-card-link {\n border-radius: inherit;\n color: inherit;\n display: inline-flex;\n gap: 0.375rem;\n text-decoration: none;\n}\n\n.tng-card-link:focus-visible {\n outline: 2px solid var(--tng-semantic-accent-brand);\n outline-offset: 2px;\n}\n\n.tng-card-link[aria-disabled='true'] {\n cursor: default;\n opacity: 0.65;\n}\n"], dependencies: [{ kind: "directive", type: TngCardHeaderPrimitive, selector: "[tngCardHeader]", exportAs: ["tngCardHeader"] }] });
56
+ }
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngCardHeaderComponent, decorators: [{
58
+ type: Component,
59
+ args: [{ selector: 'tng-card-header', imports: [TngCardHeaderPrimitive], template: "<header tngCardHeader class=\"tng-card-header\">\n <ng-content />\n</header>\n", styles: [":host {\n display: block;\n}\n\n.tng-card {\n background: var(--tng-semantic-background-surface);\n border: 1px solid var(--tng-semantic-border-strong);\n border-radius: 1rem;\n color: var(--tng-semantic-foreground-primary);\n display: grid;\n gap: 1rem;\n padding: 1rem;\n position: relative;\n}\n\n.tng-card[data-padding='none'] {\n padding: 0;\n}\n\n.tng-card[data-padding='sm'] {\n padding: 0.75rem;\n}\n\n.tng-card[data-padding='md'] {\n padding: 1rem;\n}\n\n.tng-card[data-padding='lg'] {\n padding: 1.5rem;\n}\n\n.tng-card[data-elevated] {\n box-shadow: 0 12px 28px color-mix(in srgb, var(--tng-semantic-foreground-primary) 12%, transparent);\n}\n\n.tng-card[data-interactive] {\n transition: border-color 160ms ease, box-shadow 160ms ease;\n}\n\n.tng-card[data-interactive]:focus-within,\n.tng-card[data-interactive]:hover {\n border-color: var(--tng-semantic-accent-brand);\n}\n\n.tng-card[data-variant='ghost'] {\n background: color-mix(in srgb, var(--tng-semantic-background-surface) 55%, transparent);\n}\n\n.tng-card[data-variant='outline'] {\n background: var(--tng-semantic-background-canvas);\n}\n\n.tng-card[data-tone='primary'] {\n border-color: color-mix(in srgb, var(--tng-semantic-accent-brand) 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='success'] {\n border-color: color-mix(in srgb, #16a34a 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='warning'] {\n border-color: color-mix(in srgb, #d97706 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='danger'] {\n border-color: color-mix(in srgb, #dc2626 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='info'] {\n border-color: color-mix(in srgb, #0284c7 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card-header {\n display: grid;\n gap: 0.35rem;\n}\n\n.tng-card-title {\n font-size: 1rem;\n font-weight: 600;\n line-height: 1.3;\n margin: 0;\n}\n\n.tng-card-description {\n color: var(--tng-semantic-foreground-muted);\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0;\n}\n\n.tng-card-content {\n display: grid;\n gap: 0.75rem;\n}\n\n.tng-card-footer {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.75rem;\n justify-content: flex-end;\n}\n\n.tng-card-media {\n border-radius: 0.75rem;\n display: block;\n overflow: hidden;\n}\n\n.tng-card-media :where(img, video) {\n display: block;\n height: auto;\n max-width: 100%;\n width: 100%;\n}\n\n.tng-card-actions {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n justify-content: flex-end;\n}\n\n.tng-card-actions[data-align='start'] {\n justify-content: flex-start;\n}\n\n.tng-card-divider {\n border: 0;\n border-top: 1px solid var(--tng-semantic-border-subtle);\n margin: 0;\n pointer-events: none;\n}\n\n.tng-card-link {\n border-radius: inherit;\n color: inherit;\n display: inline-flex;\n gap: 0.375rem;\n text-decoration: none;\n}\n\n.tng-card-link:focus-visible {\n outline: 2px solid var(--tng-semantic-accent-brand);\n outline-offset: 2px;\n}\n\n.tng-card-link[aria-disabled='true'] {\n cursor: default;\n opacity: 0.65;\n}\n"] }]
60
+ }] });
61
+ export class TngCardTitleComponent {
62
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngCardTitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
63
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: TngCardTitleComponent, isStandalone: true, selector: "tng-card-title", ngImport: i0, template: "<h3 tngCardTitle class=\"tng-card-title\">\n <ng-content />\n</h3>\n", styles: [":host {\n display: block;\n}\n\n.tng-card {\n background: var(--tng-semantic-background-surface);\n border: 1px solid var(--tng-semantic-border-strong);\n border-radius: 1rem;\n color: var(--tng-semantic-foreground-primary);\n display: grid;\n gap: 1rem;\n padding: 1rem;\n position: relative;\n}\n\n.tng-card[data-padding='none'] {\n padding: 0;\n}\n\n.tng-card[data-padding='sm'] {\n padding: 0.75rem;\n}\n\n.tng-card[data-padding='md'] {\n padding: 1rem;\n}\n\n.tng-card[data-padding='lg'] {\n padding: 1.5rem;\n}\n\n.tng-card[data-elevated] {\n box-shadow: 0 12px 28px color-mix(in srgb, var(--tng-semantic-foreground-primary) 12%, transparent);\n}\n\n.tng-card[data-interactive] {\n transition: border-color 160ms ease, box-shadow 160ms ease;\n}\n\n.tng-card[data-interactive]:focus-within,\n.tng-card[data-interactive]:hover {\n border-color: var(--tng-semantic-accent-brand);\n}\n\n.tng-card[data-variant='ghost'] {\n background: color-mix(in srgb, var(--tng-semantic-background-surface) 55%, transparent);\n}\n\n.tng-card[data-variant='outline'] {\n background: var(--tng-semantic-background-canvas);\n}\n\n.tng-card[data-tone='primary'] {\n border-color: color-mix(in srgb, var(--tng-semantic-accent-brand) 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='success'] {\n border-color: color-mix(in srgb, #16a34a 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='warning'] {\n border-color: color-mix(in srgb, #d97706 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='danger'] {\n border-color: color-mix(in srgb, #dc2626 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='info'] {\n border-color: color-mix(in srgb, #0284c7 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card-header {\n display: grid;\n gap: 0.35rem;\n}\n\n.tng-card-title {\n font-size: 1rem;\n font-weight: 600;\n line-height: 1.3;\n margin: 0;\n}\n\n.tng-card-description {\n color: var(--tng-semantic-foreground-muted);\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0;\n}\n\n.tng-card-content {\n display: grid;\n gap: 0.75rem;\n}\n\n.tng-card-footer {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.75rem;\n justify-content: flex-end;\n}\n\n.tng-card-media {\n border-radius: 0.75rem;\n display: block;\n overflow: hidden;\n}\n\n.tng-card-media :where(img, video) {\n display: block;\n height: auto;\n max-width: 100%;\n width: 100%;\n}\n\n.tng-card-actions {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n justify-content: flex-end;\n}\n\n.tng-card-actions[data-align='start'] {\n justify-content: flex-start;\n}\n\n.tng-card-divider {\n border: 0;\n border-top: 1px solid var(--tng-semantic-border-subtle);\n margin: 0;\n pointer-events: none;\n}\n\n.tng-card-link {\n border-radius: inherit;\n color: inherit;\n display: inline-flex;\n gap: 0.375rem;\n text-decoration: none;\n}\n\n.tng-card-link:focus-visible {\n outline: 2px solid var(--tng-semantic-accent-brand);\n outline-offset: 2px;\n}\n\n.tng-card-link[aria-disabled='true'] {\n cursor: default;\n opacity: 0.65;\n}\n"], dependencies: [{ kind: "directive", type: TngCardTitlePrimitive, selector: "[tngCardTitle]", exportAs: ["tngCardTitle"] }] });
64
+ }
65
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngCardTitleComponent, decorators: [{
66
+ type: Component,
67
+ args: [{ selector: 'tng-card-title', imports: [TngCardTitlePrimitive], template: "<h3 tngCardTitle class=\"tng-card-title\">\n <ng-content />\n</h3>\n", styles: [":host {\n display: block;\n}\n\n.tng-card {\n background: var(--tng-semantic-background-surface);\n border: 1px solid var(--tng-semantic-border-strong);\n border-radius: 1rem;\n color: var(--tng-semantic-foreground-primary);\n display: grid;\n gap: 1rem;\n padding: 1rem;\n position: relative;\n}\n\n.tng-card[data-padding='none'] {\n padding: 0;\n}\n\n.tng-card[data-padding='sm'] {\n padding: 0.75rem;\n}\n\n.tng-card[data-padding='md'] {\n padding: 1rem;\n}\n\n.tng-card[data-padding='lg'] {\n padding: 1.5rem;\n}\n\n.tng-card[data-elevated] {\n box-shadow: 0 12px 28px color-mix(in srgb, var(--tng-semantic-foreground-primary) 12%, transparent);\n}\n\n.tng-card[data-interactive] {\n transition: border-color 160ms ease, box-shadow 160ms ease;\n}\n\n.tng-card[data-interactive]:focus-within,\n.tng-card[data-interactive]:hover {\n border-color: var(--tng-semantic-accent-brand);\n}\n\n.tng-card[data-variant='ghost'] {\n background: color-mix(in srgb, var(--tng-semantic-background-surface) 55%, transparent);\n}\n\n.tng-card[data-variant='outline'] {\n background: var(--tng-semantic-background-canvas);\n}\n\n.tng-card[data-tone='primary'] {\n border-color: color-mix(in srgb, var(--tng-semantic-accent-brand) 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='success'] {\n border-color: color-mix(in srgb, #16a34a 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='warning'] {\n border-color: color-mix(in srgb, #d97706 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='danger'] {\n border-color: color-mix(in srgb, #dc2626 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='info'] {\n border-color: color-mix(in srgb, #0284c7 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card-header {\n display: grid;\n gap: 0.35rem;\n}\n\n.tng-card-title {\n font-size: 1rem;\n font-weight: 600;\n line-height: 1.3;\n margin: 0;\n}\n\n.tng-card-description {\n color: var(--tng-semantic-foreground-muted);\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0;\n}\n\n.tng-card-content {\n display: grid;\n gap: 0.75rem;\n}\n\n.tng-card-footer {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.75rem;\n justify-content: flex-end;\n}\n\n.tng-card-media {\n border-radius: 0.75rem;\n display: block;\n overflow: hidden;\n}\n\n.tng-card-media :where(img, video) {\n display: block;\n height: auto;\n max-width: 100%;\n width: 100%;\n}\n\n.tng-card-actions {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n justify-content: flex-end;\n}\n\n.tng-card-actions[data-align='start'] {\n justify-content: flex-start;\n}\n\n.tng-card-divider {\n border: 0;\n border-top: 1px solid var(--tng-semantic-border-subtle);\n margin: 0;\n pointer-events: none;\n}\n\n.tng-card-link {\n border-radius: inherit;\n color: inherit;\n display: inline-flex;\n gap: 0.375rem;\n text-decoration: none;\n}\n\n.tng-card-link:focus-visible {\n outline: 2px solid var(--tng-semantic-accent-brand);\n outline-offset: 2px;\n}\n\n.tng-card-link[aria-disabled='true'] {\n cursor: default;\n opacity: 0.65;\n}\n"] }]
68
+ }] });
69
+ export class TngCardDescriptionComponent {
70
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngCardDescriptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
71
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: TngCardDescriptionComponent, isStandalone: true, selector: "tng-card-description", ngImport: i0, template: "<p tngCardDescription class=\"tng-card-description\">\n <ng-content />\n</p>\n", styles: [":host {\n display: block;\n}\n\n.tng-card {\n background: var(--tng-semantic-background-surface);\n border: 1px solid var(--tng-semantic-border-strong);\n border-radius: 1rem;\n color: var(--tng-semantic-foreground-primary);\n display: grid;\n gap: 1rem;\n padding: 1rem;\n position: relative;\n}\n\n.tng-card[data-padding='none'] {\n padding: 0;\n}\n\n.tng-card[data-padding='sm'] {\n padding: 0.75rem;\n}\n\n.tng-card[data-padding='md'] {\n padding: 1rem;\n}\n\n.tng-card[data-padding='lg'] {\n padding: 1.5rem;\n}\n\n.tng-card[data-elevated] {\n box-shadow: 0 12px 28px color-mix(in srgb, var(--tng-semantic-foreground-primary) 12%, transparent);\n}\n\n.tng-card[data-interactive] {\n transition: border-color 160ms ease, box-shadow 160ms ease;\n}\n\n.tng-card[data-interactive]:focus-within,\n.tng-card[data-interactive]:hover {\n border-color: var(--tng-semantic-accent-brand);\n}\n\n.tng-card[data-variant='ghost'] {\n background: color-mix(in srgb, var(--tng-semantic-background-surface) 55%, transparent);\n}\n\n.tng-card[data-variant='outline'] {\n background: var(--tng-semantic-background-canvas);\n}\n\n.tng-card[data-tone='primary'] {\n border-color: color-mix(in srgb, var(--tng-semantic-accent-brand) 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='success'] {\n border-color: color-mix(in srgb, #16a34a 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='warning'] {\n border-color: color-mix(in srgb, #d97706 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='danger'] {\n border-color: color-mix(in srgb, #dc2626 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='info'] {\n border-color: color-mix(in srgb, #0284c7 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card-header {\n display: grid;\n gap: 0.35rem;\n}\n\n.tng-card-title {\n font-size: 1rem;\n font-weight: 600;\n line-height: 1.3;\n margin: 0;\n}\n\n.tng-card-description {\n color: var(--tng-semantic-foreground-muted);\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0;\n}\n\n.tng-card-content {\n display: grid;\n gap: 0.75rem;\n}\n\n.tng-card-footer {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.75rem;\n justify-content: flex-end;\n}\n\n.tng-card-media {\n border-radius: 0.75rem;\n display: block;\n overflow: hidden;\n}\n\n.tng-card-media :where(img, video) {\n display: block;\n height: auto;\n max-width: 100%;\n width: 100%;\n}\n\n.tng-card-actions {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n justify-content: flex-end;\n}\n\n.tng-card-actions[data-align='start'] {\n justify-content: flex-start;\n}\n\n.tng-card-divider {\n border: 0;\n border-top: 1px solid var(--tng-semantic-border-subtle);\n margin: 0;\n pointer-events: none;\n}\n\n.tng-card-link {\n border-radius: inherit;\n color: inherit;\n display: inline-flex;\n gap: 0.375rem;\n text-decoration: none;\n}\n\n.tng-card-link:focus-visible {\n outline: 2px solid var(--tng-semantic-accent-brand);\n outline-offset: 2px;\n}\n\n.tng-card-link[aria-disabled='true'] {\n cursor: default;\n opacity: 0.65;\n}\n"], dependencies: [{ kind: "directive", type: TngCardDescriptionPrimitive, selector: "[tngCardDescription]", exportAs: ["tngCardDescription"] }] });
72
+ }
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngCardDescriptionComponent, decorators: [{
74
+ type: Component,
75
+ args: [{ selector: 'tng-card-description', imports: [TngCardDescriptionPrimitive], template: "<p tngCardDescription class=\"tng-card-description\">\n <ng-content />\n</p>\n", styles: [":host {\n display: block;\n}\n\n.tng-card {\n background: var(--tng-semantic-background-surface);\n border: 1px solid var(--tng-semantic-border-strong);\n border-radius: 1rem;\n color: var(--tng-semantic-foreground-primary);\n display: grid;\n gap: 1rem;\n padding: 1rem;\n position: relative;\n}\n\n.tng-card[data-padding='none'] {\n padding: 0;\n}\n\n.tng-card[data-padding='sm'] {\n padding: 0.75rem;\n}\n\n.tng-card[data-padding='md'] {\n padding: 1rem;\n}\n\n.tng-card[data-padding='lg'] {\n padding: 1.5rem;\n}\n\n.tng-card[data-elevated] {\n box-shadow: 0 12px 28px color-mix(in srgb, var(--tng-semantic-foreground-primary) 12%, transparent);\n}\n\n.tng-card[data-interactive] {\n transition: border-color 160ms ease, box-shadow 160ms ease;\n}\n\n.tng-card[data-interactive]:focus-within,\n.tng-card[data-interactive]:hover {\n border-color: var(--tng-semantic-accent-brand);\n}\n\n.tng-card[data-variant='ghost'] {\n background: color-mix(in srgb, var(--tng-semantic-background-surface) 55%, transparent);\n}\n\n.tng-card[data-variant='outline'] {\n background: var(--tng-semantic-background-canvas);\n}\n\n.tng-card[data-tone='primary'] {\n border-color: color-mix(in srgb, var(--tng-semantic-accent-brand) 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='success'] {\n border-color: color-mix(in srgb, #16a34a 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='warning'] {\n border-color: color-mix(in srgb, #d97706 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='danger'] {\n border-color: color-mix(in srgb, #dc2626 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='info'] {\n border-color: color-mix(in srgb, #0284c7 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card-header {\n display: grid;\n gap: 0.35rem;\n}\n\n.tng-card-title {\n font-size: 1rem;\n font-weight: 600;\n line-height: 1.3;\n margin: 0;\n}\n\n.tng-card-description {\n color: var(--tng-semantic-foreground-muted);\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0;\n}\n\n.tng-card-content {\n display: grid;\n gap: 0.75rem;\n}\n\n.tng-card-footer {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.75rem;\n justify-content: flex-end;\n}\n\n.tng-card-media {\n border-radius: 0.75rem;\n display: block;\n overflow: hidden;\n}\n\n.tng-card-media :where(img, video) {\n display: block;\n height: auto;\n max-width: 100%;\n width: 100%;\n}\n\n.tng-card-actions {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n justify-content: flex-end;\n}\n\n.tng-card-actions[data-align='start'] {\n justify-content: flex-start;\n}\n\n.tng-card-divider {\n border: 0;\n border-top: 1px solid var(--tng-semantic-border-subtle);\n margin: 0;\n pointer-events: none;\n}\n\n.tng-card-link {\n border-radius: inherit;\n color: inherit;\n display: inline-flex;\n gap: 0.375rem;\n text-decoration: none;\n}\n\n.tng-card-link:focus-visible {\n outline: 2px solid var(--tng-semantic-accent-brand);\n outline-offset: 2px;\n}\n\n.tng-card-link[aria-disabled='true'] {\n cursor: default;\n opacity: 0.65;\n}\n"] }]
76
+ }] });
77
+ export class TngCardContentComponent {
78
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngCardContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
79
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: TngCardContentComponent, isStandalone: true, selector: "tng-card-content", ngImport: i0, template: "<section tngCardContent class=\"tng-card-content\">\n <ng-content />\n</section>\n", styles: [":host {\n display: block;\n}\n\n.tng-card {\n background: var(--tng-semantic-background-surface);\n border: 1px solid var(--tng-semantic-border-strong);\n border-radius: 1rem;\n color: var(--tng-semantic-foreground-primary);\n display: grid;\n gap: 1rem;\n padding: 1rem;\n position: relative;\n}\n\n.tng-card[data-padding='none'] {\n padding: 0;\n}\n\n.tng-card[data-padding='sm'] {\n padding: 0.75rem;\n}\n\n.tng-card[data-padding='md'] {\n padding: 1rem;\n}\n\n.tng-card[data-padding='lg'] {\n padding: 1.5rem;\n}\n\n.tng-card[data-elevated] {\n box-shadow: 0 12px 28px color-mix(in srgb, var(--tng-semantic-foreground-primary) 12%, transparent);\n}\n\n.tng-card[data-interactive] {\n transition: border-color 160ms ease, box-shadow 160ms ease;\n}\n\n.tng-card[data-interactive]:focus-within,\n.tng-card[data-interactive]:hover {\n border-color: var(--tng-semantic-accent-brand);\n}\n\n.tng-card[data-variant='ghost'] {\n background: color-mix(in srgb, var(--tng-semantic-background-surface) 55%, transparent);\n}\n\n.tng-card[data-variant='outline'] {\n background: var(--tng-semantic-background-canvas);\n}\n\n.tng-card[data-tone='primary'] {\n border-color: color-mix(in srgb, var(--tng-semantic-accent-brand) 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='success'] {\n border-color: color-mix(in srgb, #16a34a 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='warning'] {\n border-color: color-mix(in srgb, #d97706 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='danger'] {\n border-color: color-mix(in srgb, #dc2626 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='info'] {\n border-color: color-mix(in srgb, #0284c7 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card-header {\n display: grid;\n gap: 0.35rem;\n}\n\n.tng-card-title {\n font-size: 1rem;\n font-weight: 600;\n line-height: 1.3;\n margin: 0;\n}\n\n.tng-card-description {\n color: var(--tng-semantic-foreground-muted);\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0;\n}\n\n.tng-card-content {\n display: grid;\n gap: 0.75rem;\n}\n\n.tng-card-footer {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.75rem;\n justify-content: flex-end;\n}\n\n.tng-card-media {\n border-radius: 0.75rem;\n display: block;\n overflow: hidden;\n}\n\n.tng-card-media :where(img, video) {\n display: block;\n height: auto;\n max-width: 100%;\n width: 100%;\n}\n\n.tng-card-actions {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n justify-content: flex-end;\n}\n\n.tng-card-actions[data-align='start'] {\n justify-content: flex-start;\n}\n\n.tng-card-divider {\n border: 0;\n border-top: 1px solid var(--tng-semantic-border-subtle);\n margin: 0;\n pointer-events: none;\n}\n\n.tng-card-link {\n border-radius: inherit;\n color: inherit;\n display: inline-flex;\n gap: 0.375rem;\n text-decoration: none;\n}\n\n.tng-card-link:focus-visible {\n outline: 2px solid var(--tng-semantic-accent-brand);\n outline-offset: 2px;\n}\n\n.tng-card-link[aria-disabled='true'] {\n cursor: default;\n opacity: 0.65;\n}\n"], dependencies: [{ kind: "directive", type: TngCardContentPrimitive, selector: "[tngCardContent]", exportAs: ["tngCardContent"] }] });
80
+ }
81
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngCardContentComponent, decorators: [{
82
+ type: Component,
83
+ args: [{ selector: 'tng-card-content', imports: [TngCardContentPrimitive], template: "<section tngCardContent class=\"tng-card-content\">\n <ng-content />\n</section>\n", styles: [":host {\n display: block;\n}\n\n.tng-card {\n background: var(--tng-semantic-background-surface);\n border: 1px solid var(--tng-semantic-border-strong);\n border-radius: 1rem;\n color: var(--tng-semantic-foreground-primary);\n display: grid;\n gap: 1rem;\n padding: 1rem;\n position: relative;\n}\n\n.tng-card[data-padding='none'] {\n padding: 0;\n}\n\n.tng-card[data-padding='sm'] {\n padding: 0.75rem;\n}\n\n.tng-card[data-padding='md'] {\n padding: 1rem;\n}\n\n.tng-card[data-padding='lg'] {\n padding: 1.5rem;\n}\n\n.tng-card[data-elevated] {\n box-shadow: 0 12px 28px color-mix(in srgb, var(--tng-semantic-foreground-primary) 12%, transparent);\n}\n\n.tng-card[data-interactive] {\n transition: border-color 160ms ease, box-shadow 160ms ease;\n}\n\n.tng-card[data-interactive]:focus-within,\n.tng-card[data-interactive]:hover {\n border-color: var(--tng-semantic-accent-brand);\n}\n\n.tng-card[data-variant='ghost'] {\n background: color-mix(in srgb, var(--tng-semantic-background-surface) 55%, transparent);\n}\n\n.tng-card[data-variant='outline'] {\n background: var(--tng-semantic-background-canvas);\n}\n\n.tng-card[data-tone='primary'] {\n border-color: color-mix(in srgb, var(--tng-semantic-accent-brand) 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='success'] {\n border-color: color-mix(in srgb, #16a34a 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='warning'] {\n border-color: color-mix(in srgb, #d97706 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='danger'] {\n border-color: color-mix(in srgb, #dc2626 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='info'] {\n border-color: color-mix(in srgb, #0284c7 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card-header {\n display: grid;\n gap: 0.35rem;\n}\n\n.tng-card-title {\n font-size: 1rem;\n font-weight: 600;\n line-height: 1.3;\n margin: 0;\n}\n\n.tng-card-description {\n color: var(--tng-semantic-foreground-muted);\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0;\n}\n\n.tng-card-content {\n display: grid;\n gap: 0.75rem;\n}\n\n.tng-card-footer {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.75rem;\n justify-content: flex-end;\n}\n\n.tng-card-media {\n border-radius: 0.75rem;\n display: block;\n overflow: hidden;\n}\n\n.tng-card-media :where(img, video) {\n display: block;\n height: auto;\n max-width: 100%;\n width: 100%;\n}\n\n.tng-card-actions {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n justify-content: flex-end;\n}\n\n.tng-card-actions[data-align='start'] {\n justify-content: flex-start;\n}\n\n.tng-card-divider {\n border: 0;\n border-top: 1px solid var(--tng-semantic-border-subtle);\n margin: 0;\n pointer-events: none;\n}\n\n.tng-card-link {\n border-radius: inherit;\n color: inherit;\n display: inline-flex;\n gap: 0.375rem;\n text-decoration: none;\n}\n\n.tng-card-link:focus-visible {\n outline: 2px solid var(--tng-semantic-accent-brand);\n outline-offset: 2px;\n}\n\n.tng-card-link[aria-disabled='true'] {\n cursor: default;\n opacity: 0.65;\n}\n"] }]
84
+ }] });
85
+ export class TngCardFooterComponent {
86
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngCardFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
87
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: TngCardFooterComponent, isStandalone: true, selector: "tng-card-footer", ngImport: i0, template: "<footer tngCardFooter class=\"tng-card-footer\">\n <ng-content />\n</footer>\n", styles: [":host {\n display: block;\n}\n\n.tng-card {\n background: var(--tng-semantic-background-surface);\n border: 1px solid var(--tng-semantic-border-strong);\n border-radius: 1rem;\n color: var(--tng-semantic-foreground-primary);\n display: grid;\n gap: 1rem;\n padding: 1rem;\n position: relative;\n}\n\n.tng-card[data-padding='none'] {\n padding: 0;\n}\n\n.tng-card[data-padding='sm'] {\n padding: 0.75rem;\n}\n\n.tng-card[data-padding='md'] {\n padding: 1rem;\n}\n\n.tng-card[data-padding='lg'] {\n padding: 1.5rem;\n}\n\n.tng-card[data-elevated] {\n box-shadow: 0 12px 28px color-mix(in srgb, var(--tng-semantic-foreground-primary) 12%, transparent);\n}\n\n.tng-card[data-interactive] {\n transition: border-color 160ms ease, box-shadow 160ms ease;\n}\n\n.tng-card[data-interactive]:focus-within,\n.tng-card[data-interactive]:hover {\n border-color: var(--tng-semantic-accent-brand);\n}\n\n.tng-card[data-variant='ghost'] {\n background: color-mix(in srgb, var(--tng-semantic-background-surface) 55%, transparent);\n}\n\n.tng-card[data-variant='outline'] {\n background: var(--tng-semantic-background-canvas);\n}\n\n.tng-card[data-tone='primary'] {\n border-color: color-mix(in srgb, var(--tng-semantic-accent-brand) 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='success'] {\n border-color: color-mix(in srgb, #16a34a 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='warning'] {\n border-color: color-mix(in srgb, #d97706 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='danger'] {\n border-color: color-mix(in srgb, #dc2626 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='info'] {\n border-color: color-mix(in srgb, #0284c7 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card-header {\n display: grid;\n gap: 0.35rem;\n}\n\n.tng-card-title {\n font-size: 1rem;\n font-weight: 600;\n line-height: 1.3;\n margin: 0;\n}\n\n.tng-card-description {\n color: var(--tng-semantic-foreground-muted);\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0;\n}\n\n.tng-card-content {\n display: grid;\n gap: 0.75rem;\n}\n\n.tng-card-footer {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.75rem;\n justify-content: flex-end;\n}\n\n.tng-card-media {\n border-radius: 0.75rem;\n display: block;\n overflow: hidden;\n}\n\n.tng-card-media :where(img, video) {\n display: block;\n height: auto;\n max-width: 100%;\n width: 100%;\n}\n\n.tng-card-actions {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n justify-content: flex-end;\n}\n\n.tng-card-actions[data-align='start'] {\n justify-content: flex-start;\n}\n\n.tng-card-divider {\n border: 0;\n border-top: 1px solid var(--tng-semantic-border-subtle);\n margin: 0;\n pointer-events: none;\n}\n\n.tng-card-link {\n border-radius: inherit;\n color: inherit;\n display: inline-flex;\n gap: 0.375rem;\n text-decoration: none;\n}\n\n.tng-card-link:focus-visible {\n outline: 2px solid var(--tng-semantic-accent-brand);\n outline-offset: 2px;\n}\n\n.tng-card-link[aria-disabled='true'] {\n cursor: default;\n opacity: 0.65;\n}\n"], dependencies: [{ kind: "directive", type: TngCardFooterPrimitive, selector: "[tngCardFooter]", exportAs: ["tngCardFooter"] }] });
88
+ }
89
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngCardFooterComponent, decorators: [{
90
+ type: Component,
91
+ args: [{ selector: 'tng-card-footer', imports: [TngCardFooterPrimitive], template: "<footer tngCardFooter class=\"tng-card-footer\">\n <ng-content />\n</footer>\n", styles: [":host {\n display: block;\n}\n\n.tng-card {\n background: var(--tng-semantic-background-surface);\n border: 1px solid var(--tng-semantic-border-strong);\n border-radius: 1rem;\n color: var(--tng-semantic-foreground-primary);\n display: grid;\n gap: 1rem;\n padding: 1rem;\n position: relative;\n}\n\n.tng-card[data-padding='none'] {\n padding: 0;\n}\n\n.tng-card[data-padding='sm'] {\n padding: 0.75rem;\n}\n\n.tng-card[data-padding='md'] {\n padding: 1rem;\n}\n\n.tng-card[data-padding='lg'] {\n padding: 1.5rem;\n}\n\n.tng-card[data-elevated] {\n box-shadow: 0 12px 28px color-mix(in srgb, var(--tng-semantic-foreground-primary) 12%, transparent);\n}\n\n.tng-card[data-interactive] {\n transition: border-color 160ms ease, box-shadow 160ms ease;\n}\n\n.tng-card[data-interactive]:focus-within,\n.tng-card[data-interactive]:hover {\n border-color: var(--tng-semantic-accent-brand);\n}\n\n.tng-card[data-variant='ghost'] {\n background: color-mix(in srgb, var(--tng-semantic-background-surface) 55%, transparent);\n}\n\n.tng-card[data-variant='outline'] {\n background: var(--tng-semantic-background-canvas);\n}\n\n.tng-card[data-tone='primary'] {\n border-color: color-mix(in srgb, var(--tng-semantic-accent-brand) 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='success'] {\n border-color: color-mix(in srgb, #16a34a 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='warning'] {\n border-color: color-mix(in srgb, #d97706 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='danger'] {\n border-color: color-mix(in srgb, #dc2626 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='info'] {\n border-color: color-mix(in srgb, #0284c7 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card-header {\n display: grid;\n gap: 0.35rem;\n}\n\n.tng-card-title {\n font-size: 1rem;\n font-weight: 600;\n line-height: 1.3;\n margin: 0;\n}\n\n.tng-card-description {\n color: var(--tng-semantic-foreground-muted);\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0;\n}\n\n.tng-card-content {\n display: grid;\n gap: 0.75rem;\n}\n\n.tng-card-footer {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.75rem;\n justify-content: flex-end;\n}\n\n.tng-card-media {\n border-radius: 0.75rem;\n display: block;\n overflow: hidden;\n}\n\n.tng-card-media :where(img, video) {\n display: block;\n height: auto;\n max-width: 100%;\n width: 100%;\n}\n\n.tng-card-actions {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n justify-content: flex-end;\n}\n\n.tng-card-actions[data-align='start'] {\n justify-content: flex-start;\n}\n\n.tng-card-divider {\n border: 0;\n border-top: 1px solid var(--tng-semantic-border-subtle);\n margin: 0;\n pointer-events: none;\n}\n\n.tng-card-link {\n border-radius: inherit;\n color: inherit;\n display: inline-flex;\n gap: 0.375rem;\n text-decoration: none;\n}\n\n.tng-card-link:focus-visible {\n outline: 2px solid var(--tng-semantic-accent-brand);\n outline-offset: 2px;\n}\n\n.tng-card-link[aria-disabled='true'] {\n cursor: default;\n opacity: 0.65;\n}\n"] }]
92
+ }] });
93
+ export class TngCardMediaComponent {
94
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngCardMediaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
95
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: TngCardMediaComponent, isStandalone: true, selector: "tng-card-media", ngImport: i0, template: "<div tngCardMedia class=\"tng-card-media\">\n <ng-content />\n</div>\n", styles: [":host {\n display: block;\n}\n\n.tng-card {\n background: var(--tng-semantic-background-surface);\n border: 1px solid var(--tng-semantic-border-strong);\n border-radius: 1rem;\n color: var(--tng-semantic-foreground-primary);\n display: grid;\n gap: 1rem;\n padding: 1rem;\n position: relative;\n}\n\n.tng-card[data-padding='none'] {\n padding: 0;\n}\n\n.tng-card[data-padding='sm'] {\n padding: 0.75rem;\n}\n\n.tng-card[data-padding='md'] {\n padding: 1rem;\n}\n\n.tng-card[data-padding='lg'] {\n padding: 1.5rem;\n}\n\n.tng-card[data-elevated] {\n box-shadow: 0 12px 28px color-mix(in srgb, var(--tng-semantic-foreground-primary) 12%, transparent);\n}\n\n.tng-card[data-interactive] {\n transition: border-color 160ms ease, box-shadow 160ms ease;\n}\n\n.tng-card[data-interactive]:focus-within,\n.tng-card[data-interactive]:hover {\n border-color: var(--tng-semantic-accent-brand);\n}\n\n.tng-card[data-variant='ghost'] {\n background: color-mix(in srgb, var(--tng-semantic-background-surface) 55%, transparent);\n}\n\n.tng-card[data-variant='outline'] {\n background: var(--tng-semantic-background-canvas);\n}\n\n.tng-card[data-tone='primary'] {\n border-color: color-mix(in srgb, var(--tng-semantic-accent-brand) 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='success'] {\n border-color: color-mix(in srgb, #16a34a 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='warning'] {\n border-color: color-mix(in srgb, #d97706 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='danger'] {\n border-color: color-mix(in srgb, #dc2626 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='info'] {\n border-color: color-mix(in srgb, #0284c7 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card-header {\n display: grid;\n gap: 0.35rem;\n}\n\n.tng-card-title {\n font-size: 1rem;\n font-weight: 600;\n line-height: 1.3;\n margin: 0;\n}\n\n.tng-card-description {\n color: var(--tng-semantic-foreground-muted);\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0;\n}\n\n.tng-card-content {\n display: grid;\n gap: 0.75rem;\n}\n\n.tng-card-footer {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.75rem;\n justify-content: flex-end;\n}\n\n.tng-card-media {\n border-radius: 0.75rem;\n display: block;\n overflow: hidden;\n}\n\n.tng-card-media :where(img, video) {\n display: block;\n height: auto;\n max-width: 100%;\n width: 100%;\n}\n\n.tng-card-actions {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n justify-content: flex-end;\n}\n\n.tng-card-actions[data-align='start'] {\n justify-content: flex-start;\n}\n\n.tng-card-divider {\n border: 0;\n border-top: 1px solid var(--tng-semantic-border-subtle);\n margin: 0;\n pointer-events: none;\n}\n\n.tng-card-link {\n border-radius: inherit;\n color: inherit;\n display: inline-flex;\n gap: 0.375rem;\n text-decoration: none;\n}\n\n.tng-card-link:focus-visible {\n outline: 2px solid var(--tng-semantic-accent-brand);\n outline-offset: 2px;\n}\n\n.tng-card-link[aria-disabled='true'] {\n cursor: default;\n opacity: 0.65;\n}\n"], dependencies: [{ kind: "directive", type: TngCardMediaPrimitive, selector: "[tngCardMedia]", exportAs: ["tngCardMedia"] }] });
96
+ }
97
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngCardMediaComponent, decorators: [{
98
+ type: Component,
99
+ args: [{ selector: 'tng-card-media', imports: [TngCardMediaPrimitive], template: "<div tngCardMedia class=\"tng-card-media\">\n <ng-content />\n</div>\n", styles: [":host {\n display: block;\n}\n\n.tng-card {\n background: var(--tng-semantic-background-surface);\n border: 1px solid var(--tng-semantic-border-strong);\n border-radius: 1rem;\n color: var(--tng-semantic-foreground-primary);\n display: grid;\n gap: 1rem;\n padding: 1rem;\n position: relative;\n}\n\n.tng-card[data-padding='none'] {\n padding: 0;\n}\n\n.tng-card[data-padding='sm'] {\n padding: 0.75rem;\n}\n\n.tng-card[data-padding='md'] {\n padding: 1rem;\n}\n\n.tng-card[data-padding='lg'] {\n padding: 1.5rem;\n}\n\n.tng-card[data-elevated] {\n box-shadow: 0 12px 28px color-mix(in srgb, var(--tng-semantic-foreground-primary) 12%, transparent);\n}\n\n.tng-card[data-interactive] {\n transition: border-color 160ms ease, box-shadow 160ms ease;\n}\n\n.tng-card[data-interactive]:focus-within,\n.tng-card[data-interactive]:hover {\n border-color: var(--tng-semantic-accent-brand);\n}\n\n.tng-card[data-variant='ghost'] {\n background: color-mix(in srgb, var(--tng-semantic-background-surface) 55%, transparent);\n}\n\n.tng-card[data-variant='outline'] {\n background: var(--tng-semantic-background-canvas);\n}\n\n.tng-card[data-tone='primary'] {\n border-color: color-mix(in srgb, var(--tng-semantic-accent-brand) 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='success'] {\n border-color: color-mix(in srgb, #16a34a 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='warning'] {\n border-color: color-mix(in srgb, #d97706 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='danger'] {\n border-color: color-mix(in srgb, #dc2626 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='info'] {\n border-color: color-mix(in srgb, #0284c7 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card-header {\n display: grid;\n gap: 0.35rem;\n}\n\n.tng-card-title {\n font-size: 1rem;\n font-weight: 600;\n line-height: 1.3;\n margin: 0;\n}\n\n.tng-card-description {\n color: var(--tng-semantic-foreground-muted);\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0;\n}\n\n.tng-card-content {\n display: grid;\n gap: 0.75rem;\n}\n\n.tng-card-footer {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.75rem;\n justify-content: flex-end;\n}\n\n.tng-card-media {\n border-radius: 0.75rem;\n display: block;\n overflow: hidden;\n}\n\n.tng-card-media :where(img, video) {\n display: block;\n height: auto;\n max-width: 100%;\n width: 100%;\n}\n\n.tng-card-actions {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n justify-content: flex-end;\n}\n\n.tng-card-actions[data-align='start'] {\n justify-content: flex-start;\n}\n\n.tng-card-divider {\n border: 0;\n border-top: 1px solid var(--tng-semantic-border-subtle);\n margin: 0;\n pointer-events: none;\n}\n\n.tng-card-link {\n border-radius: inherit;\n color: inherit;\n display: inline-flex;\n gap: 0.375rem;\n text-decoration: none;\n}\n\n.tng-card-link:focus-visible {\n outline: 2px solid var(--tng-semantic-accent-brand);\n outline-offset: 2px;\n}\n\n.tng-card-link[aria-disabled='true'] {\n cursor: default;\n opacity: 0.65;\n}\n"] }]
100
+ }] });
101
+ export class TngCardActionsComponent {
102
+ align = input(defaultCardActionsAlign, { ...(ngDevMode ? { debugName: "align" } : {}), transform: coerceCardActionsAlign });
103
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngCardActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
104
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.1", type: TngCardActionsComponent, isStandalone: true, selector: "tng-card-actions", inputs: { align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div tngCardActions class=\"tng-card-actions\" [attr.data-align]=\"align()\">\n <ng-content />\n</div>\n", styles: [":host {\n display: block;\n}\n\n.tng-card {\n background: var(--tng-semantic-background-surface);\n border: 1px solid var(--tng-semantic-border-strong);\n border-radius: 1rem;\n color: var(--tng-semantic-foreground-primary);\n display: grid;\n gap: 1rem;\n padding: 1rem;\n position: relative;\n}\n\n.tng-card[data-padding='none'] {\n padding: 0;\n}\n\n.tng-card[data-padding='sm'] {\n padding: 0.75rem;\n}\n\n.tng-card[data-padding='md'] {\n padding: 1rem;\n}\n\n.tng-card[data-padding='lg'] {\n padding: 1.5rem;\n}\n\n.tng-card[data-elevated] {\n box-shadow: 0 12px 28px color-mix(in srgb, var(--tng-semantic-foreground-primary) 12%, transparent);\n}\n\n.tng-card[data-interactive] {\n transition: border-color 160ms ease, box-shadow 160ms ease;\n}\n\n.tng-card[data-interactive]:focus-within,\n.tng-card[data-interactive]:hover {\n border-color: var(--tng-semantic-accent-brand);\n}\n\n.tng-card[data-variant='ghost'] {\n background: color-mix(in srgb, var(--tng-semantic-background-surface) 55%, transparent);\n}\n\n.tng-card[data-variant='outline'] {\n background: var(--tng-semantic-background-canvas);\n}\n\n.tng-card[data-tone='primary'] {\n border-color: color-mix(in srgb, var(--tng-semantic-accent-brand) 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='success'] {\n border-color: color-mix(in srgb, #16a34a 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='warning'] {\n border-color: color-mix(in srgb, #d97706 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='danger'] {\n border-color: color-mix(in srgb, #dc2626 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='info'] {\n border-color: color-mix(in srgb, #0284c7 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card-header {\n display: grid;\n gap: 0.35rem;\n}\n\n.tng-card-title {\n font-size: 1rem;\n font-weight: 600;\n line-height: 1.3;\n margin: 0;\n}\n\n.tng-card-description {\n color: var(--tng-semantic-foreground-muted);\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0;\n}\n\n.tng-card-content {\n display: grid;\n gap: 0.75rem;\n}\n\n.tng-card-footer {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.75rem;\n justify-content: flex-end;\n}\n\n.tng-card-media {\n border-radius: 0.75rem;\n display: block;\n overflow: hidden;\n}\n\n.tng-card-media :where(img, video) {\n display: block;\n height: auto;\n max-width: 100%;\n width: 100%;\n}\n\n.tng-card-actions {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n justify-content: flex-end;\n}\n\n.tng-card-actions[data-align='start'] {\n justify-content: flex-start;\n}\n\n.tng-card-divider {\n border: 0;\n border-top: 1px solid var(--tng-semantic-border-subtle);\n margin: 0;\n pointer-events: none;\n}\n\n.tng-card-link {\n border-radius: inherit;\n color: inherit;\n display: inline-flex;\n gap: 0.375rem;\n text-decoration: none;\n}\n\n.tng-card-link:focus-visible {\n outline: 2px solid var(--tng-semantic-accent-brand);\n outline-offset: 2px;\n}\n\n.tng-card-link[aria-disabled='true'] {\n cursor: default;\n opacity: 0.65;\n}\n"], dependencies: [{ kind: "directive", type: TngCardActionsPrimitive, selector: "[tngCardActions]", exportAs: ["tngCardActions"] }] });
105
+ }
106
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngCardActionsComponent, decorators: [{
107
+ type: Component,
108
+ args: [{ selector: 'tng-card-actions', imports: [TngCardActionsPrimitive], template: "<div tngCardActions class=\"tng-card-actions\" [attr.data-align]=\"align()\">\n <ng-content />\n</div>\n", styles: [":host {\n display: block;\n}\n\n.tng-card {\n background: var(--tng-semantic-background-surface);\n border: 1px solid var(--tng-semantic-border-strong);\n border-radius: 1rem;\n color: var(--tng-semantic-foreground-primary);\n display: grid;\n gap: 1rem;\n padding: 1rem;\n position: relative;\n}\n\n.tng-card[data-padding='none'] {\n padding: 0;\n}\n\n.tng-card[data-padding='sm'] {\n padding: 0.75rem;\n}\n\n.tng-card[data-padding='md'] {\n padding: 1rem;\n}\n\n.tng-card[data-padding='lg'] {\n padding: 1.5rem;\n}\n\n.tng-card[data-elevated] {\n box-shadow: 0 12px 28px color-mix(in srgb, var(--tng-semantic-foreground-primary) 12%, transparent);\n}\n\n.tng-card[data-interactive] {\n transition: border-color 160ms ease, box-shadow 160ms ease;\n}\n\n.tng-card[data-interactive]:focus-within,\n.tng-card[data-interactive]:hover {\n border-color: var(--tng-semantic-accent-brand);\n}\n\n.tng-card[data-variant='ghost'] {\n background: color-mix(in srgb, var(--tng-semantic-background-surface) 55%, transparent);\n}\n\n.tng-card[data-variant='outline'] {\n background: var(--tng-semantic-background-canvas);\n}\n\n.tng-card[data-tone='primary'] {\n border-color: color-mix(in srgb, var(--tng-semantic-accent-brand) 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='success'] {\n border-color: color-mix(in srgb, #16a34a 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='warning'] {\n border-color: color-mix(in srgb, #d97706 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='danger'] {\n border-color: color-mix(in srgb, #dc2626 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='info'] {\n border-color: color-mix(in srgb, #0284c7 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card-header {\n display: grid;\n gap: 0.35rem;\n}\n\n.tng-card-title {\n font-size: 1rem;\n font-weight: 600;\n line-height: 1.3;\n margin: 0;\n}\n\n.tng-card-description {\n color: var(--tng-semantic-foreground-muted);\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0;\n}\n\n.tng-card-content {\n display: grid;\n gap: 0.75rem;\n}\n\n.tng-card-footer {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.75rem;\n justify-content: flex-end;\n}\n\n.tng-card-media {\n border-radius: 0.75rem;\n display: block;\n overflow: hidden;\n}\n\n.tng-card-media :where(img, video) {\n display: block;\n height: auto;\n max-width: 100%;\n width: 100%;\n}\n\n.tng-card-actions {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n justify-content: flex-end;\n}\n\n.tng-card-actions[data-align='start'] {\n justify-content: flex-start;\n}\n\n.tng-card-divider {\n border: 0;\n border-top: 1px solid var(--tng-semantic-border-subtle);\n margin: 0;\n pointer-events: none;\n}\n\n.tng-card-link {\n border-radius: inherit;\n color: inherit;\n display: inline-flex;\n gap: 0.375rem;\n text-decoration: none;\n}\n\n.tng-card-link:focus-visible {\n outline: 2px solid var(--tng-semantic-accent-brand);\n outline-offset: 2px;\n}\n\n.tng-card-link[aria-disabled='true'] {\n cursor: default;\n opacity: 0.65;\n}\n"] }]
109
+ }], propDecorators: { align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }] } });
110
+ export class TngCardDividerComponent {
111
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngCardDividerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
112
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: TngCardDividerComponent, isStandalone: true, selector: "tng-card-divider", ngImport: i0, template: "<hr tngCardDivider class=\"tng-card-divider\" aria-hidden=\"true\" />\n", styles: [":host {\n display: block;\n}\n\n.tng-card {\n background: var(--tng-semantic-background-surface);\n border: 1px solid var(--tng-semantic-border-strong);\n border-radius: 1rem;\n color: var(--tng-semantic-foreground-primary);\n display: grid;\n gap: 1rem;\n padding: 1rem;\n position: relative;\n}\n\n.tng-card[data-padding='none'] {\n padding: 0;\n}\n\n.tng-card[data-padding='sm'] {\n padding: 0.75rem;\n}\n\n.tng-card[data-padding='md'] {\n padding: 1rem;\n}\n\n.tng-card[data-padding='lg'] {\n padding: 1.5rem;\n}\n\n.tng-card[data-elevated] {\n box-shadow: 0 12px 28px color-mix(in srgb, var(--tng-semantic-foreground-primary) 12%, transparent);\n}\n\n.tng-card[data-interactive] {\n transition: border-color 160ms ease, box-shadow 160ms ease;\n}\n\n.tng-card[data-interactive]:focus-within,\n.tng-card[data-interactive]:hover {\n border-color: var(--tng-semantic-accent-brand);\n}\n\n.tng-card[data-variant='ghost'] {\n background: color-mix(in srgb, var(--tng-semantic-background-surface) 55%, transparent);\n}\n\n.tng-card[data-variant='outline'] {\n background: var(--tng-semantic-background-canvas);\n}\n\n.tng-card[data-tone='primary'] {\n border-color: color-mix(in srgb, var(--tng-semantic-accent-brand) 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='success'] {\n border-color: color-mix(in srgb, #16a34a 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='warning'] {\n border-color: color-mix(in srgb, #d97706 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='danger'] {\n border-color: color-mix(in srgb, #dc2626 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='info'] {\n border-color: color-mix(in srgb, #0284c7 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card-header {\n display: grid;\n gap: 0.35rem;\n}\n\n.tng-card-title {\n font-size: 1rem;\n font-weight: 600;\n line-height: 1.3;\n margin: 0;\n}\n\n.tng-card-description {\n color: var(--tng-semantic-foreground-muted);\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0;\n}\n\n.tng-card-content {\n display: grid;\n gap: 0.75rem;\n}\n\n.tng-card-footer {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.75rem;\n justify-content: flex-end;\n}\n\n.tng-card-media {\n border-radius: 0.75rem;\n display: block;\n overflow: hidden;\n}\n\n.tng-card-media :where(img, video) {\n display: block;\n height: auto;\n max-width: 100%;\n width: 100%;\n}\n\n.tng-card-actions {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n justify-content: flex-end;\n}\n\n.tng-card-actions[data-align='start'] {\n justify-content: flex-start;\n}\n\n.tng-card-divider {\n border: 0;\n border-top: 1px solid var(--tng-semantic-border-subtle);\n margin: 0;\n pointer-events: none;\n}\n\n.tng-card-link {\n border-radius: inherit;\n color: inherit;\n display: inline-flex;\n gap: 0.375rem;\n text-decoration: none;\n}\n\n.tng-card-link:focus-visible {\n outline: 2px solid var(--tng-semantic-accent-brand);\n outline-offset: 2px;\n}\n\n.tng-card-link[aria-disabled='true'] {\n cursor: default;\n opacity: 0.65;\n}\n"], dependencies: [{ kind: "directive", type: TngCardDividerPrimitive, selector: "[tngCardDivider]", exportAs: ["tngCardDivider"] }] });
113
+ }
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngCardDividerComponent, decorators: [{
115
+ type: Component,
116
+ args: [{ selector: 'tng-card-divider', imports: [TngCardDividerPrimitive], template: "<hr tngCardDivider class=\"tng-card-divider\" aria-hidden=\"true\" />\n", styles: [":host {\n display: block;\n}\n\n.tng-card {\n background: var(--tng-semantic-background-surface);\n border: 1px solid var(--tng-semantic-border-strong);\n border-radius: 1rem;\n color: var(--tng-semantic-foreground-primary);\n display: grid;\n gap: 1rem;\n padding: 1rem;\n position: relative;\n}\n\n.tng-card[data-padding='none'] {\n padding: 0;\n}\n\n.tng-card[data-padding='sm'] {\n padding: 0.75rem;\n}\n\n.tng-card[data-padding='md'] {\n padding: 1rem;\n}\n\n.tng-card[data-padding='lg'] {\n padding: 1.5rem;\n}\n\n.tng-card[data-elevated] {\n box-shadow: 0 12px 28px color-mix(in srgb, var(--tng-semantic-foreground-primary) 12%, transparent);\n}\n\n.tng-card[data-interactive] {\n transition: border-color 160ms ease, box-shadow 160ms ease;\n}\n\n.tng-card[data-interactive]:focus-within,\n.tng-card[data-interactive]:hover {\n border-color: var(--tng-semantic-accent-brand);\n}\n\n.tng-card[data-variant='ghost'] {\n background: color-mix(in srgb, var(--tng-semantic-background-surface) 55%, transparent);\n}\n\n.tng-card[data-variant='outline'] {\n background: var(--tng-semantic-background-canvas);\n}\n\n.tng-card[data-tone='primary'] {\n border-color: color-mix(in srgb, var(--tng-semantic-accent-brand) 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='success'] {\n border-color: color-mix(in srgb, #16a34a 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='warning'] {\n border-color: color-mix(in srgb, #d97706 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='danger'] {\n border-color: color-mix(in srgb, #dc2626 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='info'] {\n border-color: color-mix(in srgb, #0284c7 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card-header {\n display: grid;\n gap: 0.35rem;\n}\n\n.tng-card-title {\n font-size: 1rem;\n font-weight: 600;\n line-height: 1.3;\n margin: 0;\n}\n\n.tng-card-description {\n color: var(--tng-semantic-foreground-muted);\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0;\n}\n\n.tng-card-content {\n display: grid;\n gap: 0.75rem;\n}\n\n.tng-card-footer {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.75rem;\n justify-content: flex-end;\n}\n\n.tng-card-media {\n border-radius: 0.75rem;\n display: block;\n overflow: hidden;\n}\n\n.tng-card-media :where(img, video) {\n display: block;\n height: auto;\n max-width: 100%;\n width: 100%;\n}\n\n.tng-card-actions {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n justify-content: flex-end;\n}\n\n.tng-card-actions[data-align='start'] {\n justify-content: flex-start;\n}\n\n.tng-card-divider {\n border: 0;\n border-top: 1px solid var(--tng-semantic-border-subtle);\n margin: 0;\n pointer-events: none;\n}\n\n.tng-card-link {\n border-radius: inherit;\n color: inherit;\n display: inline-flex;\n gap: 0.375rem;\n text-decoration: none;\n}\n\n.tng-card-link:focus-visible {\n outline: 2px solid var(--tng-semantic-accent-brand);\n outline-offset: 2px;\n}\n\n.tng-card-link[aria-disabled='true'] {\n cursor: default;\n opacity: 0.65;\n}\n"] }]
117
+ }] });
118
+ export class TngCardLinkComponent {
119
+ ariaLabel = input(null, ...(ngDevMode ? [{ debugName: "ariaLabel" }] : []));
120
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: booleanAttribute });
121
+ href = input('#', ...(ngDevMode ? [{ debugName: "href" }] : []));
122
+ rel = input(null, ...(ngDevMode ? [{ debugName: "rel" }] : []));
123
+ target = input(null, ...(ngDevMode ? [{ debugName: "target" }] : []));
165
124
  onClick(...args) {
166
125
  if (!this.disabled()) {
167
126
  return;
@@ -173,14 +132,11 @@ let TngCardLinkComponent = class TngCardLinkComponent {
173
132
  event.preventDefault();
174
133
  event.stopImmediatePropagation();
175
134
  }
176
- };
177
- TngCardLinkComponent = __decorate([
178
- Component({
179
- selector: 'tng-card-link',
180
- imports: [TngCardLinkPrimitive],
181
- templateUrl: './tng-card-link.component.html',
182
- styleUrl: './tng-card.component.css',
183
- })
184
- ], TngCardLinkComponent);
185
- export { TngCardLinkComponent };
135
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngCardLinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
136
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.1", type: TngCardLinkComponent, isStandalone: true, selector: "tng-card-link", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, href: { classPropertyName: "href", publicName: "href", isSignal: true, isRequired: false, transformFunction: null }, rel: { classPropertyName: "rel", publicName: "rel", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<a\n tngCardLink\n class=\"tng-card-link\"\n [attr.href]=\"disabled() ? null : href()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\n [attr.tabindex]=\"disabled() ? -1 : null\"\n [attr.target]=\"target()\"\n [attr.rel]=\"rel()\"\n (click)=\"onClick($event)\"\n>\n <ng-content />\n</a>\n", styles: [":host {\n display: block;\n}\n\n.tng-card {\n background: var(--tng-semantic-background-surface);\n border: 1px solid var(--tng-semantic-border-strong);\n border-radius: 1rem;\n color: var(--tng-semantic-foreground-primary);\n display: grid;\n gap: 1rem;\n padding: 1rem;\n position: relative;\n}\n\n.tng-card[data-padding='none'] {\n padding: 0;\n}\n\n.tng-card[data-padding='sm'] {\n padding: 0.75rem;\n}\n\n.tng-card[data-padding='md'] {\n padding: 1rem;\n}\n\n.tng-card[data-padding='lg'] {\n padding: 1.5rem;\n}\n\n.tng-card[data-elevated] {\n box-shadow: 0 12px 28px color-mix(in srgb, var(--tng-semantic-foreground-primary) 12%, transparent);\n}\n\n.tng-card[data-interactive] {\n transition: border-color 160ms ease, box-shadow 160ms ease;\n}\n\n.tng-card[data-interactive]:focus-within,\n.tng-card[data-interactive]:hover {\n border-color: var(--tng-semantic-accent-brand);\n}\n\n.tng-card[data-variant='ghost'] {\n background: color-mix(in srgb, var(--tng-semantic-background-surface) 55%, transparent);\n}\n\n.tng-card[data-variant='outline'] {\n background: var(--tng-semantic-background-canvas);\n}\n\n.tng-card[data-tone='primary'] {\n border-color: color-mix(in srgb, var(--tng-semantic-accent-brand) 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='success'] {\n border-color: color-mix(in srgb, #16a34a 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='warning'] {\n border-color: color-mix(in srgb, #d97706 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='danger'] {\n border-color: color-mix(in srgb, #dc2626 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='info'] {\n border-color: color-mix(in srgb, #0284c7 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card-header {\n display: grid;\n gap: 0.35rem;\n}\n\n.tng-card-title {\n font-size: 1rem;\n font-weight: 600;\n line-height: 1.3;\n margin: 0;\n}\n\n.tng-card-description {\n color: var(--tng-semantic-foreground-muted);\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0;\n}\n\n.tng-card-content {\n display: grid;\n gap: 0.75rem;\n}\n\n.tng-card-footer {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.75rem;\n justify-content: flex-end;\n}\n\n.tng-card-media {\n border-radius: 0.75rem;\n display: block;\n overflow: hidden;\n}\n\n.tng-card-media :where(img, video) {\n display: block;\n height: auto;\n max-width: 100%;\n width: 100%;\n}\n\n.tng-card-actions {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n justify-content: flex-end;\n}\n\n.tng-card-actions[data-align='start'] {\n justify-content: flex-start;\n}\n\n.tng-card-divider {\n border: 0;\n border-top: 1px solid var(--tng-semantic-border-subtle);\n margin: 0;\n pointer-events: none;\n}\n\n.tng-card-link {\n border-radius: inherit;\n color: inherit;\n display: inline-flex;\n gap: 0.375rem;\n text-decoration: none;\n}\n\n.tng-card-link:focus-visible {\n outline: 2px solid var(--tng-semantic-accent-brand);\n outline-offset: 2px;\n}\n\n.tng-card-link[aria-disabled='true'] {\n cursor: default;\n opacity: 0.65;\n}\n"], dependencies: [{ kind: "directive", type: TngCardLinkPrimitive, selector: "[tngCardLink]", exportAs: ["tngCardLink"] }] });
137
+ }
138
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngCardLinkComponent, decorators: [{
139
+ type: Component,
140
+ args: [{ selector: 'tng-card-link', imports: [TngCardLinkPrimitive], template: "<a\n tngCardLink\n class=\"tng-card-link\"\n [attr.href]=\"disabled() ? null : href()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\n [attr.tabindex]=\"disabled() ? -1 : null\"\n [attr.target]=\"target()\"\n [attr.rel]=\"rel()\"\n (click)=\"onClick($event)\"\n>\n <ng-content />\n</a>\n", styles: [":host {\n display: block;\n}\n\n.tng-card {\n background: var(--tng-semantic-background-surface);\n border: 1px solid var(--tng-semantic-border-strong);\n border-radius: 1rem;\n color: var(--tng-semantic-foreground-primary);\n display: grid;\n gap: 1rem;\n padding: 1rem;\n position: relative;\n}\n\n.tng-card[data-padding='none'] {\n padding: 0;\n}\n\n.tng-card[data-padding='sm'] {\n padding: 0.75rem;\n}\n\n.tng-card[data-padding='md'] {\n padding: 1rem;\n}\n\n.tng-card[data-padding='lg'] {\n padding: 1.5rem;\n}\n\n.tng-card[data-elevated] {\n box-shadow: 0 12px 28px color-mix(in srgb, var(--tng-semantic-foreground-primary) 12%, transparent);\n}\n\n.tng-card[data-interactive] {\n transition: border-color 160ms ease, box-shadow 160ms ease;\n}\n\n.tng-card[data-interactive]:focus-within,\n.tng-card[data-interactive]:hover {\n border-color: var(--tng-semantic-accent-brand);\n}\n\n.tng-card[data-variant='ghost'] {\n background: color-mix(in srgb, var(--tng-semantic-background-surface) 55%, transparent);\n}\n\n.tng-card[data-variant='outline'] {\n background: var(--tng-semantic-background-canvas);\n}\n\n.tng-card[data-tone='primary'] {\n border-color: color-mix(in srgb, var(--tng-semantic-accent-brand) 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='success'] {\n border-color: color-mix(in srgb, #16a34a 40%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='warning'] {\n border-color: color-mix(in srgb, #d97706 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='danger'] {\n border-color: color-mix(in srgb, #dc2626 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card[data-tone='info'] {\n border-color: color-mix(in srgb, #0284c7 45%, var(--tng-semantic-border-strong));\n}\n\n.tng-card-header {\n display: grid;\n gap: 0.35rem;\n}\n\n.tng-card-title {\n font-size: 1rem;\n font-weight: 600;\n line-height: 1.3;\n margin: 0;\n}\n\n.tng-card-description {\n color: var(--tng-semantic-foreground-muted);\n font-size: 0.9rem;\n line-height: 1.4;\n margin: 0;\n}\n\n.tng-card-content {\n display: grid;\n gap: 0.75rem;\n}\n\n.tng-card-footer {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.75rem;\n justify-content: flex-end;\n}\n\n.tng-card-media {\n border-radius: 0.75rem;\n display: block;\n overflow: hidden;\n}\n\n.tng-card-media :where(img, video) {\n display: block;\n height: auto;\n max-width: 100%;\n width: 100%;\n}\n\n.tng-card-actions {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n justify-content: flex-end;\n}\n\n.tng-card-actions[data-align='start'] {\n justify-content: flex-start;\n}\n\n.tng-card-divider {\n border: 0;\n border-top: 1px solid var(--tng-semantic-border-subtle);\n margin: 0;\n pointer-events: none;\n}\n\n.tng-card-link {\n border-radius: inherit;\n color: inherit;\n display: inline-flex;\n gap: 0.375rem;\n text-decoration: none;\n}\n\n.tng-card-link:focus-visible {\n outline: 2px solid var(--tng-semantic-accent-brand);\n outline-offset: 2px;\n}\n\n.tng-card-link[aria-disabled='true'] {\n cursor: default;\n opacity: 0.65;\n}\n"] }]
141
+ }], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], href: [{ type: i0.Input, args: [{ isSignal: true, alias: "href", required: false }] }], rel: [{ type: i0.Input, args: [{ isSignal: true, alias: "rel", required: false }] }], target: [{ type: i0.Input, args: [{ isSignal: true, alias: "target", required: false }] }] } });
186
142
  //# sourceMappingURL=tng-card.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tng-card.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/layout/card/tng-card.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { booleanAttribute, Component, input } from '@angular/core';\nimport {\n TngCard as TngCardPrimitive,\n TngCardActions as TngCardActionsPrimitive,\n TngCardContent as TngCardContentPrimitive,\n TngCardDescription as TngCardDescriptionPrimitive,\n TngCardDivider as TngCardDividerPrimitive,\n TngCardFooter as TngCardFooterPrimitive,\n TngCardHeader as TngCardHeaderPrimitive,\n TngCardLink as TngCardLinkPrimitive,\n TngCardMedia as TngCardMediaPrimitive,\n TngCardTitle as TngCardTitlePrimitive,\n} from '@tailng-ui/primitives';\n\nconst cardVariants = ['ghost', 'outline', 'solid'] as const;\nconst cardTones = ['danger', 'info', 'neutral', 'primary', 'success', 'warning'] as const;\nconst cardPaddings = ['lg', 'md', 'none', 'sm'] as const;\nconst cardActionAlignments = ['end', 'start'] as const;\n\nconst cardVariantSet = new Set<TngCardVariant>(cardVariants);\nconst cardToneSet = new Set<TngCardTone>(cardTones);\nconst cardPaddingSet = new Set<TngCardPadding>(cardPaddings);\nconst cardActionAlignmentSet = new Set<TngCardActionsAlign>(cardActionAlignments);\n\nconst defaultCardVariant: TngCardVariant = 'solid';\nconst defaultCardTone: TngCardTone = 'neutral';\nconst defaultCardPadding: TngCardPadding = 'md';\nconst defaultCardActionsAlign: TngCardActionsAlign = 'end';\n\nexport type TngCardVariant = (typeof cardVariants)[number];\nexport type TngCardTone = (typeof cardTones)[number];\nexport type TngCardPadding = (typeof cardPaddings)[number];\nexport type TngCardActionsAlign = (typeof cardActionAlignments)[number];\n\nfunction coerceCardVariant(value: string): TngCardVariant {\n if (cardVariantSet.has(value as TngCardVariant)) {\n return value as TngCardVariant;\n }\n\n return defaultCardVariant;\n}\n\nfunction coerceCardTone(value: string): TngCardTone {\n if (cardToneSet.has(value as TngCardTone)) {\n return value as TngCardTone;\n }\n\n return defaultCardTone;\n}\n\nfunction coerceCardPadding(value: string): TngCardPadding {\n if (cardPaddingSet.has(value as TngCardPadding)) {\n return value as TngCardPadding;\n }\n\n return defaultCardPadding;\n}\n\nfunction coerceCardActionsAlign(value: string): TngCardActionsAlign {\n if (cardActionAlignmentSet.has(value as TngCardActionsAlign)) {\n return value as TngCardActionsAlign;\n }\n\n return defaultCardActionsAlign;\n}\n\n@Component({\n selector: 'tng-card',\n imports: [TngCardPrimitive],\n templateUrl: './tng-card.component.html',\n styleUrl: './tng-card.component.css',\n})\nexport class TngCardComponent {\n public readonly elevated = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly interactive = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly padding = input<TngCardPadding, string>(defaultCardPadding, {\n transform: coerceCardPadding,\n });\n public readonly tone = input<TngCardTone, string>(defaultCardTone, {\n transform: coerceCardTone,\n });\n public readonly variant = input<TngCardVariant, string>(defaultCardVariant, {\n transform: coerceCardVariant,\n });\n}\n\n@Component({\n selector: 'tng-card-header',\n imports: [TngCardHeaderPrimitive],\n templateUrl: './tng-card-header.component.html',\n styleUrl: './tng-card.component.css',\n})\nexport class TngCardHeaderComponent {\n}\n\n@Component({\n selector: 'tng-card-title',\n imports: [TngCardTitlePrimitive],\n templateUrl: './tng-card-title.component.html',\n styleUrl: './tng-card.component.css',\n})\nexport class TngCardTitleComponent {\n}\n\n@Component({\n selector: 'tng-card-description',\n imports: [TngCardDescriptionPrimitive],\n templateUrl: './tng-card-description.component.html',\n styleUrl: './tng-card.component.css',\n})\nexport class TngCardDescriptionComponent {\n}\n\n@Component({\n selector: 'tng-card-content',\n imports: [TngCardContentPrimitive],\n templateUrl: './tng-card-content.component.html',\n styleUrl: './tng-card.component.css',\n})\nexport class TngCardContentComponent {\n}\n\n@Component({\n selector: 'tng-card-footer',\n imports: [TngCardFooterPrimitive],\n templateUrl: './tng-card-footer.component.html',\n styleUrl: './tng-card.component.css',\n})\nexport class TngCardFooterComponent {\n}\n\n@Component({\n selector: 'tng-card-media',\n imports: [TngCardMediaPrimitive],\n templateUrl: './tng-card-media.component.html',\n styleUrl: './tng-card.component.css',\n})\nexport class TngCardMediaComponent {\n}\n\n@Component({\n selector: 'tng-card-actions',\n imports: [TngCardActionsPrimitive],\n templateUrl: './tng-card-actions.component.html',\n styleUrl: './tng-card.component.css',\n})\nexport class TngCardActionsComponent {\n public readonly align = input<TngCardActionsAlign, string>(defaultCardActionsAlign, {\n transform: coerceCardActionsAlign,\n });\n}\n\n@Component({\n selector: 'tng-card-divider',\n imports: [TngCardDividerPrimitive],\n templateUrl: './tng-card-divider.component.html',\n styleUrl: './tng-card.component.css',\n})\nexport class TngCardDividerComponent {\n}\n\n@Component({\n selector: 'tng-card-link',\n imports: [TngCardLinkPrimitive],\n templateUrl: './tng-card-link.component.html',\n styleUrl: './tng-card.component.css',\n})\nexport class TngCardLinkComponent {\n public readonly ariaLabel = input<string | null>(null);\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly href = input<string | null>('#');\n public readonly rel = input<string | null>(null);\n public readonly target = input<string | null>(null);\n\n protected onClick(...args: readonly unknown[]): void {\n if (!this.disabled()) {\n return;\n }\n\n const [event] = args;\n if (!(event instanceof Event)) {\n return;\n }\n\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n}\n"]}
1
+ {"version":3,"file":"tng-card.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/layout/card/tng-card.component.ts","../../../../../../../../libs/tailng-ui/components/src/lib/layout/card/tng-card.component.html","../../../../../../../../libs/tailng-ui/components/src/lib/layout/card/tng-card-header.component.html","../../../../../../../../libs/tailng-ui/components/src/lib/layout/card/tng-card-title.component.html","../../../../../../../../libs/tailng-ui/components/src/lib/layout/card/tng-card-description.component.html","../../../../../../../../libs/tailng-ui/components/src/lib/layout/card/tng-card-content.component.html","../../../../../../../../libs/tailng-ui/components/src/lib/layout/card/tng-card-footer.component.html","../../../../../../../../libs/tailng-ui/components/src/lib/layout/card/tng-card-media.component.html","../../../../../../../../libs/tailng-ui/components/src/lib/layout/card/tng-card-actions.component.html","../../../../../../../../libs/tailng-ui/components/src/lib/layout/card/tng-card-divider.component.html","../../../../../../../../libs/tailng-ui/components/src/lib/layout/card/tng-card-link.component.html"],"names":[],"mappings":"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","sourcesContent":["import { booleanAttribute, Component, input } from '@angular/core';\nimport {\n TngCard as TngCardPrimitive,\n TngCardActions as TngCardActionsPrimitive,\n TngCardContent as TngCardContentPrimitive,\n TngCardDescription as TngCardDescriptionPrimitive,\n TngCardDivider as TngCardDividerPrimitive,\n TngCardFooter as TngCardFooterPrimitive,\n TngCardHeader as TngCardHeaderPrimitive,\n TngCardLink as TngCardLinkPrimitive,\n TngCardMedia as TngCardMediaPrimitive,\n TngCardTitle as TngCardTitlePrimitive,\n} from '@tailng-ui/primitives';\n\nconst cardVariants = ['ghost', 'outline', 'solid'] as const;\nconst cardTones = ['danger', 'info', 'neutral', 'primary', 'success', 'warning'] as const;\nconst cardPaddings = ['lg', 'md', 'none', 'sm'] as const;\nconst cardActionAlignments = ['end', 'start'] as const;\n\nconst cardVariantSet = new Set<TngCardVariant>(cardVariants);\nconst cardToneSet = new Set<TngCardTone>(cardTones);\nconst cardPaddingSet = new Set<TngCardPadding>(cardPaddings);\nconst cardActionAlignmentSet = new Set<TngCardActionsAlign>(cardActionAlignments);\n\nconst defaultCardVariant: TngCardVariant = 'solid';\nconst defaultCardTone: TngCardTone = 'neutral';\nconst defaultCardPadding: TngCardPadding = 'md';\nconst defaultCardActionsAlign: TngCardActionsAlign = 'end';\n\nexport type TngCardVariant = (typeof cardVariants)[number];\nexport type TngCardTone = (typeof cardTones)[number];\nexport type TngCardPadding = (typeof cardPaddings)[number];\nexport type TngCardActionsAlign = (typeof cardActionAlignments)[number];\n\nfunction coerceCardVariant(value: string): TngCardVariant {\n if (cardVariantSet.has(value as TngCardVariant)) {\n return value as TngCardVariant;\n }\n\n return defaultCardVariant;\n}\n\nfunction coerceCardTone(value: string): TngCardTone {\n if (cardToneSet.has(value as TngCardTone)) {\n return value as TngCardTone;\n }\n\n return defaultCardTone;\n}\n\nfunction coerceCardPadding(value: string): TngCardPadding {\n if (cardPaddingSet.has(value as TngCardPadding)) {\n return value as TngCardPadding;\n }\n\n return defaultCardPadding;\n}\n\nfunction coerceCardActionsAlign(value: string): TngCardActionsAlign {\n if (cardActionAlignmentSet.has(value as TngCardActionsAlign)) {\n return value as TngCardActionsAlign;\n }\n\n return defaultCardActionsAlign;\n}\n\n@Component({\n selector: 'tng-card',\n imports: [TngCardPrimitive],\n templateUrl: './tng-card.component.html',\n styleUrl: './tng-card.component.css',\n})\nexport class TngCardComponent {\n public readonly elevated = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly interactive = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly padding = input<TngCardPadding, string>(defaultCardPadding, {\n transform: coerceCardPadding,\n });\n public readonly tone = input<TngCardTone, string>(defaultCardTone, {\n transform: coerceCardTone,\n });\n public readonly variant = input<TngCardVariant, string>(defaultCardVariant, {\n transform: coerceCardVariant,\n });\n}\n\n@Component({\n selector: 'tng-card-header',\n imports: [TngCardHeaderPrimitive],\n templateUrl: './tng-card-header.component.html',\n styleUrl: './tng-card.component.css',\n})\nexport class TngCardHeaderComponent {\n}\n\n@Component({\n selector: 'tng-card-title',\n imports: [TngCardTitlePrimitive],\n templateUrl: './tng-card-title.component.html',\n styleUrl: './tng-card.component.css',\n})\nexport class TngCardTitleComponent {\n}\n\n@Component({\n selector: 'tng-card-description',\n imports: [TngCardDescriptionPrimitive],\n templateUrl: './tng-card-description.component.html',\n styleUrl: './tng-card.component.css',\n})\nexport class TngCardDescriptionComponent {\n}\n\n@Component({\n selector: 'tng-card-content',\n imports: [TngCardContentPrimitive],\n templateUrl: './tng-card-content.component.html',\n styleUrl: './tng-card.component.css',\n})\nexport class TngCardContentComponent {\n}\n\n@Component({\n selector: 'tng-card-footer',\n imports: [TngCardFooterPrimitive],\n templateUrl: './tng-card-footer.component.html',\n styleUrl: './tng-card.component.css',\n})\nexport class TngCardFooterComponent {\n}\n\n@Component({\n selector: 'tng-card-media',\n imports: [TngCardMediaPrimitive],\n templateUrl: './tng-card-media.component.html',\n styleUrl: './tng-card.component.css',\n})\nexport class TngCardMediaComponent {\n}\n\n@Component({\n selector: 'tng-card-actions',\n imports: [TngCardActionsPrimitive],\n templateUrl: './tng-card-actions.component.html',\n styleUrl: './tng-card.component.css',\n})\nexport class TngCardActionsComponent {\n public readonly align = input<TngCardActionsAlign, string>(defaultCardActionsAlign, {\n transform: coerceCardActionsAlign,\n });\n}\n\n@Component({\n selector: 'tng-card-divider',\n imports: [TngCardDividerPrimitive],\n templateUrl: './tng-card-divider.component.html',\n styleUrl: './tng-card.component.css',\n})\nexport class TngCardDividerComponent {\n}\n\n@Component({\n selector: 'tng-card-link',\n imports: [TngCardLinkPrimitive],\n templateUrl: './tng-card-link.component.html',\n styleUrl: './tng-card.component.css',\n})\nexport class TngCardLinkComponent {\n public readonly ariaLabel = input<string | null>(null);\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly href = input<string | null>('#');\n public readonly rel = input<string | null>(null);\n public readonly target = input<string | null>(null);\n\n protected onClick(...args: readonly unknown[]): void {\n if (!this.disabled()) {\n return;\n }\n\n const [event] = args;\n if (!(event instanceof Event)) {\n return;\n }\n\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n}\n","<article\n tngCard\n class=\"tng-card\"\n [attr.data-padding]=\"padding()\"\n [attr.data-tone]=\"tone()\"\n [attr.data-variant]=\"variant()\"\n [attr.data-elevated]=\"elevated() ? '' : null\"\n [attr.data-interactive]=\"interactive() ? '' : null\"\n>\n <ng-content />\n</article>\n","<header tngCardHeader class=\"tng-card-header\">\n <ng-content />\n</header>\n","<h3 tngCardTitle class=\"tng-card-title\">\n <ng-content />\n</h3>\n","<p tngCardDescription class=\"tng-card-description\">\n <ng-content />\n</p>\n","<section tngCardContent class=\"tng-card-content\">\n <ng-content />\n</section>\n","<footer tngCardFooter class=\"tng-card-footer\">\n <ng-content />\n</footer>\n","<div tngCardMedia class=\"tng-card-media\">\n <ng-content />\n</div>\n","<div tngCardActions class=\"tng-card-actions\" [attr.data-align]=\"align()\">\n <ng-content />\n</div>\n","<hr tngCardDivider class=\"tng-card-divider\" aria-hidden=\"true\" />\n","<a\n tngCardLink\n class=\"tng-card-link\"\n [attr.href]=\"disabled() ? null : href()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\n [attr.tabindex]=\"disabled() ? -1 : null\"\n [attr.target]=\"target()\"\n [attr.rel]=\"rel()\"\n (click)=\"onClick($event)\"\n>\n <ng-content />\n</a>\n"]}
@@ -1,3 +1,4 @@
1
+ import * as i0 from "@angular/core";
1
2
  export declare function createTngCollapsibleContentId(): string;
2
3
  export declare function toggleTngCollapsibleState(open: boolean, disabled: boolean): boolean;
3
4
  export declare class TngCollapsibleComponent {
@@ -7,5 +8,7 @@ export declare class TngCollapsibleComponent {
7
8
  readonly title: import("@angular/core").InputSignal<string>;
8
9
  readonly openChange: import("@angular/core").OutputEmitterRef<boolean>;
9
10
  onToggle(): void;
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<TngCollapsibleComponent, never>;
12
+ static ɵcmp: i0.ɵɵComponentDeclaration<TngCollapsibleComponent, "tng-collapsible", never, { "contentId": { "alias": "contentId"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; }, { "openChange": "openChange"; }, never, ["*"], true, never>;
10
13
  }
11
14
  //# sourceMappingURL=tng-collapsible.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tng-collapsible.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/layout/collapsible/tng-collapsible.component.ts"],"names":[],"mappings":"AASA,wBAAgB,6BAA6B,IAAI,MAAM,CAGtD;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAEnF;AAED,qBAUa,uBAAuB;IAClC,SAAgB,SAAS,8CAAkD;IAC3E,SAAgB,QAAQ,8EAErB;IACH,SAAgB,IAAI,8EAEjB;IACH,SAAgB,KAAK,8CAAgC;IAErD,SAAgB,UAAU,oDAAqB;IAExC,QAAQ,IAAI,IAAI;CAIxB"}
1
+ {"version":3,"file":"tng-collapsible.component.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/layout/collapsible/tng-collapsible.component.ts"],"names":[],"mappings":";AASA,wBAAgB,6BAA6B,IAAI,MAAM,CAGtD;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAEnF;AAED,qBAUa,uBAAuB;IAClC,SAAgB,SAAS,8CAAkD;IAC3E,SAAgB,QAAQ,8EAErB;IACH,SAAgB,IAAI,8EAEjB;IACH,SAAgB,KAAK,8CAAgC;IAErD,SAAgB,UAAU,oDAAqB;IAExC,QAAQ,IAAI,IAAI;yCAZZ,uBAAuB;2CAAvB,uBAAuB;CAgBnC"}
@@ -1,6 +1,6 @@
1
- import { __decorate } from "tslib";
2
1
  import { booleanAttribute, Component, input, output } from '@angular/core';
3
2
  import { TngCollapsible as TngCollapsiblePrimitive, TngCollapsibleContent as TngCollapsibleContentPrimitive, TngCollapsibleTrigger as TngCollapsibleTriggerPrimitive, } from '@tailng-ui/primitives';
3
+ import * as i0 from "@angular/core";
4
4
  let nextCollapsibleContentId = 0;
5
5
  export function createTngCollapsibleContentId() {
6
6
  nextCollapsibleContentId += 1;
@@ -9,32 +9,25 @@ export function createTngCollapsibleContentId() {
9
9
  export function toggleTngCollapsibleState(open, disabled) {
10
10
  return disabled ? open : !open;
11
11
  }
12
- let TngCollapsibleComponent = class TngCollapsibleComponent {
13
- contentId = input(createTngCollapsibleContentId());
14
- disabled = input(false, {
15
- transform: booleanAttribute,
16
- });
17
- open = input(false, {
18
- transform: booleanAttribute,
19
- });
20
- title = input('Collapsible');
12
+ export class TngCollapsibleComponent {
13
+ contentId = input(createTngCollapsibleContentId(), ...(ngDevMode ? [{ debugName: "contentId" }] : []));
14
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: booleanAttribute });
15
+ open = input(false, { ...(ngDevMode ? { debugName: "open" } : {}), transform: booleanAttribute });
16
+ title = input('Collapsible', ...(ngDevMode ? [{ debugName: "title" }] : []));
21
17
  openChange = output();
22
18
  onToggle() {
23
19
  const nextState = toggleTngCollapsibleState(this.open(), this.disabled());
24
20
  this.openChange.emit(nextState);
25
21
  }
26
- };
27
- TngCollapsibleComponent = __decorate([
28
- Component({
29
- selector: 'tng-collapsible',
30
- imports: [
31
- TngCollapsiblePrimitive,
32
- TngCollapsibleTriggerPrimitive,
33
- TngCollapsibleContentPrimitive,
34
- ],
35
- templateUrl: './tng-collapsible.component.html',
36
- styleUrl: './tng-collapsible.component.css',
37
- })
38
- ], TngCollapsibleComponent);
39
- export { TngCollapsibleComponent };
22
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngCollapsibleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
23
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.1", type: TngCollapsibleComponent, isStandalone: true, selector: "tng-collapsible", inputs: { contentId: { classPropertyName: "contentId", publicName: "contentId", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openChange: "openChange" }, ngImport: i0, template: "<section tngCollapsible class=\"tng-collapsible\" [open]=\"open()\" [disabled]=\"disabled()\">\n <button\n tngCollapsibleTrigger\n class=\"tng-collapsible-trigger\"\n [open]=\"open()\"\n [disabled]=\"disabled()\"\n [contentId]=\"contentId()\"\n (click)=\"onToggle()\"\n >\n <span class=\"tng-collapsible-title\">{{ title() }}</span>\n <span class=\"tng-collapsible-icon\" aria-hidden=\"true\">{{ open() ? '\u2212' : '+' }}</span>\n </button>\n\n <div\n tngCollapsibleContent\n class=\"tng-collapsible-content\"\n [id]=\"contentId()\"\n [open]=\"open()\"\n >\n <ng-content />\n </div>\n</section>\n", styles: [":host {\n display: block;\n}\n\n.tng-collapsible {\n border: 1px solid var(--tng-semantic-border-subtle);\n border-radius: 0.85rem;\n display: grid;\n overflow: hidden;\n}\n\n.tng-collapsible-trigger {\n align-items: center;\n background: var(--tng-semantic-background-surface);\n border: 0;\n color: var(--tng-semantic-foreground-primary);\n cursor: pointer;\n display: flex;\n font: inherit;\n justify-content: space-between;\n min-height: 2.75rem;\n padding: 0.65rem 0.9rem;\n text-align: left;\n width: 100%;\n}\n\n.tng-collapsible-trigger:disabled {\n cursor: not-allowed;\n opacity: 0.65;\n}\n\n.tng-collapsible-content {\n background: var(--tng-semantic-background-muted);\n color: var(--tng-semantic-foreground-primary);\n padding: 0.85rem 0.95rem;\n}\n\n.tng-collapsible-icon {\n font-size: 1.05rem;\n line-height: 1;\n}\n"], dependencies: [{ kind: "directive", type: TngCollapsiblePrimitive, selector: "[tngCollapsible]", inputs: ["disabled", "open"], exportAs: ["tngCollapsible"] }, { kind: "directive", type: TngCollapsibleTriggerPrimitive, selector: "button[tngCollapsibleTrigger]", inputs: ["contentId", "disabled", "open"], exportAs: ["tngCollapsibleTrigger"] }, { kind: "directive", type: TngCollapsibleContentPrimitive, selector: "[tngCollapsibleContent]", inputs: ["open"], exportAs: ["tngCollapsibleContent"] }] });
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngCollapsibleComponent, decorators: [{
26
+ type: Component,
27
+ args: [{ selector: 'tng-collapsible', imports: [
28
+ TngCollapsiblePrimitive,
29
+ TngCollapsibleTriggerPrimitive,
30
+ TngCollapsibleContentPrimitive,
31
+ ], template: "<section tngCollapsible class=\"tng-collapsible\" [open]=\"open()\" [disabled]=\"disabled()\">\n <button\n tngCollapsibleTrigger\n class=\"tng-collapsible-trigger\"\n [open]=\"open()\"\n [disabled]=\"disabled()\"\n [contentId]=\"contentId()\"\n (click)=\"onToggle()\"\n >\n <span class=\"tng-collapsible-title\">{{ title() }}</span>\n <span class=\"tng-collapsible-icon\" aria-hidden=\"true\">{{ open() ? '\u2212' : '+' }}</span>\n </button>\n\n <div\n tngCollapsibleContent\n class=\"tng-collapsible-content\"\n [id]=\"contentId()\"\n [open]=\"open()\"\n >\n <ng-content />\n </div>\n</section>\n", styles: [":host {\n display: block;\n}\n\n.tng-collapsible {\n border: 1px solid var(--tng-semantic-border-subtle);\n border-radius: 0.85rem;\n display: grid;\n overflow: hidden;\n}\n\n.tng-collapsible-trigger {\n align-items: center;\n background: var(--tng-semantic-background-surface);\n border: 0;\n color: var(--tng-semantic-foreground-primary);\n cursor: pointer;\n display: flex;\n font: inherit;\n justify-content: space-between;\n min-height: 2.75rem;\n padding: 0.65rem 0.9rem;\n text-align: left;\n width: 100%;\n}\n\n.tng-collapsible-trigger:disabled {\n cursor: not-allowed;\n opacity: 0.65;\n}\n\n.tng-collapsible-content {\n background: var(--tng-semantic-background-muted);\n color: var(--tng-semantic-foreground-primary);\n padding: 0.85rem 0.95rem;\n}\n\n.tng-collapsible-icon {\n font-size: 1.05rem;\n line-height: 1;\n}\n"] }]
32
+ }], propDecorators: { contentId: [{ type: i0.Input, args: [{ isSignal: true, alias: "contentId", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], openChange: [{ type: i0.Output, args: ["openChange"] }] } });
40
33
  //# sourceMappingURL=tng-collapsible.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tng-collapsible.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/layout/collapsible/tng-collapsible.component.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EACL,cAAc,IAAI,uBAAuB,EACzC,qBAAqB,IAAI,8BAA8B,EACvD,qBAAqB,IAAI,8BAA8B,GACxD,MAAM,uBAAuB,CAAC;AAE/B,IAAI,wBAAwB,GAAG,CAAC,CAAC;AAEjC,MAAM,UAAU,6BAA6B;IAC3C,wBAAwB,IAAI,CAAC,CAAC;IAC9B,OAAO,2BAA2B,wBAAwB,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,IAAa,EAAE,QAAiB;IACxE,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,CAAC;AAYM,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAClB,SAAS,GAAG,KAAK,CAAS,6BAA6B,EAAE,CAAC,CAAC;IAC3D,QAAQ,GAAG,KAAK,CAA4B,KAAK,EAAE;QACjE,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,IAAI,GAAG,KAAK,CAA4B,KAAK,EAAE;QAC7D,SAAS,EAAE,gBAAgB;KAC5B,CAAC,CAAC;IACa,KAAK,GAAG,KAAK,CAAS,aAAa,CAAC,CAAC;IAErC,UAAU,GAAG,MAAM,EAAW,CAAC;IAExC,QAAQ;QACb,MAAM,SAAS,GAAG,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;CACF,CAAA;AAhBY,uBAAuB;IAVnC,SAAS,CAAC;QACT,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE;YACP,uBAAuB;YACvB,8BAA8B;YAC9B,8BAA8B;SAC/B;QACD,WAAW,EAAE,kCAAkC;QAC/C,QAAQ,EAAE,iCAAiC;KAC5C,CAAC;GACW,uBAAuB,CAgBnC","sourcesContent":["import { booleanAttribute, Component, input, output } from '@angular/core';\nimport {\n TngCollapsible as TngCollapsiblePrimitive,\n TngCollapsibleContent as TngCollapsibleContentPrimitive,\n TngCollapsibleTrigger as TngCollapsibleTriggerPrimitive,\n} from '@tailng-ui/primitives';\n\nlet nextCollapsibleContentId = 0;\n\nexport function createTngCollapsibleContentId(): string {\n nextCollapsibleContentId += 1;\n return `tng-collapsible-content-${nextCollapsibleContentId}`;\n}\n\nexport function toggleTngCollapsibleState(open: boolean, disabled: boolean): boolean {\n return disabled ? open : !open;\n}\n\n@Component({\n selector: 'tng-collapsible',\n imports: [\n TngCollapsiblePrimitive,\n TngCollapsibleTriggerPrimitive,\n TngCollapsibleContentPrimitive,\n ],\n templateUrl: './tng-collapsible.component.html',\n styleUrl: './tng-collapsible.component.css',\n})\nexport class TngCollapsibleComponent {\n public readonly contentId = input<string>(createTngCollapsibleContentId());\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly open = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly title = input<string>('Collapsible');\n\n public readonly openChange = output<boolean>();\n\n public onToggle(): void {\n const nextState = toggleTngCollapsibleState(this.open(), this.disabled());\n this.openChange.emit(nextState);\n }\n}\n"]}
1
+ {"version":3,"file":"tng-collapsible.component.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/components/src/lib/layout/collapsible/tng-collapsible.component.ts","../../../../../../../../libs/tailng-ui/components/src/lib/layout/collapsible/tng-collapsible.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EACL,cAAc,IAAI,uBAAuB,EACzC,qBAAqB,IAAI,8BAA8B,EACvD,qBAAqB,IAAI,8BAA8B,GACxD,MAAM,uBAAuB,CAAC;;AAE/B,IAAI,wBAAwB,GAAG,CAAC,CAAC;AAEjC,MAAM,UAAU,6BAA6B;IAC3C,wBAAwB,IAAI,CAAC,CAAC;IAC9B,OAAO,2BAA2B,wBAAwB,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,IAAa,EAAE,QAAiB;IACxE,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,CAAC;AAYD,MAAM,OAAO,uBAAuB;IAClB,SAAS,GAAG,KAAK,CAAS,6BAA6B,EAAE,qDAAC,CAAC;IAC3D,QAAQ,GAAG,KAAK,CAA4B,KAAK,qDAC/D,SAAS,EAAE,gBAAgB,GAC3B,CAAC;IACa,IAAI,GAAG,KAAK,CAA4B,KAAK,iDAC3D,SAAS,EAAE,gBAAgB,GAC3B,CAAC;IACa,KAAK,GAAG,KAAK,CAAS,aAAa,iDAAC,CAAC;IAErC,UAAU,GAAG,MAAM,EAAW,CAAC;IAExC,QAAQ;QACb,MAAM,SAAS,GAAG,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;uGAfU,uBAAuB;2FAAvB,uBAAuB,gnBC5BpC,ooBAsBA,i5BDDI,uBAAuB,yHACvB,8BAA8B,0JAC9B,8BAA8B;;2FAKrB,uBAAuB;kBAVnC,SAAS;+BACE,iBAAiB,WAClB;wBACP,uBAAuB;wBACvB,8BAA8B;wBAC9B,8BAA8B;qBAC/B","sourcesContent":["import { booleanAttribute, Component, input, output } from '@angular/core';\nimport {\n TngCollapsible as TngCollapsiblePrimitive,\n TngCollapsibleContent as TngCollapsibleContentPrimitive,\n TngCollapsibleTrigger as TngCollapsibleTriggerPrimitive,\n} from '@tailng-ui/primitives';\n\nlet nextCollapsibleContentId = 0;\n\nexport function createTngCollapsibleContentId(): string {\n nextCollapsibleContentId += 1;\n return `tng-collapsible-content-${nextCollapsibleContentId}`;\n}\n\nexport function toggleTngCollapsibleState(open: boolean, disabled: boolean): boolean {\n return disabled ? open : !open;\n}\n\n@Component({\n selector: 'tng-collapsible',\n imports: [\n TngCollapsiblePrimitive,\n TngCollapsibleTriggerPrimitive,\n TngCollapsibleContentPrimitive,\n ],\n templateUrl: './tng-collapsible.component.html',\n styleUrl: './tng-collapsible.component.css',\n})\nexport class TngCollapsibleComponent {\n public readonly contentId = input<string>(createTngCollapsibleContentId());\n public readonly disabled = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly open = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly title = input<string>('Collapsible');\n\n public readonly openChange = output<boolean>();\n\n public onToggle(): void {\n const nextState = toggleTngCollapsibleState(this.open(), this.disabled());\n this.openChange.emit(nextState);\n }\n}\n","<section tngCollapsible class=\"tng-collapsible\" [open]=\"open()\" [disabled]=\"disabled()\">\n <button\n tngCollapsibleTrigger\n class=\"tng-collapsible-trigger\"\n [open]=\"open()\"\n [disabled]=\"disabled()\"\n [contentId]=\"contentId()\"\n (click)=\"onToggle()\"\n >\n <span class=\"tng-collapsible-title\">{{ title() }}</span>\n <span class=\"tng-collapsible-icon\" aria-hidden=\"true\">{{ open() ? '−' : '+' }}</span>\n </button>\n\n <div\n tngCollapsibleContent\n class=\"tng-collapsible-content\"\n [id]=\"contentId()\"\n [open]=\"open()\"\n >\n <ng-content />\n </div>\n</section>\n"]}