@govbr-ds/webcomponents 2.2.0 → 2.3.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 (447) hide show
  1. package/README.md +75 -24
  2. package/cem/custom-elements.json +168 -39
  3. package/cem/webcomponents.html-custom-data.json +11 -11
  4. package/dist/cjs/br-avatar.cjs.entry.js +1 -1
  5. package/dist/cjs/br-breadcrumb-item.cjs.entry.js +1 -1
  6. package/dist/cjs/br-breadcrumb.cjs.entry.js +1 -1
  7. package/dist/cjs/br-button_2.cjs.entry.js +8 -3
  8. package/dist/cjs/br-card.cjs.entry.js +1 -1
  9. package/dist/cjs/br-carousel-page.cjs.entry.js +1 -1
  10. package/dist/cjs/br-carousel.cjs.entry.js +1 -1
  11. package/dist/cjs/br-checkbox-group.cjs.entry.js +1 -1
  12. package/dist/cjs/br-checkbox.cjs.entry.js +2 -2
  13. package/dist/cjs/br-checkgroup.cjs.entry.js +1 -1
  14. package/dist/cjs/br-collapse_2.cjs.entry.js +10 -6
  15. package/dist/cjs/br-cookiebar-cookie.cjs.entry.js +1 -1
  16. package/dist/cjs/br-cookiebar-group.cjs.entry.js +1 -1
  17. package/dist/cjs/br-cookiebar-header.cjs.entry.js +1 -1
  18. package/dist/cjs/br-cookiebar-link.cjs.entry.js +1 -1
  19. package/dist/cjs/br-cookiebar-note-group.cjs.entry.js +1 -1
  20. package/dist/cjs/br-cookiebar-note.cjs.entry.js +1 -1
  21. package/dist/cjs/br-cookiebar.cjs.entry.js +1 -1
  22. package/dist/cjs/br-crumb.cjs.entry.js +1 -1
  23. package/dist/cjs/br-date-picker_3.cjs.entry.js +1 -1
  24. package/dist/cjs/br-datetime-picker.cjs.entry.js +2 -2
  25. package/dist/cjs/br-divider.cjs.entry.js +1 -1
  26. package/dist/cjs/br-dropdown_2.cjs.entry.js +37 -39
  27. package/dist/cjs/br-footer-category.cjs.entry.js +1 -1
  28. package/dist/cjs/br-footer-item.cjs.entry.js +1 -1
  29. package/dist/cjs/br-footer-legal.cjs.entry.js +1 -1
  30. package/dist/cjs/br-footer-logo.cjs.entry.js +1 -1
  31. package/dist/cjs/br-footer-social.cjs.entry.js +1 -1
  32. package/dist/cjs/br-footer.cjs.entry.js +1 -1
  33. package/dist/cjs/br-header-function.cjs.entry.js +1 -1
  34. package/dist/cjs/br-header-link.cjs.entry.js +1 -1
  35. package/dist/cjs/br-header-list.cjs.entry.js +1 -1
  36. package/dist/cjs/br-header-logo.cjs.entry.js +1 -1
  37. package/dist/cjs/br-header.cjs.entry.js +26 -22
  38. package/dist/cjs/br-icon.cjs.entry.js +3 -32
  39. package/dist/cjs/br-input.cjs.entry.js +24 -5
  40. package/dist/cjs/br-item.cjs.entry.js +4 -3
  41. package/dist/cjs/br-link.cjs.entry.js +1 -1
  42. package/dist/cjs/br-loading.cjs.entry.js +1 -1
  43. package/dist/cjs/br-magic-button.cjs.entry.js +20 -7
  44. package/dist/cjs/br-menu-group.cjs.entry.js +1 -1
  45. package/dist/cjs/br-menu-header.cjs.entry.js +1 -1
  46. package/dist/cjs/br-menu-info.cjs.entry.js +1 -1
  47. package/dist/cjs/br-menu-item.cjs.entry.js +1 -1
  48. package/dist/cjs/br-menu-link.cjs.entry.js +1 -1
  49. package/dist/cjs/br-menu-list.cjs.entry.js +1 -1
  50. package/dist/cjs/br-menu-logo.cjs.entry.js +1 -1
  51. package/dist/cjs/br-menu-social.cjs.entry.js +1 -1
  52. package/dist/cjs/br-menu.cjs.entry.js +1 -1
  53. package/dist/cjs/br-modal.cjs.entry.js +19 -3
  54. package/dist/cjs/br-notification-body.cjs.entry.js +1 -1
  55. package/dist/cjs/br-notification-header.cjs.entry.js +1 -1
  56. package/dist/cjs/br-notification-item.cjs.entry.js +1 -1
  57. package/dist/cjs/br-notification.cjs.entry.js +1 -1
  58. package/dist/cjs/br-pagination.cjs.entry.js +4 -4
  59. package/dist/cjs/br-radio-group.cjs.entry.js +2 -2
  60. package/dist/cjs/br-radio.cjs.entry.js +2 -2
  61. package/dist/cjs/br-scrim.cjs.entry.js +1 -1
  62. package/dist/cjs/br-select-input_3.cjs.entry.js +5 -3
  63. package/dist/cjs/br-sign-in.cjs.entry.js +7 -3
  64. package/dist/cjs/br-skip-link-item.cjs.entry.js +1 -1
  65. package/dist/cjs/br-skip-link.cjs.entry.js +1 -1
  66. package/dist/cjs/br-skiplink-item.cjs.entry.js +1 -1
  67. package/dist/cjs/br-slider.cjs.entry.js +2 -2
  68. package/dist/cjs/br-step_2.cjs.entry.js +1 -1
  69. package/dist/cjs/br-switch.cjs.entry.js +2 -2
  70. package/dist/cjs/br-tab-item.cjs.entry.js +2 -2
  71. package/dist/cjs/br-tab.cjs.entry.js +38 -13
  72. package/dist/cjs/br-table-body.cjs.entry.js +1 -1
  73. package/dist/cjs/br-table-cell.cjs.entry.js +1 -1
  74. package/dist/cjs/br-table-header-cell.cjs.entry.js +1 -1
  75. package/dist/cjs/br-table-header.cjs.entry.js +1 -1
  76. package/dist/cjs/br-table-row.cjs.entry.js +1 -1
  77. package/dist/cjs/br-table.cjs.entry.js +1 -1
  78. package/dist/cjs/br-tag.cjs.entry.js +2 -2
  79. package/dist/cjs/br-textarea.cjs.entry.js +2 -2
  80. package/dist/cjs/br-tooltip.cjs.entry.js +1 -1
  81. package/dist/cjs/br-upload.cjs.entry.js +2 -2
  82. package/dist/cjs/br-wizard-panel.cjs.entry.js +1 -1
  83. package/dist/cjs/br-wizard.cjs.entry.js +1 -1
  84. package/dist/cjs/icon.utils-DF6kMskA.js +46 -0
  85. package/dist/cjs/{index-CGgZBuyy.js → index-Bc30P_6z.js} +21 -15
  86. package/dist/cjs/loader.cjs.js +2 -2
  87. package/dist/cjs/{validator-CTCajtT9.js → validator-GkkueMOx.js} +18 -0
  88. package/dist/cjs/webcomponents.cjs.js +3 -3
  89. package/dist/collection/collection-manifest.json +1 -1
  90. package/dist/collection/components/button/button.js +8 -3
  91. package/dist/collection/components/collapse/collapse.css +1 -1
  92. package/dist/collection/components/collapse/collapse.js +12 -6
  93. package/dist/collection/components/dropdown/dropdown.js +32 -36
  94. package/dist/collection/components/header/header.js +25 -21
  95. package/dist/collection/components/icon/icon.utils.js +8 -0
  96. package/dist/collection/components/input/input.css +1 -1
  97. package/dist/collection/components/input/input.js +22 -3
  98. package/dist/collection/components/item/item.js +4 -3
  99. package/dist/collection/components/magic-button/magic-button.js +20 -6
  100. package/dist/collection/components/modal/modal.js +19 -3
  101. package/dist/collection/components/pagination/pagination.css +1 -1
  102. package/dist/collection/components/pagination/pagination.js +4 -2
  103. package/dist/collection/components/select/select-input/select-input.js +4 -2
  104. package/dist/collection/components/select/select.utils.js +3 -1
  105. package/dist/collection/components/sign-in/sign-in.js +8 -4
  106. package/dist/collection/components/tab/tab-item/tab-item.js +2 -2
  107. package/dist/collection/components/tab/tab.css +1 -1
  108. package/dist/collection/components/tab/tab.js +37 -10
  109. package/dist/collection/pages/components/select/remote.js +33 -0
  110. package/dist/collection/pages/components/select/virtualized.js +13 -0
  111. package/dist/collection/pages/components/upload/handler.js +25 -0
  112. package/dist/collection/pages/scripts/component-controls.js +15 -16
  113. package/dist/collection/pages/scripts/menu.js +0 -1
  114. package/dist/collection/pages/scripts/pageLoader.js +168 -91
  115. package/dist/collection/pages/scripts/pageloader-preview.js +37 -28
  116. package/dist/collection/shared/utils/form.js +17 -0
  117. package/dist/components/br-avatar.js +1 -1
  118. package/dist/components/br-breadcrumb-item.js +1 -1
  119. package/dist/components/br-breadcrumb.js +1 -1
  120. package/dist/components/br-button.js +1 -1
  121. package/dist/components/br-card.js +1 -1
  122. package/dist/components/br-carousel-page.js +1 -1
  123. package/dist/components/br-carousel.js +1 -1
  124. package/dist/components/br-checkbox-group.js +1 -1
  125. package/dist/components/br-checkbox.js +1 -1
  126. package/dist/components/br-checkgroup.js +1 -1
  127. package/dist/components/br-collapse.js +1 -1
  128. package/dist/components/br-cookiebar-cookie.js +1 -1
  129. package/dist/components/br-cookiebar-group.js +1 -1
  130. package/dist/components/br-cookiebar-header.js +1 -1
  131. package/dist/components/br-cookiebar-link.js +1 -1
  132. package/dist/components/br-cookiebar-note-group.js +1 -1
  133. package/dist/components/br-cookiebar-note.js +1 -1
  134. package/dist/components/br-cookiebar.js +1 -1
  135. package/dist/components/br-crumb.js +1 -1
  136. package/dist/components/br-date-picker.js +1 -1
  137. package/dist/components/br-datetime-input.js +1 -1
  138. package/dist/components/br-datetime-picker.js +1 -1
  139. package/dist/components/br-divider.js +1 -1
  140. package/dist/components/br-dropdown.js +1 -1
  141. package/dist/components/br-footer-category.js +1 -1
  142. package/dist/components/br-footer-item.js +1 -1
  143. package/dist/components/br-footer-legal.js +1 -1
  144. package/dist/components/br-footer-logo.js +1 -1
  145. package/dist/components/br-footer-social.js +1 -1
  146. package/dist/components/br-footer.js +1 -1
  147. package/dist/components/br-header-function.js +1 -1
  148. package/dist/components/br-header-link.js +1 -1
  149. package/dist/components/br-header-list.js +1 -1
  150. package/dist/components/br-header-logo.js +1 -1
  151. package/dist/components/br-header.js +1 -1
  152. package/dist/components/br-icon.js +1 -1
  153. package/dist/components/br-input.js +1 -1
  154. package/dist/components/br-item.js +1 -1
  155. package/dist/components/br-link.js +1 -1
  156. package/dist/components/br-list.js +1 -1
  157. package/dist/components/br-loading.js +1 -1
  158. package/dist/components/br-magic-button.js +1 -1
  159. package/dist/components/br-menu-group.js +1 -1
  160. package/dist/components/br-menu-header.js +1 -1
  161. package/dist/components/br-menu-info.js +1 -1
  162. package/dist/components/br-menu-item.js +1 -1
  163. package/dist/components/br-menu-link.js +1 -1
  164. package/dist/components/br-menu-list.js +1 -1
  165. package/dist/components/br-menu-logo.js +1 -1
  166. package/dist/components/br-menu-social.js +1 -1
  167. package/dist/components/br-menu.js +1 -1
  168. package/dist/components/br-message.js +1 -1
  169. package/dist/components/br-modal.js +1 -1
  170. package/dist/components/br-notification-body.js +1 -1
  171. package/dist/components/br-notification-header.js +1 -1
  172. package/dist/components/br-notification-item.js +1 -1
  173. package/dist/components/br-notification.js +1 -1
  174. package/dist/components/br-pagination.js +1 -1
  175. package/dist/components/br-radio-group.js +1 -1
  176. package/dist/components/br-radio.js +1 -1
  177. package/dist/components/br-scrim.js +1 -1
  178. package/dist/components/br-select-input.js +1 -1
  179. package/dist/components/br-select-list.js +1 -1
  180. package/dist/components/br-select-option.js +1 -1
  181. package/dist/components/br-select.js +1 -1
  182. package/dist/components/br-sign-in.js +1 -1
  183. package/dist/components/br-skip-link-item.js +1 -1
  184. package/dist/components/br-skip-link.js +1 -1
  185. package/dist/components/br-skiplink-item.js +1 -1
  186. package/dist/components/br-slider.js +1 -1
  187. package/dist/components/br-step-item.js +1 -1
  188. package/dist/components/br-step.js +1 -1
  189. package/dist/components/br-switch.js +1 -1
  190. package/dist/components/br-tab-item.js +1 -1
  191. package/dist/components/br-tab.js +1 -1
  192. package/dist/components/br-table-body.js +1 -1
  193. package/dist/components/br-table-cell.js +1 -1
  194. package/dist/components/br-table-header-cell.js +1 -1
  195. package/dist/components/br-table-header.js +1 -1
  196. package/dist/components/br-table-row.js +1 -1
  197. package/dist/components/br-table.js +1 -1
  198. package/dist/components/br-tag.js +1 -1
  199. package/dist/components/br-textarea.js +1 -1
  200. package/dist/components/br-time-picker.js +1 -1
  201. package/dist/components/br-tooltip.js +1 -1
  202. package/dist/components/br-upload.js +1 -1
  203. package/dist/components/br-wizard-panel.js +1 -1
  204. package/dist/components/br-wizard.js +1 -1
  205. package/dist/components/index.js +1 -1
  206. package/dist/components/{p-B0o70fWP.js → p-0qmYp77w.js} +1 -1
  207. package/dist/components/{p-C5th2dxu.js → p-5c3rNBXh.js} +1 -1
  208. package/dist/components/{p-B96LROz9.js → p-B8oIvH3q.js} +1 -1
  209. package/dist/components/{p-BRaphxoP.js → p-BECz8XWJ.js} +1 -1
  210. package/dist/components/{p-CFzHx6zV.js → p-BM4Ys6hX.js} +1 -1
  211. package/dist/components/{p-BUzBa9L1.js → p-BXWh9s7p.js} +1 -1
  212. package/dist/components/{p-CI4D3-pf.js → p-BjeUETWJ.js} +1 -1
  213. package/dist/components/p-CDTENPaP.js +5 -0
  214. package/dist/components/{p-DTGNra9m.js → p-CZZVc2gK.js} +1 -1
  215. package/dist/components/{p-DGPJkJsj.js → p-Cd6udSDt.js} +1 -1
  216. package/dist/components/{p-CF7t0uxQ.js → p-Ci0_RqAE.js} +1 -1
  217. package/dist/components/{p-k7p4QJ8a.js → p-CuBgClZm.js} +1 -1
  218. package/dist/components/p-D0QYZSoP.js +5 -0
  219. package/dist/components/{p-CIrVPkVg.js → p-D4SWpW6-.js} +1 -1
  220. package/dist/components/{p-Cvk1Ggs5.js → p-D579DS7x.js} +1 -1
  221. package/dist/components/{p-emAWunES.js → p-D8K7rhHd.js} +1 -1
  222. package/dist/components/{p-G35qEQZd.js → p-D9nXlCuS.js} +1 -1
  223. package/dist/components/{p-BrNh9KdF.js → p-DKFO6Q_g.js} +1 -1
  224. package/dist/components/{p-Bc4nAk5i.js → p-DNJSSCNi.js} +1 -1
  225. package/dist/components/{p-SvVnvJdC.js → p-DOJ1vYOl.js} +1 -1
  226. package/dist/components/p-DYI30IZL.js +5 -0
  227. package/dist/components/p-DcVldfL0.js +5 -0
  228. package/dist/components/p-DhvmHPp4.js +5 -0
  229. package/dist/components/{p-BDqef5-y.js → p-DwgiHL0b.js} +1 -1
  230. package/dist/components/{p-Dma14GVa.js → p-Jk_KQE5V.js} +1 -1
  231. package/dist/components/{p-DSHbttu9.js → p-Nze3Utvd.js} +1 -1
  232. package/dist/components/{p-DpRZ4B0d.js → p-WxDB6Dk4.js} +1 -1
  233. package/dist/components/p-ZLoeVagg.js +5 -0
  234. package/dist/components/p-gbYJ9sfc.js +5 -0
  235. package/dist/components/p-uc8ABlC_.js +5 -0
  236. package/dist/components/{p-DX1wAFn4.js → p-v60ypfxD.js} +1 -1
  237. package/dist/esm/br-avatar.entry.js +1 -1
  238. package/dist/esm/br-breadcrumb-item.entry.js +1 -1
  239. package/dist/esm/br-breadcrumb.entry.js +1 -1
  240. package/dist/esm/br-button_2.entry.js +8 -3
  241. package/dist/esm/br-card.entry.js +1 -1
  242. package/dist/esm/br-carousel-page.entry.js +1 -1
  243. package/dist/esm/br-carousel.entry.js +1 -1
  244. package/dist/esm/br-checkbox-group.entry.js +1 -1
  245. package/dist/esm/br-checkbox.entry.js +2 -2
  246. package/dist/esm/br-checkgroup.entry.js +1 -1
  247. package/dist/esm/br-collapse_2.entry.js +10 -6
  248. package/dist/esm/br-cookiebar-cookie.entry.js +1 -1
  249. package/dist/esm/br-cookiebar-group.entry.js +1 -1
  250. package/dist/esm/br-cookiebar-header.entry.js +1 -1
  251. package/dist/esm/br-cookiebar-link.entry.js +1 -1
  252. package/dist/esm/br-cookiebar-note-group.entry.js +1 -1
  253. package/dist/esm/br-cookiebar-note.entry.js +1 -1
  254. package/dist/esm/br-cookiebar.entry.js +1 -1
  255. package/dist/esm/br-crumb.entry.js +1 -1
  256. package/dist/esm/br-date-picker_3.entry.js +1 -1
  257. package/dist/esm/br-datetime-picker.entry.js +2 -2
  258. package/dist/esm/br-divider.entry.js +1 -1
  259. package/dist/esm/br-dropdown_2.entry.js +37 -39
  260. package/dist/esm/br-footer-category.entry.js +1 -1
  261. package/dist/esm/br-footer-item.entry.js +1 -1
  262. package/dist/esm/br-footer-legal.entry.js +1 -1
  263. package/dist/esm/br-footer-logo.entry.js +1 -1
  264. package/dist/esm/br-footer-social.entry.js +1 -1
  265. package/dist/esm/br-footer.entry.js +1 -1
  266. package/dist/esm/br-header-function.entry.js +1 -1
  267. package/dist/esm/br-header-link.entry.js +1 -1
  268. package/dist/esm/br-header-list.entry.js +1 -1
  269. package/dist/esm/br-header-logo.entry.js +1 -1
  270. package/dist/esm/br-header.entry.js +26 -22
  271. package/dist/esm/br-icon.entry.js +2 -31
  272. package/dist/esm/br-input.entry.js +24 -5
  273. package/dist/esm/br-item.entry.js +4 -3
  274. package/dist/esm/br-link.entry.js +1 -1
  275. package/dist/esm/br-loading.entry.js +1 -1
  276. package/dist/esm/br-magic-button.entry.js +20 -7
  277. package/dist/esm/br-menu-group.entry.js +1 -1
  278. package/dist/esm/br-menu-header.entry.js +1 -1
  279. package/dist/esm/br-menu-info.entry.js +1 -1
  280. package/dist/esm/br-menu-item.entry.js +1 -1
  281. package/dist/esm/br-menu-link.entry.js +1 -1
  282. package/dist/esm/br-menu-list.entry.js +1 -1
  283. package/dist/esm/br-menu-logo.entry.js +1 -1
  284. package/dist/esm/br-menu-social.entry.js +1 -1
  285. package/dist/esm/br-menu.entry.js +1 -1
  286. package/dist/esm/br-modal.entry.js +20 -4
  287. package/dist/esm/br-notification-body.entry.js +1 -1
  288. package/dist/esm/br-notification-header.entry.js +1 -1
  289. package/dist/esm/br-notification-item.entry.js +1 -1
  290. package/dist/esm/br-notification.entry.js +1 -1
  291. package/dist/esm/br-pagination.entry.js +4 -4
  292. package/dist/esm/br-radio-group.entry.js +2 -2
  293. package/dist/esm/br-radio.entry.js +2 -2
  294. package/dist/esm/br-scrim.entry.js +1 -1
  295. package/dist/esm/br-select-input_3.entry.js +5 -3
  296. package/dist/esm/br-sign-in.entry.js +7 -3
  297. package/dist/esm/br-skip-link-item.entry.js +1 -1
  298. package/dist/esm/br-skip-link.entry.js +1 -1
  299. package/dist/esm/br-skiplink-item.entry.js +1 -1
  300. package/dist/esm/br-slider.entry.js +2 -2
  301. package/dist/esm/br-step_2.entry.js +1 -1
  302. package/dist/esm/br-switch.entry.js +2 -2
  303. package/dist/esm/br-tab-item.entry.js +2 -2
  304. package/dist/esm/br-tab.entry.js +38 -13
  305. package/dist/esm/br-table-body.entry.js +1 -1
  306. package/dist/esm/br-table-cell.entry.js +1 -1
  307. package/dist/esm/br-table-header-cell.entry.js +1 -1
  308. package/dist/esm/br-table-header.entry.js +1 -1
  309. package/dist/esm/br-table-row.entry.js +1 -1
  310. package/dist/esm/br-table.entry.js +1 -1
  311. package/dist/esm/br-tag.entry.js +2 -2
  312. package/dist/esm/br-textarea.entry.js +2 -2
  313. package/dist/esm/br-tooltip.entry.js +1 -1
  314. package/dist/esm/br-upload.entry.js +2 -2
  315. package/dist/esm/br-wizard-panel.entry.js +1 -1
  316. package/dist/esm/br-wizard.entry.js +1 -1
  317. package/dist/esm/icon.utils-zlORkiHQ.js +43 -0
  318. package/dist/esm/{index-Dcn7tRST.js → index-ConyRdJe.js} +21 -15
  319. package/dist/esm/loader.js +3 -3
  320. package/dist/esm/{validator-D3tVP32U.js → validator-BkWWrDEr.js} +18 -1
  321. package/dist/esm/webcomponents.js +4 -4
  322. package/dist/hydrate/index.js +341 -139
  323. package/dist/hydrate/index.mjs +341 -139
  324. package/dist/types/components/button/button.d.ts +2 -1
  325. package/dist/types/components/collapse/collapse.d.ts +6 -2
  326. package/dist/types/components/dropdown/dropdown.d.ts +12 -4
  327. package/dist/types/components/header/header.d.ts +2 -0
  328. package/dist/types/components/icon/icon.utils.d.ts +6 -0
  329. package/dist/types/components/input/input.d.ts +9 -0
  330. package/dist/types/components/item/item.d.ts +6 -1
  331. package/dist/types/components/magic-button/magic-button.d.ts +7 -3
  332. package/dist/types/components/modal/modal.d.ts +6 -0
  333. package/dist/types/components/pagination/pagination.d.ts +2 -0
  334. package/dist/types/components/sign-in/sign-in.d.ts +3 -2
  335. package/dist/types/components/tab/tab-item/tab-item.d.ts +6 -2
  336. package/dist/types/components/tab/tab.d.ts +7 -0
  337. package/dist/types/components.d.ts +18 -18
  338. package/dist/types/shared/utils/form.d.ts +8 -0
  339. package/dist/types/stencil-public-runtime.d.ts +61 -55
  340. package/dist/webcomponents/{p-6c0ea20c.entry.js → p-078bd760.entry.js} +1 -1
  341. package/dist/webcomponents/{p-3e287899.entry.js → p-07c2cdff.entry.js} +1 -1
  342. package/dist/webcomponents/{p-cff24492.entry.js → p-09817344.entry.js} +1 -1
  343. package/dist/webcomponents/{p-030c02f8.entry.js → p-0b0cf355.entry.js} +1 -1
  344. package/dist/webcomponents/{p-abaf2365.entry.js → p-0d2ca2f7.entry.js} +1 -1
  345. package/dist/webcomponents/p-0d79ca44.entry.js +5 -0
  346. package/dist/webcomponents/p-0fe3c47b.entry.js +5 -0
  347. package/dist/webcomponents/p-116b53c9.entry.js +5 -0
  348. package/dist/webcomponents/p-1240dae7.entry.js +5 -0
  349. package/dist/webcomponents/{p-01fb0754.entry.js → p-14ff5865.entry.js} +1 -1
  350. package/dist/webcomponents/{p-12aa36a8.entry.js → p-15743a02.entry.js} +1 -1
  351. package/dist/webcomponents/{p-3cce767c.entry.js → p-16cebf49.entry.js} +1 -1
  352. package/dist/webcomponents/{p-2605cdc3.entry.js → p-1884b9d3.entry.js} +1 -1
  353. package/dist/webcomponents/{p-edc6da0e.entry.js → p-19a38e20.entry.js} +1 -1
  354. package/dist/webcomponents/{p-7cd38850.entry.js → p-1d36c8fa.entry.js} +1 -1
  355. package/dist/webcomponents/{p-646af6a5.entry.js → p-1fa4b5b2.entry.js} +1 -1
  356. package/dist/webcomponents/{p-3df6c5d2.entry.js → p-212c069b.entry.js} +1 -1
  357. package/dist/webcomponents/{p-9858e42a.entry.js → p-23f37cd6.entry.js} +1 -1
  358. package/dist/webcomponents/{p-da21a60d.entry.js → p-24502b63.entry.js} +1 -1
  359. package/dist/webcomponents/{p-7b01bddb.entry.js → p-27fb81f3.entry.js} +1 -1
  360. package/dist/webcomponents/{p-5dd4314c.entry.js → p-28844490.entry.js} +1 -1
  361. package/dist/webcomponents/{p-403637dd.entry.js → p-2b41bdcc.entry.js} +1 -1
  362. package/dist/webcomponents/p-2cb1e09b.entry.js +5 -0
  363. package/dist/webcomponents/{p-9c4200b0.entry.js → p-2fcda70b.entry.js} +1 -1
  364. package/dist/webcomponents/{p-3e5580ba.entry.js → p-3378300c.entry.js} +1 -1
  365. package/dist/webcomponents/{p-d35cf5b4.entry.js → p-3ae9cf69.entry.js} +1 -1
  366. package/dist/webcomponents/{p-59da5b55.entry.js → p-3b79cd49.entry.js} +1 -1
  367. package/dist/webcomponents/{p-fcab1428.entry.js → p-3c1513ec.entry.js} +1 -1
  368. package/dist/webcomponents/p-4118b878.entry.js +5 -0
  369. package/dist/webcomponents/{p-38f6a78b.entry.js → p-4534a3c3.entry.js} +1 -1
  370. package/dist/webcomponents/p-48abf568.entry.js +5 -0
  371. package/dist/webcomponents/{p-0b9714f1.entry.js → p-4e5ea05c.entry.js} +1 -1
  372. package/dist/webcomponents/{p-670e8fec.entry.js → p-513ee754.entry.js} +1 -1
  373. package/dist/webcomponents/{p-3ae97345.entry.js → p-521a1076.entry.js} +1 -1
  374. package/dist/webcomponents/{p-1ff9210a.entry.js → p-59fc52c0.entry.js} +1 -1
  375. package/dist/webcomponents/{p-c8b7bbab.entry.js → p-5a7c2031.entry.js} +1 -1
  376. package/dist/webcomponents/{p-f52ef0dc.entry.js → p-5a9f4ea2.entry.js} +1 -1
  377. package/dist/webcomponents/{p-6c2fe5e4.entry.js → p-5f422a69.entry.js} +1 -1
  378. package/dist/webcomponents/{p-ed5af0e4.entry.js → p-61977114.entry.js} +1 -1
  379. package/dist/webcomponents/{p-e20188c0.entry.js → p-6850e98e.entry.js} +1 -1
  380. package/dist/webcomponents/{p-fe1729a7.entry.js → p-71853dfc.entry.js} +1 -1
  381. package/dist/webcomponents/{p-09770c98.entry.js → p-76d51654.entry.js} +1 -1
  382. package/dist/webcomponents/p-77e242f3.entry.js +5 -0
  383. package/dist/webcomponents/{p-cbf3e251.entry.js → p-7b849472.entry.js} +1 -1
  384. package/dist/webcomponents/{p-a2e75143.entry.js → p-7dbfb875.entry.js} +1 -1
  385. package/dist/webcomponents/{p-d45ffe9c.entry.js → p-7fa7f052.entry.js} +1 -1
  386. package/dist/webcomponents/{p-e624ff04.entry.js → p-81c65747.entry.js} +1 -1
  387. package/dist/webcomponents/{p-7acf20d3.entry.js → p-82759002.entry.js} +1 -1
  388. package/dist/webcomponents/{p-72b839fe.entry.js → p-91a5329f.entry.js} +1 -1
  389. package/dist/webcomponents/{p-e3de5bb3.entry.js → p-94848046.entry.js} +1 -1
  390. package/dist/webcomponents/{p-130b6e06.entry.js → p-966773a9.entry.js} +1 -1
  391. package/dist/webcomponents/{p-964c01e6.entry.js → p-9abb5a53.entry.js} +1 -1
  392. package/dist/webcomponents/{p-73dcc05b.entry.js → p-9bf2e325.entry.js} +1 -1
  393. package/dist/webcomponents/{p-a3bb98c9.entry.js → p-9c943b40.entry.js} +1 -1
  394. package/dist/webcomponents/{p-b506b0a1.entry.js → p-9ec3ca00.entry.js} +1 -1
  395. package/dist/webcomponents/p-BkWWrDEr.js +5 -0
  396. package/dist/webcomponents/{p-Dcn7tRST.js → p-ConyRdJe.js} +1 -1
  397. package/dist/webcomponents/{p-a8b5dba0.entry.js → p-ad91f149.entry.js} +1 -1
  398. package/dist/webcomponents/{p-c201ae16.entry.js → p-aeea1f17.entry.js} +1 -1
  399. package/dist/webcomponents/{p-327f034f.entry.js → p-b02a7218.entry.js} +1 -1
  400. package/dist/webcomponents/{p-a212fd85.entry.js → p-b16590fc.entry.js} +1 -1
  401. package/dist/webcomponents/{p-f558d7b9.entry.js → p-b55425b7.entry.js} +1 -1
  402. package/dist/webcomponents/{p-a0931550.entry.js → p-c1dafd8d.entry.js} +1 -1
  403. package/dist/webcomponents/{p-2a50e42d.entry.js → p-c2ca0289.entry.js} +1 -1
  404. package/dist/webcomponents/{p-27afaec9.entry.js → p-c8af334e.entry.js} +1 -1
  405. package/dist/webcomponents/p-cac49c6a.entry.js +5 -0
  406. package/dist/webcomponents/{p-01baafce.entry.js → p-cb9ebfbe.entry.js} +1 -1
  407. package/dist/webcomponents/p-ce3d689c.entry.js +5 -0
  408. package/dist/webcomponents/{p-b94c3f84.entry.js → p-d11f95a0.entry.js} +1 -1
  409. package/dist/webcomponents/{p-03359c92.entry.js → p-d5d2205c.entry.js} +1 -1
  410. package/dist/webcomponents/p-dad03b49.entry.js +5 -0
  411. package/dist/webcomponents/{p-342650b8.entry.js → p-db8e6322.entry.js} +1 -1
  412. package/dist/webcomponents/{p-d719a4af.entry.js → p-dea8015f.entry.js} +1 -1
  413. package/dist/webcomponents/p-e07e309d.entry.js +5 -0
  414. package/dist/webcomponents/{p-435c8ef2.entry.js → p-e53d874b.entry.js} +1 -1
  415. package/dist/webcomponents/p-e5540387.entry.js +5 -0
  416. package/dist/webcomponents/{p-14fe22e2.entry.js → p-e94a52ac.entry.js} +1 -1
  417. package/dist/webcomponents/{p-bda62f90.entry.js → p-e9be4d3f.entry.js} +1 -1
  418. package/dist/webcomponents/p-e9db9381.entry.js +5 -0
  419. package/dist/webcomponents/{p-68046544.entry.js → p-edca5de1.entry.js} +1 -1
  420. package/dist/webcomponents/{p-c7e899a1.entry.js → p-ee5b9fc9.entry.js} +1 -1
  421. package/dist/webcomponents/{p-91e959a8.entry.js → p-f4ef8c63.entry.js} +1 -1
  422. package/dist/webcomponents/p-zlORkiHQ.js +5 -0
  423. package/dist/webcomponents/webcomponents.esm.js +1 -1
  424. package/package.json +1 -1
  425. package/dist/components/p-BP5zMCxG.js +0 -5
  426. package/dist/components/p-CEdUp183.js +0 -5
  427. package/dist/components/p-CG4em0S6.js +0 -5
  428. package/dist/components/p-CdDwqbBv.js +0 -5
  429. package/dist/components/p-CppRJiyC.js +0 -5
  430. package/dist/components/p-D12US39c.js +0 -5
  431. package/dist/components/p-Ho_IybzR.js +0 -5
  432. package/dist/components/p-fB79wKCm.js +0 -5
  433. package/dist/webcomponents/p-144f8c8d.entry.js +0 -5
  434. package/dist/webcomponents/p-3920fe3a.entry.js +0 -5
  435. package/dist/webcomponents/p-68ec76b8.entry.js +0 -5
  436. package/dist/webcomponents/p-707df9b9.entry.js +0 -5
  437. package/dist/webcomponents/p-82454383.entry.js +0 -5
  438. package/dist/webcomponents/p-9d9c87b1.entry.js +0 -5
  439. package/dist/webcomponents/p-D3tVP32U.js +0 -5
  440. package/dist/webcomponents/p-aa909443.entry.js +0 -5
  441. package/dist/webcomponents/p-aeb16645.entry.js +0 -5
  442. package/dist/webcomponents/p-b287c384.entry.js +0 -5
  443. package/dist/webcomponents/p-b520c08c.entry.js +0 -5
  444. package/dist/webcomponents/p-d826c052.entry.js +0 -5
  445. package/dist/webcomponents/p-de0c7f26.entry.js +0 -5
  446. package/dist/webcomponents/p-e27882e1.entry.js +0 -5
  447. package/dist/webcomponents/p-f24fcf3d.entry.js +0 -5
@@ -50,10 +50,12 @@ const PAGINATION_VARIANTS = ['default', 'contextual'];
50
50
  * @part per-page - Parte para o seletor de itens por página na variante contextual.
51
51
  * @part per-page-container - Contêiner encaminhado do seletor de itens por página.
52
52
  * @part per-page-input - Campo encaminhado do seletor de itens por página.
53
+ * @part per-page-input-label - Rótulo encaminhado do seletor de itens por página.
53
54
  * @part per-page-list - Lista encaminhada do seletor de itens por página.
54
55
  * @part go-to - Parte para o seletor de navegação direta na variante contextual.
55
56
  * @part go-to-container - Contêiner encaminhado do seletor de navegação direta.
56
57
  * @part go-to-input - Campo encaminhado do seletor de navegação direta.
58
+ * @part go-to-input-label - Rótulo encaminhado do seletor de navegação direta.
57
59
  * @part go-to-list - Lista encaminhada do seletor de navegação direta.
58
60
  * @part prev-button - Parte para o botão de página anterior, usada para estilização via ::part().
59
61
  * @part prev-button-inner - Botão interno encaminhado da página anterior.
@@ -870,7 +872,7 @@ export class Pagination {
870
872
  this.handleGoToPageChange(event);
871
873
  }
872
874
  renderPerPageDropdown() {
873
- return (h("br-select", { part: "per-page", exportparts: "container: per-page-container, input: per-page-input, input-container: per-page-input-container, input-field: per-page-input-field, input-action: per-page-input-action, list: per-page-list", label: this.perPageLabel, isInline: true, inputWidth: "88px", borderless: true, density: this.effectiveDensity, disabled: this.loading }, this.effectivePerPageOptions.map((perPageOption) => (h("br-select-option", { key: String(perPageOption), value: String(perPageOption), selected: perPageOption === this.effectivePerPage }, perPageOption)))));
875
+ return (h("br-select", { part: "per-page", exportparts: "container: per-page-container, input: per-page-input, input-container: per-page-input-container, input-field: per-page-input-field, input-label: per-page-input-label, input-action: per-page-input-action, list: per-page-list", label: this.perPageLabel, isInline: true, inputWidth: "88px", borderless: true, density: this.effectiveDensity, disabled: this.loading }, this.effectivePerPageOptions.map((perPageOption) => (h("br-select-option", { key: String(perPageOption), value: String(perPageOption), selected: perPageOption === this.effectivePerPage }, perPageOption)))));
874
876
  }
875
877
  renderPerPageSelect() {
876
878
  return (h("div", { class: "pagination-per-page", part: "per-page" }, this.renderPerPageDropdown()));
@@ -879,7 +881,7 @@ export class Pagination {
879
881
  const totalPages = this.getTotalPages();
880
882
  const largePageSet = totalPages > Pagination.LARGE_PAGE_THRESHOLD;
881
883
  const goToInputWidth = `${Math.max(88, String(totalPages).length * 16 + 48)}px`;
882
- return (h("div", { class: "pagination-go-to-page d-none d-sm-flex ml-auto" }, h("br-select", { part: "go-to", exportparts: "container: go-to-container, input: go-to-input, input-container: go-to-input-container, input-field: go-to-input-field, input-action: go-to-input-action, list: go-to-list", label: this.goToPageLabel, options: largePageSet
884
+ return (h("div", { class: "pagination-go-to-page d-none d-sm-flex ml-auto" }, h("br-select", { part: "go-to", exportparts: "container: go-to-container, input: go-to-input, input-container: go-to-input-container, input-field: go-to-input-field, input-label: go-to-input-label, input-action: go-to-input-action, list: go-to-list", label: this.goToPageLabel, options: largePageSet
883
885
  ? this.getWindowedGoToOptions(totalPages, this.goToSearchTerm)
884
886
  : this.goToOptionsReady
885
887
  ? this.getGoToOptions(totalPages)
@@ -134,10 +134,12 @@ export class SelectInput {
134
134
  return h("br-icon", { slot: "icon", iconName: "fa-solid:search", width: "16", height: "16", "aria-hidden": "true" });
135
135
  }
136
136
  renderDropdownIcon() {
137
- return (h("br-icon", { "aria-hidden": "true", iconName: this.flipped ? 'fa-solid:angle-up' : 'fa-solid:angle-down', width: "16", height: "16", slot: "action" }));
137
+ return (h("br-icon", { "aria-hidden": "true",
138
+ // Mesmo par de expandir/recolher do restante do DS (collapse, menu, cookiebar).
139
+ iconName: this.flipped ? 'fa6-solid:chevron-up' : 'fa6-solid:chevron-down', width: "16", height: "16", slot: "action" }));
138
140
  }
139
141
  render() {
140
- return (h(Host, { key: '615ae815e7b71d479a570e951b49a7e5a8f50087' }, h("div", { key: 'eb4ed35555a744723b01415170ab791e5ca1ea50', class: this.getCssClassMap(), part: "container" }, h("br-input", { key: '9f5940fd60cdbbb776277ff691fb6e6689d179cc', "action-tab-index": -1, "action-label": this.flipped ? 'Fechar opções' : 'Abrir opções', autocomplete: this.effectiveAutocomplete, borderless: this.borderless, "control-width": this.inputWidth, density: this.effectiveDensity, readonly: !this.filterable, "is-inline": this.isInline, label: this.label, name: this.name, placeholder: this.placeholder, required: this.required, ref: (el) => {
142
+ return (h(Host, { key: '589fdfe1c4e4d6832eba9c8942b9a4004eccb423' }, h("div", { key: '109b21a721797e2147e515c2cf880317217742b8', class: this.getCssClassMap(), part: "container" }, h("br-input", { key: 'd54183ce546a969a524ce2cde60b43aec10d1427', "action-tab-index": -1, "action-label": this.flipped ? 'Fechar opções' : 'Abrir opções', autocomplete: this.effectiveAutocomplete, borderless: this.borderless, "control-width": this.inputWidth, density: this.effectiveDensity, readonly: !this.filterable, "is-inline": this.isInline, label: this.label, name: this.name, placeholder: this.placeholder, required: this.required, ref: (el) => {
141
143
  this.inputElement = el;
142
144
  }, value: this.value, disabled: this.disabled, onClick: this.handleClick, onInput: this.handleInput, onFocus: this.handleFocus, exportparts: "container:input, label:label, input:input, group:group, icon:icon, action:action, action-button:action-button" }, this.showSearchIcon && this.renderSearchIcon(), this.renderDropdownIcon()))));
143
145
  }
@@ -5,7 +5,9 @@
5
5
  export function transitionSelection({ currentValues, multiple, value, selected, selectableValues = [], }) {
6
6
  const current = [...new Set(currentValues)];
7
7
  if (!multiple) {
8
- const values = selected && value ? [value] : [];
8
+ // Desmarcar uma opção que não é a selecionada não altera a seleção simples. Isso cobre a
9
+ // troca A -> B feita por framework, que desmarca A antes ou depois de marcar B.
10
+ const values = selected && value ? [value] : current.filter((item) => item !== value).slice(0, 1);
9
11
  return { values, changed: values.length !== current.length || values[0] !== current[0] };
10
12
  }
11
13
  if (!value && selectableValues.length > 0) {
@@ -28,7 +28,7 @@ import { hasNamedLightDomSlot } from "../../shared/utils/slot";
28
28
  *
29
29
  * O `br-sign-in` é um botão de autenticação estilizado com a marca oficial do Governo Federal, recebendo propriedades de rótulo e variantes institucionais.
30
30
  *
31
- * Para a documentação completa de design, incluindo diretrizes de acessibilidade e especificações visuais, consulte o [Design System do GovBR](https://www.gov.br/ds/components/sign-in?tab=designer).
31
+ * Para a documentação completa de design, incluindo diretrizes de acessibilidade e especificações visuais, consulte o [Design System do GovBR](https://www.gov.br/ds/components/signin?tab=designer).
32
32
  *
33
33
 
34
34
  * @category Identidade, Ações, Formulários
@@ -105,7 +105,11 @@ export class SignIn {
105
105
  };
106
106
  }
107
107
  get effectiveColorMode() {
108
- return resolveAllowedPropValue(this.el, 'colorMode', this.colorMode, ['dark'], 'dark');
108
+ // Sem `color-mode`, o sign-in usa o esquema claro; valores inválidos também caem nele.
109
+ return resolveAllowedPropValue(this.el, 'colorMode', this.colorMode, ['dark'], undefined, {
110
+ allowUndefined: true,
111
+ allowNull: true,
112
+ });
109
113
  }
110
114
  get effectiveEmphasis() {
111
115
  return resolveAllowedPropValue(this.el, 'emphasis', this.emphasis, ['primary', 'secondary'], 'secondary');
@@ -160,7 +164,7 @@ export class SignIn {
160
164
  const TagType = this.getTagType();
161
165
  const attributes = this.getAttributes();
162
166
  const classList = this.getCssClassMap();
163
- return (h(Host, { key: '8dc7c7dd3bc464abcf147dc47e7925a6b0c3ba00', "aria-disabled": this.disabled ? 'true' : null }, h(TagType, { key: 'c24d8ce52ce130a846311a9ea27a11f4b107c029', part: "button", class: classList, id: this.customId, ...attributes, onClick: this.handleClick, onFocus: this.handleFocus }, h("slot", { key: 'cd070ed2fc4f0a68afb2d438527606d476040cb4', name: "icon" }, this.effectiveShape === 'circle' && h("br-icon", { key: '1c2b9aa7c9b374fa19fe33fc6133c16c5a64f2f1', iconName: "fa6-solid:user", width: "12", height: "12" })), h("span", { key: '064321d0750a00110c464c38c38035342069c7f4', part: "content" }, h("slot", { key: '6c0a53faa735df7553e4a1d3e5508270102b7548' })), this.hasSlotContent('image') && (h("span", { key: '17d18a6d4407ff5a833f38ddff43520ca54b8ab4', part: "image" }, h("slot", { key: 'a95537abbe3262603d709afab260f3393e129ccd', name: "image" }))))));
167
+ return (h(Host, { key: 'a0a0dfe061d56cbe2ffabb11432b3eaa893b0122', "aria-disabled": this.disabled ? 'true' : null }, h(TagType, { key: '81aa67e31541eacda111d4d629921b08f6f5f000', part: "button", class: classList, id: this.customId, ...attributes, onClick: this.handleClick, onFocus: this.handleFocus }, h("slot", { key: 'e4e4cc229fc950ac325ec07745fe3e4681ef0c81', name: "icon" }, this.effectiveShape === 'circle' && h("br-icon", { key: 'b011e22af33d5a993c82b043672ecf22a6439abe', iconName: "fa6-solid:user", width: "12", height: "12" })), h("span", { key: '71d1bd83848e2e866a62d2b558dd657ca2b410e4', part: "content" }, h("slot", { key: '1299daa32861ca77c1b5a37963853c57ae853b85' })), this.hasSlotContent('image') && (h("span", { key: '0441bf7f01f61252d1108ff0ffc9d5946332eb6a', part: "image" }, h("slot", { key: 'dd473e474af2daece1ff321c8662b2dda140cd55', name: "image" }))))));
164
168
  }
165
169
  static get is() { return "br-sign-in"; }
166
170
  static get encapsulation() { return "shadow"; }
@@ -209,7 +213,7 @@ export class SignIn {
209
213
  "optional": false,
210
214
  "docs": {
211
215
  "tags": [],
212
- "text": "Define se o sign-in usar\u00E1 um esquema de cores escuro."
216
+ "text": "Define se o sign-in usar\u00E1 um esquema de cores escuro, para fundos escuros.\nQuando omitido, ou com valor diferente de `dark`, usa o esquema claro."
213
217
  },
214
218
  "getter": false,
215
219
  "setter": false,
@@ -179,7 +179,7 @@ export class TabItem {
179
179
  };
180
180
  }
181
181
  render() {
182
- return (h(Host, { key: '62be8feaf5e9954396e488bc9ac2cd188343e1bd', class: this.getCssClassMap(), id: `tab-panel-${this.tabItemId}`, role: "tabpanel", "aria-labelledby": `tab-button-${this.tabItemId}`, hidden: !(this.active ?? this.isActive), tabindex: (this.active ?? this.isActive) && !this.hasFocusableContent ? 0 : -1 }, h("slot", { key: '14a1f34bb8009900d2ccc92ddc80cd18b916e19b', onSlotchange: () => this.updateFocusableContentState() })));
182
+ return (h(Host, { key: 'd38057720e25509e1adb3d50c65b316b8857ed40', class: this.getCssClassMap(), id: `tab-panel-${this.tabItemId}`, role: "tabpanel", "aria-labelledby": `tab-button-${this.tabItemId}`, hidden: !(this.active ?? this.isActive), tabindex: (this.active ?? this.isActive) && !this.hasFocusableContent ? 0 : -1 }, h("slot", { key: 'b409428f62310f19f3cd9bdb9f9d5581e092a091', onSlotchange: () => this.updateFocusableContentState() })));
183
183
  }
184
184
  static get is() { return "br-tab-item"; }
185
185
  static get encapsulation() { return "shadow"; }
@@ -271,7 +271,7 @@ export class TabItem {
271
271
  "optional": false,
272
272
  "docs": {
273
273
  "tags": [],
274
- "text": "Define o \u00EDcone do item de tab usando classes CSS do Font Awesome 5, como `fas fa-bell`.\nO formato Iconify \u00E9 aceito apenas para compatibilidade legada e n\u00E3o deve ser usado em novos c\u00F3digos."
274
+ "text": "\u00CDcone da aba como identificador Iconify (ex.: `fa6-solid:bell`), renderizado em SVG pelo `br-icon`.\nPara \u00EDcones por classe CSS (ex.: Font Awesome), use o slot `icon-{id}` do `br-tab`, a forma\npreferida: `<i slot=\"icon-avisos\" class=\"fas fa-bell\" aria-hidden=\"true\"></i>`.\nO slot tem preced\u00EAncia sobre esta prop.\nUso descontinuado: classes CSS nesta prop (ex.: `fas fa-bell`) n\u00E3o s\u00E3o exibidas no Shadow DOM,\ngeram aviso e devem migrar para o slot `icon-{id}`. Identificadores Iconify continuam suportados."
275
275
  },
276
276
  "getter": false,
277
277
  "setter": false,
@@ -1 +1 @@
1
- @import'~@fortawesome/fontawesome-free/css/all.css';*,*::before,*::after{box-sizing:border-box}:host{line-height:var(--font-line-height-medium);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}main{display:block}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace;font-size:1em}a{background-color:rgba(0,0,0,0)}b,strong{font-weight:bolder}code{font-family:monospace;font-size:1em}small{font-size:80%}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:var(--font-line-height-medium);margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{appearance:none}::-webkit-file-upload-button{appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}.d-none{display:none !important}@media(min-width: 576px){.d-sm-block{display:block !important}.d-sm-flex{display:flex !important}}[data-toggle=dropdown]+*{position:absolute}.dropdown{position:relative}.dropdown [data-toggle=dropdown]+*{box-shadow:var(--surface-shadow-sm);left:0;position:absolute;top:100%}.dropdown>.br-notification{left:auto;right:0}.dropdown .br-item{--color: var(--color-light);--color-rgb: var(--color-light-rgb);--text-color: var(--color-light);--interactive: var(--interactive-light);--interactive-rgb: var(--color-rgb);--visited: var(--visited-light);--hover: var(--hover-light);--pressed: var(--pressed-light);--focus-color: var(--focus-color-light);--focus: var(--focus-color-light);--item-padding-y: var(--spacing-scale-2x);background-color:var(--background-light);color:var(--color)}.dropdown .br-item:not(:last-child){border-bottom:1px solid var(--border-color)}.dropdown .br-item.selected{--color: var(--color-dark);--color-rgb: var(--color-dark-rgb);--text-color: var(--color-dark);--interactive: var(--interactive-dark);--interactive-rgb: var(--interactive-dark-rgb);--visited: var(--visited-dark);--hover: var(--hover-dark);--pressed: var(--pressed-dark);--focus-color: var(--focus-color-dark);--focus: var(--focus-color-dark)}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.align-items-center{align-items:center !important}.col,[class*=col-]{padding-left:calc(var(--grid-gutter)*.5);padding-right:calc(var(--grid-gutter)*.5);width:100%}.col{flex:1 0 0%;min-width:8.3333333333%}.col-auto{flex:0 0 auto;width:auto}.col-2{flex-basis:16.6666666667%;max-width:16.6666666667%}.container,.container-fluid,.container-lg{--grid-margin: var(--grid-portrait-margin);--grid-maxwidth: var(--grid-portrait-maxwidth);margin-left:auto;margin-right:auto;max-width:var(--grid-maxwidth);padding-left:var(--grid-margin);padding-right:var(--grid-margin);width:100%}.row{--grid-gutter: var(--grid-portrait-gutter);display:flex;flex-wrap:wrap;margin-left:calc(var(--grid-gutter)*-0.5);margin-right:calc(var(--grid-gutter)*-0.5)}@media(min-width: 576px){.container,.container-lg,.container-fluid{--grid-margin: var(--grid-tablet-margin)}.row{--grid-gutter: var(--grid-tablet-gutter)}.container{--grid-maxwidth: calc(var(--grid-breakpoint-sm) - var(--grid-tablet-margin))}.col-sm-4{flex-basis:33.3333333333%;max-width:33.3333333333%}}@media(min-width: 992px){.container,.container-lg,.container-fluid{--grid-margin: var(--grid-tablet-margin)}.row{--grid-gutter: var(--grid-tablet-gutter)}.container{--grid-maxwidth: calc(var(--grid-breakpoint-md) - var(--grid-tablet-margin))}}@media(min-width: 1280px){.container,.container-lg,.container-fluid{--grid-margin: var(--grid-desktop-margin)}.row{--grid-gutter: var(--grid-desktop-gutter)}.container,.container-lg{--grid-maxwidth: calc(var(--grid-breakpoint-lg) - var(--grid-desktop-margin))}.col-lg-3{flex-basis:25%;max-width:25%}}@media(min-width: 1600px){.container,.container-lg,.container-fluid{--grid-margin: var(--grid-tv-margin)}.row{--grid-gutter: var(--grid-tv-gutter)}.container,.container-lg{--grid-maxwidth: calc(var(--grid-breakpoint-xl) - var(--grid-tv-margin))}}.ease{animation-timing-function:cubic-bezier(0.25, 0.1, 0.25, 1)}.ease-out{animation-timing-function:cubic-bezier(0, 0, 0.58, 1)}.ease-in-out{animation-timing-function:cubic-bezier(0.42, 0, 0.58, 1)}.fast{animation-duration:var(--duration-fast)}.slow{animation-duration:var(--duration-slow)}.mt-1{margin-top:var(--spacing-scale-half) !important}.mr-1{margin-right:var(--spacing-scale-half) !important}.mb-1{margin-bottom:var(--spacing-scale-half) !important}.ml-1{margin-left:var(--spacing-scale-half) !important}.mx-3{margin-left:var(--spacing-scale-2x) !important;margin-right:var(--spacing-scale-2x) !important}.mb-4{margin-bottom:var(--spacing-scale-3x) !important}.ml-auto{margin-left:auto !important}.pt-half{padding-top:var(--spacing-scale-half) !important}@media(min-width: 576px){.ml-sm-0{margin-left:var(--spacing-scale-default) !important}}.highlight{background:var(--status-highlight-background) linear-gradient(var(--status-highlight-overlay), var(--status-highlight-overlay));color:var(--status-highlight-text);padding:0 var(--spacing-scale-half)}[disabled],.disabled{cursor:not-allowed;opacity:var(--disabled)}[disabled] *,.disabled *{pointer-events:none}fieldset[disabled]{opacity:1}.text-center{text-align:center !important}.text-right{text-align:right !important}.text-nowrap{white-space:nowrap !important}.text-uppercase{text-transform:uppercase !important}.text-bold{font-weight:700 !important}.text-base{font-size:var(--font-size-scale-base) !important}.text-down-01{font-size:var(--font-size-scale-down-01) !important}@media(min-width: 576px){.text-sm-center{text-align:center !important}.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}}p{color:var(--color);font-size:var(--font-size-scale-base);font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-2x);margin-top:0}p a{text-decoration:underline}@media(min-width: 576px){p{font-size:var(--font-size-scale-up-01)}}a{--focus-offset: var(--spacing-scale-half)}a:focus{outline:none}a.focus-visible,a:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}a:not(:disabled):hover{background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}a:not(:disabled):active{background-image:linear-gradient(rgba(var(--interactive-rgb), var(--pressed)), rgba(var(--interactive-rgb), var(--pressed)))}a{color:var(--interactive);text-decoration:none}.main-content a{text-decoration:underline}button{cursor:pointer}img{max-width:100%;vertical-align:middle}h2,.h2{color:var(--color);font-size:var(--font-size-scale-up-03);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-2xh);margin-top:var(--spacing-scale-3xh);padding-bottom:var(--spacing-scale-2xh)}@media(min-width: 576px){.h2,h2{font-size:var(--font-size-scale-up-05);font-weight:var(--font-weight-regular)}}ul,ol{margin-bottom:var(--spacing-scale-2x);margin-top:0;padding:0 0 0 var(--spacing-scale-5x)}table{--table-background: var(--background);--table-color: var(--color);--table-border-color: var(--gray-20);--table-border-style: solid;--table-border-width: 1px;--table-hover: var(--color-rgb);--table-padding: var(--spacing-scale-3x);--table-font-weight: var(--font-weight-medium);--table-th-background: var(--background-alternative);--table-th-font-weight: var(--font-weight-semi-bold);--table-row-size: var(--spacing-scale-2x);border-collapse:collapse;width:100%}tr.selected,tr.is-selected{--color: var(--color-dark);--color-rgb: var(--color-dark-rgb);--text-color: var(--color-dark);--interactive: var(--interactive-dark);--interactive-rgb: var(--interactive-dark-rgb);--visited: var(--visited-dark);--hover: var(--hover-dark);--pressed: var(--pressed-dark);--focus-color: var(--focus-color-dark);--focus: var(--focus-color-dark)}label,.label{color:var(--color);font-size:var(--font-size-scale-base);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half)}fieldset,.fieldset{border:var(--surface-width-none);margin-bottom:var(--spacing-scale-5x);margin-top:0;padding:0}legend,.legend{color:var(--color);font-size:var(--font-size-scale-up-01);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-2x);margin-top:var(--spacing-scale-2x)}::placeholder,.placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}input,textarea,.input{color:var(--color-light);font-size:var(--font-size-scale-up-01);font-weight:var(--font-weight-medium);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-half)}code,.code{background:var(--gray-5);border-radius:4px;color:var(--gray-80);display:inline-block;font-family:monospace;font-size:var(--font-size-scale-base);font-weight:var(--font-weight-medium);line-height:var(--font-line-height-low);padding:var(--spacing-scale-half)}pre,.pre{background:var(--gray-5);margin:var(--spacing-scale-2x) 0 var(--spacing-scale-4x);padding:var(--spacing-scale-2x)}pre code,.pre code{display:inline;padding:0}*[data-toggle=collapse]:not(:disabled):hover{background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}*[data-toggle=collapse]:focus{outline:none}*[data-toggle=collapse].focus-visible,*[data-toggle=collapse]:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}@media(prefers-reduced-motion: reduce){:host,:host::before,:host::after,:host *,:host *::before,:host *::after{animation:none !important;scroll-behavior:auto !important;transition:none !important}}:host-context([data-wbc-reduced-motion=true])::before,:host-context([data-wbc-reduced-motion=true])::after,:host-context([data-wbc-reduced-motion=true]) *,:host-context([data-wbc-reduced-motion=true]) *::before,:host-context([data-wbc-reduced-motion=true]) *::after{animation:none !important;scroll-behavior:auto !important;transition:none !important}.br-tab{--tab-padding: var(--spacing-scale-3x);--tab-size: var(--tab-medium);--tab-large: var(--spacing-scale-3x);--tab-medium: var(--spacing-scale-2x);--tab-small: var(--spacing-scale-base)}.br-tab .tab-nav::-webkit-scrollbar{height:var(--spacing-scale-base);width:var(--spacing-scale-base)}.br-tab .tab-nav::-webkit-scrollbar-track{background:var(--gray-10)}.br-tab .tab-nav::-webkit-scrollbar-thumb{background:var(--gray-30)}.br-tab .tab-nav:hover::-webkit-scrollbar-thumb{background:var(--gray-40)}.br-tab .tab-nav{overflow-x:auto;width:100%}@media(max-width: 991px){.br-tab .tab-nav::-webkit-scrollbar{height:var(--spacing-scale-base);width:var(--spacing-scale-base)}.br-tab .tab-nav::-webkit-scrollbar-track{background:var(--gray-10)}.br-tab .tab-nav::-webkit-scrollbar-thumb{background:var(--gray-30)}.br-tab .tab-nav:hover::-webkit-scrollbar-thumb{background:var(--gray-40)}.br-tab .tab-nav{display:flex;overflow-x:auto;width:100%}}.br-tab .tab-nav ul{border-bottom:1px solid var(--border-color);display:flex;margin-bottom:0;margin-top:0;padding:0;width:100%}.br-tab .tab-item{align-items:center;display:flex;justify-content:center;position:relative;white-space:nowrap}.br-tab .tab-item button,.br-tab .tab-item a{--focus-offset: calc(var(--spacing-scale-half) * -1)}.br-tab .tab-item button:focus,.br-tab .tab-item a:focus{outline:none}.br-tab .tab-item button.focus-visible,.br-tab .tab-item button:focus-visible,.br-tab .tab-item a.focus-visible,.br-tab .tab-item a:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}.br-tab .tab-item button:not(:disabled):hover,.br-tab .tab-item a:not(:disabled):hover{background-image:linear-gradient(rgba(var(--color-rgb), var(--hover)), rgba(var(--color-rgb), var(--hover)))}.br-tab .tab-item button,.br-tab .tab-item a{background-color:rgba(0,0,0,0);border:0;border-bottom:4px solid rgba(0,0,0,0);color:var(--color);display:inline-block;font-size:var(--font-size-scale-up-02);font-weight:var(--font-weight-medium);line-height:1;padding:var(--tab-size) var(--tab-padding);text-align:center;white-space:nowrap}.br-tab .tab-item:first-child{padding-left:0}.br-tab .tab-item:last-child{padding-right:0}.br-tab .tab-item.is-active button,.br-tab .tab-item.active button{border-bottom:4px solid var(--active);color:var(--active)}.br-tab .tab-item.is-active .results,.br-tab .tab-item.active .results{--font-weight: var(--font-weight-semi-bold);color:var(--active)}.br-tab .results{display:flex;font-weight:var(--font-weight);justify-content:center;margin-top:var(--spacing-scale-2x);position:absolute;top:100%}.br-tab[data-counter=true] .tab-nav ul{margin-bottom:calc(var(--spacing-scale-2x) + var(--font-size-scale-up-02) + var(--spacing-scale-base))}.br-tab .tab-content .tab-panel{color:var(--text-color);display:none}.br-tab .tab-content .tab-panel.is-active,.br-tab .tab-content .tab-panel.active{display:block}.br-tab.small,.br-tab[small]{--tab-size: var(--tab-small)}.br-tab.medium,.br-tab[medium]{--tab-size: var(--tab-medium)}.br-tab.large,.br-tab[large]{--tab-size: var(--tab-large)}.br-tab.inverted,.br-tab.dark-mode{--color: var(--color-dark);--color-rgb: var(--color-dark-rgb);--text-color: var(--color-dark);--interactive: var(--interactive-dark);--interactive-rgb: var(--interactive-dark-rgb);--visited: var(--visited-dark);--hover: var(--hover-dark);--pressed: var(--pressed-dark);--focus-color: var(--focus-color-dark);--focus: var(--focus-color-dark)}.br-tab.inverted .tab-item.active button,.br-tab.dark-mode .tab-item.active button{border-bottom-color:var(--background-light);color:var(--color)}:host{display:block;height:100%;min-height:0;overflow:hidden;--br-tab-height: auto}.br-tab{box-sizing:border-box;display:flex;flex-direction:column;height:var(--br-tab-height);min-height:0;width:100%;overflow:hidden;padding:var(--tab-container-padding, 16px)}.br-tab.scroll-disabled{height:auto;min-height:auto;overflow:visible}.tab-nav{display:flex;flex-direction:row;align-items:flex-start;gap:0;list-style:none;margin:0;padding:0;flex:0 0 auto}.tab-nav[data-counter=true]{min-height:102px;overflow:hidden;max-height:65px}.tab-nav .tab-item{display:flex;flex-direction:column;align-items:center;position:relative}.tab-nav .tab-item button .icon:not(:only-child){margin-right:var(--spacing-scale-base)}br-divider{--divider-margin-top: 0;--divider-margin-bottom: var(--spacing-scale-2x, 8px)}.tab-content{flex:1 1 auto;min-height:0;overflow-y:auto}.scroll-disabled .tab-content{overflow:hidden}.results{display:flex;font-weight:var(--font-weight);justify-content:center;margin-top:var(--spacing-scale-2x);position:absolute;top:100%}:host([data-playground-badges]) .results{align-items:center;background:var(--danger, #e53e3e);border:2px solid var(--background, #fff);border-radius:999px;color:#fff;font-size:.65rem;font-weight:700;height:16px;line-height:1;margin-top:0;min-width:16px;padding:0 3px;right:0;top:-4px;z-index:1}:host([data-playground-badges]) .tab-nav[data-counter=true]{min-height:0;max-height:none;overflow:visible}:host([data-playground-badges]) .tab-nav .tab-item{overflow:visible}
1
+ *,*::before,*::after{box-sizing:border-box}:host{line-height:var(--font-line-height-medium);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}main{display:block}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace;font-size:1em}a{background-color:rgba(0,0,0,0)}b,strong{font-weight:bolder}code{font-family:monospace;font-size:1em}small{font-size:80%}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:var(--font-line-height-medium);margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{appearance:none}::-webkit-file-upload-button{appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}.d-none{display:none !important}@media(min-width: 576px){.d-sm-block{display:block !important}.d-sm-flex{display:flex !important}}[data-toggle=dropdown]+*{position:absolute}.dropdown{position:relative}.dropdown [data-toggle=dropdown]+*{box-shadow:var(--surface-shadow-sm);left:0;position:absolute;top:100%}.dropdown>.br-notification{left:auto;right:0}.dropdown .br-item{--color: var(--color-light);--color-rgb: var(--color-light-rgb);--text-color: var(--color-light);--interactive: var(--interactive-light);--interactive-rgb: var(--color-rgb);--visited: var(--visited-light);--hover: var(--hover-light);--pressed: var(--pressed-light);--focus-color: var(--focus-color-light);--focus: var(--focus-color-light);--item-padding-y: var(--spacing-scale-2x);background-color:var(--background-light);color:var(--color)}.dropdown .br-item:not(:last-child){border-bottom:1px solid var(--border-color)}.dropdown .br-item.selected{--color: var(--color-dark);--color-rgb: var(--color-dark-rgb);--text-color: var(--color-dark);--interactive: var(--interactive-dark);--interactive-rgb: var(--interactive-dark-rgb);--visited: var(--visited-dark);--hover: var(--hover-dark);--pressed: var(--pressed-dark);--focus-color: var(--focus-color-dark);--focus: var(--focus-color-dark)}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.align-items-center{align-items:center !important}.col,[class*=col-]{padding-left:calc(var(--grid-gutter)*.5);padding-right:calc(var(--grid-gutter)*.5);width:100%}.col{flex:1 0 0%;min-width:8.3333333333%}.col-auto{flex:0 0 auto;width:auto}.col-2{flex-basis:16.6666666667%;max-width:16.6666666667%}.container,.container-fluid,.container-lg{--grid-margin: var(--grid-portrait-margin);--grid-maxwidth: var(--grid-portrait-maxwidth);margin-left:auto;margin-right:auto;max-width:var(--grid-maxwidth);padding-left:var(--grid-margin);padding-right:var(--grid-margin);width:100%}.row{--grid-gutter: var(--grid-portrait-gutter);display:flex;flex-wrap:wrap;margin-left:calc(var(--grid-gutter)*-0.5);margin-right:calc(var(--grid-gutter)*-0.5)}@media(min-width: 576px){.container,.container-lg,.container-fluid{--grid-margin: var(--grid-tablet-margin)}.row{--grid-gutter: var(--grid-tablet-gutter)}.container{--grid-maxwidth: calc(var(--grid-breakpoint-sm) - var(--grid-tablet-margin))}.col-sm-4{flex-basis:33.3333333333%;max-width:33.3333333333%}}@media(min-width: 992px){.container,.container-lg,.container-fluid{--grid-margin: var(--grid-tablet-margin)}.row{--grid-gutter: var(--grid-tablet-gutter)}.container{--grid-maxwidth: calc(var(--grid-breakpoint-md) - var(--grid-tablet-margin))}}@media(min-width: 1280px){.container,.container-lg,.container-fluid{--grid-margin: var(--grid-desktop-margin)}.row{--grid-gutter: var(--grid-desktop-gutter)}.container,.container-lg{--grid-maxwidth: calc(var(--grid-breakpoint-lg) - var(--grid-desktop-margin))}.col-lg-3{flex-basis:25%;max-width:25%}}@media(min-width: 1600px){.container,.container-lg,.container-fluid{--grid-margin: var(--grid-tv-margin)}.row{--grid-gutter: var(--grid-tv-gutter)}.container,.container-lg{--grid-maxwidth: calc(var(--grid-breakpoint-xl) - var(--grid-tv-margin))}}.ease{animation-timing-function:cubic-bezier(0.25, 0.1, 0.25, 1)}.ease-out{animation-timing-function:cubic-bezier(0, 0, 0.58, 1)}.ease-in-out{animation-timing-function:cubic-bezier(0.42, 0, 0.58, 1)}.fast{animation-duration:var(--duration-fast)}.slow{animation-duration:var(--duration-slow)}.mt-1{margin-top:var(--spacing-scale-half) !important}.mr-1{margin-right:var(--spacing-scale-half) !important}.mb-1{margin-bottom:var(--spacing-scale-half) !important}.ml-1{margin-left:var(--spacing-scale-half) !important}.mx-3{margin-left:var(--spacing-scale-2x) !important;margin-right:var(--spacing-scale-2x) !important}.mb-4{margin-bottom:var(--spacing-scale-3x) !important}.ml-auto{margin-left:auto !important}.pt-half{padding-top:var(--spacing-scale-half) !important}@media(min-width: 576px){.ml-sm-0{margin-left:var(--spacing-scale-default) !important}}.highlight{background:var(--status-highlight-background) linear-gradient(var(--status-highlight-overlay), var(--status-highlight-overlay));color:var(--status-highlight-text);padding:0 var(--spacing-scale-half)}[disabled],.disabled{cursor:not-allowed;opacity:var(--disabled)}[disabled] *,.disabled *{pointer-events:none}fieldset[disabled]{opacity:1}.text-center{text-align:center !important}.text-right{text-align:right !important}.text-nowrap{white-space:nowrap !important}.text-uppercase{text-transform:uppercase !important}.text-bold{font-weight:700 !important}.text-base{font-size:var(--font-size-scale-base) !important}.text-down-01{font-size:var(--font-size-scale-down-01) !important}@media(min-width: 576px){.text-sm-center{text-align:center !important}.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}}p{color:var(--color);font-size:var(--font-size-scale-base);font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-2x);margin-top:0}p a{text-decoration:underline}@media(min-width: 576px){p{font-size:var(--font-size-scale-up-01)}}a{--focus-offset: var(--spacing-scale-half)}a:focus{outline:none}a.focus-visible,a:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}a:not(:disabled):hover{background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}a:not(:disabled):active{background-image:linear-gradient(rgba(var(--interactive-rgb), var(--pressed)), rgba(var(--interactive-rgb), var(--pressed)))}a{color:var(--interactive);text-decoration:none}.main-content a{text-decoration:underline}button{cursor:pointer}img{max-width:100%;vertical-align:middle}h2,.h2{color:var(--color);font-size:var(--font-size-scale-up-03);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-2xh);margin-top:var(--spacing-scale-3xh);padding-bottom:var(--spacing-scale-2xh)}@media(min-width: 576px){.h2,h2{font-size:var(--font-size-scale-up-05);font-weight:var(--font-weight-regular)}}ul,ol{margin-bottom:var(--spacing-scale-2x);margin-top:0;padding:0 0 0 var(--spacing-scale-5x)}table{--table-background: var(--background);--table-color: var(--color);--table-border-color: var(--gray-20);--table-border-style: solid;--table-border-width: 1px;--table-hover: var(--color-rgb);--table-padding: var(--spacing-scale-3x);--table-font-weight: var(--font-weight-medium);--table-th-background: var(--background-alternative);--table-th-font-weight: var(--font-weight-semi-bold);--table-row-size: var(--spacing-scale-2x);border-collapse:collapse;width:100%}tr.selected,tr.is-selected{--color: var(--color-dark);--color-rgb: var(--color-dark-rgb);--text-color: var(--color-dark);--interactive: var(--interactive-dark);--interactive-rgb: var(--interactive-dark-rgb);--visited: var(--visited-dark);--hover: var(--hover-dark);--pressed: var(--pressed-dark);--focus-color: var(--focus-color-dark);--focus: var(--focus-color-dark)}label,.label{color:var(--color);font-size:var(--font-size-scale-base);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half)}fieldset,.fieldset{border:var(--surface-width-none);margin-bottom:var(--spacing-scale-5x);margin-top:0;padding:0}legend,.legend{color:var(--color);font-size:var(--font-size-scale-up-01);font-weight:var(--font-weight-semi-bold);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-2x);margin-top:var(--spacing-scale-2x)}::placeholder,.placeholder{color:var(--color-light);font-size:var(--font-size-scale-base);font-style:italic;font-weight:var(--font-weight-regular);line-height:var(--font-line-height-medium);margin-bottom:var(--spacing-scale-half);margin-top:var(--spacing-scale-half);opacity:1}input,textarea,.input{color:var(--color-light);font-size:var(--font-size-scale-up-01);font-weight:var(--font-weight-medium);line-height:var(--font-line-height-low);margin-bottom:var(--spacing-scale-half)}code,.code{background:var(--gray-5);border-radius:4px;color:var(--gray-80);display:inline-block;font-family:monospace;font-size:var(--font-size-scale-base);font-weight:var(--font-weight-medium);line-height:var(--font-line-height-low);padding:var(--spacing-scale-half)}pre,.pre{background:var(--gray-5);margin:var(--spacing-scale-2x) 0 var(--spacing-scale-4x);padding:var(--spacing-scale-2x)}pre code,.pre code{display:inline;padding:0}*[data-toggle=collapse]:not(:disabled):hover{background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}*[data-toggle=collapse]:focus{outline:none}*[data-toggle=collapse].focus-visible,*[data-toggle=collapse]:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}@media(prefers-reduced-motion: reduce){:host,:host::before,:host::after,:host *,:host *::before,:host *::after{animation:none !important;scroll-behavior:auto !important;transition:none !important}}:host-context([data-wbc-reduced-motion=true])::before,:host-context([data-wbc-reduced-motion=true])::after,:host-context([data-wbc-reduced-motion=true]) *,:host-context([data-wbc-reduced-motion=true]) *::before,:host-context([data-wbc-reduced-motion=true]) *::after{animation:none !important;scroll-behavior:auto !important;transition:none !important}.br-tab{--tab-padding: var(--spacing-scale-3x);--tab-size: var(--tab-medium);--tab-large: var(--spacing-scale-3x);--tab-medium: var(--spacing-scale-2x);--tab-small: var(--spacing-scale-base)}.br-tab .tab-nav::-webkit-scrollbar{height:var(--spacing-scale-base);width:var(--spacing-scale-base)}.br-tab .tab-nav::-webkit-scrollbar-track{background:var(--gray-10)}.br-tab .tab-nav::-webkit-scrollbar-thumb{background:var(--gray-30)}.br-tab .tab-nav:hover::-webkit-scrollbar-thumb{background:var(--gray-40)}.br-tab .tab-nav{overflow-x:auto;width:100%}@media(max-width: 991px){.br-tab .tab-nav::-webkit-scrollbar{height:var(--spacing-scale-base);width:var(--spacing-scale-base)}.br-tab .tab-nav::-webkit-scrollbar-track{background:var(--gray-10)}.br-tab .tab-nav::-webkit-scrollbar-thumb{background:var(--gray-30)}.br-tab .tab-nav:hover::-webkit-scrollbar-thumb{background:var(--gray-40)}.br-tab .tab-nav{display:flex;overflow-x:auto;width:100%}}.br-tab .tab-nav ul{border-bottom:1px solid var(--border-color);display:flex;margin-bottom:0;margin-top:0;padding:0;width:100%}.br-tab .tab-item{align-items:center;display:flex;justify-content:center;position:relative;white-space:nowrap}.br-tab .tab-item button,.br-tab .tab-item a{--focus-offset: calc(var(--spacing-scale-half) * -1)}.br-tab .tab-item button:focus,.br-tab .tab-item a:focus{outline:none}.br-tab .tab-item button.focus-visible,.br-tab .tab-item button:focus-visible,.br-tab .tab-item a.focus-visible,.br-tab .tab-item a:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}.br-tab .tab-item button:not(:disabled):hover,.br-tab .tab-item a:not(:disabled):hover{background-image:linear-gradient(rgba(var(--color-rgb), var(--hover)), rgba(var(--color-rgb), var(--hover)))}.br-tab .tab-item button,.br-tab .tab-item a{background-color:rgba(0,0,0,0);border:0;border-bottom:4px solid rgba(0,0,0,0);color:var(--color);display:inline-block;font-size:var(--font-size-scale-up-02);font-weight:var(--font-weight-medium);line-height:1;padding:var(--tab-size) var(--tab-padding);text-align:center;white-space:nowrap}.br-tab .tab-item:first-child{padding-left:0}.br-tab .tab-item:last-child{padding-right:0}.br-tab .tab-item.is-active button,.br-tab .tab-item.active button{border-bottom:4px solid var(--active);color:var(--active)}.br-tab .tab-item.is-active .results,.br-tab .tab-item.active .results{--font-weight: var(--font-weight-semi-bold);color:var(--active)}.br-tab .results{display:flex;font-weight:var(--font-weight);justify-content:center;margin-top:var(--spacing-scale-2x);position:absolute;top:100%}.br-tab[data-counter=true] .tab-nav ul{margin-bottom:calc(var(--spacing-scale-2x) + var(--font-size-scale-up-02) + var(--spacing-scale-base))}.br-tab .tab-content .tab-panel{color:var(--text-color);display:none}.br-tab .tab-content .tab-panel.is-active,.br-tab .tab-content .tab-panel.active{display:block}.br-tab.small,.br-tab[small]{--tab-size: var(--tab-small)}.br-tab.medium,.br-tab[medium]{--tab-size: var(--tab-medium)}.br-tab.large,.br-tab[large]{--tab-size: var(--tab-large)}.br-tab.inverted,.br-tab.dark-mode{--color: var(--color-dark);--color-rgb: var(--color-dark-rgb);--text-color: var(--color-dark);--interactive: var(--interactive-dark);--interactive-rgb: var(--interactive-dark-rgb);--visited: var(--visited-dark);--hover: var(--hover-dark);--pressed: var(--pressed-dark);--focus-color: var(--focus-color-dark);--focus: var(--focus-color-dark)}.br-tab.inverted .tab-item.active button,.br-tab.dark-mode .tab-item.active button{border-bottom-color:var(--background-light);color:var(--color)}:host{display:block;height:100%;min-height:0;overflow:hidden;--br-tab-height: auto}.br-tab{box-sizing:border-box;display:flex;flex-direction:column;height:var(--br-tab-height);min-height:0;width:100%;overflow:hidden;padding:var(--tab-container-padding, 16px)}.br-tab.scroll-disabled{height:auto;min-height:auto;overflow:visible}.tab-nav{display:flex;flex-direction:row;align-items:flex-start;gap:0;list-style:none;margin:0;padding:0;flex:0 0 auto}.tab-nav[data-counter=true]{min-height:102px;overflow:hidden;max-height:65px}.tab-nav .tab-item{display:flex;flex-direction:column;align-items:center;position:relative}.tab-nav .tab-item button .icon:not(:only-child){margin-right:var(--spacing-scale-base)}.tab-nav .tab-item button .icon[hidden]{display:none}br-divider{--divider-margin-top: 0;--divider-margin-bottom: var(--spacing-scale-2x, 8px)}.tab-content{flex:1 1 auto;min-height:0;overflow-y:auto}.scroll-disabled .tab-content{overflow:hidden}.results{display:flex;font-weight:var(--font-weight);justify-content:center;margin-top:var(--spacing-scale-2x);position:absolute;top:100%}:host([data-playground-badges]) .results{align-items:center;background:var(--danger, #e53e3e);border:2px solid var(--background, #fff);border-radius:999px;color:#fff;font-size:.65rem;font-weight:700;height:16px;line-height:1;margin-top:0;min-width:16px;padding:0 3px;right:0;top:-4px;z-index:1}:host([data-playground-badges]) .tab-nav[data-counter=true]{min-height:0;max-height:none;overflow:visible}:host([data-playground-badges]) .tab-nav .tab-item{overflow:visible}
@@ -6,7 +6,9 @@ import { Host, h, } from "@stencil/core";
6
6
  import { FOCUSABLE_SELECTORS } from "../../shared/utils/focus";
7
7
  import { getNextElementIndex } from "../../shared/utils/getNextElement";
8
8
  import { generateUniqueId } from "../../shared/utils/id";
9
+ import { reportInvalidPropValue } from "../../shared/utils/prop-warning";
9
10
  import { resolveAllowedPropValue, resolveDensity } from "../../shared/utils/props";
11
+ import { isIconClassList } from "../icon/icon.utils";
10
12
  const TAB_COLOR_MODES = ['dark'];
11
13
  const TAB_ALIGNMENTS = ['start', 'center', 'end'];
12
14
  const CSS_FUNCTION_HEIGHT_REGEX = /^(calc|min|max|clamp)\(.+\)$/;
@@ -48,6 +50,7 @@ const CSS_UNIT_HEIGHT_REGEX = /^\d+(\.\d+)?(px|%|vh|vw|dvh|svh|lvh|vmin|vmax|rem
48
50
  * @category Navegação, Seleção, Conteúdo
49
51
  * @status stable
50
52
  * @slot default - Slot para inserir os itens das abas (br-tab-item)
53
+ * @slot icon-{id} - Ícone da aba cujo `br-tab-item` tem o `id` informado (ex.: `<i slot="icon-avisos" class="fas fa-bell" aria-hidden="true"></i>`). Forma preferida para ícones por classe CSS, como Font Awesome: o elemento fica em light DOM e recebe os estilos globais da página. Tem precedência sobre a prop `icon` do item.
51
54
  *
52
55
  * @part container - Contêiner principal que envolve toda a estrutura do componente (navegação e conteúdo). Expõe o elemento para customizações de fundo, bordas e espaçamentos globais.
53
56
  * @part nav - Área de navegação (`tablist`) onde os botões das abas estão localizados. Permite customizar o alinhamento, espaçamento e plano de fundo da barra de abas.
@@ -124,12 +127,19 @@ export class Tab {
124
127
  this.tabItems = nextTabItems;
125
128
  }
126
129
  const colorMode = this.effectiveColorMode;
127
- // Garante que cada tab item tenha um ID único
130
+ // Identificador de cada aba: o `id` nativo (canônico) tem precedência sobre o alias
131
+ // legado `tab-item-id`; só sem nenhum dos dois um id é gerado. O item pode ainda não
132
+ // estar hidratado aqui, então os atributos são a fonte confiável. Depois do render, o
133
+ // br-tab-item escreve `tab-panel-{tabItemId}` no próprio `id`; esse valor não é do consumidor.
128
134
  this.tabItems.forEach((item) => {
129
- if (item.tabItemId === undefined ||
130
- item.tabItemId === null ||
131
- (typeof item.tabItemId === 'string' && item.tabItemId === '') ||
132
- item.hasAttribute('tab-item-id') === false) {
135
+ const legacyId = item.getAttribute('tab-item-id');
136
+ const consumerId = item.id && item.id !== `tab-panel-${legacyId ?? item.tabItemId}` ? item.id : '';
137
+ const explicitId = consumerId || legacyId;
138
+ if (explicitId) {
139
+ if (item.tabItemId !== explicitId)
140
+ item.tabItemId = explicitId;
141
+ }
142
+ else if (typeof item.tabItemId !== 'string' || item.tabItemId === '') {
133
143
  const id = generateUniqueId();
134
144
  item.tabItemId = id;
135
145
  item.setAttribute('tab-item-id', id);
@@ -167,6 +177,9 @@ export class Tab {
167
177
  this.handleKeyNavigation(index, event);
168
178
  }
169
179
  };
180
+ this.handleIconSlotChange = () => {
181
+ this.tabItems = [...this.tabItems];
182
+ };
170
183
  }
171
184
  /**
172
185
  * Observa mudanças no tab ativo para atualizar os estados
@@ -356,8 +369,22 @@ export class Tab {
356
369
  'dark-mode': this.effectiveColorMode === 'dark',
357
370
  };
358
371
  }
359
- renderTabIcon(icon) {
360
- return /\s/.test(icon) ? (h("i", { class: icon, "aria-hidden": "true" })) : (h("br-icon", { iconName: icon, width: "16", height: "16" }));
372
+ hasSlottedIcon(tabItemId) {
373
+ return Array.from(this.el.children).some((child) => child.getAttribute('slot') === `icon-${tabItemId}`);
374
+ }
375
+ /**
376
+ * Ícone da aba: o slot `icon-{id}` tem precedência; a prop `icon` do item é o fallback e
377
+ * aceita identificadores Iconify. Classes CSS na prop não funcionam no Shadow DOM e são ignoradas.
378
+ */
379
+ renderTabIcon(item) {
380
+ const hasSlot = this.hasSlottedIcon(item.tabItemId);
381
+ const icon = item.icon?.trim();
382
+ if (icon && isIconClassList(icon)) {
383
+ reportInvalidPropValue(item, 'icon', icon, 'Classes CSS não são exibidas no Shadow DOM do br-tab.', `Use o slot "icon-${item.tabItemId}" no br-tab ou um identificador Iconify, como "fa6-solid:bell".`);
384
+ }
385
+ const fallback = icon && !isIconClassList(icon) ? h("br-icon", { iconName: icon, width: "16", height: "16" }) : null;
386
+ // O slot é sempre renderizado para que um ícone adicionado depois dispare `slotchange`.
387
+ return (h("span", { class: "icon", hidden: !hasSlot && !fallback }, h("slot", { name: `icon-${item.tabItemId}`, onSlotchange: this.handleIconSlotChange }, fallback)));
361
388
  }
362
389
  /**
363
390
  * Retorna o alinhamento em formato flexbox
@@ -421,12 +448,12 @@ export class Tab {
421
448
  render() {
422
449
  const hasCounter = this.tabItems.some((item) => item.counter);
423
450
  const resolvedHeight = this.getResolvedHeight();
424
- return (h(Host, { key: 'c9a65e1efd1a00d6fb810e7e4b44be666ea57101' }, h("div", { key: '1ec7827a93ae3ba4aa07f9220eda037e1401878e', class: this.getCssClassMap(), id: this.customId, part: "container", style: resolvedHeight !== undefined ? { '--br-tab-height': resolvedHeight } : undefined }, h("div", { key: '38745551852b05c04ba3ee034f3b6ff8ed566bbc', class: "tab-nav", role: "tablist", "aria-label": this.label, "data-counter": hasCounter ? 'true' : 'false', part: "nav", style: { justifyContent: this.getAlignItemsStyle() } }, this.tabItems.map((item, index) => {
451
+ return (h(Host, { key: '8f9bb52658cb37048b10b4c81eb4399771ab28f6' }, h("div", { key: '0aa48a13db1b2229890500afa65bd2e78b24727e', class: this.getCssClassMap(), id: this.customId, part: "container", style: resolvedHeight !== undefined ? { '--br-tab-height': resolvedHeight } : undefined }, h("div", { key: '34bb73421269703b161928f03dc9a22b2d0cf629', class: "tab-nav", role: "tablist", "aria-label": this.label, "data-counter": hasCounter ? 'true' : 'false', part: "nav", style: { justifyContent: this.getAlignItemsStyle() } }, this.tabItems.map((item, index) => {
425
452
  const isActive = item.tabItemId === this.activeTabId;
426
453
  const showOnlyIcon = item.iconOnly ?? (item.onlyIcon || item.hasAttribute('only-icon'));
427
454
  const itemLabel = item.label ?? item.tabItemTitle;
428
- return (h("div", { key: item.tabItemId, class: this.getTabItemCssClassMap(isActive), role: "none" }, h("button", { type: "button", id: `tab-button-${item.tabItemId}`, part: "button", role: "tab", "aria-selected": isActive ? 'true' : 'false', tabindex: isActive ? 0 : -1, "aria-setsize": this.tabItems.length, "aria-posinset": index + 1, "aria-label": `${itemLabel}${item.counter ? ` (${item.counter})` : ''}`, title: item.getAttribute('title') || undefined, "data-tab-id": item.tabItemId, "data-tab-index": index, onClick: this.handleTabButtonClick, onKeyDown: this.handleTabButtonKeyDown }, h("span", { class: "name" }, item.icon && h("span", { class: "icon" }, this.renderTabIcon(item.icon)), !showOnlyIcon && h("span", null, itemLabel))), isActive && h("span", { class: "tab-indicator", part: "indicator", "aria-hidden": "true" }), item.counter && (h("span", { id: `tab-counter-${item.tabItemId}`, class: "results" }, item.counter))));
429
- })), h("br-divider", { key: 'a4e612a078864d3aa8e0488401402570cf2730b0', "color-mode": this.effectiveColorMode }), h("div", { key: 'ff1ade0a0392741dad66552ed1941d5991c608cc', class: "tab-content", part: "content" }, h("slot", { key: '91d9e7d59b104935d91d78a401d7e0c8e7862ba2', ref: (el) => {
455
+ return (h("div", { key: item.tabItemId, class: this.getTabItemCssClassMap(isActive), role: "none" }, h("button", { type: "button", id: `tab-button-${item.tabItemId}`, part: "button", role: "tab", "aria-selected": isActive ? 'true' : 'false', tabindex: isActive ? 0 : -1, "aria-setsize": this.tabItems.length, "aria-posinset": index + 1, "aria-label": `${itemLabel}${item.counter ? ` (${item.counter})` : ''}`, title: item.getAttribute('title') || undefined, "data-tab-id": item.tabItemId, "data-tab-index": index, onClick: this.handleTabButtonClick, onKeyDown: this.handleTabButtonKeyDown }, h("span", { class: "name" }, this.renderTabIcon(item), !showOnlyIcon && h("span", null, itemLabel))), isActive && h("span", { class: "tab-indicator", part: "indicator", "aria-hidden": "true" }), item.counter && (h("span", { id: `tab-counter-${item.tabItemId}`, class: "results" }, item.counter))));
456
+ })), h("br-divider", { key: '379d4698cf962821440ba0db49f6ad6c4f4d9672', "color-mode": this.effectiveColorMode }), h("div", { key: 'ae45441ee380aff00b3d10ce204468d9d5337161', class: "tab-content", part: "content" }, h("slot", { key: 'fd27af7f71c2b8ab6aceee196764b03cf53efbe0', ref: (el) => {
430
457
  this.slotElement = el;
431
458
  }, onSlotchange: this.registerTabItems })))));
432
459
  }
@@ -0,0 +1,33 @@
1
+ const select = document.querySelector('#select-remote-example');
2
+ const status = document.querySelector('#select-remote-status');
3
+ const options = [
4
+ { label: 'SERPRO', value: 'serpro' },
5
+ { label: 'Controladoria-Geral da União', value: 'cgu' },
6
+ { label: 'Instituto Brasileiro de Geografia e Estatística', value: 'ibge' },
7
+ { label: 'Instituto Nacional do Seguro Social', value: 'inss' },
8
+ { label: 'Tesouro Nacional', value: 'tesouro' },
9
+ ];
10
+ let requestId = 0;
11
+
12
+ select?.addEventListener('brSelectSearch', ({ detail: { query } }) => {
13
+ const currentRequest = ++requestId;
14
+ const normalizedQuery = query.trim().toLocaleLowerCase();
15
+ select.loading = true;
16
+ if (status) status.textContent = 'Consultando opções…';
17
+
18
+ window.setTimeout(async () => {
19
+ if (currentRequest !== requestId) return;
20
+
21
+ const result = normalizedQuery
22
+ ? options.filter(({ label, value }) => `${label} ${value}`.toLocaleLowerCase().includes(normalizedQuery))
23
+ : options;
24
+
25
+ await select.setOptions(result);
26
+ if (currentRequest !== requestId) return;
27
+
28
+ select.loading = false;
29
+ if (status) {
30
+ status.textContent = result.length ? `${result.length} opção(ões) encontrada(s).` : 'Nenhuma opção encontrada.';
31
+ }
32
+ }, 350);
33
+ });
@@ -0,0 +1,13 @@
1
+ const select = document.querySelector('#select-virtualized-example');
2
+ await customElements.whenDefined('br-select');
3
+
4
+ const options = Array.from({ length: 1000 }, (_, index) => {
5
+ const number = String(index + 1).padStart(4, '0');
6
+ return {
7
+ label: `Serviço público ${number}`,
8
+ value: `servico-${number}`,
9
+ };
10
+ });
11
+
12
+ await select?.setOptions(options);
13
+ await select?.show();
@@ -0,0 +1,25 @@
1
+ // Simula um envio para demonstrar o contrato de `uploadHandler`: a aplicação
2
+ // recebe `file`, `signal` e `onProgress`, e resolve/rejeita a Promise conforme
3
+ // o resultado real do envio. Aqui não há backend, então o progresso é simulado.
4
+ function enviarArquivoSimulado({ signal, onProgress }) {
5
+ return new Promise((resolve, reject) => {
6
+ let progress = 0;
7
+
8
+ const interval = setInterval(() => {
9
+ progress = Math.min(progress + 20, 100);
10
+ onProgress(progress);
11
+ if (progress === 100) {
12
+ clearInterval(interval);
13
+ resolve();
14
+ }
15
+ }, 300);
16
+
17
+ signal.addEventListener('abort', () => {
18
+ clearInterval(interval);
19
+ reject(signal.reason);
20
+ });
21
+ });
22
+ }
23
+
24
+ const upload = document.getElementById('upload-handler-example');
25
+ upload.uploadHandler = ({ file, signal, onProgress }) => enviarArquivoSimulado({ file, signal, onProgress });
@@ -90,7 +90,14 @@
90
90
  const select = document.createElement('br-select');
91
91
  select.setAttribute('aria-label', label);
92
92
  select.setAttribute('density', 'small');
93
- select.options = options;
93
+ // Opções declarativas com br-select-option (a propriedade `options` é legada).
94
+ options.forEach(({ label: optionLabel, value: optionValue, selected }) => {
95
+ const option = document.createElement('br-select-option');
96
+ option.setAttribute('value', optionValue);
97
+ option.setAttribute('label', optionLabel);
98
+ if (selected) option.setAttribute('selected', '');
99
+ select.appendChild(option);
100
+ });
94
101
  setControlValue(select, value);
95
102
  return select;
96
103
  };
@@ -212,19 +219,12 @@
212
219
  });
213
220
  };
214
221
 
215
- const applyPropertyUpdate = ({ event, input, prop, definition, getHtml, selected, setHtml }) => {
222
+ const applyPropertyUpdate = ({ input, prop, definition, getHtml, selected, setHtml }) => {
216
223
  const nextDoc = parseHtml(getHtml());
217
224
  const target = getTargetElement(nextDoc, selected);
218
225
  if (!target) return;
219
226
 
220
- const value =
221
- prop.control === 'checkbox'
222
- ? event.type === 'checkedChange'
223
- ? event.detail
224
- : input.checked
225
- : event.detail !== undefined
226
- ? event.detail
227
- : input.value;
227
+ const value = prop.control === 'checkbox' ? input.checked : input.value;
228
228
  updateProperty(target, prop, value);
229
229
 
230
230
  const booleanAttributes = getBooleanAttributes(definition);
@@ -234,9 +234,8 @@
234
234
  const createPropertyRow = ({ prop, definition, getHtml, selected, selectedElement, setHtml }) => {
235
235
  const rawValue = getPropertyValue(selectedElement, prop);
236
236
  const input = createPropertyControl(prop, rawValue, selectedElement);
237
- const update = (event) =>
237
+ const update = () =>
238
238
  applyPropertyUpdate({
239
- event,
240
239
  input,
241
240
  prop,
242
241
  definition,
@@ -244,7 +243,8 @@
244
243
  selected,
245
244
  setHtml,
246
245
  });
247
- input.addEventListener(prop.control === 'checkbox' ? 'checkedChange' : 'valueChange', update);
246
+ // Eventos nativos: `change` em checkbox e select; `input` em campos de texto.
247
+ input.addEventListener(prop.control === 'checkbox' || prop.control === 'select' ? 'change' : 'input', update);
248
248
 
249
249
  const tr = document.createElement('tr');
250
250
  const nameTd = document.createElement('td');
@@ -429,7 +429,6 @@
429
429
  row.hidden = value.length > 0 && !row.dataset.propertySearch.includes(value);
430
430
  });
431
431
  };
432
- filter.addEventListener('valueChange', applyFilter);
433
432
  filter.addEventListener('input', applyFilter);
434
433
  table.appendChild(tbody);
435
434
  appendField(section, table);
@@ -523,8 +522,8 @@
523
522
  }),
524
523
  value: state.selected,
525
524
  });
526
- select.addEventListener('valueChange', (event) => {
527
- state.selected = event.detail;
525
+ select.addEventListener('change', () => {
526
+ state.selected = select.value;
528
527
  scheduleRenderControls(root, state);
529
528
  });
530
529
  field.appendChild(select);
@@ -233,7 +233,6 @@ async function initializeMenu() {
233
233
  setLinks();
234
234
  if (MENU_FILTER) {
235
235
  MENU_FILTER.addEventListener('input', filterMenu);
236
- MENU_FILTER.addEventListener('valueChange', filterMenu);
237
236
  MENU_FILTER.addEventListener('click', (e) => {
238
237
  const path = e.composedPath();
239
238
  const isActionClick = path.some(