@govbr-ds/webcomponents 2.0.0-next.13 → 2.0.0-next.14

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 (194) hide show
  1. package/dist/cjs/br-avatar.cjs.entry.js +6 -6
  2. package/dist/cjs/br-avatar.cjs.entry.js.map +1 -1
  3. package/dist/cjs/br-button_2.cjs.entry.js +20 -21
  4. package/dist/cjs/br-button_2.cjs.entry.js.map +1 -1
  5. package/dist/cjs/br-checkbox.cjs.entry.js +9 -8
  6. package/dist/cjs/br-checkbox.cjs.entry.js.map +1 -1
  7. package/dist/cjs/br-dropdown.cjs.entry.js +142 -0
  8. package/dist/cjs/br-dropdown.cjs.entry.js.map +1 -0
  9. package/dist/cjs/br-input.cjs.entry.js +13 -12
  10. package/dist/cjs/br-input.cjs.entry.js.map +1 -1
  11. package/dist/cjs/br-item.cjs.entry.js +24 -24
  12. package/dist/cjs/br-item.cjs.entry.js.map +1 -1
  13. package/dist/cjs/br-list.cjs.entry.js +8 -7
  14. package/dist/cjs/br-list.cjs.entry.js.map +1 -1
  15. package/dist/cjs/br-loading.cjs.entry.js +3 -3
  16. package/dist/cjs/br-loading.cjs.entry.js.map +1 -1
  17. package/dist/cjs/br-message.cjs.entry.js +8 -7
  18. package/dist/cjs/br-message.cjs.entry.js.map +1 -1
  19. package/dist/cjs/br-radio.cjs.entry.js +27 -29
  20. package/dist/cjs/br-radio.cjs.entry.js.map +1 -1
  21. package/dist/cjs/br-switch.cjs.entry.js +9 -8
  22. package/dist/cjs/br-switch.cjs.entry.js.map +1 -1
  23. package/dist/cjs/{index-ecdd4399.js → index-fb4e9eaf.js} +33 -3
  24. package/dist/cjs/index-fb4e9eaf.js.map +1 -0
  25. package/dist/cjs/loader.cjs.js +2 -2
  26. package/dist/cjs/webcomponents.cjs.js +2 -2
  27. package/dist/cjs/webcomponents.cjs.js.map +1 -1
  28. package/dist/collection/collection-manifest.json +1 -0
  29. package/dist/collection/components/avatar/avatar.css +58 -0
  30. package/dist/collection/components/avatar/avatar.js +4 -4
  31. package/dist/collection/components/avatar/avatar.js.map +1 -1
  32. package/dist/collection/components/button/button.css +56 -0
  33. package/dist/collection/components/button/button.js +15 -34
  34. package/dist/collection/components/button/button.js.map +1 -1
  35. package/dist/collection/components/checkbox/checkbox.css +49 -0
  36. package/dist/collection/components/checkbox/checkbox.js +9 -8
  37. package/dist/collection/components/checkbox/checkbox.js.map +1 -1
  38. package/dist/collection/components/dropdown/dropdown.css +418 -0
  39. package/dist/collection/components/dropdown/dropdown.js +426 -0
  40. package/dist/collection/components/dropdown/dropdown.js.map +1 -0
  41. package/dist/collection/components/icon/icon.css +49 -0
  42. package/dist/collection/components/icon/icon.js +4 -4
  43. package/dist/collection/components/icon/icon.js.map +1 -1
  44. package/dist/collection/components/input/input.css +49 -0
  45. package/dist/collection/components/input/input.js +11 -28
  46. package/dist/collection/components/input/input.js.map +1 -1
  47. package/dist/collection/components/item/item.css +49 -0
  48. package/dist/collection/components/item/item.js +25 -25
  49. package/dist/collection/components/item/item.js.map +1 -1
  50. package/dist/collection/components/list/list.css +49 -0
  51. package/dist/collection/components/list/list.js +13 -12
  52. package/dist/collection/components/list/list.js.map +1 -1
  53. package/dist/collection/components/loading/loading.css +56 -0
  54. package/dist/collection/components/loading/loading.js +1 -1
  55. package/dist/collection/components/loading/loading.js.map +1 -1
  56. package/dist/collection/components/message/message.css +49 -0
  57. package/dist/collection/components/message/message.js +6 -5
  58. package/dist/collection/components/message/message.js.map +1 -1
  59. package/dist/collection/components/radio/radio.css +49 -0
  60. package/dist/collection/components/radio/radio.js +26 -74
  61. package/dist/collection/components/radio/radio.js.map +1 -1
  62. package/dist/collection/components/switch/switch.css +49 -0
  63. package/dist/collection/components/switch/switch.js +9 -8
  64. package/dist/collection/components/switch/switch.js.map +1 -1
  65. package/dist/collection/pages/dropdown/dropdown.js +18 -0
  66. package/dist/collection/scripts/menu.js +29 -31
  67. package/dist/components/br-avatar.js +7 -7
  68. package/dist/components/br-avatar.js.map +1 -1
  69. package/dist/components/br-button.js +1 -1
  70. package/dist/components/br-checkbox.js +11 -10
  71. package/dist/components/br-checkbox.js.map +1 -1
  72. package/dist/components/br-dropdown.d.ts +11 -0
  73. package/dist/components/br-dropdown.js +156 -0
  74. package/dist/components/br-dropdown.js.map +1 -0
  75. package/dist/components/br-icon.js +1 -1
  76. package/dist/components/br-input.js +15 -15
  77. package/dist/components/br-input.js.map +1 -1
  78. package/dist/components/br-item.js +27 -27
  79. package/dist/components/br-item.js.map +1 -1
  80. package/dist/components/br-list.js +10 -9
  81. package/dist/components/br-list.js.map +1 -1
  82. package/dist/components/br-loading.js +3 -3
  83. package/dist/components/br-loading.js.map +1 -1
  84. package/dist/components/br-message.js +10 -9
  85. package/dist/components/br-message.js.map +1 -1
  86. package/dist/components/br-radio.js +29 -33
  87. package/dist/components/br-radio.js.map +1 -1
  88. package/dist/components/br-switch.js +11 -10
  89. package/dist/components/br-switch.js.map +1 -1
  90. package/dist/components/index.d.ts +2 -0
  91. package/dist/components/index.js +2 -1
  92. package/dist/components/index.js.map +1 -1
  93. package/dist/components/p-5769e796.js +138 -0
  94. package/dist/components/p-5769e796.js.map +1 -0
  95. package/dist/components/{p-4c4ab942.js → p-698e7a18.js} +27 -3
  96. package/dist/components/p-698e7a18.js.map +1 -0
  97. package/dist/components/{p-ceec3589.js → p-87afe26f.js} +6 -6
  98. package/dist/components/{p-ceec3589.js.map → p-87afe26f.js.map} +1 -1
  99. package/dist/esm/br-avatar.entry.js +6 -6
  100. package/dist/esm/br-avatar.entry.js.map +1 -1
  101. package/dist/esm/br-button_2.entry.js +20 -21
  102. package/dist/esm/br-button_2.entry.js.map +1 -1
  103. package/dist/esm/br-checkbox.entry.js +9 -8
  104. package/dist/esm/br-checkbox.entry.js.map +1 -1
  105. package/dist/esm/br-dropdown.entry.js +138 -0
  106. package/dist/esm/br-dropdown.entry.js.map +1 -0
  107. package/dist/esm/br-input.entry.js +13 -12
  108. package/dist/esm/br-input.entry.js.map +1 -1
  109. package/dist/esm/br-item.entry.js +24 -24
  110. package/dist/esm/br-item.entry.js.map +1 -1
  111. package/dist/esm/br-list.entry.js +8 -7
  112. package/dist/esm/br-list.entry.js.map +1 -1
  113. package/dist/esm/br-loading.entry.js +3 -3
  114. package/dist/esm/br-loading.entry.js.map +1 -1
  115. package/dist/esm/br-message.entry.js +8 -7
  116. package/dist/esm/br-message.entry.js.map +1 -1
  117. package/dist/esm/br-radio.entry.js +27 -29
  118. package/dist/esm/br-radio.entry.js.map +1 -1
  119. package/dist/esm/br-switch.entry.js +9 -8
  120. package/dist/esm/br-switch.entry.js.map +1 -1
  121. package/dist/esm/{index-5866d5ff.js → index-c7037515.js} +33 -3
  122. package/dist/esm/index-c7037515.js.map +1 -0
  123. package/dist/esm/loader.js +3 -3
  124. package/dist/esm/webcomponents.js +3 -3
  125. package/dist/esm/webcomponents.js.map +1 -1
  126. package/dist/types/components/avatar/avatar.d.ts +3 -3
  127. package/dist/types/components/button/button.d.ts +2 -6
  128. package/dist/types/components/checkbox/checkbox.d.ts +2 -2
  129. package/dist/types/components/dropdown/dropdown.d.ts +154 -0
  130. package/dist/types/components/icon/icon.d.ts +2 -2
  131. package/dist/types/components/input/input.d.ts +9 -13
  132. package/dist/types/components/item/item.d.ts +4 -4
  133. package/dist/types/components/list/list.d.ts +17 -17
  134. package/dist/types/components/loading/loading.d.ts +1 -1
  135. package/dist/types/components/message/message.d.ts +2 -2
  136. package/dist/types/components/radio/radio.d.ts +5 -4
  137. package/dist/types/components/switch/switch.d.ts +3 -3
  138. package/dist/types/components.d.ts +139 -26
  139. package/dist/webcomponents/p-0f6e2ddc.entry.js +2 -0
  140. package/dist/webcomponents/p-0f6e2ddc.entry.js.map +1 -0
  141. package/dist/webcomponents/p-14f1c8e6.entry.js +2 -0
  142. package/dist/webcomponents/p-14f1c8e6.entry.js.map +1 -0
  143. package/dist/webcomponents/p-198082b6.entry.js +2 -0
  144. package/dist/webcomponents/p-198082b6.entry.js.map +1 -0
  145. package/dist/webcomponents/{p-6315c80a.js → p-6849daee.js} +3 -3
  146. package/dist/webcomponents/p-6849daee.js.map +1 -0
  147. package/dist/webcomponents/p-867bba23.entry.js +2 -0
  148. package/dist/webcomponents/p-867bba23.entry.js.map +1 -0
  149. package/dist/webcomponents/p-8efc22a3.entry.js +2 -0
  150. package/dist/webcomponents/p-8efc22a3.entry.js.map +1 -0
  151. package/dist/webcomponents/p-9dbe247e.entry.js +2 -0
  152. package/dist/webcomponents/p-9dbe247e.entry.js.map +1 -0
  153. package/dist/webcomponents/p-a5a079d8.entry.js +2 -0
  154. package/dist/webcomponents/p-a5a079d8.entry.js.map +1 -0
  155. package/dist/webcomponents/p-ac16ee58.entry.js +2 -0
  156. package/dist/webcomponents/p-ac16ee58.entry.js.map +1 -0
  157. package/dist/webcomponents/p-c36696c6.entry.js +2 -0
  158. package/dist/webcomponents/p-c36696c6.entry.js.map +1 -0
  159. package/dist/webcomponents/p-dde91d20.entry.js +13 -0
  160. package/dist/webcomponents/p-dde91d20.entry.js.map +1 -0
  161. package/dist/webcomponents/p-f01f1e6b.entry.js +2 -0
  162. package/dist/webcomponents/p-f01f1e6b.entry.js.map +1 -0
  163. package/dist/webcomponents/webcomponents.esm.js +1 -1
  164. package/dist/webcomponents/webcomponents.esm.js.map +1 -1
  165. package/hydrate/index.js +312 -141
  166. package/hydrate/index.mjs +312 -141
  167. package/package.json +10 -6
  168. package/vscode-data.json +17 -12
  169. package/dist/cjs/index-ecdd4399.js.map +0 -1
  170. package/dist/components/p-4c4ab942.js.map +0 -1
  171. package/dist/components/p-6c7f2b2a.js +0 -140
  172. package/dist/components/p-6c7f2b2a.js.map +0 -1
  173. package/dist/esm/index-5866d5ff.js.map +0 -1
  174. package/dist/webcomponents/p-0178bba0.entry.js +0 -2
  175. package/dist/webcomponents/p-0178bba0.entry.js.map +0 -1
  176. package/dist/webcomponents/p-47812ff4.entry.js +0 -2
  177. package/dist/webcomponents/p-47812ff4.entry.js.map +0 -1
  178. package/dist/webcomponents/p-5cb55733.entry.js +0 -2
  179. package/dist/webcomponents/p-5cb55733.entry.js.map +0 -1
  180. package/dist/webcomponents/p-6315c80a.js.map +0 -1
  181. package/dist/webcomponents/p-6f787c6e.entry.js +0 -2
  182. package/dist/webcomponents/p-6f787c6e.entry.js.map +0 -1
  183. package/dist/webcomponents/p-9054589f.entry.js +0 -2
  184. package/dist/webcomponents/p-9054589f.entry.js.map +0 -1
  185. package/dist/webcomponents/p-961ad7ab.entry.js +0 -13
  186. package/dist/webcomponents/p-961ad7ab.entry.js.map +0 -1
  187. package/dist/webcomponents/p-9810bb43.entry.js +0 -2
  188. package/dist/webcomponents/p-9810bb43.entry.js.map +0 -1
  189. package/dist/webcomponents/p-a1969013.entry.js +0 -2
  190. package/dist/webcomponents/p-a1969013.entry.js.map +0 -1
  191. package/dist/webcomponents/p-ca5f6891.entry.js +0 -2
  192. package/dist/webcomponents/p-ca5f6891.entry.js.map +0 -1
  193. package/dist/webcomponents/p-e981b8b4.entry.js +0 -2
  194. package/dist/webcomponents/p-e981b8b4.entry.js.map +0 -1
@@ -35,10 +35,6 @@ export namespace Components {
35
35
  * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/button?tab=designer).
36
36
  */
37
37
  interface BrButton {
38
- /**
39
- * Se definido como verdadeiro, o botão receberá foco automaticamente ao ser renderizado.
40
- */
41
- "autofocus": boolean;
42
38
  /**
43
39
  * Define se o botão usará um esquema de cores escuro.
44
40
  */
@@ -121,6 +117,25 @@ export namespace Components {
121
117
  */
122
118
  "value": any;
123
119
  }
120
+ /**
121
+ * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/dropdown?tab=designer).
122
+ */
123
+ interface BrDropdown {
124
+ /**
125
+ * Esconde o dropdown. Define a propriedade `isOpen` como falsa e retorna o novo estado. Este método é marcado com
126
+ * @Method () para que possa ser chamado externamente.
127
+ */
128
+ "hide": () => Promise<{ isOpen: boolean; }>;
129
+ /**
130
+ * Indica se o dropdown está aberto ou fechado. Esta propriedade é refletida no DOM e pode ser alterada externamente. O valor padrão é falso (fechado).
131
+ */
132
+ "isOpen": boolean;
133
+ /**
134
+ * Abre o dropdown. Define a propriedade `isOpen` como verdadeira e retorna o novo estado. Este método é marcado com
135
+ * @Method () para que possa ser chamado externamente.
136
+ */
137
+ "open": () => Promise<{ isOpen: boolean; }>;
138
+ }
124
139
  /**
125
140
  * O componente `br-icon` fornece uma maneira flexível e dinâmica de incorporar ícones nas aplicações.
126
141
  * Utilizando a biblioteca Iconify, ele permite o uso de uma ampla variedade de ícones.
@@ -132,13 +147,13 @@ export namespace Components {
132
147
  */
133
148
  interface BrIcon {
134
149
  /**
135
- * Nome do ícone a ser exibido, utilizando a biblioteca Iconify. Este nome deve corresponder ao nome do ícone definido na biblioteca para que ele seja exibido corretamente.
150
+ * Permite adicionar classes CSS adicionais ao ícone. Use esta propriedade para aplicar estilos personalizados ao ícone, além dos estilos padrão.
136
151
  */
137
- "IconName": string;
152
+ "CssClasses"?: string;
138
153
  /**
139
- * Permite adicionar classes CSS adicionais ao ícone. Use esta propriedade para aplicar estilos personalizados ao ícone, além dos estilos padrão.
154
+ * Nome do ícone a ser exibido, utilizando a biblioteca Iconify. Este nome deve corresponder ao nome do ícone definido na biblioteca para que ele seja exibido corretamente.
140
155
  */
141
- "class"?: string;
156
+ "IconName": string;
142
157
  /**
143
158
  * Define o tipo de espelhamento do ícone. Aceita valores como "horizontal" para espelhar o ícone horizontalmente, "vertical" para espelhar verticalmente, ou ambos.
144
159
  */
@@ -168,10 +183,6 @@ export namespace Components {
168
183
  * Controla o comportamento de preenchimento automático do navegador para o input.
169
184
  */
170
185
  "autocomplete": 'on' | 'off';
171
- /**
172
- * Se definido como verdadeiro, o input receberá foco automaticamente ao ser renderizado.
173
- */
174
- "autofocus": boolean;
175
186
  /**
176
187
  * Se verdadeiro, o input indica um estado de validação com erro.
177
188
  */
@@ -382,8 +393,6 @@ export namespace Components {
382
393
  * Desativa o radio, tornando-o não interativo.
383
394
  */
384
395
  "disabled": boolean;
385
- "handleClick": () => Promise<void>;
386
- "handleKeyDown": (event: KeyboardEvent) => Promise<void>;
387
396
  /**
388
397
  * Define se o label associado ao radio deve ser oculto. Se definido como verdadeiro, o texto do label será oculto, mas o radio ainda estará visível e funcional.
389
398
  */
@@ -475,6 +484,10 @@ export interface BrCheckboxCustomEvent<T> extends CustomEvent<T> {
475
484
  detail: T;
476
485
  target: HTMLBrCheckboxElement;
477
486
  }
487
+ export interface BrDropdownCustomEvent<T> extends CustomEvent<T> {
488
+ detail: T;
489
+ target: HTMLBrDropdownElement;
490
+ }
478
491
  export interface BrIconCustomEvent<T> extends CustomEvent<T> {
479
492
  detail: T;
480
493
  target: HTMLBrIconElement;
@@ -601,6 +614,39 @@ declare global {
601
614
  prototype: HTMLBrCheckboxElement;
602
615
  new (): HTMLBrCheckboxElement;
603
616
  };
617
+ interface HTMLBrDropdownElementEventMap {
618
+ "brDidConnect": void;
619
+ "brWillLoad": void;
620
+ "brDidLoad": void;
621
+ "brWillRender": void;
622
+ "brDidRender": void;
623
+ "brShouldUpdate": void;
624
+ "brWillUpdate": void;
625
+ "brDidUpdate": void;
626
+ "brDidDisconnect": void;
627
+ "brFormAssociatedCallback": FormData;
628
+ "brFormDisabledCallback": boolean;
629
+ "brFormResetCallback": void;
630
+ "brFormStateRestoreCallback": [state: string, _mode: string];
631
+ "brDropdownChange": { 'is-opened': boolean };
632
+ }
633
+ /**
634
+ * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/dropdown?tab=designer).
635
+ */
636
+ interface HTMLBrDropdownElement extends Components.BrDropdown, HTMLStencilElement {
637
+ addEventListener<K extends keyof HTMLBrDropdownElementEventMap>(type: K, listener: (this: HTMLBrDropdownElement, ev: BrDropdownCustomEvent<HTMLBrDropdownElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
638
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
639
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
640
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
641
+ removeEventListener<K extends keyof HTMLBrDropdownElementEventMap>(type: K, listener: (this: HTMLBrDropdownElement, ev: BrDropdownCustomEvent<HTMLBrDropdownElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
642
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
643
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
644
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
645
+ }
646
+ var HTMLBrDropdownElement: {
647
+ prototype: HTMLBrDropdownElement;
648
+ new (): HTMLBrDropdownElement;
649
+ };
604
650
  interface HTMLBrIconElementEventMap {
605
651
  "brDidConnect": void;
606
652
  "brWillLoad": void;
@@ -861,6 +907,7 @@ declare global {
861
907
  "br-avatar": HTMLBrAvatarElement;
862
908
  "br-button": HTMLBrButtonElement;
863
909
  "br-checkbox": HTMLBrCheckboxElement;
910
+ "br-dropdown": HTMLBrDropdownElement;
864
911
  "br-icon": HTMLBrIconElement;
865
912
  "br-input": HTMLBrInputElement;
866
913
  "br-item": HTMLBrItemElement;
@@ -937,10 +984,6 @@ declare namespace LocalJSX {
937
984
  * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/button?tab=designer).
938
985
  */
939
986
  interface BrButton {
940
- /**
941
- * Se definido como verdadeiro, o botão receberá foco automaticamente ao ser renderizado.
942
- */
943
- "autofocus"?: boolean;
944
987
  /**
945
988
  * Define se o botão usará um esquema de cores escuro.
946
989
  */
@@ -1135,6 +1178,75 @@ declare namespace LocalJSX {
1135
1178
  */
1136
1179
  "value"?: any;
1137
1180
  }
1181
+ /**
1182
+ * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/dropdown?tab=designer).
1183
+ */
1184
+ interface BrDropdown {
1185
+ /**
1186
+ * Indica se o dropdown está aberto ou fechado. Esta propriedade é refletida no DOM e pode ser alterada externamente. O valor padrão é falso (fechado).
1187
+ */
1188
+ "isOpen"?: boolean;
1189
+ /**
1190
+ * Emite um evento quando o componente é conectado ao DOM. Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#connectedcallback) para mais detalhes.
1191
+ */
1192
+ "onBrDidConnect"?: (event: BrDropdownCustomEvent<void>) => void;
1193
+ /**
1194
+ * Emite um evento quando o componente é desconectado do DOM. Utilize este evento para realizar a limpeza ou outras ações necessárias quando o componente é removido. Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#disconnectedcallback) para mais detalhes.
1195
+ */
1196
+ "onBrDidDisconnect"?: (event: BrDropdownCustomEvent<void>) => void;
1197
+ /**
1198
+ * Emite um evento após o componente ter sido carregado pela primeira vez. Utilize este evento para realizar ações que devem ocorrer depois que o componente foi totalmente carregado. Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidload) para mais detalhes.
1199
+ */
1200
+ "onBrDidLoad"?: (event: BrDropdownCustomEvent<void>) => void;
1201
+ /**
1202
+ * Emite um evento após o componente ter sido renderizado. Utilize este evento para executar ações que devem ocorrer após a renderização do componente. Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidrender) para mais detalhes.
1203
+ */
1204
+ "onBrDidRender"?: (event: BrDropdownCustomEvent<void>) => void;
1205
+ /**
1206
+ * Emite um evento após o componente ter sido atualizado. Utilize este evento para realizar ações após a atualização do componente. Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidupdate) para mais detalhes.
1207
+ */
1208
+ "onBrDidUpdate"?: (event: BrDropdownCustomEvent<void>) => void;
1209
+ /**
1210
+ * Evento emitido quando o estado do dropdown muda.
1211
+ */
1212
+ "onBrDropdownChange"?: (event: BrDropdownCustomEvent<{ 'is-opened': boolean }>) => void;
1213
+ /**
1214
+ * Emite um evento quando o componente é associado ou removido de um `<form>`. Consulte a documentação do [Stencil](https://stenciljs.com/docs/form-associated#formassociatedcallback) para mais detalhes.
1215
+ * @param form - Dados do formulário associado.
1216
+ */
1217
+ "onBrFormAssociatedCallback"?: (event: BrDropdownCustomEvent<FormData>) => void;
1218
+ /**
1219
+ * Emite um evento quando o estado `disabled` do componente muda dentro de um `<form>`. Consulte a documentação do [Stencil](https://stenciljs.com/docs/form-associated#formdisabledcallback) para mais informações.
1220
+ * @param disabled - Novo estado `disabled` do componente dentro do formulário.
1221
+ */
1222
+ "onBrFormDisabledCallback"?: (event: BrDropdownCustomEvent<boolean>) => void;
1223
+ /**
1224
+ * Emite um evento quando um `<form>` é resetado. Consulte a documentação do [Stencil](https://stenciljs.com/docs/form-associated#formresetcallback) para mais detalhes.
1225
+ */
1226
+ "onBrFormResetCallback"?: (event: BrDropdownCustomEvent<void>) => void;
1227
+ /**
1228
+ * Emite um evento quando o navegador preenche automaticamente os campos de um `<form>`. Consulte a documentação do [Stencil](https://stenciljs.com/docs/form-associated#formstaterestorecallback) para mais informações.
1229
+ * @param state - Estado restaurado do formulário.
1230
+ * @param _mode - Modo de preenchimento automático do navegador.
1231
+ */
1232
+ "onBrFormStateRestoreCallback"?: (event: BrDropdownCustomEvent<[state: string, _mode: string]>) => void;
1233
+ /**
1234
+ * Emite um evento para indicar se o componente deve ser atualizado ou não. Este evento é chamado antes de qualquer atualização do componente para decidir se a atualização deve prosseguir. Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentshouldupdate) para mais detalhes.
1235
+ */
1236
+ "onBrShouldUpdate"?: (event: BrDropdownCustomEvent<void>) => void;
1237
+ /**
1238
+ * Emite um evento antes que o componente seja carregado pela primeira vez. Utilize este evento para realizar tarefas de inicialização antes do componente ser exibido. Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentwillload) para mais detalhes.
1239
+ */
1240
+ "onBrWillLoad"?: (event: BrDropdownCustomEvent<void>) => void;
1241
+ /**
1242
+ * Emite um evento antes do componente ser renderizado. Utilize este evento para preparar o componente antes de sua renderização. Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentwillrender) para mais detalhes.
1243
+ */
1244
+ "onBrWillRender"?: (event: BrDropdownCustomEvent<void>) => void;
1245
+ /**
1246
+ * Emite um evento antes de o componente ser atualizado. Utilize este evento para realizar ações preparatórias antes da atualização do componente. Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentwillupdate) para mais detalhes.
1247
+ */
1248
+ "onBrWillUpdate"?: (event: BrDropdownCustomEvent<void>) => void;
1249
+ }
1138
1250
  /**
1139
1251
  * O componente `br-icon` fornece uma maneira flexível e dinâmica de incorporar ícones nas aplicações.
1140
1252
  * Utilizando a biblioteca Iconify, ele permite o uso de uma ampla variedade de ícones.
@@ -1146,13 +1258,13 @@ declare namespace LocalJSX {
1146
1258
  */
1147
1259
  interface BrIcon {
1148
1260
  /**
1149
- * Nome do ícone a ser exibido, utilizando a biblioteca Iconify. Este nome deve corresponder ao nome do ícone definido na biblioteca para que ele seja exibido corretamente.
1261
+ * Permite adicionar classes CSS adicionais ao ícone. Use esta propriedade para aplicar estilos personalizados ao ícone, além dos estilos padrão.
1150
1262
  */
1151
- "IconName"?: string;
1263
+ "CssClasses"?: string;
1152
1264
  /**
1153
- * Permite adicionar classes CSS adicionais ao ícone. Use esta propriedade para aplicar estilos personalizados ao ícone, além dos estilos padrão.
1265
+ * Nome do ícone a ser exibido, utilizando a biblioteca Iconify. Este nome deve corresponder ao nome do ícone definido na biblioteca para que ele seja exibido corretamente.
1154
1266
  */
1155
- "class"?: string;
1267
+ "IconName"?: string;
1156
1268
  /**
1157
1269
  * Define o tipo de espelhamento do ícone. Aceita valores como "horizontal" para espelhar o ícone horizontalmente, "vertical" para espelhar verticalmente, ou ambos.
1158
1270
  */
@@ -1218,10 +1330,6 @@ declare namespace LocalJSX {
1218
1330
  * Controla o comportamento de preenchimento automático do navegador para o input.
1219
1331
  */
1220
1332
  "autocomplete"?: 'on' | 'off';
1221
- /**
1222
- * Se definido como verdadeiro, o input receberá foco automaticamente ao ser renderizado.
1223
- */
1224
- "autofocus"?: boolean;
1225
1333
  /**
1226
1334
  * Se verdadeiro, o input indica um estado de validação com erro.
1227
1335
  */
@@ -1886,6 +1994,7 @@ declare namespace LocalJSX {
1886
1994
  "br-avatar": BrAvatar;
1887
1995
  "br-button": BrButton;
1888
1996
  "br-checkbox": BrCheckbox;
1997
+ "br-dropdown": BrDropdown;
1889
1998
  "br-icon": BrIcon;
1890
1999
  "br-input": BrInput;
1891
2000
  "br-item": BrItem;
@@ -1912,6 +2021,10 @@ declare module "@stencil/core" {
1912
2021
  * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/checkbox?tab=designer).
1913
2022
  */
1914
2023
  "br-checkbox": LocalJSX.BrCheckbox & JSXBase.HTMLAttributes<HTMLBrCheckboxElement>;
2024
+ /**
2025
+ * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/dropdown?tab=designer).
2026
+ */
2027
+ "br-dropdown": LocalJSX.BrDropdown & JSXBase.HTMLAttributes<HTMLBrDropdownElement>;
1915
2028
  /**
1916
2029
  * O componente `br-icon` fornece uma maneira flexível e dinâmica de incorporar ícones nas aplicações.
1917
2030
  * Utilizando a biblioteca Iconify, ele permite o uso de uma ampla variedade de ícones.
@@ -0,0 +1,2 @@
1
+ import{r as t,c as r,h as e,H as a,g as i}from"./p-6849daee.js";const o='*,*::before,*::after{box-sizing:border-box}html{line-height:var(--font-line-height-medium);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{margin:0}a{background-color:transparent}strong{font-weight:bolder}code{font-family:monospace;font-size:1em}small{font-size:80%}img{border-style:none}button,input{font-family:inherit;font-size:100%;line-height:var(--font-line-height-medium);margin:0}button,input{overflow:visible}button{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;-moz-appearance:button;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}progress{vertical-align:baseline}[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]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none;appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;appearance:button;font:inherit}[hidden]{display:none}.d-flex{display:flex !important}.align-items-center{align-items:center !important}.col,[class*=col-]{padding-left:calc(var(--grid-gutter) * 0.5);padding-right:calc(var(--grid-gutter) * 0.5);width:100%}.col{flex:1 0 0%;min-width:8.3333333333%}.col-auto{flex:0 0 auto;width:auto}.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){.row{--grid-gutter:var(--grid-tablet-gutter)}}@media (min-width: 992px){.row{--grid-gutter:var(--grid-tablet-gutter)}}@media (min-width: 1280px){.row{--grid-gutter:var(--grid-desktop-gutter)}}@media (min-width: 1600px){.row{--grid-gutter:var(--grid-tv-gutter)}}.mr-1{margin-right:var(--spacing-scale-half) !important}.mr-2{margin-right:var(--spacing-scale-base) !important}.mb-3{margin-bottom:var(--spacing-scale-2x) !important}.py-3{padding-bottom:var(--spacing-scale-2x) !important;padding-top:var(--spacing-scale-2x) !important}.py-4{padding-bottom:var(--spacing-scale-3x) !important;padding-top:var(--spacing-scale-3x) !important}body{--bg-color:var(--background);--bg-color-rgb:var(--background-rgb);--bg-color-hsl:var(--background-hsl);--font-size:var(--font-size-scale-base);--font-weight:var(--font-weight-regular);--link-color:var(--interactive);--link-color-rgb:var(--interactive-rgb);--link-color-hsl:var(--interactive-hsl);--line-height:var(--font-line-height-medium);--text-color:var(--color);--text-color-rgb:var(--color-rgb);--text-color-hsl:var(--color-hsl);background:var(--bg-color);color:var(--text-color);font-family:var(--font-family-base);font-size:var(--font-size);font-weight:var(--font-weight);line-height:var(--line-height)}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);color:var(--interactive);text-decoration:none}a:focus{outline:none}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)))}button{cursor:pointer}img{max-width:100%;vertical-align:middle}ul{margin-bottom:var(--spacing-scale-2x);margin-top:0;padding:0 0 0 var(--spacing-scale-5x)}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)}::-moz-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}::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,.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)}.text-pure-0{color:var(--pure-0) !important}.bg-support-01{--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);background:var(--color-support-01) !important}.text-nowrap{white-space:nowrap !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}[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-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)}.br-item{background:var(--background);--item-padding-x:var(--spacing-scale-2x);--item-padding-y:var(--spacing-scale-base);--item-padding:var(--item-padding-y) var(--item-padding-x);--focus-offset:calc(var(--focus-width) * -1);border:0;color:var(--color);display:block;font-weight:var(--font-weight);padding:var(--item-padding);text-align:left;width:100%}.br-item .row{margin-left:calc(-1 * var(--spacing-scale-base));margin-right:calc(-1 * var(--spacing-scale-base))}.br-item .row .col,.br-item .row [class*=col-]{padding-left:var(--spacing-scale-base);padding-right:var(--spacing-scale-base)}.br-item::after{clear:both;content:"";display:block}.br-item[data-toggle]{cursor:pointer}.br-item[data-toggle=selection]:not(:disabled):hover{background-image:linear-gradient(rgba(var(--color-rgb), var(--hover)), rgba(var(--color-rgb), var(--hover)))}.br-item>.br-checkbox:not(.hidden-label),.br-item>.br-radio:not(.hidden-label){margin-bottom:calc(var(--item-padding-y) * -1);margin-left:calc(var(--item-padding-x) * -1);margin-right:calc(var(--item-padding-x) * -1);margin-top:calc(var(--item-padding-y) * -1)}.br-item>.br-checkbox:not(.hidden-label) input+label,.br-item>.br-radio:not(.hidden-label) input+label{padding-bottom:var(--item-padding-y);padding-top:var(--item-padding-y);top:1px;width:100%}.br-item>.br-checkbox:not(.hidden-label) input+label::before,.br-item>.br-radio:not(.hidden-label) input+label::before{left:var(--item-padding-x);top:calc(var(--item-padding-y) - 1px)}.br-item>.br-checkbox:not(.hidden-label) input+label:empty,.br-item>.br-radio:not(.hidden-label) input+label:empty{left:0;top:1px}.br-item>.br-checkbox:not(.hidden-label) input:hover:not(:disabled)+label::before,.br-item>.br-radio:not(.hidden-label) input:hover:not(:disabled)+label::before{background-image:none}.br-item>.br-checkbox input:not(:indeterminate)+label{min-height:calc(var(--checkbox-size) + var(--item-padding-y) * 2)}.br-item>.br-checkbox input:not(:indeterminate)+label:not(:empty){padding-left:calc(var(--checkbox-padding) + var(--checkbox-size) + var(--item-padding-x))}.br-item>.br-checkbox input:not(:indeterminate)+label::after{left:calc(var(--item-padding-x) + 8px);top:calc(var(--item-padding-y) + 4px)}.br-item>.br-checkbox input:not(:indeterminate)+label:empty{min-height:var(--checkbox-size)}.br-item>.br-checkbox input:not(:indeterminate)+label:empty::after{left:8px;top:4px}.br-item .br-radio input+label{min-height:calc(var(--radio-size) + var(--item-padding-y) * 2);padding-left:calc(var(--spacing-scale-base) + var(--radio-size) + var(--item-padding-x))}.br-item .br-radio input+label::after{left:calc(var(--item-padding-x) + var(--radio-bullet-position));top:calc(var(--item-padding-y) + var(--radio-bullet-position) - 1px)}.br-item .br-radio input+label:empty{min-height:var(--radio-size)}.br-item .br-radio input+label:empty::after{left:var(--radio-bullet-position);top:var(--radio-bullet-position)}.br-item.highlight{--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-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);background-color:var(--selected)}.br-item.active{--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);background-color:var(--active);color:var(--color)}.br-item.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-item.dark-mode.active{--color:var(--color-light);--color-rgb:var(--color-light-rgb);--text-color:var(--color-light);--interactive:var(--interactive-light);--interactive-rgb:var(--active-rgb);--visited:var(--visited-light);--hover:var(--hover-light);--pressed:var(--pressed-light);--focus-color:var(--focus-color-light);--focus:var(--focus-color-light);background-color:var(--background-light);color:var(--active)}.br-item[data-toggle]:not(:disabled):hover{background-image:linear-gradient(rgba(var(--color-rgb), var(--hover)), rgba(var(--color-rgb), var(--hover)))}.br-item .content{align-items:center;display:flex}.br-item [class*=fa-]{height:16px;width:14px !important}a.br-item{color:var(--interactive)}a.br-item:not(:disabled):hover{background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}a.br-item:not(:disabled):active{background-image:linear-gradient(rgba(var(--interactive-rgb), var(--pressed)), rgba(var(--interactive-rgb), var(--pressed)))}button.br-item{background-color:transparent;color:var(--color)}button.br-item:focus{outline:none}button.br-item:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}button.br-item:not(:disabled):hover{background-image:linear-gradient(rgba(var(--color-rgb), var(--hover)), rgba(var(--color-rgb), var(--hover)))}button.br-item:not(:disabled):active{background-image:linear-gradient(rgba(var(--color-rgb), var(--pressed)), rgba(var(--color-rgb), var(--pressed)))}:host{display:block}::slotted(br-checkbox){max-width:-moz-fit-content;max-width:fit-content;max-height:-moz-fit-content;max-height:fit-content}::slotted(br-radio){max-width:-moz-fit-content;max-width:fit-content;max-height:-moz-fit-content;max-height:fit-content}';const n=o;const l=class{constructor(e){t(this,e);this.brDidClick=r(this,"brDidClick",7);this.brDidSelect=r(this,"brDidSelect",7);this.brDidConnect=r(this,"brDidConnect",7);this.brWillLoad=r(this,"brWillLoad",7);this.brDidLoad=r(this,"brDidLoad",7);this.brWillRender=r(this,"brWillRender",7);this.brDidRender=r(this,"brDidRender",7);this.brShouldUpdate=r(this,"brShouldUpdate",7);this.brWillUpdate=r(this,"brWillUpdate",7);this.brDidUpdate=r(this,"brDidUpdate",7);this.brDidDisconnect=r(this,"brDidDisconnect",7);this.brFormAssociatedCallback=r(this,"brFormAssociatedCallback",7);this.brFormDisabledCallback=r(this,"brFormDisabledCallback",7);this.brFormResetCallback=r(this,"brFormResetCallback",7);this.brFormStateRestoreCallback=r(this,"brFormStateRestoreCallback",7);if(e.$hostElement$["s-ei"]){this.elementInternals=e.$hostElement$["s-ei"]}else{this.elementInternals=e.$hostElement$.attachInternals();e.$hostElement$["s-ei"]=this.elementInternals}this.inheritedAttributes={};this.handleClick=t=>{const r=t.target;if(this.disabled){t.preventDefault();t.stopPropagation()}if(this.isButton){this.brDidClick.emit()}else if(this.isInteractive&&!this.isClickInsideInteractiveElement(r)){this.selectedValue=!this.selectedValue;this.brDidSelect.emit({selected:this.selectedValue});this.updateCheckboxes()}t.stopPropagation()};this.disabled=false;this.isActive=false;this.isSelected=false;this.isInteractive=false;this.href=undefined;this.target=undefined;this.isButton=false;this.type=undefined;this.value=undefined;this.density=undefined;this.hasSlotDefault=false;this.hasSlotStart=false;this.hasSlotEnd=false;this.selectedValue=false}handleChange(t){const r=t.target;if(this.el.contains(r)){this.updateItemSelectionState()}}connectedCallback(){this.brDidConnect.emit()}componentWillLoad(){this.hasSlotContentDefault();this.hasSlotStart=this.hasSlotContent("start");this.hasSlotEnd=this.hasSlotContent("end");this.selectedValue=this.isSelected;if(this.isButton){this.type=this.type||"button"}this.updateItemSelectionState();this.brWillLoad.emit()}componentDidLoad(){this.updateCheckboxes();this.brDidLoad.emit()}componentWillRender(){this.brWillRender.emit()}componentDidRender(){this.brDidRender.emit()}componentShouldUpdate(){this.brShouldUpdate.emit()}componentWillUpdate(){this.brWillUpdate.emit()}componentDidUpdate(){this.brDidUpdate.emit()}disconnectedCallback(){this.brDidDisconnect.emit()}formAssociatedCallback(t){this.brFormAssociatedCallback.emit(t)}formDisabledCallback(t){this.brFormDisabledCallback.emit(t)}formResetCallback(){this.brFormResetCallback.emit()}formStateRestoreCallback(t,r){this.brFormStateRestoreCallback.emit([t,r])}hasSlotContentDefault(){this.hasSlotDefault=this.el.innerHTML!==""}hasSlotContent(t){return this.el.querySelector(`[slot="${t}"]`)!==null}getCssClassMap(){return{"br-item":true,disabled:this.disabled,active:this.isActive,selected:this.selectedValue,"py-3":this.density==="middle","py-4":this.density==="small"}}getTagType(){var t;if(this.isButton){return"button"}if(((t=this.href)===null||t===void 0?void 0:t.length)>0){return"a"}return"div"}getAttributes(){const t=this.getTagType();const r=t==="button"?{type:this.type,value:this.value}:{href:this.href,target:this.target};return Object.assign(Object.assign(Object.assign({},r),{"aria-disabled":this.disabled?"true":null,"aria-current":this.isActive?"true":null,"data-toggle":this.isInteractive?"selection":null}),this.inheritedAttributes)}updateItemSelectionState(){const t=Array.from(this.el.querySelectorAll("br-checkbox"));const r=Array.from(this.el.querySelectorAll("br-radio"));let e=false;let a=false;if(t.length>0){e=t.some((t=>t.checked))}if(r.length>0){a=r.some((t=>t.checked))}this.selectedValue=e||a}isClickInsideInteractiveElement(t){const r="br-checkbox, br-radio, br-input, br-button, br-select, br-textarea";const e=this.el.querySelectorAll(r);return Array.from(e).some((r=>r.contains(t)||t===r))}updateCheckboxes(){const t=Array.from(this.el.querySelectorAll("br-checkbox"));t.forEach((t=>{t.checked=this.selectedValue}))}render(){const t=this.getTagType();const r=this.getAttributes();const i=this.getCssClassMap();return e(a,{key:"53659ae6636c2f6eae32214c2bbfc3ef57b700bd"},e(t,Object.assign({key:"35272110ced36e52e965db6f16d30ed97680cca8",class:i},r,{onClick:this.handleClick}),this.hasSlotStart||this.hasSlotEnd?e("div",{class:"row align-items-center"},this.hasSlotStart&&e("div",{class:"col-auto"},e("slot",{name:"start"})),e("div",{class:"col"},e("slot",null)),this.hasSlotEnd&&e("div",{class:"col-auto"},e("slot",{name:"end"}))):e("slot",null)))}static get formAssociated(){return true}get el(){return i(this)}};l.style=n;export{l as br_item};
2
+ //# sourceMappingURL=p-0f6e2ddc.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["itemCss","BrItemStyle0","Item","this","inheritedAttributes","handleClick","event","clickedElement","target","disabled","preventDefault","stopPropagation","isButton","brDidClick","emit","isInteractive","isClickInsideInteractiveElement","selectedValue","brDidSelect","selected","updateCheckboxes","handleChange","el","contains","updateItemSelectionState","connectedCallback","brDidConnect","componentWillLoad","hasSlotContentDefault","hasSlotStart","hasSlotContent","hasSlotEnd","isSelected","type","brWillLoad","componentDidLoad","brDidLoad","componentWillRender","brWillRender","componentDidRender","brDidRender","componentShouldUpdate","brShouldUpdate","componentWillUpdate","brWillUpdate","componentDidUpdate","brDidUpdate","disconnectedCallback","brDidDisconnect","formAssociatedCallback","form","brFormAssociatedCallback","formDisabledCallback","brFormDisabledCallback","formResetCallback","brFormResetCallback","formStateRestoreCallback","state","_mode","brFormStateRestoreCallback","hasSlotDefault","innerHTML","slotName","querySelector","getCssClassMap","active","isActive","density","getTagType","_a","href","length","getAttributes","TagType","baseAttributes","value","Object","assign","checkboxes","Array","from","querySelectorAll","radios","isAnyCheckboxChecked","isAnyRadioSelected","some","cb","checked","radio","interactiveSelectors","interactiveElements","forEach","checkbox","render","attributes","classList","h","Host","key","class","onClick","name"],"sources":["src/components/item/item.scss?tag=br-item&encapsulation=shadow","src/components/item/item.tsx"],"sourcesContent":["@import \"../../../../../node_modules/@govbr-ds/core/src/components/item/item.scss\";\n\n:host {\n display: block;\n}\n\n::slotted(br-checkbox) {\n max-width: fit-content;\n max-height: fit-content;\n}\n\n::slotted(br-radio) {\n max-width: fit-content;\n max-height: fit-content;\n}\n","import { AttachInternals, Component, Element, Event, EventEmitter, Host, Listen, Prop, State, h } from '@stencil/core'\nimport { Attributes } from '../../utils/inherited-attributes'\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/item?tab=designer).\n *\n * @slot default - Área de conteúdo, podendo conter qualquer componente, exceto botões primários e componentes relacionados à navegação (como carrosséis, paginações, abas, menus, etc.).\n *\n * @slot start - Área de recursos visuais, podendo conter elementos como ícones, avatares e mídias.\n *\n * @slot end - Área de recursos complementares, podendo conter componentes interativos, metadados e informações adicionais.\n */\n@Component({\n tag: 'br-item',\n styleUrl: 'item.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Item {\n /**\n * Referência ao elemento host do componente.\n * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.\n */\n @Element() el: HTMLBrItemElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Desativa o item, tornando-o não interativo.\n */\n @Prop({ reflect: true }) disabled: boolean = false\n\n /**\n * Indica se o item está no estado ativo.\n * Se definido como verdadeiro, o item será exibido como ativo.\n */\n @Prop({ reflect: true }) isActive: boolean = false\n\n /**\n * Indica se o item está no estado selecionado.\n * Se definido como verdadeiro, o item será exibido como selecionado.\n */\n @Prop({ reflect: true }) isSelected: boolean = false\n\n /**\n * Marca o item como interativo, permitindo que toda a superfície do item seja clicável.\n */\n @Prop({ reflect: true }) isInteractive: boolean = false\n\n /**\n * URL ou caminho para o qual o usuário será direcionado ao clicar no item. Quando definido, o item será renderizado como um link.\n */\n @Prop({ reflect: true }) href?: string\n\n /**\n * Define o alvo do link quando `href` está presente. Pode ser:\n * - `_blank` para abrir em uma nova aba,\n * - `_self` para abrir na mesma aba,\n * - `_parent` para abrir na aba pai,\n * - `_top` para abrir na aba superior.\n */\n @Prop({ reflect: true }) target?: '_blank' | '_self' | '_parent' | '_top'\n\n /**\n * Quando definido como `true`, o item será tratado como um botão.\n */\n @Prop({ reflect: true }) isButton: boolean = false\n\n /**\n * Tipo do botão, aplicável apenas se `isButton` for `true`. Pode ser:\n * - `'submit'` para enviar um formulário,\n * - `'reset'` para redefinir um formulário,\n * - `'button'` para um botão padrão.\n */\n @Prop({ reflect: true, mutable: true }) type: 'submit' | 'reset' | 'button'\n\n /**\n * Define um valor associado ao br-item quando renderizado como um botão, utilizado em contextos de formulário.\n */\n @Prop({ reflect: true }) value?: string\n\n /**\n * Ajusta a densidade, alterando o espaçamento interno para um visual mais compacto ou mais expandido.\n */\n @Prop({ reflect: true }) density: 'large' | 'middle' | 'small'\n\n // Propriedade interna para verificar a presença de conteúdo no slot default\n @State() hasSlotDefault: boolean = false\n\n @State() hasSlotStart: boolean = false\n\n @State() hasSlotEnd: boolean = false\n\n // Propriedade interna para armazenar o valor selecionado\n @State() selectedValue: boolean = false\n\n @Listen('brDidCheckedChange', { target: 'document' })\n handleChange(event: Event) {\n const target = event.target as HTMLElement\n\n if (this.el.contains(target)) {\n this.updateItemSelectionState()\n }\n }\n\n /**\n * Evento customizado emitido quando o item é clicado, aplicável apenas se o item for um botão (`<button>`).\n * Pode ser utilizado para ações personalizadas, exceto quando o item está desativado.\n */\n @Event({ composed: true, cancelable: true, bubbles: true }) brDidClick: EventEmitter\n\n /**\n * Evento customizado aplicável para todos os tipos de elementos (`div`, `button`, `a`), emitido quando o item é selecionado e desde que a propriedade `isInteractive` esteja presente.\n */\n @Event({ bubbles: true, composed: true }) brDidSelect: EventEmitter<{ selected: boolean }>\n\n /**\n * Emite um evento quando o componente é conectado ao DOM.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#connectedcallback) para mais detalhes.\n */\n @Event() brDidConnect: EventEmitter<void>\n connectedCallback() {\n this.brDidConnect.emit()\n }\n\n /**\n * Emite um evento antes que o componente seja carregado pela primeira vez.\n * Utilize este evento para realizar tarefas de inicialização antes do componente ser exibido.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentwillload) para mais detalhes.\n */\n @Event() brWillLoad: EventEmitter<void>\n componentWillLoad() {\n this.hasSlotContentDefault()\n this.hasSlotStart = this.hasSlotContent('start')\n this.hasSlotEnd = this.hasSlotContent('end')\n this.selectedValue = this.isSelected\n if (this.isButton) {\n this.type = this.type || 'button'\n }\n this.updateItemSelectionState()\n this.brWillLoad.emit()\n }\n\n /**\n * Emite um evento após o componente ter sido carregado pela primeira vez.\n * Utilize este evento para realizar ações que devem ocorrer depois que o componente foi totalmente carregado.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidload) para mais detalhes.\n */\n @Event() brDidLoad: EventEmitter<void>\n componentDidLoad() {\n this.updateCheckboxes()\n this.brDidLoad.emit()\n }\n\n /**\n * Emite um evento antes do componente ser renderizado.\n * Utilize este evento para preparar o componente antes de sua renderização.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentwillrender) para mais detalhes.\n */\n @Event() brWillRender: EventEmitter<void>\n componentWillRender() {\n this.brWillRender.emit()\n }\n\n /**\n * Emite um evento após o componente ter sido renderizado.\n * Utilize este evento para executar ações que devem ocorrer após a renderização do componente.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidrender) para mais detalhes.\n */\n @Event() brDidRender: EventEmitter<void>\n componentDidRender() {\n this.brDidRender.emit()\n }\n\n /**\n * Emite um evento para indicar se o componente deve ser atualizado ou não.\n * Este evento é chamado antes de qualquer atualização do componente para decidir se a atualização deve prosseguir.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentshouldupdate) para mais detalhes.\n */\n @Event() brShouldUpdate: EventEmitter<void>\n componentShouldUpdate() {\n this.brShouldUpdate.emit()\n }\n\n /**\n * Emite um evento antes de o componente ser atualizado.\n * Utilize este evento para realizar ações preparatórias antes da atualização do componente.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentwillupdate) para mais detalhes.\n */\n @Event() brWillUpdate: EventEmitter<void>\n componentWillUpdate() {\n this.brWillUpdate.emit()\n }\n\n /**\n * Emite um evento após o componente ter sido atualizado.\n * Utilize este evento para realizar ações após a atualização do componente.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidupdate) para mais detalhes.\n */\n @Event() brDidUpdate: EventEmitter<void>\n componentDidUpdate() {\n this.brDidUpdate.emit()\n }\n\n /**\n * Emite um evento quando o componente é desconectado do DOM.\n * Utilize este evento para realizar a limpeza ou outras ações necessárias quando o componente é removido.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#disconnectedcallback) para mais detalhes.\n */\n @Event() brDidDisconnect: EventEmitter<void>\n disconnectedCallback() {\n this.brDidDisconnect.emit()\n }\n\n /**\n * Emite um evento quando o componente é associado ou removido de um `<form>`.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/form-associated#formassociatedcallback) para mais detalhes.\n *\n * @param form - Dados do formulário associado.\n */\n @Event() brFormAssociatedCallback: EventEmitter<FormData>\n formAssociatedCallback(form: FormData) {\n this.brFormAssociatedCallback.emit(form)\n }\n\n /**\n * Emite um evento quando o estado `disabled` do componente muda dentro de um `<form>`.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/form-associated#formdisabledcallback) para mais informações.\n *\n * @param disabled - Novo estado `disabled` do componente dentro do formulário.\n */\n @Event() brFormDisabledCallback: EventEmitter<boolean>\n formDisabledCallback(disabled: boolean) {\n this.brFormDisabledCallback.emit(disabled)\n }\n\n /**\n * Emite um evento quando um `<form>` é resetado.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/form-associated#formresetcallback) para mais detalhes.\n */\n @Event() brFormResetCallback: EventEmitter<void>\n formResetCallback() {\n this.brFormResetCallback.emit()\n }\n\n /**\n * Emite um evento quando o navegador preenche automaticamente os campos de um `<form>`.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/form-associated#formstaterestorecallback) para mais informações.\n *\n * @param state - Estado restaurado do formulário.\n * @param _mode - Modo de preenchimento automático do navegador.\n */\n @Event() brFormStateRestoreCallback: EventEmitter<[state: string, _mode: string]>\n formStateRestoreCallback(state: string, _mode: string) {\n this.brFormStateRestoreCallback.emit([state, _mode])\n }\n\n private hasSlotContentDefault(): any {\n this.hasSlotDefault = this.el.innerHTML !== ''\n }\n\n private hasSlotContent(slotName: string): boolean {\n return this.el.querySelector(`[slot=\"${slotName}\"]`) !== null\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-item': true,\n disabled: this.disabled,\n active: this.isActive,\n selected: this.selectedValue,\n 'py-3': this.density === 'middle',\n 'py-4': this.density === 'small',\n }\n }\n\n private readonly inheritedAttributes: Attributes = {}\n\n private getTagType(): string {\n if (this.isButton) {\n return 'button'\n }\n if (this.href?.length > 0) {\n return 'a'\n }\n return 'div'\n }\n\n private getAttributes() {\n const TagType = this.getTagType()\n const baseAttributes =\n TagType === 'button' ? { type: this.type, value: this.value } : { href: this.href, target: this.target }\n\n return {\n ...baseAttributes,\n 'aria-disabled': this.disabled ? 'true' : null,\n 'aria-current': this.isActive ? 'true' : null,\n 'data-toggle': this.isInteractive ? 'selection' : null,\n ...this.inheritedAttributes,\n }\n }\n\n private updateItemSelectionState() {\n const checkboxes = Array.from(this.el.querySelectorAll('br-checkbox'))\n const radios = Array.from(this.el.querySelectorAll('br-radio'))\n\n let isAnyCheckboxChecked = false\n let isAnyRadioSelected = false\n\n if (checkboxes.length > 0) {\n isAnyCheckboxChecked = checkboxes.some((cb) => cb.checked)\n }\n if (radios.length > 0) {\n isAnyRadioSelected = radios.some((radio) => radio.checked)\n }\n\n this.selectedValue = isAnyCheckboxChecked || isAnyRadioSelected\n }\n\n // Função para verificar se o clique foi dentro do slot do item.\n private isClickInsideInteractiveElement(target: HTMLElement): boolean {\n const interactiveSelectors = 'br-checkbox, br-radio, br-input, br-button, br-select, br-textarea'\n const interactiveElements = this.el.querySelectorAll(interactiveSelectors)\n return Array.from(interactiveElements).some((el) => el.contains(target) || target === el)\n }\n\n private updateCheckboxes() {\n const checkboxes = Array.from(this.el.querySelectorAll('br-checkbox'))\n\n checkboxes.forEach((checkbox) => {\n checkbox.checked = this.selectedValue\n })\n }\n\n private readonly handleClick = (event: MouseEvent) => {\n const clickedElement = event.target as HTMLElement\n\n if (this.disabled) {\n event.preventDefault()\n event.stopPropagation()\n }\n\n if (this.isButton) {\n this.brDidClick.emit()\n } else if (this.isInteractive && !this.isClickInsideInteractiveElement(clickedElement)) {\n this.selectedValue = !this.selectedValue\n this.brDidSelect.emit({ selected: this.selectedValue })\n this.updateCheckboxes()\n }\n event.stopPropagation()\n }\n\n render() {\n const TagType = this.getTagType()\n const attributes = this.getAttributes()\n const classList = this.getCssClassMap()\n return (\n <Host>\n <TagType class={classList} {...attributes} onClick={this.handleClick}>\n {this.hasSlotStart || this.hasSlotEnd ? (\n <div class=\"row align-items-center\">\n {this.hasSlotStart && (\n <div class=\"col-auto\">\n <slot name=\"start\"></slot>\n </div>\n )}\n\n <div class=\"col\">\n <slot></slot>\n </div>\n\n {this.hasSlotEnd && (\n <div class=\"col-auto\">\n <slot name=\"end\"></slot>\n </div>\n )}\n </div>\n ) : (\n <slot></slot>\n )}\n </TagType>\n </Host>\n )\n }\n}\n"],"mappings":"gEAAA,MAAMA,EAAU,4jaAChB,MAAAC,EAAeD,E,MCkBFE,EAAI,M,+5BAkQEC,KAAAC,oBAAkC,GA0DlCD,KAAAE,YAAeC,IAC9B,MAAMC,EAAiBD,EAAME,OAE7B,GAAIL,KAAKM,SAAU,CACjBH,EAAMI,iBACNJ,EAAMK,iB,CAGR,GAAIR,KAAKS,SAAU,CACjBT,KAAKU,WAAWC,M,MACX,GAAIX,KAAKY,gBAAkBZ,KAAKa,gCAAgCT,GAAiB,CACtFJ,KAAKc,eAAiBd,KAAKc,cAC3Bd,KAAKe,YAAYJ,KAAK,CAAEK,SAAUhB,KAAKc,gBACvCd,KAAKiB,kB,CAEPd,EAAMK,iBAAiB,E,cA/ToB,M,cAMA,M,gBAME,M,mBAKG,M,wDAmBL,M,oFAqBV,M,kBAEF,M,gBAEF,M,mBAGG,K,CAGlC,YAAAU,CAAaf,GACX,MAAME,EAASF,EAAME,OAErB,GAAIL,KAAKmB,GAAGC,SAASf,GAAS,CAC5BL,KAAKqB,0B,EAoBT,iBAAAC,GACEtB,KAAKuB,aAAaZ,M,CASpB,iBAAAa,GACExB,KAAKyB,wBACLzB,KAAK0B,aAAe1B,KAAK2B,eAAe,SACxC3B,KAAK4B,WAAa5B,KAAK2B,eAAe,OACtC3B,KAAKc,cAAgBd,KAAK6B,WAC1B,GAAI7B,KAAKS,SAAU,CACjBT,KAAK8B,KAAO9B,KAAK8B,MAAQ,Q,CAE3B9B,KAAKqB,2BACLrB,KAAK+B,WAAWpB,M,CASlB,gBAAAqB,GACEhC,KAAKiB,mBACLjB,KAAKiC,UAAUtB,M,CASjB,mBAAAuB,GACElC,KAAKmC,aAAaxB,M,CASpB,kBAAAyB,GACEpC,KAAKqC,YAAY1B,M,CASnB,qBAAA2B,GACEtC,KAAKuC,eAAe5B,M,CAStB,mBAAA6B,GACExC,KAAKyC,aAAa9B,M,CASpB,kBAAA+B,GACE1C,KAAK2C,YAAYhC,M,CASnB,oBAAAiC,GACE5C,KAAK6C,gBAAgBlC,M,CAUvB,sBAAAmC,CAAuBC,GACrB/C,KAAKgD,yBAAyBrC,KAAKoC,E,CAUrC,oBAAAE,CAAqB3C,GACnBN,KAAKkD,uBAAuBvC,KAAKL,E,CAQnC,iBAAA6C,GACEnD,KAAKoD,oBAAoBzC,M,CAW3B,wBAAA0C,CAAyBC,EAAeC,GACtCvD,KAAKwD,2BAA2B7C,KAAK,CAAC2C,EAAOC,G,CAGvC,qBAAA9B,GACNzB,KAAKyD,eAAiBzD,KAAKmB,GAAGuC,YAAc,E,CAGtC,cAAA/B,CAAegC,GACrB,OAAO3D,KAAKmB,GAAGyC,cAAc,UAAUD,SAAkB,I,CAGnD,cAAAE,GACN,MAAO,CACL,UAAW,KACXvD,SAAUN,KAAKM,SACfwD,OAAQ9D,KAAK+D,SACb/C,SAAUhB,KAAKc,cACf,OAAQd,KAAKgE,UAAY,SACzB,OAAQhE,KAAKgE,UAAY,Q,CAMrB,UAAAC,G,MACN,GAAIjE,KAAKS,SAAU,CACjB,MAAO,Q,CAET,KAAIyD,EAAAlE,KAAKmE,QAAI,MAAAD,SAAA,SAAAA,EAAEE,QAAS,EAAG,CACzB,MAAO,G,CAET,MAAO,K,CAGD,aAAAC,GACN,MAAMC,EAAUtE,KAAKiE,aACrB,MAAMM,EACJD,IAAY,SAAW,CAAExC,KAAM9B,KAAK8B,KAAM0C,MAAOxE,KAAKwE,OAAU,CAAEL,KAAMnE,KAAKmE,KAAM9D,OAAQL,KAAKK,QAElG,OAAAoE,OAAAC,OAAAD,OAAAC,OAAAD,OAAAC,OAAA,GACKH,GAAc,CACjB,gBAAiBvE,KAAKM,SAAW,OAAS,KAC1C,eAAgBN,KAAK+D,SAAW,OAAS,KACzC,cAAe/D,KAAKY,cAAgB,YAAc,OAC/CZ,KAAKC,oB,CAIJ,wBAAAoB,GACN,MAAMsD,EAAaC,MAAMC,KAAK7E,KAAKmB,GAAG2D,iBAAiB,gBACvD,MAAMC,EAASH,MAAMC,KAAK7E,KAAKmB,GAAG2D,iBAAiB,aAEnD,IAAIE,EAAuB,MAC3B,IAAIC,EAAqB,MAEzB,GAAIN,EAAWP,OAAS,EAAG,CACzBY,EAAuBL,EAAWO,MAAMC,GAAOA,EAAGC,S,CAEpD,GAAIL,EAAOX,OAAS,EAAG,CACrBa,EAAqBF,EAAOG,MAAMG,GAAUA,EAAMD,S,CAGpDpF,KAAKc,cAAgBkE,GAAwBC,C,CAIvC,+BAAApE,CAAgCR,GACtC,MAAMiF,EAAuB,qEAC7B,MAAMC,EAAsBvF,KAAKmB,GAAG2D,iBAAiBQ,GACrD,OAAOV,MAAMC,KAAKU,GAAqBL,MAAM/D,GAAOA,EAAGC,SAASf,IAAWA,IAAWc,G,CAGhF,gBAAAF,GACN,MAAM0D,EAAaC,MAAMC,KAAK7E,KAAKmB,GAAG2D,iBAAiB,gBAEvDH,EAAWa,SAASC,IAClBA,EAASL,QAAUpF,KAAKc,aAAa,G,CAsBzC,MAAA4E,GACE,MAAMpB,EAAUtE,KAAKiE,aACrB,MAAM0B,EAAa3F,KAAKqE,gBACxB,MAAMuB,EAAY5F,KAAK6D,iBACvB,OACEgC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAACvB,EAAOG,OAAAC,OAAA,CAAAqB,IAAA,2CAACC,MAAOJ,GAAeD,EAAU,CAAEM,QAASjG,KAAKE,cACtDF,KAAK0B,cAAgB1B,KAAK4B,WACzBiE,EAAA,OAAKG,MAAM,0BACRhG,KAAK0B,cACJmE,EAAA,OAAKG,MAAM,YACTH,EAAA,QAAMK,KAAK,WAIfL,EAAA,OAAKG,MAAM,OACTH,EAAA,cAGD7F,KAAK4B,YACJiE,EAAA,OAAKG,MAAM,YACTH,EAAA,QAAMK,KAAK,UAKjBL,EAAA,c","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{r as t,c as r,h as e,H as i,g as a}from"./p-6849daee.js";import{i as o}from"./p-ee6f4f3f.js";const l='*,*::before,*::after{box-sizing:border-box}html{line-height:var(--font-line-height-medium);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{margin:0}a{background-color:transparent}strong{font-weight:bolder}code{font-family:monospace;font-size:1em}small{font-size:80%}img{border-style:none}button,input{font-family:inherit;font-size:100%;line-height:var(--font-line-height-medium);margin:0}button,input{overflow:visible}button{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;-moz-appearance:button;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}progress{vertical-align:baseline}[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]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none;appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;appearance:button;font:inherit}[hidden]{display:none}.d-flex{display:flex !important}.align-items-center{align-items:center !important}.col,[class*=col-]{padding-left:calc(var(--grid-gutter) * 0.5);padding-right:calc(var(--grid-gutter) * 0.5);width:100%}.col{flex:1 0 0%;min-width:8.3333333333%}.col-auto{flex:0 0 auto;width:auto}.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){.row{--grid-gutter:var(--grid-tablet-gutter)}}@media (min-width: 992px){.row{--grid-gutter:var(--grid-tablet-gutter)}}@media (min-width: 1280px){.row{--grid-gutter:var(--grid-desktop-gutter)}}@media (min-width: 1600px){.row{--grid-gutter:var(--grid-tv-gutter)}}.mr-1{margin-right:var(--spacing-scale-half) !important}.mr-2{margin-right:var(--spacing-scale-base) !important}.mb-3{margin-bottom:var(--spacing-scale-2x) !important}.py-3{padding-bottom:var(--spacing-scale-2x) !important;padding-top:var(--spacing-scale-2x) !important}.py-4{padding-bottom:var(--spacing-scale-3x) !important;padding-top:var(--spacing-scale-3x) !important}body{--bg-color:var(--background);--bg-color-rgb:var(--background-rgb);--bg-color-hsl:var(--background-hsl);--font-size:var(--font-size-scale-base);--font-weight:var(--font-weight-regular);--link-color:var(--interactive);--link-color-rgb:var(--interactive-rgb);--link-color-hsl:var(--interactive-hsl);--line-height:var(--font-line-height-medium);--text-color:var(--color);--text-color-rgb:var(--color-rgb);--text-color-hsl:var(--color-hsl);background:var(--bg-color);color:var(--text-color);font-family:var(--font-family-base);font-size:var(--font-size);font-weight:var(--font-weight);line-height:var(--line-height)}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);color:var(--interactive);text-decoration:none}a:focus{outline:none}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)))}button{cursor:pointer}img{max-width:100%;vertical-align:middle}ul{margin-bottom:var(--spacing-scale-2x);margin-top:0;padding:0 0 0 var(--spacing-scale-5x)}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)}::-moz-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}::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,.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)}.text-pure-0{color:var(--pure-0) !important}.bg-support-01{--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);background:var(--color-support-01) !important}.text-nowrap{white-space:nowrap !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}[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-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)}.br-radio{--radio-size:24px;--radio-bullet-size:16px;--radio-bullet-position:calc((var(--radio-size) - var(--radio-bullet-size)) * 0.5);display:block}.br-radio+.br-radio{margin-top:var(--spacing-scale-base)}.br-radio input{opacity:0;position:absolute}.br-radio input+label{cursor:pointer;display:inline-block;margin-bottom:0;min-height:var(--radio-size);min-width:var(--radio-size);padding-left:calc(var(--spacing-scale-base) + var(--radio-size));position:relative}.br-radio input+label::before{background:var(--background);border:1px solid var(--border-color);border-radius:50%;content:"";height:var(--radio-size);left:0;position:absolute;top:-1px;width:var(--radio-size)}.br-radio input+label:empty{padding:0}.br-radio input+label:empty::before{top:0}.br-radio label{font-weight:var(--font-weight-medium)}.br-radio input:checked+label::after{background:var(--selected);border:7px solid var(--selected);border-radius:50%;content:"";height:var(--radio-bullet-size);left:var(--radio-bullet-position);position:absolute;right:0;top:calc(var(--radio-bullet-position) - 1px);width:var(--radio-bullet-size)}.br-radio input:checked+label:empty::after{top:var(--radio-bullet-position)}.br-radio.valid input+label::before,.br-radio[valid] input+label::before{border-color:var(--success)}.br-radio.invalid input+label::before,.br-radio[invalid] input+label::before{border-color:var(--danger)}.br-radio.small input+label,.br-radio[small] input+label{line-height:var(--spacing-scale-2xh);min-height:var(--spacing-scale-2xh)}.br-radio.small input+label::before,.br-radio[small] input+label::before{height:var(--spacing-scale-2xh);width:var(--spacing-scale-2xh)}.br-radio.small input:checked+label::after,.br-radio[small] input:checked+label::after{border-width:4px;height:10px;width:10px}.br-radio input:invalid+label::before{border-color:var(--danger)}.br-radio input:focus-visible:checked+label::before,.br-radio input:focus-visible+label::before{border-color:var(--focus) !important;box-shadow:0 0 0 var(--surface-width-md) var(--focus);outline:none}.br-radio input:hover:not(:disabled)+label::before{background-image:linear-gradient(rgba(var(--interactive-rgb), var(--hover)), rgba(var(--interactive-rgb), var(--hover)))}.br-radio.dark-mode,.br-radio.dark-mode label{color:var(--color-dark)}:host{display:block}.br-radio.hidden-label label{padding-left:calc(var(--checkbox-size) + var(--surface-width-md) * 2);text-indent:-10000px;white-space:nowrap;width:0}';const n=l;const s=class{constructor(e){t(this,e);this.brDidConnect=r(this,"brDidConnect",7);this.brWillLoad=r(this,"brWillLoad",7);this.brDidLoad=r(this,"brDidLoad",7);this.brWillRender=r(this,"brWillRender",7);this.brDidRender=r(this,"brDidRender",7);this.brShouldUpdate=r(this,"brShouldUpdate",7);this.brWillUpdate=r(this,"brWillUpdate",7);this.brDidUpdate=r(this,"brDidUpdate",7);this.brDidDisconnect=r(this,"brDidDisconnect",7);this.brFormAssociatedCallback=r(this,"brFormAssociatedCallback",7);this.brFormDisabledCallback=r(this,"brFormDisabledCallback",7);this.brFormResetCallback=r(this,"brFormResetCallback",7);this.brFormStateRestoreCallback=r(this,"brFormStateRestoreCallback",7);this.brDidCheckedChange=r(this,"brDidCheckedChange",7);if(e.$hostElement$["s-ei"]){this.elementInternals=e.$hostElement$["s-ei"]}else{this.elementInternals=e.$hostElement$.attachInternals();e.$hostElement$["s-ei"]=this.elementInternals}this.inheritedAttributes={};this.handleClick=()=>{this.toggleChecked()};this.handleKeyDown=t=>{if(t.code==="Space"){t.preventDefault();this.toggleChecked()}};this.toggleChecked=()=>{if(this.toggle){this.checked=!this.checked;this.brDidCheckedChange.emit({value:this.value,checked:this.checked})}};this.stopPropagation=t=>{t.stopPropagation()};this.checked=false;this.disabled=false;this.state=null;this.hasHiddenLabel=false;this.name=undefined;this.label=undefined;this.value=undefined;this.customId=undefined;this.toggle=false;this._slotDefault=false}handleItemInteractiveSelect(t){var r;const e=t.target;const i=e.closest("br-item");if(i&&((r=this.el.parentElement)===null||r===void 0?void 0:r.contains(i))){this.checked=t.detail.selected}t.stopPropagation()}connectedCallback(){this.brDidConnect.emit()}componentWillLoad(){this.hasSlotContentDefault();this.brWillLoad.emit();this.inheritedAttributes=o(this.el)}componentDidLoad(){this.brDidLoad.emit()}componentWillRender(){this.brWillRender.emit()}componentDidRender(){this.brDidRender.emit()}componentShouldUpdate(){this.brShouldUpdate.emit()}componentWillUpdate(){this.brWillUpdate.emit()}componentDidUpdate(){this.brDidUpdate.emit()}disconnectedCallback(){this.brDidDisconnect.emit()}formAssociatedCallback(t){this.brFormAssociatedCallback.emit(t)}formDisabledCallback(t){this.brFormDisabledCallback.emit(t)}formResetCallback(){this.brFormResetCallback.emit()}formStateRestoreCallback(t,r){this.brFormStateRestoreCallback.emit([t,r])}hasSlotContentDefault(){this._slotDefault=this.el.innerHTML!==""}getCssClassMap(){return{"br-radio":true,valid:this.state==="valid",invalid:this.state==="invalid",disabled:this.disabled,"hidden-label":this.hasHiddenLabel}}getComputedId(){var t;return((t=this.customId)===null||t===void 0?void 0:t.length)>0?this.customId:this.name}render(){return e(i,{key:"5da5a61be5135f9d6938a3f71d5423947c62f786","aria-disabled":this.disabled?"true":null},e("div",{key:"84fb3469e320751f3f9d10f727f3bd113bea0c7d",class:this.getCssClassMap(),onClick:this.handleClick,onKeyDown:this.handleKeyDown},e("input",Object.assign({key:"e2dfa7551a548ed986d2d1be7343cd67645150b9","aria-label":this.label,type:"radio",id:this.getComputedId(),name:this.name,checked:this.checked,disabled:this.disabled,value:this.value,onClick:this.stopPropagation},this.inheritedAttributes)),e("label",{key:"fa025229ad31f88416a552fb6dc9cd00f0da6876",htmlFor:this.getComputedId()},this._slotDefault?e("slot",null):this.label)))}static get formAssociated(){return true}get el(){return a(this)}};s.style=n;export{s as br_radio};
2
+ //# sourceMappingURL=p-14f1c8e6.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["radioCss","BrRadioStyle0","Radio","this","inheritedAttributes","handleClick","toggleChecked","handleKeyDown","event","code","preventDefault","toggle","checked","brDidCheckedChange","emit","value","stopPropagation","handleItemInteractiveSelect","target","brItem","closest","_a","el","parentElement","contains","detail","selected","connectedCallback","brDidConnect","componentWillLoad","hasSlotContentDefault","brWillLoad","inheritAriaAttributes","componentDidLoad","brDidLoad","componentWillRender","brWillRender","componentDidRender","brDidRender","componentShouldUpdate","brShouldUpdate","componentWillUpdate","brWillUpdate","componentDidUpdate","brDidUpdate","disconnectedCallback","brDidDisconnect","formAssociatedCallback","form","brFormAssociatedCallback","formDisabledCallback","disabled","brFormDisabledCallback","formResetCallback","brFormResetCallback","formStateRestoreCallback","state","_mode","brFormStateRestoreCallback","_slotDefault","innerHTML","getCssClassMap","valid","invalid","hasHiddenLabel","getComputedId","customId","length","name","render","h","Host","key","class","onClick","onKeyDown","Object","assign","label","type","id","htmlFor"],"sources":["src/components/radio/radio.scss?tag=br-radio&encapsulation=shadow","src/components/radio/radio.tsx"],"sourcesContent":["@import \"../../../../../node_modules/@govbr-ds/core/src/components/radio/radio.scss\";\n\n:host {\n display: block;\n}\n\n.br-radio.hidden-label {\n label {\n padding-left: calc(var(--checkbox-size) + var(--surface-width-md)* 2);\n text-indent: -10000px;\n white-space: nowrap;\n width: 0;\n }\n}\n ","import { AttachInternals, Component, Element, Event, EventEmitter, h, Host, Listen, Prop, State } from '@stencil/core'\nimport { Attributes, inheritAriaAttributes } from '../../utils/inherited-attributes'\nimport { CssClassMap } from '../../utils/interfaces'\n\n/**\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/radio?tab=designer).\n *\n * @slot default - O texto descritivo pode ser passado por propriedade (label) ou por slot.\n */\n\n@Component({\n tag: 'br-radio',\n styleUrl: 'radio.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class Radio {\n /**\n * Referência ao elemento host do componente.\n * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.\n */\n @Element() el: HTMLBrRadioElement\n\n @AttachInternals() elementInternals: ElementInternals\n\n /**\n * Define o estado de seleção do radio.\n * Se definido como verdadeiro, o radio estará marcado. Caso contrário, estará desmarcado.\n */\n @Prop({ reflect: true, mutable: true }) checked: boolean = false\n\n /**\n * Desativa o radio, tornando-o não interativo.\n */\n @Prop({ reflect: true }) disabled: boolean = false\n\n /**\n * Indica a validade do radio.\n * Valores possíveis:\n * - 'valid': O radio é considerado válido.\n * - 'invalid': O radio é considerado inválido.\n * Se não for especificado, o valor padrão é `null`, indicando que a validade não foi definida.\n */\n @Prop({ reflect: true }) state: 'valid' | 'invalid' = null\n\n /**\n * Define se o label associado ao radio deve ser oculto.\n * Se definido como verdadeiro, o texto do label será oculto, mas o radio ainda estará visível e funcional.\n */\n @Prop({ reflect: true, attribute: 'has-hidden-label' }) hasHiddenLabel: boolean = false\n\n /**\n * Define o nome do radio, que é utilizado para agrupar radios em formulários e identificar o campo.\n * O valor é obrigatório e deve ser fornecido para garantir o correto funcionamento em formulários.\n */\n\n @Prop({ reflect: true }) name!: string\n\n /**\n * Texto descritivo exibido à direita do radio.\n * Caso um slot seja utilizado para fornecer um texto alternativo, o valor desta propriedade será ignorado.\n */\n @Prop({ reflect: true }) label: string\n\n /**\n * Define o valor associado ao radio quando ele faz parte de um formulário nativo (`<form>`).\n * Esse valor é enviado com o formulário quando o radio está selecionado.\n * **Nota:** Esta propriedade não deve ser utilizada para determinar se o radio está selecionado; para verificar o estado de seleção, use a propriedade `checked`.\n */\n @Prop({ reflect: true }) value: any\n\n /**\n * Especifica o ID do componente, que é usado para conectar o label correspondente ao radio.\n * Se não for fornecido, o ID será o mesmo valor atribuído à propriedade `name`.\n */\n @Prop({ reflect: true, attribute: 'id' }) customId: string\n\n /**\n * Indica se o radio pode alternar seu estado checked\n */\n @Prop({ reflect: true }) toggle: boolean = false\n\n /**\n * Propriedade que vai guardar o valor da validação do slot\n */\n @State() _slotDefault: boolean = false\n\n // Faz a marcação do checkbox de acordo com a seleção do componente item do tipo is-interactive\n @Listen('brDidSelect', { target: 'document' })\n handleItemInteractiveSelect(event: CustomEvent) {\n // Verifica se o evento é de um pai correto\n const target = event.target as HTMLElement\n const brItem = target.closest('br-item') as HTMLElement\n\n if (brItem && this.el.parentElement?.contains(brItem)) {\n this.checked = event.detail.selected\n }\n\n event.stopPropagation()\n }\n\n /**\n * Emite um evento quando o componente é conectado ao DOM.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#connectedcallback) para mais detalhes.\n */\n @Event() brDidConnect: EventEmitter<void>\n connectedCallback() {\n this.brDidConnect.emit()\n }\n\n /**\n * Emite um evento antes que o componente seja carregado pela primeira vez.\n * Utilize este evento para realizar tarefas de inicialização antes do componente ser exibido.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentwillload) para mais detalhes.\n */\n @Event() brWillLoad: EventEmitter<void>\n componentWillLoad() {\n this.hasSlotContentDefault()\n this.brWillLoad.emit()\n this.inheritedAttributes = inheritAriaAttributes(this.el)\n }\n\n /**\n * Emite um evento após o componente ter sido carregado pela primeira vez.\n * Utilize este evento para realizar ações que devem ocorrer depois que o componente foi totalmente carregado.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidload) para mais detalhes.\n */\n @Event() brDidLoad: EventEmitter<void>\n componentDidLoad() {\n this.brDidLoad.emit()\n }\n\n /**\n * Emite um evento antes do componente ser renderizado.\n * Utilize este evento para preparar o componente antes de sua renderização.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentwillrender) para mais detalhes.\n */\n @Event() brWillRender: EventEmitter<void>\n componentWillRender() {\n this.brWillRender.emit()\n }\n\n /**\n * Emite um evento após o componente ter sido renderizado.\n * Utilize este evento para executar ações que devem ocorrer após a renderização do componente.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidrender) para mais detalhes.\n */\n @Event() brDidRender: EventEmitter<void>\n componentDidRender() {\n this.brDidRender.emit()\n }\n\n /**\n * Emite um evento para indicar se o componente deve ser atualizado ou não.\n * Este evento é chamado antes de qualquer atualização do componente para decidir se a atualização deve prosseguir.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentshouldupdate) para mais detalhes.\n */\n @Event() brShouldUpdate: EventEmitter<void>\n componentShouldUpdate() {\n this.brShouldUpdate.emit()\n }\n\n /**\n * Emite um evento antes de o componente ser atualizado.\n * Utilize este evento para realizar ações preparatórias antes da atualização do componente.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentwillupdate) para mais detalhes.\n */\n @Event() brWillUpdate: EventEmitter<void>\n componentWillUpdate() {\n this.brWillUpdate.emit()\n }\n\n /**\n * Emite um evento após o componente ter sido atualizado.\n * Utilize este evento para realizar ações após a atualização do componente.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidupdate) para mais detalhes.\n */\n @Event() brDidUpdate: EventEmitter<void>\n componentDidUpdate() {\n this.brDidUpdate.emit()\n }\n\n /**\n * Emite um evento quando o componente é desconectado do DOM.\n * Utilize este evento para realizar a limpeza ou outras ações necessárias quando o componente é removido.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#disconnectedcallback) para mais detalhes.\n */\n @Event() brDidDisconnect: EventEmitter<void>\n disconnectedCallback() {\n this.brDidDisconnect.emit()\n }\n\n /**\n * Emite um evento quando o componente é associado ou removido de um `<form>`.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/form-associated#formassociatedcallback) para mais detalhes.\n *\n * @param form - Dados do formulário associado.\n */\n @Event() brFormAssociatedCallback: EventEmitter<FormData>\n formAssociatedCallback(form: FormData) {\n this.brFormAssociatedCallback.emit(form)\n }\n\n /**\n * Emite um evento quando o estado `disabled` do componente muda dentro de um `<form>`.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/form-associated#formdisabledcallback) para mais informações.\n *\n * @param disabled - Novo estado `disabled` do componente dentro do formulário.\n */\n @Event() brFormDisabledCallback: EventEmitter<boolean>\n formDisabledCallback(disabled: boolean) {\n this.brFormDisabledCallback.emit(disabled)\n }\n\n /**\n * Emite um evento quando um `<form>` é resetado.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/form-associated#formresetcallback) para mais detalhes.\n */\n @Event() brFormResetCallback: EventEmitter<void>\n formResetCallback() {\n this.brFormResetCallback.emit()\n }\n\n /**\n * Emite um evento quando o navegador preenche automaticamente os campos de um `<form>`.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/form-associated#formstaterestorecallback) para mais informações.\n *\n * @param state - Estado restaurado do formulário.\n * @param _mode - Modo de preenchimento automático do navegador.\n */\n @Event() brFormStateRestoreCallback: EventEmitter<[state: string, _mode: string]>\n formStateRestoreCallback(state: string, _mode: string) {\n this.brFormStateRestoreCallback.emit([state, _mode])\n }\n\n private hasSlotContentDefault(): any {\n this._slotDefault = this.el.innerHTML !== ''\n }\n\n private getCssClassMap(): CssClassMap {\n return {\n 'br-radio': true,\n valid: this.state === 'valid',\n invalid: this.state === 'invalid',\n disabled: this.disabled,\n 'hidden-label': this.hasHiddenLabel,\n }\n }\n\n private inheritedAttributes: Attributes = {}\n\n /**\n * Componente teve seu estado \"checked\" alterado\n */\n @Event() brDidCheckedChange: EventEmitter<{ value: boolean; checked: boolean }>\n\n private readonly handleClick = () => {\n this.toggleChecked()\n }\n\n private readonly handleKeyDown = (event: KeyboardEvent) => {\n // Permite alternar o estado apenas quando a tecla pressionada é 'Space'\n if (event.code === 'Space') {\n event.preventDefault() // Impede o comportamento padrão da tecla 'Space'\n this.toggleChecked()\n }\n }\n\n /**\n * Controla o comportamento de alternar o estado checked.\n */\n private readonly toggleChecked = () => {\n if (this.toggle) {\n this.checked = !this.checked\n this.brDidCheckedChange.emit({ value: this.value, checked: this.checked })\n }\n }\n\n /**\n * Determina um id para o radio.\n */\n private getComputedId(): string {\n return this.customId?.length > 0 ? this.customId : this.name\n }\n\n private readonly stopPropagation = (event: Event) => {\n event.stopPropagation()\n }\n\n render() {\n return (\n <Host aria-disabled={this.disabled ? 'true' : null}>\n <div class={this.getCssClassMap()} onClick={this.handleClick} onKeyDown={this.handleKeyDown}>\n <input\n aria-label={this.label}\n type=\"radio\"\n id={this.getComputedId()}\n name={this.name}\n checked={this.checked}\n disabled={this.disabled}\n value={this.value}\n onClick={this.stopPropagation}\n {...this.inheritedAttributes}\n />\n <label htmlFor={this.getComputedId()}>{this._slotDefault ? <slot></slot> : this.label}</label>\n </div>\n </Host>\n )\n }\n}\n"],"mappings":"oGAAA,MAAMA,EAAW,23SACjB,MAAAC,EAAeD,E,MCeFE,EAAK,M,s4BAyORC,KAAAC,oBAAkC,GAOzBD,KAAAE,YAAc,KAC7BF,KAAKG,eAAe,EAGLH,KAAAI,cAAiBC,IAEhC,GAAIA,EAAMC,OAAS,QAAS,CAC1BD,EAAME,iBACNP,KAAKG,e,GAOQH,KAAAG,cAAgB,KAC/B,GAAIH,KAAKQ,OAAQ,CACfR,KAAKS,SAAWT,KAAKS,QACrBT,KAAKU,mBAAmBC,KAAK,CAAEC,MAAOZ,KAAKY,MAAOH,QAAST,KAAKS,S,GAWnDT,KAAAa,gBAAmBR,IAClCA,EAAMQ,iBAAiB,E,aAjQkC,M,cAKd,M,WASS,K,oBAM4B,M,kGA+BvC,M,kBAKV,K,CAIjC,2BAAAC,CAA4BT,G,MAE1B,MAAMU,EAASV,EAAMU,OACrB,MAAMC,EAASD,EAAOE,QAAQ,WAE9B,GAAID,KAAUE,EAAAlB,KAAKmB,GAAGC,iBAAa,MAAAF,SAAA,SAAAA,EAAEG,SAASL,IAAS,CACrDhB,KAAKS,QAAUJ,EAAMiB,OAAOC,Q,CAG9BlB,EAAMQ,iB,CAQR,iBAAAW,GACExB,KAAKyB,aAAad,M,CASpB,iBAAAe,GACE1B,KAAK2B,wBACL3B,KAAK4B,WAAWjB,OAChBX,KAAKC,oBAAsB4B,EAAsB7B,KAAKmB,G,CASxD,gBAAAW,GACE9B,KAAK+B,UAAUpB,M,CASjB,mBAAAqB,GACEhC,KAAKiC,aAAatB,M,CASpB,kBAAAuB,GACElC,KAAKmC,YAAYxB,M,CASnB,qBAAAyB,GACEpC,KAAKqC,eAAe1B,M,CAStB,mBAAA2B,GACEtC,KAAKuC,aAAa5B,M,CASpB,kBAAA6B,GACExC,KAAKyC,YAAY9B,M,CASnB,oBAAA+B,GACE1C,KAAK2C,gBAAgBhC,M,CAUvB,sBAAAiC,CAAuBC,GACrB7C,KAAK8C,yBAAyBnC,KAAKkC,E,CAUrC,oBAAAE,CAAqBC,GACnBhD,KAAKiD,uBAAuBtC,KAAKqC,E,CAQnC,iBAAAE,GACElD,KAAKmD,oBAAoBxC,M,CAW3B,wBAAAyC,CAAyBC,EAAeC,GACtCtD,KAAKuD,2BAA2B5C,KAAK,CAAC0C,EAAOC,G,CAGvC,qBAAA3B,GACN3B,KAAKwD,aAAexD,KAAKmB,GAAGsC,YAAc,E,CAGpC,cAAAC,GACN,MAAO,CACL,WAAY,KACZC,MAAO3D,KAAKqD,QAAU,QACtBO,QAAS5D,KAAKqD,QAAU,UACxBL,SAAUhD,KAAKgD,SACf,eAAgBhD,KAAK6D,e,CAoCjB,aAAAC,G,MACN,QAAO5C,EAAAlB,KAAK+D,YAAQ,MAAA7C,SAAA,SAAAA,EAAE8C,QAAS,EAAIhE,KAAK+D,SAAW/D,KAAKiE,I,CAO1D,MAAAC,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2DAAgBrE,KAAKgD,SAAW,OAAS,MAC5CmB,EAAA,OAAAE,IAAA,2CAAKC,MAAOtE,KAAK0D,iBAAkBa,QAASvE,KAAKE,YAAasE,UAAWxE,KAAKI,eAC5E+D,EAAA,QAAAM,OAAAC,OAAA,CAAAL,IAAA,wDACcrE,KAAK2E,MACjBC,KAAK,QACLC,GAAI7E,KAAK8D,gBACTG,KAAMjE,KAAKiE,KACXxD,QAAST,KAAKS,QACduC,SAAUhD,KAAKgD,SACfpC,MAAOZ,KAAKY,MACZ2D,QAASvE,KAAKa,iBACVb,KAAKC,sBAEXkE,EAAA,SAAAE,IAAA,2CAAOS,QAAS9E,KAAK8D,iBAAkB9D,KAAKwD,aAAeW,EAAA,aAAgBnE,KAAK2E,Q","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{r as a,c as t,h as r,H as e,g as i}from"./p-6849daee.js";import{i as o}from"./p-ee6f4f3f.js";const n="*,*::before,*::after{box-sizing:border-box}html{line-height:var(--font-line-height-medium);-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{margin:0}a{background-color:transparent}strong{font-weight:bolder}code{font-family:monospace;font-size:1em}small{font-size:80%}img{border-style:none}button,input{font-family:inherit;font-size:100%;line-height:var(--font-line-height-medium);margin:0}button,input{overflow:visible}button{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;-moz-appearance:button;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}progress{vertical-align:baseline}[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]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none;appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;appearance:button;font:inherit}[hidden]{display:none}.d-flex{display:flex !important}.align-items-center{align-items:center !important}.col,[class*=col-]{padding-left:calc(var(--grid-gutter) * 0.5);padding-right:calc(var(--grid-gutter) * 0.5);width:100%}.col{flex:1 0 0%;min-width:8.3333333333%}.col-auto{flex:0 0 auto;width:auto}.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){.row{--grid-gutter:var(--grid-tablet-gutter)}}@media (min-width: 992px){.row{--grid-gutter:var(--grid-tablet-gutter)}}@media (min-width: 1280px){.row{--grid-gutter:var(--grid-desktop-gutter)}}@media (min-width: 1600px){.row{--grid-gutter:var(--grid-tv-gutter)}}.mr-1{margin-right:var(--spacing-scale-half) !important}.mr-2{margin-right:var(--spacing-scale-base) !important}.mb-3{margin-bottom:var(--spacing-scale-2x) !important}.py-3{padding-bottom:var(--spacing-scale-2x) !important;padding-top:var(--spacing-scale-2x) !important}.py-4{padding-bottom:var(--spacing-scale-3x) !important;padding-top:var(--spacing-scale-3x) !important}body{--bg-color:var(--background);--bg-color-rgb:var(--background-rgb);--bg-color-hsl:var(--background-hsl);--font-size:var(--font-size-scale-base);--font-weight:var(--font-weight-regular);--link-color:var(--interactive);--link-color-rgb:var(--interactive-rgb);--link-color-hsl:var(--interactive-hsl);--line-height:var(--font-line-height-medium);--text-color:var(--color);--text-color-rgb:var(--color-rgb);--text-color-hsl:var(--color-hsl);background:var(--bg-color);color:var(--text-color);font-family:var(--font-family-base);font-size:var(--font-size);font-weight:var(--font-weight);line-height:var(--line-height)}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);color:var(--interactive);text-decoration:none}a:focus{outline:none}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)))}button{cursor:pointer}img{max-width:100%;vertical-align:middle}ul{margin-bottom:var(--spacing-scale-2x);margin-top:0;padding:0 0 0 var(--spacing-scale-5x)}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)}::-moz-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}::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,.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)}.text-pure-0{color:var(--pure-0) !important}.bg-support-01{--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);background:var(--color-support-01) !important}.text-nowrap{white-space:nowrap !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}[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-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)}.br-avatar{--avatar-size:var(--avatar-small);--avatar-icon-size:var(--avatar-icon-small);--avatar-text-size:var(--avatar-text-small);--avatar-small:40px;--avatar-medium:100px;--avatar-large:160px;--avatar-icon-small:var(--icon-size-2x);--avatar-icon-medium:var(--icon-size-5x);--avatar-icon-large:var(--icon-size-8x);--avatar-text-small:var(--font-size-scale-up-03);--avatar-text-medium:var(--font-size-scale-up-07);--avatar-text-large:var(--font-size-scale-up-11);align-items:center;background-color:transparent;border:0;display:inline-flex;font-size:var(--avatar-text-size);font-weight:var(--font-weight-bold);justify-content:center;line-height:var(--avatar-size);vertical-align:middle}.br-avatar .content{align-items:center;background-color:var(--blue-10);border-radius:50%;color:var(--blue-warm-20);display:inline-flex;font-size:var(--avatar-text-size);height:var(--avatar-size);justify-content:center;overflow:hidden;text-align:center;text-transform:uppercase;vertical-align:inherit;width:var(--avatar-size)}.br-avatar .content img{height:var(--avatar-size);vertical-align:inherit;width:var(--avatar-size)}.br-avatar.small,.br-avatar[small]{--avatar-size:var(--avatar-small);--avatar-icon-size:var(--avatar-icon-small);--avatar-text-size:var(--avatar-text-small)}.br-avatar.is-medium,.br-avatar.medium,.br-avatar[medium]{--avatar-size:var(--avatar-medium);--avatar-icon-size:var(--avatar-icon-medium);--avatar-text-size:var(--avatar-text-medium)}.br-avatar.large,.br-avatar[large]{--avatar-size:var(--avatar-large);--avatar-icon-size:var(--avatar-icon-large);--avatar-text-size:var(--avatar-text-large)}.br-avatar[data-toggle=dropdown]:focus{outline:none}.br-avatar[data-toggle=dropdown]:focus-visible{outline-color:var(--focus);outline-offset:var(--focus-offset);outline-style:var(--focus-style);outline-width:var(--focus-width)}.br-avatar .image{align-items:center;background-color:var(--blue-10);border-radius:50%;color:var(--blue-warm-20);display:inline-flex;font-size:var(--avatar-text-size);height:var(--avatar-size);justify-content:center;overflow:hidden;text-align:center;text-transform:uppercase;vertical-align:inherit;width:var(--avatar-size)}.br-avatar .image img{height:var(--avatar-size);vertical-align:inherit;width:var(--avatar-size)}:host{display:block}";const s=n;var l;(function(a){a["Small"]="small";a["Medium"]="medium";a["Large"]="large"})(l||(l={}));const c=class{constructor(r){a(this,r);this.brDidConnect=t(this,"brDidConnect",7);this.brWillLoad=t(this,"brWillLoad",7);this.brDidLoad=t(this,"brDidLoad",7);this.brWillRender=t(this,"brWillRender",7);this.brDidRender=t(this,"brDidRender",7);this.brShouldUpdate=t(this,"brShouldUpdate",7);this.brWillUpdate=t(this,"brWillUpdate",7);this.brDidUpdate=t(this,"brDidUpdate",7);this.brDidDisconnect=t(this,"brDidDisconnect",7);this.iconSizes={small:{height:"32",width:"40"},medium:{height:"80",width:"88"},large:{height:"128",width:"136"}};this.iconMarginTops={small:"0.7em",medium:"1em",large:"0.62em"};this.inheritedAttributes={};this.density=l.Medium;this.image=undefined;this.imageAlt="Imagem do avatar";this.isIconic=false;this.text=undefined;this.iconWidth=undefined;this.iconHeight=undefined}connectedCallback(){this.brDidConnect.emit()}componentWillLoad(){this.brWillLoad.emit();this.inheritedAttributes=o(this.el);this.setIconSize()}componentDidLoad(){this.brDidLoad.emit()}componentWillRender(){this.brWillRender.emit()}componentDidRender(){this.brDidRender.emit()}componentShouldUpdate(){this.brShouldUpdate.emit()}componentWillUpdate(){this.brWillUpdate.emit()}componentDidUpdate(){this.brDidUpdate.emit()}disconnectedCallback(){this.brDidDisconnect.emit()}getCssClassMap(){return{"br-avatar":true,small:this.density===l.Small,medium:this.density===l.Medium,large:this.density===l.Large}}setIconSize(){var a,t;if(((a=this.image)===null||a===void 0?void 0:a.trim().length)!==0&&((t=this.text)===null||t===void 0?void 0:t.trim().length)!==0){const a=this.iconSizes[this.density];this.iconHeight=a.height;this.iconWidth=a.width}}adjustIconStyle(a){return this.iconMarginTops[a]||"1em"}renderAvatar(){var a,t;if(((a=this.text)===null||a===void 0?void 0:a.trim().length)>0){return r("span",{class:"content bg-support-01 text-pure-0",title:this.text},this.text[0].toUpperCase())}if(((t=this.image)===null||t===void 0?void 0:t.trim().length)>0){return r("span",{class:"content",title:this.imageAlt||this.text},r("img",{src:this.image,alt:this.imageAlt,loading:"lazy"}))}if(this.isIconic){return r("span",{class:"content",title:this.text},r("br-icon",{"icon-name":"fa-solid:user",height:this.iconHeight,width:this.iconWidth,"aria-hidden":"true",style:{"margin-top":this.adjustIconStyle(this.density)}}))}}render(){return r(e,{key:"90d4903713585ba969eb111676d95f89c53522f5"},r("span",Object.assign({key:"3bb155bdc14da14da5bb576323446157636f3974",class:this.getCssClassMap()},this.inheritedAttributes),this.renderAvatar()))}get el(){return i(this)}};c.style=s;export{c as br_avatar};
2
+ //# sourceMappingURL=p-198082b6.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["avatarCss","BrAvatarStyle0","Density","Avatar","this","iconSizes","small","height","width","medium","large","iconMarginTops","inheritedAttributes","Medium","connectedCallback","brDidConnect","emit","componentWillLoad","brWillLoad","inheritAriaAttributes","el","setIconSize","componentDidLoad","brDidLoad","componentWillRender","brWillRender","componentDidRender","brDidRender","componentShouldUpdate","brShouldUpdate","componentWillUpdate","brWillUpdate","componentDidUpdate","brDidUpdate","disconnectedCallback","brDidDisconnect","getCssClassMap","density","Small","Large","_a","image","trim","length","_b","text","size","iconHeight","iconWidth","adjustIconStyle","renderAvatar","h","class","title","toUpperCase","imageAlt","src","alt","loading","isIconic","style","render","Host","key","Object","assign"],"sources":["src/components/avatar/avatar.scss?tag=br-avatar&encapsulation=shadow","src/components/avatar/avatar.tsx"],"sourcesContent":["@import \"../../../../../node_modules/@govbr-ds/core/src/components/avatar/avatar.scss\";\n\n:host {\n display: block;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Prop, State } from '@stencil/core'\nimport { Attributes, inheritAriaAttributes } from '../../utils/inherited-attributes'\nimport { CssClassMap } from '../../utils/interfaces'\n\nenum Density {\n Small = 'small',\n Medium = 'medium',\n Large = 'large',\n}\n\n/**\n * Para uma descrição detalhada, consulte a [documentação do GovBR-DS](https://www.gov.br/ds/components/avatar?tab=designer).\n */\n@Component({\n tag: 'br-avatar',\n styleUrl: 'avatar.scss',\n shadow: true,\n})\nexport class Avatar {\n /**\n * Referência ao elemento host do componente.\n * Utilize esta propriedade para acessar e manipular o elemento do DOM associado ao componente.\n */\n @Element() el: HTMLBrAvatarElement\n\n /**\n * Ajusta a densidade, alterando o espaçamento interno para um visual mais compacto ou mais expandido.\n */\n @Prop() density: string = Density.Medium\n\n /**\n * URL da imagem a ser exibida no avatar do tipo 'fotográfico'.\n * Deve ser uma URL válida que aponta para a imagem desejada.\n */\n @Prop() image: string\n\n /**\n * Texto alternativo (alt) associado à imagem do avatar. Essencial para acessibilidade e SEO.\n * Deve descrever de forma clara e concisa o conteúdo da imagem, por exemplo: \"Foto de perfil de João Silva\".\n */\n @Prop() imageAlt = 'Imagem do avatar'\n\n /**\n * Indica se o avatar deve ser exibido como um ícone em vez de uma imagem fotográfica.\n * Se definido como verdadeiro, o avatar será exibido como um ícone.\n */\n @Prop() isIconic: boolean = false\n\n /**\n * Texto exibido no avatar do tipo 'letra'.\n * Esse texto será mostrado em vez de uma imagem e pode ser usado para representar iniciais ou outras informações textuais.\n */\n @Prop() text: string\n\n /**\n * Emite um evento quando o componente é conectado ao DOM.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#connectedcallback) para mais detalhes.\n */\n @Event() brDidConnect: EventEmitter<void>\n connectedCallback() {\n this.brDidConnect.emit()\n }\n\n /**\n * Emite um evento antes que o componente seja carregado pela primeira vez.\n * Utilize este evento para realizar tarefas de inicialização antes do componente ser exibido.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentwillload) para mais detalhes.\n */\n @Event() brWillLoad: EventEmitter<void>\n componentWillLoad() {\n this.brWillLoad.emit()\n this.inheritedAttributes = inheritAriaAttributes(this.el)\n this.setIconSize()\n }\n\n /**\n * Emite um evento após o componente ter sido carregado pela primeira vez.\n * Utilize este evento para realizar ações que devem ocorrer depois que o componente foi totalmente carregado.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidload) para mais detalhes.\n */\n @Event() brDidLoad: EventEmitter<void>\n componentDidLoad() {\n this.brDidLoad.emit()\n }\n\n /**\n * Emite um evento antes do componente ser renderizado.\n * Utilize este evento para preparar o componente antes de sua renderização.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentwillrender) para mais detalhes.\n */\n @Event() brWillRender: EventEmitter<void>\n componentWillRender() {\n this.brWillRender.emit()\n }\n\n /**\n * Emite um evento após o componente ter sido renderizado.\n * Utilize este evento para executar ações que devem ocorrer após a renderização do componente.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidrender) para mais detalhes.\n */\n @Event() brDidRender: EventEmitter<void>\n componentDidRender() {\n this.brDidRender.emit()\n }\n\n /**\n * Emite um evento para indicar se o componente deve ser atualizado ou não.\n * Este evento é chamado antes de qualquer atualização do componente para decidir se a atualização deve prosseguir.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentshouldupdate) para mais detalhes.\n */\n @Event() brShouldUpdate: EventEmitter<void>\n componentShouldUpdate() {\n this.brShouldUpdate.emit()\n }\n\n /**\n * Emite um evento antes de o componente ser atualizado.\n * Utilize este evento para realizar ações preparatórias antes da atualização do componente.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentwillupdate) para mais detalhes.\n */\n @Event() brWillUpdate: EventEmitter<void>\n componentWillUpdate() {\n this.brWillUpdate.emit()\n }\n\n /**\n * Emite um evento após o componente ter sido atualizado.\n * Utilize este evento para realizar ações após a atualização do componente.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#componentdidupdate) para mais detalhes.\n */\n @Event() brDidUpdate: EventEmitter<void>\n componentDidUpdate() {\n this.brDidUpdate.emit()\n }\n\n /**\n * Emite um evento quando o componente é desconectado do DOM.\n * Utilize este evento para realizar a limpeza ou outras ações necessárias quando o componente é removido.\n * Consulte a documentação do [Stencil](https://stenciljs.com/docs/component-lifecycle#disconnectedcallback) para mais detalhes.\n */\n @Event() brDidDisconnect: EventEmitter<void>\n disconnectedCallback() {\n this.brDidDisconnect.emit()\n }\n\n // Largura do ícone no avatar do tipo icônico\n @State() iconWidth: string\n\n // Altura do ícone no avatar do tipo icônico\n @State() iconHeight: string\n\n /**\n * Gera um mapa de classes CSS com base nas propriedades do componente.\n * O mapa de classes determina quais classes CSS devem ser aplicadas\n * ao elemento host do componente, ajustando sua aparência.\n *\n * @returns {CssClassMap} Objeto contendo as classes CSS aplicadas.\n */\n private getCssClassMap(): CssClassMap {\n return {\n 'br-avatar': true,\n small: this.density === Density.Small,\n medium: this.density === Density.Medium,\n large: this.density === Density.Large,\n }\n }\n\n /**\n * Calcula o tamanho dos ícones de acordo com a classe de densidade\n */\n private readonly iconSizes = {\n small: { height: '32', width: '40' },\n medium: { height: '80', width: '88' },\n large: { height: '128', width: '136' },\n }\n\n private setIconSize() {\n if (this.image?.trim().length !== 0 && this.text?.trim().length !== 0) {\n const size = this.iconSizes[this.density]\n this.iconHeight = size.height\n this.iconWidth = size.width\n }\n }\n\n private readonly iconMarginTops = {\n small: '0.7em',\n medium: '1em',\n large: '0.62em',\n }\n\n private adjustIconStyle(density: string) {\n return this.iconMarginTops[density] || '1em'\n }\n\n private inheritedAttributes: Attributes = {}\n\n private renderAvatar() {\n if (this.text?.trim().length > 0) {\n return (\n <span class=\"content bg-support-01 text-pure-0\" title={this.text}>\n {this.text[0].toUpperCase()}\n </span>\n )\n }\n\n if (this.image?.trim().length > 0) {\n return (\n <span class=\"content\" title={this.imageAlt || this.text}>\n <img src={this.image} alt={this.imageAlt} loading=\"lazy\" />\n </span>\n )\n }\n\n if (this.isIconic) {\n return (\n <span class=\"content\" title={this.text}>\n <br-icon\n icon-name=\"fa-solid:user\"\n height={this.iconHeight}\n width={this.iconWidth}\n aria-hidden=\"true\"\n style={{ 'margin-top': this.adjustIconStyle(this.density) }}\n ></br-icon>\n </span>\n )\n }\n }\n\n render() {\n return (\n <Host>\n <span class={this.getCssClassMap()} {...this.inheritedAttributes}>\n {this.renderAvatar()}\n </span>\n </Host>\n )\n }\n}\n"],"mappings":"oGAAA,MAAMA,EAAY,4sSAClB,MAAAC,EAAeD,ECGf,IAAKE,GAAL,SAAKA,GACHA,EAAA,iBACAA,EAAA,mBACAA,EAAA,gBACD,EAJD,CAAKA,MAAO,K,MAcCC,EAAM,M,wZAwJAC,KAAAC,UAAY,CAC3BC,MAAO,CAAEC,OAAQ,KAAMC,MAAO,MAC9BC,OAAQ,CAAEF,OAAQ,KAAMC,MAAO,MAC/BE,MAAO,CAAEH,OAAQ,MAAOC,MAAO,QAWhBJ,KAAAO,eAAiB,CAChCL,MAAO,QACPG,OAAQ,MACRC,MAAO,UAODN,KAAAQ,oBAAkC,G,aAtKhBV,EAAQW,O,mCAYf,mB,cAMS,M,uEAa5B,iBAAAC,GACEV,KAAKW,aAAaC,M,CASpB,iBAAAC,GACEb,KAAKc,WAAWF,OAChBZ,KAAKQ,oBAAsBO,EAAsBf,KAAKgB,IACtDhB,KAAKiB,a,CASP,gBAAAC,GACElB,KAAKmB,UAAUP,M,CASjB,mBAAAQ,GACEpB,KAAKqB,aAAaT,M,CASpB,kBAAAU,GACEtB,KAAKuB,YAAYX,M,CASnB,qBAAAY,GACExB,KAAKyB,eAAeb,M,CAStB,mBAAAc,GACE1B,KAAK2B,aAAaf,M,CASpB,kBAAAgB,GACE5B,KAAK6B,YAAYjB,M,CASnB,oBAAAkB,GACE9B,KAAK+B,gBAAgBnB,M,CAgBf,cAAAoB,GACN,MAAO,CACL,YAAa,KACb9B,MAAOF,KAAKiC,UAAYnC,EAAQoC,MAChC7B,OAAQL,KAAKiC,UAAYnC,EAAQW,OACjCH,MAAON,KAAKiC,UAAYnC,EAAQqC,M,CAa5B,WAAAlB,G,QACN,KAAImB,EAAApC,KAAKqC,SAAK,MAAAD,SAAA,SAAAA,EAAEE,OAAOC,UAAW,KAAKC,EAAAxC,KAAKyC,QAAI,MAAAD,SAAA,SAAAA,EAAEF,OAAOC,UAAW,EAAG,CACrE,MAAMG,EAAO1C,KAAKC,UAAUD,KAAKiC,SACjCjC,KAAK2C,WAAaD,EAAKvC,OACvBH,KAAK4C,UAAYF,EAAKtC,K,EAUlB,eAAAyC,CAAgBZ,GACtB,OAAOjC,KAAKO,eAAe0B,IAAY,K,CAKjC,YAAAa,G,QACN,KAAIV,EAAApC,KAAKyC,QAAI,MAAAL,SAAA,SAAAA,EAAEE,OAAOC,QAAS,EAAG,CAChC,OACEQ,EAAA,QAAMC,MAAM,oCAAoCC,MAAOjD,KAAKyC,MACzDzC,KAAKyC,KAAK,GAAGS,c,CAKpB,KAAIV,EAAAxC,KAAKqC,SAAK,MAAAG,SAAA,SAAAA,EAAEF,OAAOC,QAAS,EAAG,CACjC,OACEQ,EAAA,QAAMC,MAAM,UAAUC,MAAOjD,KAAKmD,UAAYnD,KAAKyC,MACjDM,EAAA,OAAKK,IAAKpD,KAAKqC,MAAOgB,IAAKrD,KAAKmD,SAAUG,QAAQ,S,CAKxD,GAAItD,KAAKuD,SAAU,CACjB,OACER,EAAA,QAAMC,MAAM,UAAUC,MAAOjD,KAAKyC,MAChCM,EAAA,uBACY,gBACV5C,OAAQH,KAAK2C,WACbvC,MAAOJ,KAAK4C,UAAS,cACT,OACZY,MAAO,CAAE,aAAcxD,KAAK6C,gBAAgB7C,KAAKiC,Y,EAO3D,MAAAwB,GACE,OACEV,EAACW,EAAI,CAAAC,IAAA,4CACHZ,EAAA,OAAAa,OAAAC,OAAA,CAAAF,IAAA,2CAAMX,MAAOhD,KAAKgC,kBAAsBhC,KAAKQ,qBAC1CR,KAAK8C,gB","ignoreList":[]}