structra-ui 0.1.30 → 0.1.32

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 (329) hide show
  1. package/README.md +25 -23
  2. package/fesm2022/structra-ui.mjs +2 -2
  3. package/fesm2022/structra-ui.mjs.map +1 -1
  4. package/files/roboto-cyrillic-100-italic.woff +0 -0
  5. package/files/roboto-cyrillic-100-italic.woff2 +0 -0
  6. package/files/roboto-cyrillic-100-normal.woff +0 -0
  7. package/files/roboto-cyrillic-100-normal.woff2 +0 -0
  8. package/files/roboto-cyrillic-200-italic.woff +0 -0
  9. package/files/roboto-cyrillic-200-italic.woff2 +0 -0
  10. package/files/roboto-cyrillic-200-normal.woff +0 -0
  11. package/files/roboto-cyrillic-200-normal.woff2 +0 -0
  12. package/files/roboto-cyrillic-300-italic.woff +0 -0
  13. package/files/roboto-cyrillic-300-italic.woff2 +0 -0
  14. package/files/roboto-cyrillic-300-normal.woff +0 -0
  15. package/files/roboto-cyrillic-300-normal.woff2 +0 -0
  16. package/files/roboto-cyrillic-400-italic.woff +0 -0
  17. package/files/roboto-cyrillic-400-italic.woff2 +0 -0
  18. package/files/roboto-cyrillic-400-normal.woff +0 -0
  19. package/files/roboto-cyrillic-400-normal.woff2 +0 -0
  20. package/files/roboto-cyrillic-500-italic.woff +0 -0
  21. package/files/roboto-cyrillic-500-italic.woff2 +0 -0
  22. package/files/roboto-cyrillic-500-normal.woff +0 -0
  23. package/files/roboto-cyrillic-500-normal.woff2 +0 -0
  24. package/files/roboto-cyrillic-600-italic.woff +0 -0
  25. package/files/roboto-cyrillic-600-italic.woff2 +0 -0
  26. package/files/roboto-cyrillic-600-normal.woff +0 -0
  27. package/files/roboto-cyrillic-600-normal.woff2 +0 -0
  28. package/files/roboto-cyrillic-700-italic.woff +0 -0
  29. package/files/roboto-cyrillic-700-italic.woff2 +0 -0
  30. package/files/roboto-cyrillic-700-normal.woff +0 -0
  31. package/files/roboto-cyrillic-700-normal.woff2 +0 -0
  32. package/files/roboto-cyrillic-800-italic.woff +0 -0
  33. package/files/roboto-cyrillic-800-italic.woff2 +0 -0
  34. package/files/roboto-cyrillic-800-normal.woff +0 -0
  35. package/files/roboto-cyrillic-800-normal.woff2 +0 -0
  36. package/files/roboto-cyrillic-900-italic.woff +0 -0
  37. package/files/roboto-cyrillic-900-italic.woff2 +0 -0
  38. package/files/roboto-cyrillic-900-normal.woff +0 -0
  39. package/files/roboto-cyrillic-900-normal.woff2 +0 -0
  40. package/files/roboto-cyrillic-ext-100-italic.woff +0 -0
  41. package/files/roboto-cyrillic-ext-100-italic.woff2 +0 -0
  42. package/files/roboto-cyrillic-ext-100-normal.woff +0 -0
  43. package/files/roboto-cyrillic-ext-100-normal.woff2 +0 -0
  44. package/files/roboto-cyrillic-ext-200-italic.woff +0 -0
  45. package/files/roboto-cyrillic-ext-200-italic.woff2 +0 -0
  46. package/files/roboto-cyrillic-ext-200-normal.woff +0 -0
  47. package/files/roboto-cyrillic-ext-200-normal.woff2 +0 -0
  48. package/files/roboto-cyrillic-ext-300-italic.woff +0 -0
  49. package/files/roboto-cyrillic-ext-300-italic.woff2 +0 -0
  50. package/files/roboto-cyrillic-ext-300-normal.woff +0 -0
  51. package/files/roboto-cyrillic-ext-300-normal.woff2 +0 -0
  52. package/files/roboto-cyrillic-ext-400-italic.woff +0 -0
  53. package/files/roboto-cyrillic-ext-400-italic.woff2 +0 -0
  54. package/files/roboto-cyrillic-ext-400-normal.woff +0 -0
  55. package/files/roboto-cyrillic-ext-400-normal.woff2 +0 -0
  56. package/files/roboto-cyrillic-ext-500-italic.woff +0 -0
  57. package/files/roboto-cyrillic-ext-500-italic.woff2 +0 -0
  58. package/files/roboto-cyrillic-ext-500-normal.woff +0 -0
  59. package/files/roboto-cyrillic-ext-500-normal.woff2 +0 -0
  60. package/files/roboto-cyrillic-ext-600-italic.woff +0 -0
  61. package/files/roboto-cyrillic-ext-600-italic.woff2 +0 -0
  62. package/files/roboto-cyrillic-ext-600-normal.woff +0 -0
  63. package/files/roboto-cyrillic-ext-600-normal.woff2 +0 -0
  64. package/files/roboto-cyrillic-ext-700-italic.woff +0 -0
  65. package/files/roboto-cyrillic-ext-700-italic.woff2 +0 -0
  66. package/files/roboto-cyrillic-ext-700-normal.woff +0 -0
  67. package/files/roboto-cyrillic-ext-700-normal.woff2 +0 -0
  68. package/files/roboto-cyrillic-ext-800-italic.woff +0 -0
  69. package/files/roboto-cyrillic-ext-800-italic.woff2 +0 -0
  70. package/files/roboto-cyrillic-ext-800-normal.woff +0 -0
  71. package/files/roboto-cyrillic-ext-800-normal.woff2 +0 -0
  72. package/files/roboto-cyrillic-ext-900-italic.woff +0 -0
  73. package/files/roboto-cyrillic-ext-900-italic.woff2 +0 -0
  74. package/files/roboto-cyrillic-ext-900-normal.woff +0 -0
  75. package/files/roboto-cyrillic-ext-900-normal.woff2 +0 -0
  76. package/files/roboto-greek-100-italic.woff +0 -0
  77. package/files/roboto-greek-100-italic.woff2 +0 -0
  78. package/files/roboto-greek-100-normal.woff +0 -0
  79. package/files/roboto-greek-100-normal.woff2 +0 -0
  80. package/files/roboto-greek-200-italic.woff +0 -0
  81. package/files/roboto-greek-200-italic.woff2 +0 -0
  82. package/files/roboto-greek-200-normal.woff +0 -0
  83. package/files/roboto-greek-200-normal.woff2 +0 -0
  84. package/files/roboto-greek-300-italic.woff +0 -0
  85. package/files/roboto-greek-300-italic.woff2 +0 -0
  86. package/files/roboto-greek-300-normal.woff +0 -0
  87. package/files/roboto-greek-300-normal.woff2 +0 -0
  88. package/files/roboto-greek-400-italic.woff +0 -0
  89. package/files/roboto-greek-400-italic.woff2 +0 -0
  90. package/files/roboto-greek-400-normal.woff +0 -0
  91. package/files/roboto-greek-400-normal.woff2 +0 -0
  92. package/files/roboto-greek-500-italic.woff +0 -0
  93. package/files/roboto-greek-500-italic.woff2 +0 -0
  94. package/files/roboto-greek-500-normal.woff +0 -0
  95. package/files/roboto-greek-500-normal.woff2 +0 -0
  96. package/files/roboto-greek-600-italic.woff +0 -0
  97. package/files/roboto-greek-600-italic.woff2 +0 -0
  98. package/files/roboto-greek-600-normal.woff +0 -0
  99. package/files/roboto-greek-600-normal.woff2 +0 -0
  100. package/files/roboto-greek-700-italic.woff +0 -0
  101. package/files/roboto-greek-700-italic.woff2 +0 -0
  102. package/files/roboto-greek-700-normal.woff +0 -0
  103. package/files/roboto-greek-700-normal.woff2 +0 -0
  104. package/files/roboto-greek-800-italic.woff +0 -0
  105. package/files/roboto-greek-800-italic.woff2 +0 -0
  106. package/files/roboto-greek-800-normal.woff +0 -0
  107. package/files/roboto-greek-800-normal.woff2 +0 -0
  108. package/files/roboto-greek-900-italic.woff +0 -0
  109. package/files/roboto-greek-900-italic.woff2 +0 -0
  110. package/files/roboto-greek-900-normal.woff +0 -0
  111. package/files/roboto-greek-900-normal.woff2 +0 -0
  112. package/files/roboto-greek-ext-100-italic.woff +0 -0
  113. package/files/roboto-greek-ext-100-italic.woff2 +0 -0
  114. package/files/roboto-greek-ext-100-normal.woff +0 -0
  115. package/files/roboto-greek-ext-100-normal.woff2 +0 -0
  116. package/files/roboto-greek-ext-200-italic.woff +0 -0
  117. package/files/roboto-greek-ext-200-italic.woff2 +0 -0
  118. package/files/roboto-greek-ext-200-normal.woff +0 -0
  119. package/files/roboto-greek-ext-200-normal.woff2 +0 -0
  120. package/files/roboto-greek-ext-300-italic.woff +0 -0
  121. package/files/roboto-greek-ext-300-italic.woff2 +0 -0
  122. package/files/roboto-greek-ext-300-normal.woff +0 -0
  123. package/files/roboto-greek-ext-300-normal.woff2 +0 -0
  124. package/files/roboto-greek-ext-400-italic.woff +0 -0
  125. package/files/roboto-greek-ext-400-italic.woff2 +0 -0
  126. package/files/roboto-greek-ext-400-normal.woff +0 -0
  127. package/files/roboto-greek-ext-400-normal.woff2 +0 -0
  128. package/files/roboto-greek-ext-500-italic.woff +0 -0
  129. package/files/roboto-greek-ext-500-italic.woff2 +0 -0
  130. package/files/roboto-greek-ext-500-normal.woff +0 -0
  131. package/files/roboto-greek-ext-500-normal.woff2 +0 -0
  132. package/files/roboto-greek-ext-600-italic.woff +0 -0
  133. package/files/roboto-greek-ext-600-italic.woff2 +0 -0
  134. package/files/roboto-greek-ext-600-normal.woff +0 -0
  135. package/files/roboto-greek-ext-600-normal.woff2 +0 -0
  136. package/files/roboto-greek-ext-700-italic.woff +0 -0
  137. package/files/roboto-greek-ext-700-italic.woff2 +0 -0
  138. package/files/roboto-greek-ext-700-normal.woff +0 -0
  139. package/files/roboto-greek-ext-700-normal.woff2 +0 -0
  140. package/files/roboto-greek-ext-800-italic.woff +0 -0
  141. package/files/roboto-greek-ext-800-italic.woff2 +0 -0
  142. package/files/roboto-greek-ext-800-normal.woff +0 -0
  143. package/files/roboto-greek-ext-800-normal.woff2 +0 -0
  144. package/files/roboto-greek-ext-900-italic.woff +0 -0
  145. package/files/roboto-greek-ext-900-italic.woff2 +0 -0
  146. package/files/roboto-greek-ext-900-normal.woff +0 -0
  147. package/files/roboto-greek-ext-900-normal.woff2 +0 -0
  148. package/files/roboto-latin-100-italic.woff +0 -0
  149. package/files/roboto-latin-100-italic.woff2 +0 -0
  150. package/files/roboto-latin-100-normal.woff +0 -0
  151. package/files/roboto-latin-100-normal.woff2 +0 -0
  152. package/files/roboto-latin-200-italic.woff +0 -0
  153. package/files/roboto-latin-200-italic.woff2 +0 -0
  154. package/files/roboto-latin-200-normal.woff +0 -0
  155. package/files/roboto-latin-200-normal.woff2 +0 -0
  156. package/files/roboto-latin-300-italic.woff +0 -0
  157. package/files/roboto-latin-300-italic.woff2 +0 -0
  158. package/files/roboto-latin-300-normal.woff +0 -0
  159. package/files/roboto-latin-300-normal.woff2 +0 -0
  160. package/files/roboto-latin-400-italic.woff +0 -0
  161. package/files/roboto-latin-400-italic.woff2 +0 -0
  162. package/files/roboto-latin-400-normal.woff +0 -0
  163. package/files/roboto-latin-400-normal.woff2 +0 -0
  164. package/files/roboto-latin-500-italic.woff +0 -0
  165. package/files/roboto-latin-500-italic.woff2 +0 -0
  166. package/files/roboto-latin-500-normal.woff +0 -0
  167. package/files/roboto-latin-500-normal.woff2 +0 -0
  168. package/files/roboto-latin-600-italic.woff +0 -0
  169. package/files/roboto-latin-600-italic.woff2 +0 -0
  170. package/files/roboto-latin-600-normal.woff +0 -0
  171. package/files/roboto-latin-600-normal.woff2 +0 -0
  172. package/files/roboto-latin-700-italic.woff +0 -0
  173. package/files/roboto-latin-700-italic.woff2 +0 -0
  174. package/files/roboto-latin-700-normal.woff +0 -0
  175. package/files/roboto-latin-700-normal.woff2 +0 -0
  176. package/files/roboto-latin-800-italic.woff +0 -0
  177. package/files/roboto-latin-800-italic.woff2 +0 -0
  178. package/files/roboto-latin-800-normal.woff +0 -0
  179. package/files/roboto-latin-800-normal.woff2 +0 -0
  180. package/files/roboto-latin-900-italic.woff +0 -0
  181. package/files/roboto-latin-900-italic.woff2 +0 -0
  182. package/files/roboto-latin-900-normal.woff +0 -0
  183. package/files/roboto-latin-900-normal.woff2 +0 -0
  184. package/files/roboto-latin-ext-100-italic.woff +0 -0
  185. package/files/roboto-latin-ext-100-italic.woff2 +0 -0
  186. package/files/roboto-latin-ext-100-normal.woff +0 -0
  187. package/files/roboto-latin-ext-100-normal.woff2 +0 -0
  188. package/files/roboto-latin-ext-200-italic.woff +0 -0
  189. package/files/roboto-latin-ext-200-italic.woff2 +0 -0
  190. package/files/roboto-latin-ext-200-normal.woff +0 -0
  191. package/files/roboto-latin-ext-200-normal.woff2 +0 -0
  192. package/files/roboto-latin-ext-300-italic.woff +0 -0
  193. package/files/roboto-latin-ext-300-italic.woff2 +0 -0
  194. package/files/roboto-latin-ext-300-normal.woff +0 -0
  195. package/files/roboto-latin-ext-300-normal.woff2 +0 -0
  196. package/files/roboto-latin-ext-400-italic.woff +0 -0
  197. package/files/roboto-latin-ext-400-italic.woff2 +0 -0
  198. package/files/roboto-latin-ext-400-normal.woff +0 -0
  199. package/files/roboto-latin-ext-400-normal.woff2 +0 -0
  200. package/files/roboto-latin-ext-500-italic.woff +0 -0
  201. package/files/roboto-latin-ext-500-italic.woff2 +0 -0
  202. package/files/roboto-latin-ext-500-normal.woff +0 -0
  203. package/files/roboto-latin-ext-500-normal.woff2 +0 -0
  204. package/files/roboto-latin-ext-600-italic.woff +0 -0
  205. package/files/roboto-latin-ext-600-italic.woff2 +0 -0
  206. package/files/roboto-latin-ext-600-normal.woff +0 -0
  207. package/files/roboto-latin-ext-600-normal.woff2 +0 -0
  208. package/files/roboto-latin-ext-700-italic.woff +0 -0
  209. package/files/roboto-latin-ext-700-italic.woff2 +0 -0
  210. package/files/roboto-latin-ext-700-normal.woff +0 -0
  211. package/files/roboto-latin-ext-700-normal.woff2 +0 -0
  212. package/files/roboto-latin-ext-800-italic.woff +0 -0
  213. package/files/roboto-latin-ext-800-italic.woff2 +0 -0
  214. package/files/roboto-latin-ext-800-normal.woff +0 -0
  215. package/files/roboto-latin-ext-800-normal.woff2 +0 -0
  216. package/files/roboto-latin-ext-900-italic.woff +0 -0
  217. package/files/roboto-latin-ext-900-italic.woff2 +0 -0
  218. package/files/roboto-latin-ext-900-normal.woff +0 -0
  219. package/files/roboto-latin-ext-900-normal.woff2 +0 -0
  220. package/files/roboto-math-100-italic.woff +0 -0
  221. package/files/roboto-math-100-italic.woff2 +0 -0
  222. package/files/roboto-math-100-normal.woff +0 -0
  223. package/files/roboto-math-100-normal.woff2 +0 -0
  224. package/files/roboto-math-200-italic.woff +0 -0
  225. package/files/roboto-math-200-italic.woff2 +0 -0
  226. package/files/roboto-math-200-normal.woff +0 -0
  227. package/files/roboto-math-200-normal.woff2 +0 -0
  228. package/files/roboto-math-300-italic.woff +0 -0
  229. package/files/roboto-math-300-italic.woff2 +0 -0
  230. package/files/roboto-math-300-normal.woff +0 -0
  231. package/files/roboto-math-300-normal.woff2 +0 -0
  232. package/files/roboto-math-400-italic.woff +0 -0
  233. package/files/roboto-math-400-italic.woff2 +0 -0
  234. package/files/roboto-math-400-normal.woff +0 -0
  235. package/files/roboto-math-400-normal.woff2 +0 -0
  236. package/files/roboto-math-500-italic.woff +0 -0
  237. package/files/roboto-math-500-italic.woff2 +0 -0
  238. package/files/roboto-math-500-normal.woff +0 -0
  239. package/files/roboto-math-500-normal.woff2 +0 -0
  240. package/files/roboto-math-600-italic.woff +0 -0
  241. package/files/roboto-math-600-italic.woff2 +0 -0
  242. package/files/roboto-math-600-normal.woff +0 -0
  243. package/files/roboto-math-600-normal.woff2 +0 -0
  244. package/files/roboto-math-700-italic.woff +0 -0
  245. package/files/roboto-math-700-italic.woff2 +0 -0
  246. package/files/roboto-math-700-normal.woff +0 -0
  247. package/files/roboto-math-700-normal.woff2 +0 -0
  248. package/files/roboto-math-800-italic.woff +0 -0
  249. package/files/roboto-math-800-italic.woff2 +0 -0
  250. package/files/roboto-math-800-normal.woff +0 -0
  251. package/files/roboto-math-800-normal.woff2 +0 -0
  252. package/files/roboto-math-900-italic.woff +0 -0
  253. package/files/roboto-math-900-italic.woff2 +0 -0
  254. package/files/roboto-math-900-normal.woff +0 -0
  255. package/files/roboto-math-900-normal.woff2 +0 -0
  256. package/files/roboto-symbols-100-italic.woff +0 -0
  257. package/files/roboto-symbols-100-italic.woff2 +0 -0
  258. package/files/roboto-symbols-100-normal.woff +0 -0
  259. package/files/roboto-symbols-100-normal.woff2 +0 -0
  260. package/files/roboto-symbols-200-italic.woff +0 -0
  261. package/files/roboto-symbols-200-italic.woff2 +0 -0
  262. package/files/roboto-symbols-200-normal.woff +0 -0
  263. package/files/roboto-symbols-200-normal.woff2 +0 -0
  264. package/files/roboto-symbols-300-italic.woff +0 -0
  265. package/files/roboto-symbols-300-italic.woff2 +0 -0
  266. package/files/roboto-symbols-300-normal.woff +0 -0
  267. package/files/roboto-symbols-300-normal.woff2 +0 -0
  268. package/files/roboto-symbols-400-italic.woff +0 -0
  269. package/files/roboto-symbols-400-italic.woff2 +0 -0
  270. package/files/roboto-symbols-400-normal.woff +0 -0
  271. package/files/roboto-symbols-400-normal.woff2 +0 -0
  272. package/files/roboto-symbols-500-italic.woff +0 -0
  273. package/files/roboto-symbols-500-italic.woff2 +0 -0
  274. package/files/roboto-symbols-500-normal.woff +0 -0
  275. package/files/roboto-symbols-500-normal.woff2 +0 -0
  276. package/files/roboto-symbols-600-italic.woff +0 -0
  277. package/files/roboto-symbols-600-italic.woff2 +0 -0
  278. package/files/roboto-symbols-600-normal.woff +0 -0
  279. package/files/roboto-symbols-600-normal.woff2 +0 -0
  280. package/files/roboto-symbols-700-italic.woff +0 -0
  281. package/files/roboto-symbols-700-italic.woff2 +0 -0
  282. package/files/roboto-symbols-700-normal.woff +0 -0
  283. package/files/roboto-symbols-700-normal.woff2 +0 -0
  284. package/files/roboto-symbols-800-italic.woff +0 -0
  285. package/files/roboto-symbols-800-italic.woff2 +0 -0
  286. package/files/roboto-symbols-800-normal.woff +0 -0
  287. package/files/roboto-symbols-800-normal.woff2 +0 -0
  288. package/files/roboto-symbols-900-italic.woff +0 -0
  289. package/files/roboto-symbols-900-italic.woff2 +0 -0
  290. package/files/roboto-symbols-900-normal.woff +0 -0
  291. package/files/roboto-symbols-900-normal.woff2 +0 -0
  292. package/files/roboto-vietnamese-100-italic.woff +0 -0
  293. package/files/roboto-vietnamese-100-italic.woff2 +0 -0
  294. package/files/roboto-vietnamese-100-normal.woff +0 -0
  295. package/files/roboto-vietnamese-100-normal.woff2 +0 -0
  296. package/files/roboto-vietnamese-200-italic.woff +0 -0
  297. package/files/roboto-vietnamese-200-italic.woff2 +0 -0
  298. package/files/roboto-vietnamese-200-normal.woff +0 -0
  299. package/files/roboto-vietnamese-200-normal.woff2 +0 -0
  300. package/files/roboto-vietnamese-300-italic.woff +0 -0
  301. package/files/roboto-vietnamese-300-italic.woff2 +0 -0
  302. package/files/roboto-vietnamese-300-normal.woff +0 -0
  303. package/files/roboto-vietnamese-300-normal.woff2 +0 -0
  304. package/files/roboto-vietnamese-400-italic.woff +0 -0
  305. package/files/roboto-vietnamese-400-italic.woff2 +0 -0
  306. package/files/roboto-vietnamese-400-normal.woff +0 -0
  307. package/files/roboto-vietnamese-400-normal.woff2 +0 -0
  308. package/files/roboto-vietnamese-500-italic.woff +0 -0
  309. package/files/roboto-vietnamese-500-italic.woff2 +0 -0
  310. package/files/roboto-vietnamese-500-normal.woff +0 -0
  311. package/files/roboto-vietnamese-500-normal.woff2 +0 -0
  312. package/files/roboto-vietnamese-600-italic.woff +0 -0
  313. package/files/roboto-vietnamese-600-italic.woff2 +0 -0
  314. package/files/roboto-vietnamese-600-normal.woff +0 -0
  315. package/files/roboto-vietnamese-600-normal.woff2 +0 -0
  316. package/files/roboto-vietnamese-700-italic.woff +0 -0
  317. package/files/roboto-vietnamese-700-italic.woff2 +0 -0
  318. package/files/roboto-vietnamese-700-normal.woff +0 -0
  319. package/files/roboto-vietnamese-700-normal.woff2 +0 -0
  320. package/files/roboto-vietnamese-800-italic.woff +0 -0
  321. package/files/roboto-vietnamese-800-italic.woff2 +0 -0
  322. package/files/roboto-vietnamese-800-normal.woff +0 -0
  323. package/files/roboto-vietnamese-800-normal.woff2 +0 -0
  324. package/files/roboto-vietnamese-900-italic.woff +0 -0
  325. package/files/roboto-vietnamese-900-italic.woff2 +0 -0
  326. package/files/roboto-vietnamese-900-normal.woff +0 -0
  327. package/files/roboto-vietnamese-900-normal.woff2 +0 -0
  328. package/package.json +2 -1
  329. package/structra-ui.css +1 -1
package/README.md CHANGED
@@ -1,59 +1,61 @@
1
1
  # structra-ui
2
2
 
3
- Biblioteca **Angular** da stack **Structra** para interfaces consistentes: componentes, layout de formulários e padrões de UI reutilizáveis entre produtos.
3
+ Biblioteca **Angular 21** da Structra: componentes, formulários e padrões de UI reutilizáveis.
4
4
 
5
- **Documentação e exemplos:** [StructraLab](https://structralab.com/)
5
+ **Exemplos ao vivo:** [StructraLab](https://structralab.com/)
6
6
 
7
7
  ## Instalação
8
8
 
9
- Com **npm 7 ou superior**, um comando instala a lib e resolve os **peer dependencies** obrigatórios na raiz do projeto (Angular, Material, CDK, Router, AG Grid, RxJS, Zone.js):
9
+ **Com npm 7 ou superior** (recomendado): um comando instala a lib e, em geral, os **peer dependencies** na raiz do projeto.
10
10
 
11
11
  ```bash
12
12
  npm install structra-ui
13
13
  ```
14
14
 
15
- Se usar **npm 6 ou anterior**, instale explicitamente os mesmos pacotes e versões indicados em `peerDependencies` no `package.json` do npm.
15
+ Com **npm 6** (ou se os peers não forem instalados), instala explicitamente o que falta. O mínimo extra em relação a uma app Angular 21 típica costuma ser **AG Grid** e **Material/CDK/Router**, se ainda não existirem:
16
16
 
17
- **Compatibilidade**
18
-
19
- - **Angular 21** (`^21.2.7` nos peers): sem suporte para Angular 22.
20
- - **Material e CDK** obrigatórios; **Router** obrigatório; **AG Grid** obrigatório; **RxJS** e **Zone.js** obrigatórios — nada é opcional no `package.json` da lib.
17
+ ```bash
18
+ npm install structra-ui ag-grid-community ag-grid-angular @angular/material @angular/cdk @angular/router
19
+ ```
21
20
 
22
- ## Estilos globais (automático)
21
+ Versões: segue as gamas em `peerDependencies` do `package.json` publicado (Angular **21.2.x**, AG Grid **35.x**, etc.).
23
22
 
24
- **Não precisa** de adicionar nada ao `angular.json` → `styles` por causa da Structra: ao fazer `import { … } from 'structra-ui'`, o bundle publicado (`fesm2022/structra-ui.mjs`) inclui no topo `import '../structra-ui.css'`, e o **Angular Application builder** segue esse import e injeta o tema (tokens, Material, AG Grid, CDK, etc.) na app.
23
+ ## AG Grid (grelhas)
25
24
 
26
- Requisitos no projeto destino:
25
+ Os componentes de **grelha** da lib dependem de **`ag-grid-community`** e **`ag-grid-angular`**. Sem estes pacotes, o build ou o runtime podem falhar ao usar esses componentes.
27
26
 
28
- 1. **`npm run lib:build`** no monorepo antes de publicar (não publique `ng build structra-ui`), senão o `.css` e o patch ao `.mjs` não existem.
29
- 2. O pacote em `node_modules/structra-ui/` tem de conter **`structra-ui.css`**, a pasta **`webfonts/`** (Font Awesome 6 offline) e `fesm2022/structra-ui.mjs`. Os ícones usam classes `fa-solid …` com fontes locais — **sem CDN**.
27
+ Além disso, o AG Grid 33+ exige **registar os módulos Community uma vez** na aplicação, antes de montar qualquer grelha. Exemplo mínimo (por exemplo em `main.ts`, antes de `bootstrapApplication`):
30
28
 
31
- **Opcional (duplicar tema):** só se quiseres carregar o CSS **antes** de qualquer import TypeScript da lib, podes ainda listar em `angular.json` → `styles` o `node_modules/structra-ui/structra-ui.css` ou a ponte `structra-ui.scss` — não é obrigatório para «funcionar».
29
+ ```ts
30
+ import { AllCommunityModule, ModuleRegistry } from 'ag-grid-community';
32
31
 
33
- **`import 'structra-ui/styles'`** em `main.ts` também funciona (export `./styles` → mesmo CSS), mas **não é necessário** se já importas componentes ou símbolos de `'structra-ui'`.
32
+ ModuleRegistry.registerModules([AllCommunityModule]);
33
+ ```
34
34
 
35
- **Atenção:** `import type { … } from 'structra-ui'` é apagado em compile-time e **não** executa o módulo — o tema **não** carrega. Garante pelo menos um `import { … }` em runtime ou `import 'structra-ui/styles'`.
35
+ ## Estilos globais
36
36
 
37
- **AG Grid 35+:** registe os módulos Community uma vez na app (ex. `ModuleRegistry.registerModules([AllCommunityModule])` em `main.ts`).
37
+ Ao importar algo de `structra-ui` em runtime (por exemplo `import { TextFieldComponent } from 'structra-ui'`), o tema global (Material, tokens, AG Grid, ícones, Roboto, etc.) entra pelo ficheiro publicado `structra-ui.css`. Não é obrigatório repetir isso no `angular.json` → `styles`.
38
38
 
39
- **Importar componentes:** `import { TextFieldComponent } from 'structra-ui';` e use em `imports: [TextFieldComponent, …]` do `@Component`. No `tsconfig.json` da app, prefira `"moduleResolution": "bundler"` ou `"node16"` para o Node resolver o campo `exports` do pacote.
39
+ **Nota:** `import type { } from 'structra-ui'` não carrega o CSS do tema usa um import de valor ou `import 'structra-ui/styles'`.
40
40
 
41
- ## Build do pacote
41
+ ## Build do pacote (mantenedores do monorepo)
42
42
 
43
- A entrada publicada é **`src/structra-public-api.ts`** na raiz do monorepo (ver `ng-package.json`). O comando:
43
+ Na raiz do repositório `web-components`:
44
44
 
45
45
  ```bash
46
46
  npm run lib:build
47
47
  ```
48
48
 
49
- Gera `dist/structra-ui/` (JavaScript com import do tema + tipos + **`structra-ui.css`** + **`structra-ui.scss`** ponte). **Não use só `ng build structra-ui`** para publicar: o `npm run lib:build` corre o ng-packagr e depois gera o CSS, a ponte SCSS e **injeta** `import '../structra-ui.css'` no FESM.
49
+ Gera `dist/structra-ui/` pronto para `npm pack` / `npm publish`. Não uses só `ng build structra-ui` para publicar: o tema global completa-se nesse script.
50
50
 
51
- ## Uso
51
+ ## Uso rápido
52
52
 
53
53
  ```ts
54
- import { STRUCTRA_UI, BaseButtonComponent } from 'structra-ui';
54
+ import { TextFieldComponent } from 'structra-ui';
55
55
  ```
56
56
 
57
+ No `tsconfig` da app, convém `moduleResolution` `bundler` ou `node16` para resolver bem o campo `exports` do npm.
58
+
57
59
  ## Licença
58
60
 
59
61
  MIT
@@ -7505,11 +7505,11 @@ class AppDialogComponent {
7505
7505
  el.title = '';
7506
7506
  }
7507
7507
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AppDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7508
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AppDialogComponent, isStandalone: true, selector: "app-dialog", inputs: { open: ["open", "open", booleanAttribute], dialogHeading: ["title", "dialogHeading"], description: "description", ariaLabel: "ariaLabel", size: "size", allowOverlayDismiss: ["allowOverlayDismiss", "allowOverlayDismiss", booleanAttribute], showCloseButton: ["showCloseButton", "showCloseButton", booleanAttribute] }, outputs: { openChange: "openChange" }, host: { listeners: { "document:keydown": "onDocumentKeydown($event)" }, properties: { "class": "this.hostThemeClasses", "attr.title": "this.hostTitleAttr" } }, usesOnChanges: true, ngImport: i0, template: "@if (open) {\r\n <div\r\n class=\"app-dialog-backdrop\"\r\n role=\"presentation\"\r\n tabindex=\"-1\"\r\n (click)=\"onBackdropClick()\"\r\n ></div>\r\n <div class=\"app-dialog-stage\" aria-hidden=\"false\">\r\n <div\r\n class=\"app-dialog-panel\"\r\n [class.app-dialog-panel--sm]=\"size === LibDialogSize.Sm\"\r\n [class.app-dialog-panel--md]=\"size === LibDialogSize.Md\"\r\n [class.app-dialog-panel--lg]=\"size === LibDialogSize.Lg\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"\r\n dialogHeading.trim() ? titleId : description.trim() ? descriptionId : null\r\n \"\r\n [attr.aria-label]=\"!dialogHeading.trim() && !description.trim() ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"\r\n dialogHeading.trim() && description.trim() ? descriptionId : null\r\n \"\r\n cdkTrapFocus\r\n [cdkTrapFocusAutoCapture]=\"true\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n @if (dialogHeading.trim()) {\r\n <header class=\"app-dialog-header\">\r\n <h2 class=\"app-dialog-title\" [id]=\"titleId\">{{ dialogHeading }}</h2>\r\n @if (showCloseButton) {\r\n <button\r\n type=\"button\"\r\n class=\"app-dialog-close\"\r\n aria-label=\"Fechar di\u00E1logo\"\r\n (click)=\"requestClose()\"\r\n >\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n }\r\n </header>\r\n }\r\n @if (description.trim()) {\r\n <p class=\"app-dialog-description\" [id]=\"descriptionId\">{{ description }}</p>\r\n }\r\n <div class=\"app-dialog-body\">\r\n <ng-content />\r\n </div>\r\n <footer class=\"app-dialog-footer\">\r\n <ng-content select=\"[appDialogFooter]\" />\r\n </footer>\r\n </div>\r\n </div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:block}.app-dialog-backdrop{position:fixed;inset:0;z-index:var(--app-z-dialog, 1200);background:#1a2f456b;backdrop-filter:blur(10px) saturate(1.05);-webkit-backdrop-filter:blur(10px) saturate(1.05);pointer-events:auto}.app-dialog-stage{position:fixed;inset:0;z-index:calc(var(--app-z-dialog, 1200) + 1);display:flex;align-items:center;justify-content:center;padding:min(1.5rem,4vw);box-sizing:border-box;pointer-events:none;background:transparent}.app-dialog-panel{position:relative;z-index:0;display:flex;flex-direction:column;max-height:min(88vh,40rem);width:100%;pointer-events:auto;overflow:hidden;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;box-sizing:border-box;border-radius:10px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .12));background:var(--app-color-surface, #fff);box-shadow:0 4px 6px -1px #00000014,0 12px 28px -8px #1a2f452e;outline:none;animation:app-lib-dialog-panel-in .28s cubic-bezier(.22,1,.36,1) both}.app-dialog-panel--sm{max-width:min(28rem,94vw)}.app-dialog-panel--md{max-width:min(40rem,94vw)}.app-dialog-panel--lg{max-width:min(56rem,96vw)}@media(prefers-reduced-motion:reduce){.app-dialog-panel{animation:none}}.app-dialog-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:1rem 1rem .65rem;border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));flex:0 0 auto}.app-dialog-title{margin:0;font-size:1.05rem;font-weight:600;line-height:1.3;color:var(--app-color-text-primary, #1a2f45)}.app-dialog-description{margin:0;padding:.65rem 1rem;font-size:.88rem;line-height:1.45;color:var(--app-color-text-secondary, #5a7fa3);flex:0 0 auto}.app-dialog-close{flex:0 0 auto;width:2rem;height:2rem;margin:0;padding:0;border:1px solid var(--app-color-border, #d4d4d4);border-radius:6px;background:var(--app-color-surface-alt, #fff);color:var(--app-color-text-secondary, #5a7fa3);font-size:1.35rem;line-height:1;cursor:pointer}.app-dialog-close:hover{background:var(--app-color-hover-bg, rgba(43, 127, 217, .08))}.app-dialog-close:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px}.app-dialog-body{padding:1rem;flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;font-size:.9rem;line-height:1.5;color:var(--app-color-text-primary, #1a2f45)}.app-dialog-footer{flex:0 0 auto;padding:.65rem 1rem 1rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.app-dialog-footer:empty{display:none;padding:0;border:none}\n"], dependencies: [{ kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7508
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AppDialogComponent, isStandalone: true, selector: "app-dialog", inputs: { open: ["open", "open", booleanAttribute], dialogHeading: ["title", "dialogHeading"], description: "description", ariaLabel: "ariaLabel", size: "size", allowOverlayDismiss: ["allowOverlayDismiss", "allowOverlayDismiss", booleanAttribute], showCloseButton: ["showCloseButton", "showCloseButton", booleanAttribute] }, outputs: { openChange: "openChange" }, host: { listeners: { "document:keydown": "onDocumentKeydown($event)" }, properties: { "class": "this.hostThemeClasses", "attr.title": "this.hostTitleAttr" } }, usesOnChanges: true, ngImport: i0, template: "@if (open) {\r\n <div\r\n class=\"app-dialog-backdrop\"\r\n role=\"presentation\"\r\n tabindex=\"-1\"\r\n (click)=\"onBackdropClick()\"\r\n ></div>\r\n <div class=\"app-dialog-stage\" aria-hidden=\"false\">\r\n <div\r\n class=\"app-dialog-panel\"\r\n [class.app-dialog-panel--sm]=\"size === LibDialogSize.Sm\"\r\n [class.app-dialog-panel--md]=\"size === LibDialogSize.Md\"\r\n [class.app-dialog-panel--lg]=\"size === LibDialogSize.Lg\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"\r\n dialogHeading.trim() ? titleId : description.trim() ? descriptionId : null\r\n \"\r\n [attr.aria-label]=\"!dialogHeading.trim() && !description.trim() ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"\r\n dialogHeading.trim() && description.trim() ? descriptionId : null\r\n \"\r\n cdkTrapFocus\r\n [cdkTrapFocusAutoCapture]=\"true\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n @if (dialogHeading.trim()) {\r\n <header class=\"app-dialog-header\">\r\n <h2 class=\"app-dialog-title\" [id]=\"titleId\">{{ dialogHeading }}</h2>\r\n @if (showCloseButton) {\r\n <button\r\n type=\"button\"\r\n class=\"app-dialog-close\"\r\n aria-label=\"Fechar di\u00E1logo\"\r\n (click)=\"requestClose()\"\r\n >\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n }\r\n </header>\r\n }\r\n @if (description.trim()) {\r\n <p class=\"app-dialog-description\" [id]=\"descriptionId\">{{ description }}</p>\r\n }\r\n <div class=\"app-dialog-body\">\r\n <ng-content />\r\n </div>\r\n <footer class=\"app-dialog-footer\">\r\n <ng-content select=\"[appDialogFooter]\" />\r\n </footer>\r\n </div>\r\n </div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:block}.app-dialog-backdrop{position:fixed;inset:0;z-index:var(--app-z-dialog, 1200);background:#1a2f456b;backdrop-filter:blur(10px) saturate(1.05);-webkit-backdrop-filter:blur(10px) saturate(1.05);pointer-events:auto}.app-dialog-stage{position:fixed;inset:0;z-index:calc(var(--app-z-dialog, 1200) + 1);display:flex;align-items:center;justify-content:center;padding:min(1.5rem,4vw);box-sizing:border-box;pointer-events:none;background:transparent}.app-dialog-panel{position:relative;z-index:0;display:flex;flex-direction:column;max-height:min(88vh,40rem);width:100%;pointer-events:auto;overflow:hidden;font-family:inherit;box-sizing:border-box;border-radius:10px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .12));background:var(--app-color-surface, #fff);box-shadow:0 4px 6px -1px #00000014,0 12px 28px -8px #1a2f452e;outline:none;animation:app-lib-dialog-panel-in .28s cubic-bezier(.22,1,.36,1) both}.app-dialog-panel--sm{max-width:min(28rem,94vw)}.app-dialog-panel--md{max-width:min(40rem,94vw)}.app-dialog-panel--lg{max-width:min(56rem,96vw)}@media(prefers-reduced-motion:reduce){.app-dialog-panel{animation:none}}.app-dialog-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:1rem 1rem .65rem;border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));flex:0 0 auto}.app-dialog-title{margin:0;font-size:1.05rem;font-weight:600;line-height:1.3;color:var(--app-color-text-primary, #1a2f45)}.app-dialog-description{margin:0;padding:.65rem 1rem;font-size:.88rem;line-height:1.45;color:var(--app-color-text-secondary, #5a7fa3);flex:0 0 auto}.app-dialog-close{flex:0 0 auto;width:2rem;height:2rem;margin:0;padding:0;border:1px solid var(--app-color-border, #d4d4d4);border-radius:6px;background:var(--app-color-surface-alt, #fff);color:var(--app-color-text-secondary, #5a7fa3);font-size:1.35rem;line-height:1;cursor:pointer}.app-dialog-close:hover{background:var(--app-color-hover-bg, rgba(43, 127, 217, .08))}.app-dialog-close:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px}.app-dialog-body{padding:1rem;flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;font-size:.9rem;line-height:1.5;color:var(--app-color-text-primary, #1a2f45)}.app-dialog-footer{flex:0 0 auto;padding:.65rem 1rem 1rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.app-dialog-footer:empty{display:none;padding:0;border:none}\n"], dependencies: [{ kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7509
7509
  }
7510
7510
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AppDialogComponent, decorators: [{
7511
7511
  type: Component,
7512
- args: [{ selector: 'app-dialog', imports: [CdkTrapFocus], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (open) {\r\n <div\r\n class=\"app-dialog-backdrop\"\r\n role=\"presentation\"\r\n tabindex=\"-1\"\r\n (click)=\"onBackdropClick()\"\r\n ></div>\r\n <div class=\"app-dialog-stage\" aria-hidden=\"false\">\r\n <div\r\n class=\"app-dialog-panel\"\r\n [class.app-dialog-panel--sm]=\"size === LibDialogSize.Sm\"\r\n [class.app-dialog-panel--md]=\"size === LibDialogSize.Md\"\r\n [class.app-dialog-panel--lg]=\"size === LibDialogSize.Lg\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"\r\n dialogHeading.trim() ? titleId : description.trim() ? descriptionId : null\r\n \"\r\n [attr.aria-label]=\"!dialogHeading.trim() && !description.trim() ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"\r\n dialogHeading.trim() && description.trim() ? descriptionId : null\r\n \"\r\n cdkTrapFocus\r\n [cdkTrapFocusAutoCapture]=\"true\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n @if (dialogHeading.trim()) {\r\n <header class=\"app-dialog-header\">\r\n <h2 class=\"app-dialog-title\" [id]=\"titleId\">{{ dialogHeading }}</h2>\r\n @if (showCloseButton) {\r\n <button\r\n type=\"button\"\r\n class=\"app-dialog-close\"\r\n aria-label=\"Fechar di\u00E1logo\"\r\n (click)=\"requestClose()\"\r\n >\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n }\r\n </header>\r\n }\r\n @if (description.trim()) {\r\n <p class=\"app-dialog-description\" [id]=\"descriptionId\">{{ description }}</p>\r\n }\r\n <div class=\"app-dialog-body\">\r\n <ng-content />\r\n </div>\r\n <footer class=\"app-dialog-footer\">\r\n <ng-content select=\"[appDialogFooter]\" />\r\n </footer>\r\n </div>\r\n </div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:block}.app-dialog-backdrop{position:fixed;inset:0;z-index:var(--app-z-dialog, 1200);background:#1a2f456b;backdrop-filter:blur(10px) saturate(1.05);-webkit-backdrop-filter:blur(10px) saturate(1.05);pointer-events:auto}.app-dialog-stage{position:fixed;inset:0;z-index:calc(var(--app-z-dialog, 1200) + 1);display:flex;align-items:center;justify-content:center;padding:min(1.5rem,4vw);box-sizing:border-box;pointer-events:none;background:transparent}.app-dialog-panel{position:relative;z-index:0;display:flex;flex-direction:column;max-height:min(88vh,40rem);width:100%;pointer-events:auto;overflow:hidden;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;box-sizing:border-box;border-radius:10px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .12));background:var(--app-color-surface, #fff);box-shadow:0 4px 6px -1px #00000014,0 12px 28px -8px #1a2f452e;outline:none;animation:app-lib-dialog-panel-in .28s cubic-bezier(.22,1,.36,1) both}.app-dialog-panel--sm{max-width:min(28rem,94vw)}.app-dialog-panel--md{max-width:min(40rem,94vw)}.app-dialog-panel--lg{max-width:min(56rem,96vw)}@media(prefers-reduced-motion:reduce){.app-dialog-panel{animation:none}}.app-dialog-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:1rem 1rem .65rem;border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));flex:0 0 auto}.app-dialog-title{margin:0;font-size:1.05rem;font-weight:600;line-height:1.3;color:var(--app-color-text-primary, #1a2f45)}.app-dialog-description{margin:0;padding:.65rem 1rem;font-size:.88rem;line-height:1.45;color:var(--app-color-text-secondary, #5a7fa3);flex:0 0 auto}.app-dialog-close{flex:0 0 auto;width:2rem;height:2rem;margin:0;padding:0;border:1px solid var(--app-color-border, #d4d4d4);border-radius:6px;background:var(--app-color-surface-alt, #fff);color:var(--app-color-text-secondary, #5a7fa3);font-size:1.35rem;line-height:1;cursor:pointer}.app-dialog-close:hover{background:var(--app-color-hover-bg, rgba(43, 127, 217, .08))}.app-dialog-close:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px}.app-dialog-body{padding:1rem;flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;font-size:.9rem;line-height:1.5;color:var(--app-color-text-primary, #1a2f45)}.app-dialog-footer{flex:0 0 auto;padding:.65rem 1rem 1rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.app-dialog-footer:empty{display:none;padding:0;border:none}\n"] }]
7512
+ args: [{ selector: 'app-dialog', imports: [CdkTrapFocus], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (open) {\r\n <div\r\n class=\"app-dialog-backdrop\"\r\n role=\"presentation\"\r\n tabindex=\"-1\"\r\n (click)=\"onBackdropClick()\"\r\n ></div>\r\n <div class=\"app-dialog-stage\" aria-hidden=\"false\">\r\n <div\r\n class=\"app-dialog-panel\"\r\n [class.app-dialog-panel--sm]=\"size === LibDialogSize.Sm\"\r\n [class.app-dialog-panel--md]=\"size === LibDialogSize.Md\"\r\n [class.app-dialog-panel--lg]=\"size === LibDialogSize.Lg\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-labelledby]=\"\r\n dialogHeading.trim() ? titleId : description.trim() ? descriptionId : null\r\n \"\r\n [attr.aria-label]=\"!dialogHeading.trim() && !description.trim() ? ariaLabel : null\"\r\n [attr.aria-describedby]=\"\r\n dialogHeading.trim() && description.trim() ? descriptionId : null\r\n \"\r\n cdkTrapFocus\r\n [cdkTrapFocusAutoCapture]=\"true\"\r\n (click)=\"$event.stopPropagation()\"\r\n >\r\n @if (dialogHeading.trim()) {\r\n <header class=\"app-dialog-header\">\r\n <h2 class=\"app-dialog-title\" [id]=\"titleId\">{{ dialogHeading }}</h2>\r\n @if (showCloseButton) {\r\n <button\r\n type=\"button\"\r\n class=\"app-dialog-close\"\r\n aria-label=\"Fechar di\u00E1logo\"\r\n (click)=\"requestClose()\"\r\n >\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n }\r\n </header>\r\n }\r\n @if (description.trim()) {\r\n <p class=\"app-dialog-description\" [id]=\"descriptionId\">{{ description }}</p>\r\n }\r\n <div class=\"app-dialog-body\">\r\n <ng-content />\r\n </div>\r\n <footer class=\"app-dialog-footer\">\r\n <ng-content select=\"[appDialogFooter]\" />\r\n </footer>\r\n </div>\r\n </div>\r\n}\r\n", styles: ["@charset \"UTF-8\";:host{display:block}.app-dialog-backdrop{position:fixed;inset:0;z-index:var(--app-z-dialog, 1200);background:#1a2f456b;backdrop-filter:blur(10px) saturate(1.05);-webkit-backdrop-filter:blur(10px) saturate(1.05);pointer-events:auto}.app-dialog-stage{position:fixed;inset:0;z-index:calc(var(--app-z-dialog, 1200) + 1);display:flex;align-items:center;justify-content:center;padding:min(1.5rem,4vw);box-sizing:border-box;pointer-events:none;background:transparent}.app-dialog-panel{position:relative;z-index:0;display:flex;flex-direction:column;max-height:min(88vh,40rem);width:100%;pointer-events:auto;overflow:hidden;font-family:inherit;box-sizing:border-box;border-radius:10px;border:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .12));background:var(--app-color-surface, #fff);box-shadow:0 4px 6px -1px #00000014,0 12px 28px -8px #1a2f452e;outline:none;animation:app-lib-dialog-panel-in .28s cubic-bezier(.22,1,.36,1) both}.app-dialog-panel--sm{max-width:min(28rem,94vw)}.app-dialog-panel--md{max-width:min(40rem,94vw)}.app-dialog-panel--lg{max-width:min(56rem,96vw)}@media(prefers-reduced-motion:reduce){.app-dialog-panel{animation:none}}.app-dialog-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;padding:1rem 1rem .65rem;border-bottom:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));flex:0 0 auto}.app-dialog-title{margin:0;font-size:1.05rem;font-weight:600;line-height:1.3;color:var(--app-color-text-primary, #1a2f45)}.app-dialog-description{margin:0;padding:.65rem 1rem;font-size:.88rem;line-height:1.45;color:var(--app-color-text-secondary, #5a7fa3);flex:0 0 auto}.app-dialog-close{flex:0 0 auto;width:2rem;height:2rem;margin:0;padding:0;border:1px solid var(--app-color-border, #d4d4d4);border-radius:6px;background:var(--app-color-surface-alt, #fff);color:var(--app-color-text-secondary, #5a7fa3);font-size:1.35rem;line-height:1;cursor:pointer}.app-dialog-close:hover{background:var(--app-color-hover-bg, rgba(43, 127, 217, .08))}.app-dialog-close:focus-visible{outline:2px solid var(--app-color-focus-ring-strong, rgba(43, 127, 217, .45));outline-offset:2px}.app-dialog-body{padding:1rem;flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;font-size:.9rem;line-height:1.5;color:var(--app-color-text-primary, #1a2f45)}.app-dialog-footer{flex:0 0 auto;padding:.65rem 1rem 1rem;border-top:1px solid var(--app-color-border-subtle, rgba(26, 47, 69, .09));display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.app-dialog-footer:empty{display:none;padding:0;border:none}\n"] }]
7513
7513
  }], propDecorators: { hostThemeClasses: [{
7514
7514
  type: HostBinding,
7515
7515
  args: ['class']