@tailng-ui/primitives 0.11.0 → 0.13.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 (274) hide show
  1. package/README.md +97 -11
  2. package/package.json +12 -6
  3. package/src/lib/feedback/empty/tng-empty.d.ts +11 -0
  4. package/src/lib/feedback/empty/tng-empty.d.ts.map +1 -1
  5. package/src/lib/feedback/empty/tng-empty.js +76 -61
  6. package/src/lib/feedback/empty/tng-empty.js.map +1 -1
  7. package/src/lib/feedback/progress-bar/tng-progress-bar.d.ts +5 -0
  8. package/src/lib/feedback/progress-bar/tng-progress-bar.d.ts.map +1 -1
  9. package/src/lib/feedback/progress-bar/tng-progress-bar.js +50 -52
  10. package/src/lib/feedback/progress-bar/tng-progress-bar.js.map +1 -1
  11. package/src/lib/feedback/progress-spinner/tng-progress-spinner.d.ts +3 -0
  12. package/src/lib/feedback/progress-spinner/tng-progress-spinner.d.ts.map +1 -1
  13. package/src/lib/feedback/progress-spinner/tng-progress-spinner.js +35 -40
  14. package/src/lib/feedback/progress-spinner/tng-progress-spinner.js.map +1 -1
  15. package/src/lib/feedback/skeleton/tng-skeleton.d.ts +3 -0
  16. package/src/lib/feedback/skeleton/tng-skeleton.d.ts.map +1 -1
  17. package/src/lib/feedback/skeleton/tng-skeleton.js +30 -31
  18. package/src/lib/feedback/skeleton/tng-skeleton.js.map +1 -1
  19. package/src/lib/feedback/toast/tng-toast.d.ts +5 -0
  20. package/src/lib/feedback/toast/tng-toast.d.ts.map +1 -1
  21. package/src/lib/feedback/toast/tng-toast.js +51 -47
  22. package/src/lib/feedback/toast/tng-toast.js.map +1 -1
  23. package/src/lib/form/_shared/id/tng-unique-id.service.d.ts +3 -0
  24. package/src/lib/form/_shared/id/tng-unique-id.service.d.ts.map +1 -1
  25. package/src/lib/form/_shared/id/tng-unique-id.service.js +9 -7
  26. package/src/lib/form/_shared/id/tng-unique-id.service.js.map +1 -1
  27. package/src/lib/form/_shared/select/tng-select.overlay.shared.d.ts +3 -0
  28. package/src/lib/form/_shared/select/tng-select.overlay.shared.d.ts.map +1 -1
  29. package/src/lib/form/_shared/select/tng-select.overlay.shared.js +22 -20
  30. package/src/lib/form/_shared/select/tng-select.overlay.shared.js.map +1 -1
  31. package/src/lib/form/_shared/select/tng-select.parts.shared.d.ts +9 -0
  32. package/src/lib/form/_shared/select/tng-select.parts.shared.d.ts.map +1 -1
  33. package/src/lib/form/_shared/select/tng-select.parts.shared.js +106 -98
  34. package/src/lib/form/_shared/select/tng-select.parts.shared.js.map +1 -1
  35. package/src/lib/form/autocomplete/tng-autocomplete.d.ts +3 -0
  36. package/src/lib/form/autocomplete/tng-autocomplete.d.ts.map +1 -1
  37. package/src/lib/form/autocomplete/tng-autocomplete.js +40 -38
  38. package/src/lib/form/autocomplete/tng-autocomplete.js.map +1 -1
  39. package/src/lib/form/autocomplete/tng-autocomplete.listbox.d.ts +6 -0
  40. package/src/lib/form/autocomplete/tng-autocomplete.listbox.d.ts.map +1 -1
  41. package/src/lib/form/autocomplete/tng-autocomplete.listbox.js +54 -46
  42. package/src/lib/form/autocomplete/tng-autocomplete.listbox.js.map +1 -1
  43. package/src/lib/form/autocomplete/tng-autocomplete.overlay.d.ts +3 -0
  44. package/src/lib/form/autocomplete/tng-autocomplete.overlay.d.ts.map +1 -1
  45. package/src/lib/form/autocomplete/tng-autocomplete.overlay.js +22 -20
  46. package/src/lib/form/autocomplete/tng-autocomplete.overlay.js.map +1 -1
  47. package/src/lib/form/autocomplete/tng-autocomplete.parts.d.ts +9 -0
  48. package/src/lib/form/autocomplete/tng-autocomplete.parts.d.ts.map +1 -1
  49. package/src/lib/form/autocomplete/tng-autocomplete.parts.js +109 -101
  50. package/src/lib/form/autocomplete/tng-autocomplete.parts.js.map +1 -1
  51. package/src/lib/form/button-toggle/tng-button-toggle.d.ts +5 -0
  52. package/src/lib/form/button-toggle/tng-button-toggle.d.ts.map +1 -1
  53. package/src/lib/form/button-toggle/tng-button-toggle.js +121 -155
  54. package/src/lib/form/button-toggle/tng-button-toggle.js.map +1 -1
  55. package/src/lib/form/checkbox/tng-checkbox.d.ts +3 -0
  56. package/src/lib/form/checkbox/tng-checkbox.d.ts.map +1 -1
  57. package/src/lib/form/checkbox/tng-checkbox.js +95 -106
  58. package/src/lib/form/checkbox/tng-checkbox.js.map +1 -1
  59. package/src/lib/form/chips/tng-chips.d.ts +7 -0
  60. package/src/lib/form/chips/tng-chips.d.ts.map +1 -1
  61. package/src/lib/form/chips/tng-chips.js +107 -112
  62. package/src/lib/form/chips/tng-chips.js.map +1 -1
  63. package/src/lib/form/combobox/tng-combobox.d.ts +3 -0
  64. package/src/lib/form/combobox/tng-combobox.d.ts.map +1 -1
  65. package/src/lib/form/combobox/tng-combobox.js +16 -13
  66. package/src/lib/form/combobox/tng-combobox.js.map +1 -1
  67. package/src/lib/form/input/tng-input.d.ts +9 -0
  68. package/src/lib/form/input/tng-input.d.ts.map +1 -1
  69. package/src/lib/form/input/tng-input.js +161 -141
  70. package/src/lib/form/input/tng-input.js.map +1 -1
  71. package/src/lib/form/input-otp/tng-input-otp.d.ts +3 -0
  72. package/src/lib/form/input-otp/tng-input-otp.d.ts.map +1 -1
  73. package/src/lib/form/input-otp/tng-input-otp.js +58 -69
  74. package/src/lib/form/input-otp/tng-input-otp.js.map +1 -1
  75. package/src/lib/form/label/tng-label.d.ts +3 -0
  76. package/src/lib/form/label/tng-label.d.ts.map +1 -1
  77. package/src/lib/form/label/tng-label.js +24 -25
  78. package/src/lib/form/label/tng-label.js.map +1 -1
  79. package/src/lib/form/listbox/listbox.directive.d.ts +3 -0
  80. package/src/lib/form/listbox/listbox.directive.d.ts.map +1 -1
  81. package/src/lib/form/listbox/listbox.directive.js +45 -43
  82. package/src/lib/form/listbox/listbox.directive.js.map +1 -1
  83. package/src/lib/form/listbox/option.directive.d.ts +3 -0
  84. package/src/lib/form/listbox/option.directive.d.ts.map +1 -1
  85. package/src/lib/form/listbox/option.directive.js +40 -38
  86. package/src/lib/form/listbox/option.directive.js.map +1 -1
  87. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.d.ts +3 -0
  88. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.d.ts.map +1 -1
  89. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.js +23 -21
  90. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.js.map +1 -1
  91. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.d.ts +3 -0
  92. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.d.ts.map +1 -1
  93. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.js +25 -23
  94. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.js.map +1 -1
  95. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.d.ts +3 -0
  96. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.d.ts.map +1 -1
  97. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.js +35 -33
  98. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.js.map +1 -1
  99. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.d.ts +6 -0
  100. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.d.ts.map +1 -1
  101. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.js +57 -46
  102. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.js.map +1 -1
  103. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.d.ts +3 -0
  104. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.d.ts.map +1 -1
  105. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.js +16 -14
  106. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.js.map +1 -1
  107. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.d.ts +3 -0
  108. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.d.ts.map +1 -1
  109. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.js +52 -50
  110. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.js.map +1 -1
  111. package/src/lib/form/multi-select/tng-multi-select.d.ts +3 -0
  112. package/src/lib/form/multi-select/tng-multi-select.d.ts.map +1 -1
  113. package/src/lib/form/multi-select/tng-multi-select.js +41 -36
  114. package/src/lib/form/multi-select/tng-multi-select.js.map +1 -1
  115. package/src/lib/form/multi-select/tng-multi-select.listbox.d.ts +6 -0
  116. package/src/lib/form/multi-select/tng-multi-select.listbox.d.ts.map +1 -1
  117. package/src/lib/form/multi-select/tng-multi-select.listbox.js +50 -45
  118. package/src/lib/form/multi-select/tng-multi-select.listbox.js.map +1 -1
  119. package/src/lib/form/multiselect/tng-multiselect.d.ts +3 -0
  120. package/src/lib/form/multiselect/tng-multiselect.d.ts.map +1 -1
  121. package/src/lib/form/multiselect/tng-multiselect.js +16 -13
  122. package/src/lib/form/multiselect/tng-multiselect.js.map +1 -1
  123. package/src/lib/form/radio/tng-radio.d.ts +3 -0
  124. package/src/lib/form/radio/tng-radio.d.ts.map +1 -1
  125. package/src/lib/form/radio/tng-radio.js +91 -100
  126. package/src/lib/form/radio/tng-radio.js.map +1 -1
  127. package/src/lib/form/select/tng-select.d.ts +3 -0
  128. package/src/lib/form/select/tng-select.d.ts.map +1 -1
  129. package/src/lib/form/select/tng-select.js +41 -36
  130. package/src/lib/form/select/tng-select.js.map +1 -1
  131. package/src/lib/form/select/tng-select.listbox.d.ts +6 -0
  132. package/src/lib/form/select/tng-select.listbox.d.ts.map +1 -1
  133. package/src/lib/form/select/tng-select.listbox.js +50 -45
  134. package/src/lib/form/select/tng-select.listbox.js.map +1 -1
  135. package/src/lib/form/slider/tng-slider.d.ts +3 -0
  136. package/src/lib/form/slider/tng-slider.d.ts.map +1 -1
  137. package/src/lib/form/slider/tng-slider.js +42 -49
  138. package/src/lib/form/slider/tng-slider.js.map +1 -1
  139. package/src/lib/form/switch/tng-switch.d.ts +3 -0
  140. package/src/lib/form/switch/tng-switch.d.ts.map +1 -1
  141. package/src/lib/form/switch/tng-switch.js +44 -47
  142. package/src/lib/form/switch/tng-switch.js.map +1 -1
  143. package/src/lib/form/textarea/tng-textarea.d.ts +4 -0
  144. package/src/lib/form/textarea/tng-textarea.d.ts.map +1 -1
  145. package/src/lib/form/textarea/tng-textarea.js +40 -41
  146. package/src/lib/form/textarea/tng-textarea.js.map +1 -1
  147. package/src/lib/form/toggle/tng-toggle.d.ts +3 -0
  148. package/src/lib/form/toggle/tng-toggle.d.ts.map +1 -1
  149. package/src/lib/form/toggle/tng-toggle.js +71 -74
  150. package/src/lib/form/toggle/tng-toggle.js.map +1 -1
  151. package/src/lib/form/toggle-group/tng-toggle-group.d.ts +3 -0
  152. package/src/lib/form/toggle-group/tng-toggle-group.d.ts.map +1 -1
  153. package/src/lib/form/toggle-group/tng-toggle-group.js +48 -49
  154. package/src/lib/form/toggle-group/tng-toggle-group.js.map +1 -1
  155. package/src/lib/layout/accordion/tng-accordion.d.ts +9 -0
  156. package/src/lib/layout/accordion/tng-accordion.d.ts.map +1 -1
  157. package/src/lib/layout/accordion/tng-accordion.js +143 -155
  158. package/src/lib/layout/accordion/tng-accordion.js.map +1 -1
  159. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.d.ts +3 -0
  160. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.d.ts.map +1 -1
  161. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js +16 -13
  162. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js.map +1 -1
  163. package/src/lib/layout/card/tng-card.d.ts +21 -0
  164. package/src/lib/layout/card/tng-card.d.ts.map +1 -1
  165. package/src/lib/layout/card/tng-card.js +151 -121
  166. package/src/lib/layout/card/tng-card.js.map +1 -1
  167. package/src/lib/layout/collapsible/tng-collapsible.d.ts +7 -0
  168. package/src/lib/layout/collapsible/tng-collapsible.d.ts.map +1 -1
  169. package/src/lib/layout/collapsible/tng-collapsible.js +82 -83
  170. package/src/lib/layout/collapsible/tng-collapsible.js.map +1 -1
  171. package/src/lib/layout/drawer/tng-drawer.d.ts +13 -0
  172. package/src/lib/layout/drawer/tng-drawer.d.ts.map +1 -1
  173. package/src/lib/layout/drawer/tng-drawer.js +217 -226
  174. package/src/lib/layout/drawer/tng-drawer.js.map +1 -1
  175. package/src/lib/layout/grid/tng-grid.d.ts +3 -0
  176. package/src/lib/layout/grid/tng-grid.d.ts.map +1 -1
  177. package/src/lib/layout/grid/tng-grid.js +16 -13
  178. package/src/lib/layout/grid/tng-grid.js.map +1 -1
  179. package/src/lib/layout/separator/tng-separator.d.ts +3 -0
  180. package/src/lib/layout/separator/tng-separator.d.ts.map +1 -1
  181. package/src/lib/layout/separator/tng-separator.js +30 -29
  182. package/src/lib/layout/separator/tng-separator.js.map +1 -1
  183. package/src/lib/layout/stepper/tng-stepper.d.ts +3 -0
  184. package/src/lib/layout/stepper/tng-stepper.d.ts.map +1 -1
  185. package/src/lib/layout/stepper/tng-stepper.js +16 -13
  186. package/src/lib/layout/stepper/tng-stepper.js.map +1 -1
  187. package/src/lib/layout/tree/__tests__/tng-tree.test-harness.d.ts +3 -0
  188. package/src/lib/layout/tree/__tests__/tng-tree.test-harness.d.ts.map +1 -1
  189. package/src/lib/layout/tree/__tests__/tng-tree.test-harness.js +54 -11
  190. package/src/lib/layout/tree/__tests__/tng-tree.test-harness.js.map +1 -1
  191. package/src/lib/layout/tree/tng-tree-group.d.ts +3 -0
  192. package/src/lib/layout/tree/tng-tree-group.d.ts.map +1 -1
  193. package/src/lib/layout/tree/tng-tree-group.js +19 -17
  194. package/src/lib/layout/tree/tng-tree-group.js.map +1 -1
  195. package/src/lib/layout/tree/tng-tree-indicator.d.ts +3 -0
  196. package/src/lib/layout/tree/tng-tree-indicator.d.ts.map +1 -1
  197. package/src/lib/layout/tree/tng-tree-indicator.js +22 -20
  198. package/src/lib/layout/tree/tng-tree-indicator.js.map +1 -1
  199. package/src/lib/layout/tree/tng-tree-item.d.ts +3 -0
  200. package/src/lib/layout/tree/tng-tree-item.d.ts.map +1 -1
  201. package/src/lib/layout/tree/tng-tree-item.js +47 -53
  202. package/src/lib/layout/tree/tng-tree-item.js.map +1 -1
  203. package/src/lib/layout/tree/tng-tree.d.ts +3 -0
  204. package/src/lib/layout/tree/tng-tree.d.ts.map +1 -1
  205. package/src/lib/layout/tree/tng-tree.js +39 -43
  206. package/src/lib/layout/tree/tng-tree.js.map +1 -1
  207. package/src/lib/navigation/breadcrumb/tng-breadcrumb.d.ts +11 -0
  208. package/src/lib/navigation/breadcrumb/tng-breadcrumb.d.ts.map +1 -1
  209. package/src/lib/navigation/breadcrumb/tng-breadcrumb.js +79 -64
  210. package/src/lib/navigation/breadcrumb/tng-breadcrumb.js.map +1 -1
  211. package/src/lib/navigation/context-menu/tng-context-menu.d.ts +5 -0
  212. package/src/lib/navigation/context-menu/tng-context-menu.d.ts.map +1 -1
  213. package/src/lib/navigation/context-menu/tng-context-menu.js +44 -42
  214. package/src/lib/navigation/context-menu/tng-context-menu.js.map +1 -1
  215. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.d.ts +3 -0
  216. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.d.ts.map +1 -1
  217. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js +16 -13
  218. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js.map +1 -1
  219. package/src/lib/navigation/menu/tng-menu.d.ts +13 -0
  220. package/src/lib/navigation/menu/tng-menu.d.ts.map +1 -1
  221. package/src/lib/navigation/menu/tng-menu.js +184 -186
  222. package/src/lib/navigation/menu/tng-menu.js.map +1 -1
  223. package/src/lib/navigation/menubar/tng-menubar.d.ts +5 -0
  224. package/src/lib/navigation/menubar/tng-menubar.d.ts.map +1 -1
  225. package/src/lib/navigation/menubar/tng-menubar.js +72 -70
  226. package/src/lib/navigation/menubar/tng-menubar.js.map +1 -1
  227. package/src/lib/navigation/navigation-menu/tng-navigation-menu.d.ts +3 -0
  228. package/src/lib/navigation/navigation-menu/tng-navigation-menu.d.ts.map +1 -1
  229. package/src/lib/navigation/navigation-menu/tng-navigation-menu.js +16 -13
  230. package/src/lib/navigation/navigation-menu/tng-navigation-menu.js.map +1 -1
  231. package/src/lib/navigation/tabs/tng-tabs.d.ts +13 -0
  232. package/src/lib/navigation/tabs/tng-tabs.d.ts.map +1 -1
  233. package/src/lib/navigation/tabs/tng-tabs.js +234 -258
  234. package/src/lib/navigation/tabs/tng-tabs.js.map +1 -1
  235. package/src/lib/navigation/toolbar/tng-toolbar.d.ts +3 -0
  236. package/src/lib/navigation/toolbar/tng-toolbar.d.ts.map +1 -1
  237. package/src/lib/navigation/toolbar/tng-toolbar.js +16 -13
  238. package/src/lib/navigation/toolbar/tng-toolbar.js.map +1 -1
  239. package/src/lib/overlay/dialog/tng-dialog.d.ts +19 -0
  240. package/src/lib/overlay/dialog/tng-dialog.d.ts.map +1 -1
  241. package/src/lib/overlay/dialog/tng-dialog.js +249 -255
  242. package/src/lib/overlay/dialog/tng-dialog.js.map +1 -1
  243. package/src/lib/overlay/popover/tng-popover.d.ts +9 -0
  244. package/src/lib/overlay/popover/tng-popover.d.ts.map +1 -1
  245. package/src/lib/overlay/popover/tng-popover.js +152 -170
  246. package/src/lib/overlay/popover/tng-popover.js.map +1 -1
  247. package/src/lib/overlay/tooltip/tng-tooltip.d.ts +7 -0
  248. package/src/lib/overlay/tooltip/tng-tooltip.d.ts.map +1 -1
  249. package/src/lib/overlay/tooltip/tng-tooltip.js +124 -127
  250. package/src/lib/overlay/tooltip/tng-tooltip.js.map +1 -1
  251. package/src/lib/utility/avatar/tng-avatar.d.ts +7 -0
  252. package/src/lib/utility/avatar/tng-avatar.d.ts.map +1 -1
  253. package/src/lib/utility/avatar/tng-avatar.js +46 -37
  254. package/src/lib/utility/avatar/tng-avatar.js.map +1 -1
  255. package/src/lib/utility/badge/tng-badge.d.ts +3 -0
  256. package/src/lib/utility/badge/tng-badge.d.ts.map +1 -1
  257. package/src/lib/utility/badge/tng-badge.js +26 -39
  258. package/src/lib/utility/badge/tng-badge.js.map +1 -1
  259. package/src/lib/utility/code-block/tng-code-block.d.ts +11 -0
  260. package/src/lib/utility/code-block/tng-code-block.d.ts.map +1 -1
  261. package/src/lib/utility/code-block/tng-code-block.js +76 -61
  262. package/src/lib/utility/code-block/tng-code-block.js.map +1 -1
  263. package/src/lib/utility/copy/tng-copy.d.ts +3 -0
  264. package/src/lib/utility/copy/tng-copy.d.ts.map +1 -1
  265. package/src/lib/utility/copy/tng-copy.js +44 -51
  266. package/src/lib/utility/copy/tng-copy.js.map +1 -1
  267. package/src/lib/utility/press/tng-press.d.ts +3 -0
  268. package/src/lib/utility/press/tng-press.d.ts.map +1 -1
  269. package/src/lib/utility/press/tng-press.js +55 -60
  270. package/src/lib/utility/press/tng-press.js.map +1 -1
  271. package/src/lib/utility/tag/tng-tag.d.ts +7 -0
  272. package/src/lib/utility/tag/tng-tag.d.ts.map +1 -1
  273. package/src/lib/utility/tag/tng-tag.js +94 -93
  274. package/src/lib/utility/tag/tng-tag.js.map +1 -1
package/README.md CHANGED
@@ -1,36 +1,122 @@
1
+ # @tailng-ui/primitives
2
+
3
+ Headless Angular primitives for TailNG UI, providing accessibility-first behavior and stateful interaction contracts without opinionated styling.
4
+
1
5
  <div align="center">
2
6
  <img
3
7
  src="https://raw.githubusercontent.com/tailng/tailng-ui/main/apps/tailng-ui/docs/src/assets/logo.svg"
4
- width="96"
8
+ width="120"
5
9
  alt="TailNG logo"
6
10
  />
11
+
12
+ <h1>@tailng-ui/primitives</h1>
13
+
14
+ <p>
15
+ <strong>Scalability of Angular. Simplicity of Tailwind.</strong>
16
+ </p>
17
+
18
+ <p>
19
+ Unstyled, composable primitives for Angular 21+ built with signals and strong accessibility contracts.
20
+ </p>
21
+
22
+ <p>
23
+ <a href="https://github.com/tailng/tailng-ui">GitHub</a>
24
+ ·
25
+ <a href="https://tailng.dev">Documentation</a>
26
+ </p>
7
27
  </div>
8
28
 
9
- # @tailng-ui/primitives
29
+ [![PROD - Release & Deploy (Tailng)](https://github.com/tailng/tailng-ui/actions/workflows/prod-build-deploy.yml/badge.svg)](https://github.com/tailng/tailng-ui/actions/workflows/prod-build-deploy.yml)
30
+ [![NPM Version](https://img.shields.io/npm/v/@tailng-ui/primitives.svg)](https://www.npmjs.com/package/@tailng-ui/primitives)
31
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
32
+
33
+ `@tailng-ui/primitives` is the headless interaction layer used by TailNG components.
34
+ Use it when you want full control over markup and styling while keeping robust behavior and accessibility.
10
35
 
11
- Unstyled accessibility and behavior primitives for TailNG UI.
36
+ ## Installation
12
37
 
13
- ## TngPress
38
+ ### pnpm
39
+
40
+ ```bash
41
+ pnpm add @tailng-ui/primitives @tailng-ui/cdk
42
+ ```
43
+
44
+ ### yarn
45
+
46
+ ```bash
47
+ yarn add @tailng-ui/primitives @tailng-ui/cdk
48
+ ```
49
+
50
+ ### npm
51
+
52
+ ```bash
53
+ npm install @tailng-ui/primitives @tailng-ui/cdk
54
+ ```
14
55
 
15
- `TngPress` is a standalone directive that enhances native `button` and `a` elements:
56
+ Peer dependencies:
16
57
 
17
- - Defaults `button[tngPress]` to `type="button"` to avoid accidental form submission.
18
- - Supports ARIA attributes for toggle/menu disclosure patterns.
19
- - Handles disabled interaction for anchors and exposes `data-disabled` for styling.
20
- - Applies button keyboard behavior to anchors without `href`.
58
+ - `@angular/core` `^21.1.0`
59
+ - `tslib` `^2.3.0`
21
60
 
22
- ### Usage
61
+ ## Design principles
62
+
63
+ - **Headless-first**: no visual styles, tokens, or CSS framework dependency.
64
+ - **Composable behavior**: each primitive solves one interaction concern cleanly.
65
+ - **A11y as default**: ARIA roles/states and keyboard support are built in.
66
+ - **Signals-oriented Angular APIs**: modern Angular patterns with standalone usage.
67
+
68
+ ## Module coverage
69
+
70
+ The package exports primitives across major UI categories:
71
+
72
+ - **Navigation**: breadcrumb, context menu, dropdown menu, menu, menubar, navigation menu, tabs, toolbar.
73
+ - **Form**: listbox/option, autocomplete, button-toggle, checkbox, chips, combobox, input/input-otp, label, multiselect, multi-autocomplete, radio, select, slider, switch, textarea, toggle, toggle-group.
74
+ - **Layout**: accordion, bottom-sheet, card, collapsible, drawer, grid, separator, stepper, tree.
75
+ - **Overlay**: dialog, popover, tooltip.
76
+ - **Feedback**: empty, progress-bar, progress-spinner, skeleton, toast.
77
+ - **Utility**: avatar, badge, code-block, copy, press, tag.
78
+
79
+ ## Quick example (`TngPress`)
80
+
81
+ `TngPress` enhances native `button` and `a` elements with safer defaults and interaction behavior.
23
82
 
24
83
  ```ts
25
84
  import { Component } from '@angular/core';
26
85
  import { TngPress } from '@tailng-ui/primitives';
27
86
 
28
87
  @Component({
88
+ standalone: true,
29
89
  imports: [TngPress],
30
90
  template: `
31
- <button tngPress type="button">Action</button>
91
+ <button tngPress>Action</button>
32
92
  <a tngPress [disabled]="true">Disabled Link Button</a>
33
93
  `,
34
94
  })
35
95
  export class ExampleComponent {}
36
96
  ```
97
+
98
+ What it provides:
99
+
100
+ - Defaults `button[tngPress]` to `type="button"` to prevent accidental form submits.
101
+ - Supports ARIA attributes for toggle/disclosure patterns.
102
+ - Handles disabled interaction on anchor usage and exposes `data-disabled` hooks.
103
+ - Applies expected keyboard behavior to anchor elements used as button-like controls.
104
+
105
+ ## When to use `@tailng-ui/primitives`
106
+
107
+ Use this package when you want:
108
+
109
+ - A custom design system with your own CSS architecture.
110
+ - Maximum control over template structure and slot composition.
111
+ - Behavior parity across plain CSS and Tailwind implementations.
112
+
113
+ Use `@tailng-ui/components` when you want ready-made styled components on top of these primitives.
114
+
115
+ ## Documentation
116
+
117
+ - Package docs: [https://tailng.dev](https://tailng.dev)
118
+ - Repository: [https://github.com/tailng/tailng-ui](https://github.com/tailng/tailng-ui)
119
+
120
+ ## License
121
+
122
+ See the repository license at the root of the monorepo.
package/package.json CHANGED
@@ -1,19 +1,25 @@
1
1
  {
2
2
  "name": "@tailng-ui/primitives",
3
- "version": "0.11.0",
3
+ "version": "0.13.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/tailng/tailng-ui"
7
7
  },
8
+ "type": "commonjs",
9
+ "main": "./src/index.js",
10
+ "types": "./src/index.d.ts",
11
+ "exports": {
12
+ ".": {
13
+ "types": "./src/index.d.ts",
14
+ "default": "./src/index.js"
15
+ }
16
+ },
8
17
  "dependencies": {
9
- "@tailng-ui/cdk": "^0.11.0"
18
+ "@tailng-ui/cdk": "^0.12.0"
10
19
  },
11
20
  "peerDependencies": {
12
21
  "@angular/core": "^21.1.0",
13
22
  "tslib": "^2.3.0"
14
23
  },
15
- "sideEffects": false,
16
- "types": "./src/index.d.ts",
17
- "main": "./src/index.js",
18
- "type": "commonjs"
24
+ "sideEffects": false
19
25
  }
@@ -1,16 +1,27 @@
1
+ import * as i0 from "@angular/core";
1
2
  export declare class TngEmpty {
2
3
  protected readonly dataSlot: "empty";
4
+ static ɵfac: i0.ɵɵFactoryDeclaration<TngEmpty, never>;
5
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TngEmpty, "[tngEmpty]", ["tngEmpty"], {}, {}, never, never, true, never>;
3
6
  }
4
7
  export declare class TngEmptyIcon {
5
8
  protected readonly dataSlot: "empty-icon";
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<TngEmptyIcon, never>;
10
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TngEmptyIcon, "[tngEmptyIcon]", ["tngEmptyIcon"], {}, {}, never, never, true, never>;
6
11
  }
7
12
  export declare class TngEmptyTitle {
8
13
  protected readonly dataSlot: "empty-title";
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<TngEmptyTitle, never>;
15
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TngEmptyTitle, "[tngEmptyTitle]", ["tngEmptyTitle"], {}, {}, never, never, true, never>;
9
16
  }
10
17
  export declare class TngEmptyDescription {
11
18
  protected readonly dataSlot: "empty-description";
19
+ static ɵfac: i0.ɵɵFactoryDeclaration<TngEmptyDescription, never>;
20
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TngEmptyDescription, "[tngEmptyDescription]", ["tngEmptyDescription"], {}, {}, never, never, true, never>;
12
21
  }
13
22
  export declare class TngEmptyActions {
14
23
  protected readonly dataSlot: "empty-actions";
24
+ static ɵfac: i0.ɵɵFactoryDeclaration<TngEmptyActions, never>;
25
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TngEmptyActions, "[tngEmptyActions]", ["tngEmptyActions"], {}, {}, never, never, true, never>;
15
26
  }
16
27
  //# sourceMappingURL=tng-empty.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tng-empty.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/feedback/empty/tng-empty.ts"],"names":[],"mappings":"AAEA,qBAIa,QAAQ;IAEnB,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,OAAO,CAAU;CAChD;AAED,qBAIa,YAAY;IAEvB,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,YAAY,CAAU;CACrD;AAED,qBAIa,aAAa;IAExB,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,aAAa,CAAU;CACtD;AAED,qBAIa,mBAAmB;IAE9B,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,mBAAmB,CAAU;CAC5D;AAED,qBAIa,eAAe;IAE1B,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,eAAe,CAAU;CACxD"}
1
+ {"version":3,"file":"tng-empty.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/feedback/empty/tng-empty.ts"],"names":[],"mappings":";AAEA,qBAKa,QAAQ;IAEnB,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,OAAO,CAAU;yCAFpC,QAAQ;2CAAR,QAAQ;CAGpB;AAED,qBAKa,YAAY;IAEvB,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,YAAY,CAAU;yCAFzC,YAAY;2CAAZ,YAAY;CAGxB;AAED,qBAKa,aAAa;IAExB,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,aAAa,CAAU;yCAF1C,aAAa;2CAAb,aAAa;CAGzB;AAED,qBAKa,mBAAmB;IAE9B,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,mBAAmB,CAAU;yCAFhD,mBAAmB;2CAAnB,mBAAmB;CAG/B;AAED,qBAKa,eAAe;IAE1B,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,eAAe,CAAU;yCAF5C,eAAe;2CAAf,eAAe;CAG3B"}
@@ -1,68 +1,83 @@
1
- import { __decorate } from "tslib";
2
1
  import { Directive, HostBinding } from '@angular/core';
3
- let TngEmpty = class TngEmpty {
2
+ import * as i0 from "@angular/core";
3
+ export class TngEmpty {
4
4
  dataSlot = 'empty';
5
- };
6
- __decorate([
7
- HostBinding('attr.data-slot')
8
- ], TngEmpty.prototype, "dataSlot", void 0);
9
- TngEmpty = __decorate([
10
- Directive({
11
- selector: '[tngEmpty]',
12
- exportAs: 'tngEmpty',
13
- })
14
- ], TngEmpty);
15
- export { TngEmpty };
16
- let TngEmptyIcon = class TngEmptyIcon {
5
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngEmpty, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.1", type: TngEmpty, isStandalone: true, selector: "[tngEmpty]", host: { properties: { "attr.data-slot": "this.dataSlot" } }, exportAs: ["tngEmpty"], ngImport: i0 });
7
+ }
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngEmpty, decorators: [{
9
+ type: Directive,
10
+ args: [{
11
+ selector: '[tngEmpty]',
12
+ exportAs: 'tngEmpty',
13
+ standalone: true,
14
+ }]
15
+ }], propDecorators: { dataSlot: [{
16
+ type: HostBinding,
17
+ args: ['attr.data-slot']
18
+ }] } });
19
+ export class TngEmptyIcon {
17
20
  dataSlot = 'empty-icon';
18
- };
19
- __decorate([
20
- HostBinding('attr.data-slot')
21
- ], TngEmptyIcon.prototype, "dataSlot", void 0);
22
- TngEmptyIcon = __decorate([
23
- Directive({
24
- selector: '[tngEmptyIcon]',
25
- exportAs: 'tngEmptyIcon',
26
- })
27
- ], TngEmptyIcon);
28
- export { TngEmptyIcon };
29
- let TngEmptyTitle = class TngEmptyTitle {
21
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngEmptyIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
22
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.1", type: TngEmptyIcon, isStandalone: true, selector: "[tngEmptyIcon]", host: { properties: { "attr.data-slot": "this.dataSlot" } }, exportAs: ["tngEmptyIcon"], ngImport: i0 });
23
+ }
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngEmptyIcon, decorators: [{
25
+ type: Directive,
26
+ args: [{
27
+ selector: '[tngEmptyIcon]',
28
+ exportAs: 'tngEmptyIcon',
29
+ standalone: true,
30
+ }]
31
+ }], propDecorators: { dataSlot: [{
32
+ type: HostBinding,
33
+ args: ['attr.data-slot']
34
+ }] } });
35
+ export class TngEmptyTitle {
30
36
  dataSlot = 'empty-title';
31
- };
32
- __decorate([
33
- HostBinding('attr.data-slot')
34
- ], TngEmptyTitle.prototype, "dataSlot", void 0);
35
- TngEmptyTitle = __decorate([
36
- Directive({
37
- selector: '[tngEmptyTitle]',
38
- exportAs: 'tngEmptyTitle',
39
- })
40
- ], TngEmptyTitle);
41
- export { TngEmptyTitle };
42
- let TngEmptyDescription = class TngEmptyDescription {
37
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngEmptyTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive });
38
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.1", type: TngEmptyTitle, isStandalone: true, selector: "[tngEmptyTitle]", host: { properties: { "attr.data-slot": "this.dataSlot" } }, exportAs: ["tngEmptyTitle"], ngImport: i0 });
39
+ }
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngEmptyTitle, decorators: [{
41
+ type: Directive,
42
+ args: [{
43
+ selector: '[tngEmptyTitle]',
44
+ exportAs: 'tngEmptyTitle',
45
+ standalone: true,
46
+ }]
47
+ }], propDecorators: { dataSlot: [{
48
+ type: HostBinding,
49
+ args: ['attr.data-slot']
50
+ }] } });
51
+ export class TngEmptyDescription {
43
52
  dataSlot = 'empty-description';
44
- };
45
- __decorate([
46
- HostBinding('attr.data-slot')
47
- ], TngEmptyDescription.prototype, "dataSlot", void 0);
48
- TngEmptyDescription = __decorate([
49
- Directive({
50
- selector: '[tngEmptyDescription]',
51
- exportAs: 'tngEmptyDescription',
52
- })
53
- ], TngEmptyDescription);
54
- export { TngEmptyDescription };
55
- let TngEmptyActions = class TngEmptyActions {
53
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngEmptyDescription, deps: [], target: i0.ɵɵFactoryTarget.Directive });
54
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.1", type: TngEmptyDescription, isStandalone: true, selector: "[tngEmptyDescription]", host: { properties: { "attr.data-slot": "this.dataSlot" } }, exportAs: ["tngEmptyDescription"], ngImport: i0 });
55
+ }
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngEmptyDescription, decorators: [{
57
+ type: Directive,
58
+ args: [{
59
+ selector: '[tngEmptyDescription]',
60
+ exportAs: 'tngEmptyDescription',
61
+ standalone: true,
62
+ }]
63
+ }], propDecorators: { dataSlot: [{
64
+ type: HostBinding,
65
+ args: ['attr.data-slot']
66
+ }] } });
67
+ export class TngEmptyActions {
56
68
  dataSlot = 'empty-actions';
57
- };
58
- __decorate([
59
- HostBinding('attr.data-slot')
60
- ], TngEmptyActions.prototype, "dataSlot", void 0);
61
- TngEmptyActions = __decorate([
62
- Directive({
63
- selector: '[tngEmptyActions]',
64
- exportAs: 'tngEmptyActions',
65
- })
66
- ], TngEmptyActions);
67
- export { TngEmptyActions };
69
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngEmptyActions, deps: [], target: i0.ɵɵFactoryTarget.Directive });
70
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.1", type: TngEmptyActions, isStandalone: true, selector: "[tngEmptyActions]", host: { properties: { "attr.data-slot": "this.dataSlot" } }, exportAs: ["tngEmptyActions"], ngImport: i0 });
71
+ }
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngEmptyActions, decorators: [{
73
+ type: Directive,
74
+ args: [{
75
+ selector: '[tngEmptyActions]',
76
+ exportAs: 'tngEmptyActions',
77
+ standalone: true,
78
+ }]
79
+ }], propDecorators: { dataSlot: [{
80
+ type: HostBinding,
81
+ args: ['attr.data-slot']
82
+ }] } });
68
83
  //# sourceMappingURL=tng-empty.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tng-empty.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/feedback/empty/tng-empty.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAMhD,IAAM,QAAQ,GAAd,MAAM,QAAQ;IAEA,QAAQ,GAAG,OAAgB,CAAC;CAChD,CAAA;AADoB;IADlB,WAAW,CAAC,gBAAgB,CAAC;0CACiB;AAFpC,QAAQ;IAJpB,SAAS,CAAC;QACT,QAAQ,EAAE,YAAY;QACtB,QAAQ,EAAE,UAAU;KACrB,CAAC;GACW,QAAQ,CAGpB;;AAMM,IAAM,YAAY,GAAlB,MAAM,YAAY;IAEJ,QAAQ,GAAG,YAAqB,CAAC;CACrD,CAAA;AADoB;IADlB,WAAW,CAAC,gBAAgB,CAAC;8CACsB;AAFzC,YAAY;IAJxB,SAAS,CAAC;QACT,QAAQ,EAAE,gBAAgB;QAC1B,QAAQ,EAAE,cAAc;KACzB,CAAC;GACW,YAAY,CAGxB;;AAMM,IAAM,aAAa,GAAnB,MAAM,aAAa;IAEL,QAAQ,GAAG,aAAsB,CAAC;CACtD,CAAA;AADoB;IADlB,WAAW,CAAC,gBAAgB,CAAC;+CACuB;AAF1C,aAAa;IAJzB,SAAS,CAAC;QACT,QAAQ,EAAE,iBAAiB;QAC3B,QAAQ,EAAE,eAAe;KAC1B,CAAC;GACW,aAAa,CAGzB;;AAMM,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAEX,QAAQ,GAAG,mBAA4B,CAAC;CAC5D,CAAA;AADoB;IADlB,WAAW,CAAC,gBAAgB,CAAC;qDAC6B;AAFhD,mBAAmB;IAJ/B,SAAS,CAAC;QACT,QAAQ,EAAE,uBAAuB;QACjC,QAAQ,EAAE,qBAAqB;KAChC,CAAC;GACW,mBAAmB,CAG/B;;AAMM,IAAM,eAAe,GAArB,MAAM,eAAe;IAEP,QAAQ,GAAG,eAAwB,CAAC;CACxD,CAAA;AADoB;IADlB,WAAW,CAAC,gBAAgB,CAAC;iDACyB;AAF5C,eAAe;IAJ3B,SAAS,CAAC;QACT,QAAQ,EAAE,mBAAmB;QAC7B,QAAQ,EAAE,iBAAiB;KAC5B,CAAC;GACW,eAAe,CAG3B","sourcesContent":["import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[tngEmpty]',\n exportAs: 'tngEmpty',\n})\nexport class TngEmpty {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'empty' as const;\n}\n\n@Directive({\n selector: '[tngEmptyIcon]',\n exportAs: 'tngEmptyIcon',\n})\nexport class TngEmptyIcon {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'empty-icon' as const;\n}\n\n@Directive({\n selector: '[tngEmptyTitle]',\n exportAs: 'tngEmptyTitle',\n})\nexport class TngEmptyTitle {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'empty-title' as const;\n}\n\n@Directive({\n selector: '[tngEmptyDescription]',\n exportAs: 'tngEmptyDescription',\n})\nexport class TngEmptyDescription {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'empty-description' as const;\n}\n\n@Directive({\n selector: '[tngEmptyActions]',\n exportAs: 'tngEmptyActions',\n})\nexport class TngEmptyActions {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'empty-actions' as const;\n}\n"]}
1
+ {"version":3,"file":"tng-empty.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/feedback/empty/tng-empty.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;;AAOvD,MAAM,OAAO,QAAQ;IAEA,QAAQ,GAAG,OAAgB,CAAC;uGAFpC,QAAQ;2FAAR,QAAQ;;2FAAR,QAAQ;kBALpB,SAAS;mBAAC;oBACT,QAAQ,EAAE,YAAY;oBACtB,QAAQ,EAAE,UAAU;oBACpB,UAAU,EAAE,IAAI;iBACjB;;sBAEE,WAAW;uBAAC,gBAAgB;;AAS/B,MAAM,OAAO,YAAY;IAEJ,QAAQ,GAAG,YAAqB,CAAC;uGAFzC,YAAY;2FAAZ,YAAY;;2FAAZ,YAAY;kBALxB,SAAS;mBAAC;oBACT,QAAQ,EAAE,gBAAgB;oBAC1B,QAAQ,EAAE,cAAc;oBACxB,UAAU,EAAE,IAAI;iBACjB;;sBAEE,WAAW;uBAAC,gBAAgB;;AAS/B,MAAM,OAAO,aAAa;IAEL,QAAQ,GAAG,aAAsB,CAAC;uGAF1C,aAAa;2FAAb,aAAa;;2FAAb,aAAa;kBALzB,SAAS;mBAAC;oBACT,QAAQ,EAAE,iBAAiB;oBAC3B,QAAQ,EAAE,eAAe;oBACzB,UAAU,EAAE,IAAI;iBACjB;;sBAEE,WAAW;uBAAC,gBAAgB;;AAS/B,MAAM,OAAO,mBAAmB;IAEX,QAAQ,GAAG,mBAA4B,CAAC;uGAFhD,mBAAmB;2FAAnB,mBAAmB;;2FAAnB,mBAAmB;kBAL/B,SAAS;mBAAC;oBACT,QAAQ,EAAE,uBAAuB;oBACjC,QAAQ,EAAE,qBAAqB;oBAC/B,UAAU,EAAE,IAAI;iBACjB;;sBAEE,WAAW;uBAAC,gBAAgB;;AAS/B,MAAM,OAAO,eAAe;IAEP,QAAQ,GAAG,eAAwB,CAAC;uGAF5C,eAAe;2FAAf,eAAe;;2FAAf,eAAe;kBAL3B,SAAS;mBAAC;oBACT,QAAQ,EAAE,mBAAmB;oBAC7B,QAAQ,EAAE,iBAAiB;oBAC3B,UAAU,EAAE,IAAI;iBACjB;;sBAEE,WAAW;uBAAC,gBAAgB","sourcesContent":["import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n selector: '[tngEmpty]',\n exportAs: 'tngEmpty',\n standalone: true,\n})\nexport class TngEmpty {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'empty' as const;\n}\n\n@Directive({\n selector: '[tngEmptyIcon]',\n exportAs: 'tngEmptyIcon',\n standalone: true,\n})\nexport class TngEmptyIcon {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'empty-icon' as const;\n}\n\n@Directive({\n selector: '[tngEmptyTitle]',\n exportAs: 'tngEmptyTitle',\n standalone: true,\n})\nexport class TngEmptyTitle {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'empty-title' as const;\n}\n\n@Directive({\n selector: '[tngEmptyDescription]',\n exportAs: 'tngEmptyDescription',\n standalone: true,\n})\nexport class TngEmptyDescription {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'empty-description' as const;\n}\n\n@Directive({\n selector: '[tngEmptyActions]',\n exportAs: 'tngEmptyActions',\n standalone: true,\n})\nexport class TngEmptyActions {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'empty-actions' as const;\n}\n"]}
@@ -1,3 +1,4 @@
1
+ import * as i0 from "@angular/core";
1
2
  export declare function normalizeTngProgressBarMin(value: number): number;
2
3
  export declare function normalizeTngProgressBarMax(value: number): number;
3
4
  export declare function resolveTngProgressBarRange(min: number, max: number, value: number): Readonly<{
@@ -17,8 +18,12 @@ export declare class TngProgressBar {
17
18
  protected readonly dataSlot: "progress-bar";
18
19
  protected readonly roleAttr: "progressbar";
19
20
  private get range();
21
+ static ɵfac: i0.ɵɵFactoryDeclaration<TngProgressBar, never>;
22
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TngProgressBar, "[tngProgressBar]", ["tngProgressBar"], { "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
20
23
  }
21
24
  export declare class TngProgressBarIndicator {
22
25
  protected readonly dataSlot: "progress-bar-indicator";
26
+ static ɵfac: i0.ɵɵFactoryDeclaration<TngProgressBarIndicator, never>;
27
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TngProgressBarIndicator, "[tngProgressBarIndicator]", ["tngProgressBarIndicator"], {}, {}, never, never, true, never>;
23
28
  }
24
29
  //# sourceMappingURL=tng-progress-bar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tng-progress-bar.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/feedback/progress-bar/tng-progress-bar.ts"],"names":[],"mappings":"AAMA,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,QAAQ,CAAC;IACV,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAWD;AAED,qBAIa,cAAc;IACzB,SAAgB,aAAa,8EAE1B;IACH,SAAgB,GAAG,4EAGhB;IACH,SAAgB,GAAG,4EAGhB;IACH,SAAgB,KAAK,4EAGlB;IAGH,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAM9C;IAGD,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAM9C;IAGD,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAM9C;IAGD,SAAS,KAAK,qBAAqB,IAAI,EAAE,GAAG,IAAI,CAE/C;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,cAAc,CAAU;IAGtD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,aAAa,CAAU;IAErD,OAAO,KAAK,KAAK,GAMhB;CACF;AAED,qBAIa,uBAAuB;IAElC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,wBAAwB,CAAU;CACjE"}
1
+ {"version":3,"file":"tng-progress-bar.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/feedback/progress-bar/tng-progress-bar.ts"],"names":[],"mappings":";AAMA,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,QAAQ,CAAC;IACV,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAWD;AAED,qBAKa,cAAc;IACzB,SAAgB,aAAa,8EAE1B;IACH,SAAgB,GAAG,4EAGhB;IACH,SAAgB,GAAG,4EAGhB;IACH,SAAgB,KAAK,4EAGlB;IAGH,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAM9C;IAGD,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAM9C;IAGD,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAM9C;IAGD,SAAS,KAAK,qBAAqB,IAAI,EAAE,GAAG,IAAI,CAE/C;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,cAAc,CAAU;IAGtD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,aAAa,CAAU;IAErD,OAAO,KAAK,KAAK,GAMhB;yCA7DU,cAAc;2CAAd,cAAc;CA8D1B;AAED,qBAKa,uBAAuB;IAElC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,wBAAwB,CAAU;yCAFrD,uBAAuB;2CAAvB,uBAAuB;CAGnC"}
@@ -1,5 +1,5 @@
1
- import { __decorate } from "tslib";
2
1
  import { booleanAttribute, Directive, HostBinding, input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
3
  function normalizeFiniteNumber(value, fallback) {
4
4
  return Number.isFinite(value) ? value : fallback;
5
5
  }
@@ -20,19 +20,11 @@ export function resolveTngProgressBarRange(min, max, value) {
20
20
  value: resolvedValue,
21
21
  });
22
22
  }
23
- let TngProgressBar = class TngProgressBar {
24
- indeterminate = input(false, {
25
- transform: booleanAttribute,
26
- });
27
- max = input(100, {
28
- transform: (value) => normalizeTngProgressBarMax(typeof value === 'number' ? value : Number(value)),
29
- });
30
- min = input(0, {
31
- transform: (value) => normalizeTngProgressBarMin(typeof value === 'number' ? value : Number(value)),
32
- });
33
- value = input(0, {
34
- transform: (value) => typeof value === 'number' ? value : Number(value),
35
- });
23
+ export class TngProgressBar {
24
+ indeterminate = input(false, { ...(ngDevMode ? { debugName: "indeterminate" } : {}), transform: booleanAttribute });
25
+ max = input(100, { ...(ngDevMode ? { debugName: "max" } : {}), transform: (value) => normalizeTngProgressBarMax(typeof value === 'number' ? value : Number(value)) });
26
+ min = input(0, { ...(ngDevMode ? { debugName: "min" } : {}), transform: (value) => normalizeTngProgressBarMin(typeof value === 'number' ? value : Number(value)) });
27
+ value = input(0, { ...(ngDevMode ? { debugName: "value" } : {}), transform: (value) => typeof value === 'number' ? value : Number(value) });
36
28
  get ariaValueMaxAttr() {
37
29
  if (this.indeterminate()) {
38
30
  return null;
@@ -59,43 +51,49 @@ let TngProgressBar = class TngProgressBar {
59
51
  get range() {
60
52
  return resolveTngProgressBarRange(this.min(), this.max(), this.value());
61
53
  }
62
- };
63
- __decorate([
64
- HostBinding('attr.aria-valuemax')
65
- ], TngProgressBar.prototype, "ariaValueMaxAttr", null);
66
- __decorate([
67
- HostBinding('attr.aria-valuemin')
68
- ], TngProgressBar.prototype, "ariaValueMinAttr", null);
69
- __decorate([
70
- HostBinding('attr.aria-valuenow')
71
- ], TngProgressBar.prototype, "ariaValueNowAttr", null);
72
- __decorate([
73
- HostBinding('attr.data-indeterminate')
74
- ], TngProgressBar.prototype, "dataIndeterminateAttr", null);
75
- __decorate([
76
- HostBinding('attr.data-slot')
77
- ], TngProgressBar.prototype, "dataSlot", void 0);
78
- __decorate([
79
- HostBinding('attr.role')
80
- ], TngProgressBar.prototype, "roleAttr", void 0);
81
- TngProgressBar = __decorate([
82
- Directive({
83
- selector: '[tngProgressBar]',
84
- exportAs: 'tngProgressBar',
85
- })
86
- ], TngProgressBar);
87
- export { TngProgressBar };
88
- let TngProgressBarIndicator = class TngProgressBarIndicator {
54
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngProgressBar, deps: [], target: i0.ɵɵFactoryTarget.Directive });
55
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.1", type: TngProgressBar, isStandalone: true, selector: "[tngProgressBar]", inputs: { indeterminate: { classPropertyName: "indeterminate", publicName: "indeterminate", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.aria-valuemax": "this.ariaValueMaxAttr", "attr.aria-valuemin": "this.ariaValueMinAttr", "attr.aria-valuenow": "this.ariaValueNowAttr", "attr.data-indeterminate": "this.dataIndeterminateAttr", "attr.data-slot": "this.dataSlot", "attr.role": "this.roleAttr" } }, exportAs: ["tngProgressBar"], ngImport: i0 });
56
+ }
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngProgressBar, decorators: [{
58
+ type: Directive,
59
+ args: [{
60
+ selector: '[tngProgressBar]',
61
+ exportAs: 'tngProgressBar',
62
+ standalone: true,
63
+ }]
64
+ }], propDecorators: { indeterminate: [{ type: i0.Input, args: [{ isSignal: true, alias: "indeterminate", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], ariaValueMaxAttr: [{
65
+ type: HostBinding,
66
+ args: ['attr.aria-valuemax']
67
+ }], ariaValueMinAttr: [{
68
+ type: HostBinding,
69
+ args: ['attr.aria-valuemin']
70
+ }], ariaValueNowAttr: [{
71
+ type: HostBinding,
72
+ args: ['attr.aria-valuenow']
73
+ }], dataIndeterminateAttr: [{
74
+ type: HostBinding,
75
+ args: ['attr.data-indeterminate']
76
+ }], dataSlot: [{
77
+ type: HostBinding,
78
+ args: ['attr.data-slot']
79
+ }], roleAttr: [{
80
+ type: HostBinding,
81
+ args: ['attr.role']
82
+ }] } });
83
+ export class TngProgressBarIndicator {
89
84
  dataSlot = 'progress-bar-indicator';
90
- };
91
- __decorate([
92
- HostBinding('attr.data-slot')
93
- ], TngProgressBarIndicator.prototype, "dataSlot", void 0);
94
- TngProgressBarIndicator = __decorate([
95
- Directive({
96
- selector: '[tngProgressBarIndicator]',
97
- exportAs: 'tngProgressBarIndicator',
98
- })
99
- ], TngProgressBarIndicator);
100
- export { TngProgressBarIndicator };
85
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngProgressBarIndicator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
86
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.1", type: TngProgressBarIndicator, isStandalone: true, selector: "[tngProgressBarIndicator]", host: { properties: { "attr.data-slot": "this.dataSlot" } }, exportAs: ["tngProgressBarIndicator"], ngImport: i0 });
87
+ }
88
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: TngProgressBarIndicator, decorators: [{
89
+ type: Directive,
90
+ args: [{
91
+ selector: '[tngProgressBarIndicator]',
92
+ exportAs: 'tngProgressBarIndicator',
93
+ standalone: true,
94
+ }]
95
+ }], propDecorators: { dataSlot: [{
96
+ type: HostBinding,
97
+ args: ['attr.data-slot']
98
+ }] } });
101
99
  //# sourceMappingURL=tng-progress-bar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tng-progress-bar.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/feedback/progress-bar/tng-progress-bar.ts"],"names":[],"mappings":"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","sourcesContent":["import { booleanAttribute, Directive, HostBinding, input } from '@angular/core';\n\nfunction normalizeFiniteNumber(value: number, fallback: number): number {\n return Number.isFinite(value) ? value : fallback;\n}\n\nexport function normalizeTngProgressBarMin(value: number): number {\n return normalizeFiniteNumber(value, 0);\n}\n\nexport function normalizeTngProgressBarMax(value: number): number {\n return normalizeFiniteNumber(value, 100);\n}\n\nexport function resolveTngProgressBarRange(\n min: number,\n max: number,\n value: number,\n): Readonly<{\n max: number;\n min: number;\n value: number;\n}> {\n const resolvedMin = normalizeTngProgressBarMin(min);\n const resolvedMax = Math.max(normalizeTngProgressBarMax(max), resolvedMin);\n const normalizedValue = normalizeFiniteNumber(value, resolvedMin);\n const resolvedValue = Math.min(Math.max(normalizedValue, resolvedMin), resolvedMax);\n\n return Object.freeze({\n max: resolvedMax,\n min: resolvedMin,\n value: resolvedValue,\n });\n}\n\n@Directive({\n selector: '[tngProgressBar]',\n exportAs: 'tngProgressBar',\n})\nexport class TngProgressBar {\n public readonly indeterminate = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly max = input<number, number | string>(100, {\n transform: (value: number | string): number =>\n normalizeTngProgressBarMax(typeof value === 'number' ? value : Number(value)),\n });\n public readonly min = input<number, number | string>(0, {\n transform: (value: number | string): number =>\n normalizeTngProgressBarMin(typeof value === 'number' ? value : Number(value)),\n });\n public readonly value = input<number, number | string>(0, {\n transform: (value: number | string): number =>\n typeof value === 'number' ? value : Number(value),\n });\n\n @HostBinding('attr.aria-valuemax')\n protected get ariaValueMaxAttr(): string | null {\n if (this.indeterminate()) {\n return null;\n }\n\n return String(this.range.max);\n }\n\n @HostBinding('attr.aria-valuemin')\n protected get ariaValueMinAttr(): string | null {\n if (this.indeterminate()) {\n return null;\n }\n\n return String(this.range.min);\n }\n\n @HostBinding('attr.aria-valuenow')\n protected get ariaValueNowAttr(): string | null {\n if (this.indeterminate()) {\n return null;\n }\n\n return String(this.range.value);\n }\n\n @HostBinding('attr.data-indeterminate')\n protected get dataIndeterminateAttr(): '' | null {\n return this.indeterminate() ? '' : null;\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'progress-bar' as const;\n\n @HostBinding('attr.role')\n protected readonly roleAttr = 'progressbar' as const;\n\n private get range(): Readonly<{\n max: number;\n min: number;\n value: number;\n }> {\n return resolveTngProgressBarRange(this.min(), this.max(), this.value());\n }\n}\n\n@Directive({\n selector: '[tngProgressBarIndicator]',\n exportAs: 'tngProgressBarIndicator',\n})\nexport class TngProgressBarIndicator {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'progress-bar-indicator' as const;\n}\n"]}
1
+ {"version":3,"file":"tng-progress-bar.js","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/feedback/progress-bar/tng-progress-bar.ts"],"names":[],"mappings":"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","sourcesContent":["import { booleanAttribute, Directive, HostBinding, input } from '@angular/core';\n\nfunction normalizeFiniteNumber(value: number, fallback: number): number {\n return Number.isFinite(value) ? value : fallback;\n}\n\nexport function normalizeTngProgressBarMin(value: number): number {\n return normalizeFiniteNumber(value, 0);\n}\n\nexport function normalizeTngProgressBarMax(value: number): number {\n return normalizeFiniteNumber(value, 100);\n}\n\nexport function resolveTngProgressBarRange(\n min: number,\n max: number,\n value: number,\n): Readonly<{\n max: number;\n min: number;\n value: number;\n}> {\n const resolvedMin = normalizeTngProgressBarMin(min);\n const resolvedMax = Math.max(normalizeTngProgressBarMax(max), resolvedMin);\n const normalizedValue = normalizeFiniteNumber(value, resolvedMin);\n const resolvedValue = Math.min(Math.max(normalizedValue, resolvedMin), resolvedMax);\n\n return Object.freeze({\n max: resolvedMax,\n min: resolvedMin,\n value: resolvedValue,\n });\n}\n\n@Directive({\n selector: '[tngProgressBar]',\n exportAs: 'tngProgressBar',\n standalone: true,\n})\nexport class TngProgressBar {\n public readonly indeterminate = input<boolean, boolean | string>(false, {\n transform: booleanAttribute,\n });\n public readonly max = input<number, number | string>(100, {\n transform: (value: number | string): number =>\n normalizeTngProgressBarMax(typeof value === 'number' ? value : Number(value)),\n });\n public readonly min = input<number, number | string>(0, {\n transform: (value: number | string): number =>\n normalizeTngProgressBarMin(typeof value === 'number' ? value : Number(value)),\n });\n public readonly value = input<number, number | string>(0, {\n transform: (value: number | string): number =>\n typeof value === 'number' ? value : Number(value),\n });\n\n @HostBinding('attr.aria-valuemax')\n protected get ariaValueMaxAttr(): string | null {\n if (this.indeterminate()) {\n return null;\n }\n\n return String(this.range.max);\n }\n\n @HostBinding('attr.aria-valuemin')\n protected get ariaValueMinAttr(): string | null {\n if (this.indeterminate()) {\n return null;\n }\n\n return String(this.range.min);\n }\n\n @HostBinding('attr.aria-valuenow')\n protected get ariaValueNowAttr(): string | null {\n if (this.indeterminate()) {\n return null;\n }\n\n return String(this.range.value);\n }\n\n @HostBinding('attr.data-indeterminate')\n protected get dataIndeterminateAttr(): '' | null {\n return this.indeterminate() ? '' : null;\n }\n\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'progress-bar' as const;\n\n @HostBinding('attr.role')\n protected readonly roleAttr = 'progressbar' as const;\n\n private get range(): Readonly<{\n max: number;\n min: number;\n value: number;\n }> {\n return resolveTngProgressBarRange(this.min(), this.max(), this.value());\n }\n}\n\n@Directive({\n selector: '[tngProgressBarIndicator]',\n exportAs: 'tngProgressBarIndicator',\n standalone: true,\n})\nexport class TngProgressBarIndicator {\n @HostBinding('attr.data-slot')\n protected readonly dataSlot = 'progress-bar-indicator' as const;\n}\n"]}
@@ -1,3 +1,4 @@
1
+ import * as i0 from "@angular/core";
1
2
  export declare function normalizeTngProgressSpinnerMin(value: number): number;
2
3
  export declare function normalizeTngProgressSpinnerMax(value: number): number;
3
4
  export declare function resolveTngProgressSpinnerRange(min: number, max: number, value: number): Readonly<{
@@ -17,5 +18,7 @@ export declare class TngProgressSpinner {
17
18
  protected readonly dataSlot: "progress-spinner";
18
19
  protected readonly roleAttr: "progressbar";
19
20
  private get range();
21
+ static ɵfac: i0.ɵɵFactoryDeclaration<TngProgressSpinner, never>;
22
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TngProgressSpinner, "[tngProgressSpinner]", ["tngProgressSpinner"], { "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
20
23
  }
21
24
  //# sourceMappingURL=tng-progress-spinner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tng-progress-spinner.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/feedback/progress-spinner/tng-progress-spinner.ts"],"names":[],"mappings":"AAMA,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,QAAQ,CAAC;IACV,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAWD;AAED,qBAIa,kBAAkB;IAC7B,SAAgB,aAAa,8EAE1B;IACH,SAAgB,GAAG,4EAGhB;IACH,SAAgB,GAAG,4EAGhB;IACH,SAAgB,KAAK,4EAGlB;IAGH,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAM9C;IAGD,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAM9C;IAGD,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAM9C;IAGD,SAAS,KAAK,qBAAqB,IAAI,EAAE,GAAG,IAAI,CAE/C;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,kBAAkB,CAAU;IAG1D,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,aAAa,CAAU;IAErD,OAAO,KAAK,KAAK,GAMhB;CACF"}
1
+ {"version":3,"file":"tng-progress-spinner.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/tailng-ui/primitives/src/lib/feedback/progress-spinner/tng-progress-spinner.ts"],"names":[],"mappings":";AAMA,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,QAAQ,CAAC;IACV,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAWD;AAED,qBAKa,kBAAkB;IAC7B,SAAgB,aAAa,8EAE1B;IACH,SAAgB,GAAG,4EAGhB;IACH,SAAgB,GAAG,4EAGhB;IACH,SAAgB,KAAK,4EAGlB;IAGH,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAM9C;IAGD,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAM9C;IAGD,SAAS,KAAK,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAM9C;IAGD,SAAS,KAAK,qBAAqB,IAAI,EAAE,GAAG,IAAI,CAE/C;IAGD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,kBAAkB,CAAU;IAG1D,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,aAAa,CAAU;IAErD,OAAO,KAAK,KAAK,GAMhB;yCA7DU,kBAAkB;2CAAlB,kBAAkB;CA8D9B"}