@react-lgpd-consent/mui 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +138 -0
- package/dist/index.cjs +597 -0
- package/dist/index.d.cts +469 -0
- package/dist/index.d.ts +469 -0
- package/dist/index.js +544 -0
- package/package.json +73 -0
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,469 @@
|
|
|
1
|
+
import { ConsentProviderProps as ConsentProviderProps$1, ConsentPreferences } from '@react-lgpd-consent/core';
|
|
2
|
+
export * from '@react-lgpd-consent/core';
|
|
3
|
+
export { ConsentProvider as ConsentProviderHeadless } from '@react-lgpd-consent/core';
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
6
|
+
import { Theme } from '@mui/material/styles';
|
|
7
|
+
import { PaperProps } from '@mui/material/Paper';
|
|
8
|
+
import { SnackbarProps } from '@mui/material/Snackbar';
|
|
9
|
+
import { FabProps } from '@mui/material/Fab';
|
|
10
|
+
import { DialogProps } from '@mui/material/Dialog';
|
|
11
|
+
|
|
12
|
+
interface BrandingProps {
|
|
13
|
+
variant: 'banner' | 'modal';
|
|
14
|
+
hidden?: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Componente de branding - memoizado para evitar re-renders desnecessários.
|
|
18
|
+
* Props são estáveis (variant, hidden) e hooks são otimizados.
|
|
19
|
+
*/
|
|
20
|
+
declare const Branding: React.NamedExoticComponent<Readonly<BrandingProps>>;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Props do ConsentProvider com suporte a componentes MUI.
|
|
24
|
+
* Estende as props do core com valores padrão para componentes UI.
|
|
25
|
+
*
|
|
26
|
+
* @category Types
|
|
27
|
+
* @public
|
|
28
|
+
* @since 0.5.0
|
|
29
|
+
*/
|
|
30
|
+
interface ConsentProviderProps extends ConsentProviderProps$1 {
|
|
31
|
+
/**
|
|
32
|
+
* Se `true`, desabilita a injeção automática do PreferencesModal.
|
|
33
|
+
* Use isso se quiser passar seu próprio modal via `PreferencesModalComponent`.
|
|
34
|
+
*
|
|
35
|
+
* @default false
|
|
36
|
+
* @since 0.5.0
|
|
37
|
+
*/
|
|
38
|
+
disableDefaultModal?: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Se `true`, desabilita a injeção automática do CookieBanner padrão.
|
|
41
|
+
* Útil quando se deseja uma implementação própria, mantendo outras integrações.
|
|
42
|
+
*
|
|
43
|
+
* @default false
|
|
44
|
+
* @since 0.5.0
|
|
45
|
+
*/
|
|
46
|
+
disableDefaultBanner?: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Se `true`, desabilita a injeção automática do FloatingPreferencesButton.
|
|
49
|
+
* Normalmente não é necessário — `disableFloatingPreferencesButton` já oculta o botão.
|
|
50
|
+
*
|
|
51
|
+
* @default false
|
|
52
|
+
* @since 0.5.0
|
|
53
|
+
*/
|
|
54
|
+
disableDefaultFloatingButton?: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Tema Material-UI a ser aplicado ao redor dos componentes padrões.
|
|
57
|
+
*
|
|
58
|
+
* @remarks
|
|
59
|
+
* O tema é aplicado apenas nesta camada de apresentação. O core permanece agnóstico.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```tsx
|
|
63
|
+
* const theme = createTheme({ palette: { primary: { main: '#1976d2' } } })
|
|
64
|
+
* <ConsentProvider theme={theme} />
|
|
65
|
+
* ```
|
|
66
|
+
*
|
|
67
|
+
* @since 0.5.0
|
|
68
|
+
*/
|
|
69
|
+
theme?: Theme;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Provider de consentimento com componentes Material-UI integrados.
|
|
73
|
+
*
|
|
74
|
+
* Este componente é um wrapper sobre o `ConsentProvider` do core que automaticamente
|
|
75
|
+
* fornece um `PreferencesModal` padrão, tornando o setup mais simples.
|
|
76
|
+
*
|
|
77
|
+
* @component
|
|
78
|
+
* @category Components
|
|
79
|
+
* @public
|
|
80
|
+
* @since 0.5.0
|
|
81
|
+
*
|
|
82
|
+
* @remarks
|
|
83
|
+
* **Diferenças do Core:**
|
|
84
|
+
* - ✅ Automaticamente renderiza `PreferencesModal` quando o usuário clica em "Preferências"
|
|
85
|
+
* - ✅ Não requer configuração de `PreferencesModalComponent` (mas permite override)
|
|
86
|
+
* - ✅ Ideal para uso rápido com Material-UI
|
|
87
|
+
*
|
|
88
|
+
* **Quando usar o Core diretamente:**
|
|
89
|
+
* - ❌ Se você quiser controle total sobre qual modal renderizar
|
|
90
|
+
* - ❌ Se você estiver usando uma biblioteca de UI diferente
|
|
91
|
+
* - ❌ Se você quiser implementação headless
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* **Uso Básico (Modal automático):**
|
|
95
|
+
* ```tsx
|
|
96
|
+
* import { ConsentProvider } from '@react-lgpd-consent/mui'
|
|
97
|
+
*
|
|
98
|
+
* function App() {
|
|
99
|
+
* return (
|
|
100
|
+
* <ConsentProvider categories={{ enabledCategories: ['analytics'] }}>
|
|
101
|
+
* <YourApp />
|
|
102
|
+
* </ConsentProvider>
|
|
103
|
+
* )
|
|
104
|
+
* }
|
|
105
|
+
* ```
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* **Modal customizado:**
|
|
109
|
+
* ```tsx
|
|
110
|
+
* import { ConsentProvider, PreferencesModal } from '@react-lgpd-consent/mui'
|
|
111
|
+
*
|
|
112
|
+
* function App() {
|
|
113
|
+
* return (
|
|
114
|
+
* <ConsentProvider
|
|
115
|
+
* categories={{ enabledCategories: ['analytics'] }}
|
|
116
|
+
* PreferencesModalComponent={(props) => (
|
|
117
|
+
* <PreferencesModal {...props} hideBranding={true} />
|
|
118
|
+
* )}
|
|
119
|
+
* >
|
|
120
|
+
* <YourApp />
|
|
121
|
+
* </ConsentProvider>
|
|
122
|
+
* )
|
|
123
|
+
* }
|
|
124
|
+
* ```
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* **Desabilitar modal padrão (headless):**
|
|
128
|
+
* ```tsx
|
|
129
|
+
* import { ConsentProvider } from '@react-lgpd-consent/mui'
|
|
130
|
+
*
|
|
131
|
+
* function App() {
|
|
132
|
+
* return (
|
|
133
|
+
* <ConsentProvider
|
|
134
|
+
* categories={{ enabledCategories: ['analytics'] }}
|
|
135
|
+
* disableDefaultModal={true}
|
|
136
|
+
* >
|
|
137
|
+
* <YourApp />
|
|
138
|
+
* </ConsentProvider>
|
|
139
|
+
* )
|
|
140
|
+
* }
|
|
141
|
+
* ```
|
|
142
|
+
*
|
|
143
|
+
* @param props - Props do provider incluindo categorias, textos, callbacks, etc.
|
|
144
|
+
* @returns Provider React com contexto de consentimento e UI integrada
|
|
145
|
+
*
|
|
146
|
+
* @see {@link ConsentProviderCore} Para a versão headless sem UI
|
|
147
|
+
* @see {@link PreferencesModal} Para o componente de modal usado por padrão
|
|
148
|
+
*/
|
|
149
|
+
declare function ConsentProvider({ disableDefaultModal, disableDefaultBanner, disableDefaultFloatingButton, PreferencesModalComponent, CookieBannerComponent, FloatingPreferencesButtonComponent, theme, hideBranding, cookieBannerProps, preferencesModalProps, floatingPreferencesButtonProps, children, ...coreProps }: ConsentProviderProps): react_jsx_runtime.JSX.Element;
|
|
150
|
+
declare namespace ConsentProvider {
|
|
151
|
+
var displayName: string;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Propriedades para customizar o comportamento e aparência do componente CookieBanner.
|
|
156
|
+
*
|
|
157
|
+
* @remarks
|
|
158
|
+
* Esta interface permite controle completo sobre o banner de consentimento, desde
|
|
159
|
+
* o comportamento de exibição até a customização visual avançada. O banner pode
|
|
160
|
+
* operar em dois modos principais: bloqueante (modal) ou não-bloqueante (snackbar).
|
|
161
|
+
*
|
|
162
|
+
* ### Modos de Exibição
|
|
163
|
+
* - **Bloqueante** (`blocking: true`): Banner como modal sobreposto, impede interação
|
|
164
|
+
* - **Não-bloqueante** (`blocking: false`): Banner como snackbar, permite navegação
|
|
165
|
+
*
|
|
166
|
+
* ### Integração com Material-UI
|
|
167
|
+
* - Suporte completo a theming via `ThemeProvider`
|
|
168
|
+
* - Props diretas para componentes internos (`SnackbarProps`, `PaperProps`)
|
|
169
|
+
* - Compatibilidade com design tokens customizados
|
|
170
|
+
* - Responsividade automática em diferentes viewport sizes
|
|
171
|
+
*
|
|
172
|
+
* ### Debug e Desenvolvimento
|
|
173
|
+
* - Prop `debug` força exibição independente do estado de consentimento
|
|
174
|
+
* - Logging automático de interações do usuário quando ativo
|
|
175
|
+
* - Suporte a React DevTools para inspecionar props
|
|
176
|
+
*
|
|
177
|
+
* @example Configuração básica
|
|
178
|
+
* ```tsx
|
|
179
|
+
* <CookieBanner
|
|
180
|
+
* policyLinkUrl="/privacy-policy"
|
|
181
|
+
* blocking={false}
|
|
182
|
+
* />
|
|
183
|
+
* ```
|
|
184
|
+
*
|
|
185
|
+
* @example Configuração avançada com customização
|
|
186
|
+
* ```tsx
|
|
187
|
+
* <CookieBanner
|
|
188
|
+
* policyLinkUrl="https://example.com/cookies"
|
|
189
|
+
* blocking={true}
|
|
190
|
+
* hideBranding={true}
|
|
191
|
+
* debug={process.env.NODE_ENV === 'development'}
|
|
192
|
+
* SnackbarProps={{
|
|
193
|
+
* anchorOrigin: { vertical: 'top', horizontal: 'center' }
|
|
194
|
+
* }}
|
|
195
|
+
* PaperProps={{
|
|
196
|
+
* elevation: 8,
|
|
197
|
+
* sx: { borderRadius: 2 }
|
|
198
|
+
* }}
|
|
199
|
+
* />
|
|
200
|
+
* ```
|
|
201
|
+
*
|
|
202
|
+
* @public
|
|
203
|
+
* @since 0.1.0
|
|
204
|
+
*/
|
|
205
|
+
interface CookieBannerProps {
|
|
206
|
+
/**
|
|
207
|
+
* URL para a política de privacidade ou cookies do site.
|
|
208
|
+
*
|
|
209
|
+
* @remarks
|
|
210
|
+
* Quando fornecida, aparece como link "Política de Privacidade" no banner.
|
|
211
|
+
* Link abre em nova aba/janela (`target="_blank"`) por segurança.
|
|
212
|
+
*
|
|
213
|
+
* @example "/privacy-policy" | "https://example.com/cookies"
|
|
214
|
+
*/
|
|
215
|
+
policyLinkUrl?: string;
|
|
216
|
+
/**
|
|
217
|
+
* URL para os termos de uso do site (opcional). Quando fornecida, será considerada uma rota "segura"
|
|
218
|
+
* para não aplicar bloqueio total (overlay) mesmo em modo bloqueante.
|
|
219
|
+
*/
|
|
220
|
+
termsLinkUrl?: string;
|
|
221
|
+
/**
|
|
222
|
+
* Força exibição do banner em modo de debug, independente do consentimento.
|
|
223
|
+
*
|
|
224
|
+
* @remarks
|
|
225
|
+
* Útil durante desenvolvimento para testar diferentes estados visuais.
|
|
226
|
+
* **Nunca deixe `true` em produção** - causará exibição permanente do banner.
|
|
227
|
+
*
|
|
228
|
+
* @defaultValue false
|
|
229
|
+
*/
|
|
230
|
+
debug?: boolean;
|
|
231
|
+
/**
|
|
232
|
+
* Controla se o banner bloqueia interação com o restante da página.
|
|
233
|
+
*
|
|
234
|
+
* @remarks
|
|
235
|
+
* - `true`: Banner como modal/overlay, bloqueia interação até decisão
|
|
236
|
+
* - `false`: Banner como snackbar, permite navegação normal
|
|
237
|
+
*
|
|
238
|
+
* Banner bloqueante é mais eficaz para compliance, mas pode afetar UX.
|
|
239
|
+
*
|
|
240
|
+
* @defaultValue true
|
|
241
|
+
*/
|
|
242
|
+
blocking?: boolean;
|
|
243
|
+
/**
|
|
244
|
+
* Oculta a marca "fornecido por LÉdipO.eti.br" no banner.
|
|
245
|
+
*
|
|
246
|
+
* @remarks
|
|
247
|
+
* A biblioteca é open-source e gratuita. O branding é uma forma de apoiar
|
|
248
|
+
* o projeto, mas pode ser removido se necessário para sua marca.
|
|
249
|
+
*
|
|
250
|
+
* @defaultValue false
|
|
251
|
+
*/
|
|
252
|
+
hideBranding?: boolean;
|
|
253
|
+
/**
|
|
254
|
+
* Propriedades personalizadas para o componente Snackbar (modo não-bloqueante).
|
|
255
|
+
*
|
|
256
|
+
* @remarks
|
|
257
|
+
* Aplica-se apenas quando `blocking={false}`. Permite customização completa
|
|
258
|
+
* da posição, animação e comportamento do snackbar do Material-UI.
|
|
259
|
+
*
|
|
260
|
+
* @example
|
|
261
|
+
* ```tsx
|
|
262
|
+
* SnackbarProps={{
|
|
263
|
+
* anchorOrigin: { vertical: 'top', horizontal: 'center' },
|
|
264
|
+
* autoHideDuration: null, // Banner fica até decisão do usuário
|
|
265
|
+
* TransitionComponent: Slide
|
|
266
|
+
* }}
|
|
267
|
+
* ```
|
|
268
|
+
*/
|
|
269
|
+
SnackbarProps?: Partial<SnackbarProps>;
|
|
270
|
+
/**
|
|
271
|
+
* Propriedades personalizadas para o componente Paper que envolve o conteúdo.
|
|
272
|
+
*
|
|
273
|
+
* @remarks
|
|
274
|
+
* Permite customização avançada da aparência: elevação, bordas, cores, etc.
|
|
275
|
+
* Aplicado em ambos os modos (bloqueante e não-bloqueante).
|
|
276
|
+
*
|
|
277
|
+
* @example
|
|
278
|
+
* ```tsx
|
|
279
|
+
* PaperProps={{
|
|
280
|
+
* elevation: 12,
|
|
281
|
+
* sx: {
|
|
282
|
+
* borderRadius: '16px',
|
|
283
|
+
* border: '2px solid',
|
|
284
|
+
* borderColor: 'primary.main'
|
|
285
|
+
* }
|
|
286
|
+
* }}
|
|
287
|
+
* ```
|
|
288
|
+
*/
|
|
289
|
+
PaperProps?: Partial<PaperProps>;
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Banner principal de consentimento LGPD que solicita decisão do usuário sobre cookies.
|
|
293
|
+
* @component
|
|
294
|
+
* @category Components
|
|
295
|
+
* @remarks
|
|
296
|
+
* O CookieBanner é o ponto de entrada principal para interação com o sistema de consentimento.
|
|
297
|
+
* Aparece automaticamente quando o usuário ainda não tomou decisão sobre cookies,
|
|
298
|
+
* oferecendo opções claras de aceitar, rejeitar ou personalizar preferências.
|
|
299
|
+
*
|
|
300
|
+
* ### Funcionalidades Principais
|
|
301
|
+
* - **Exibição condicional**: Aparece apenas se usuário não deu consentimento
|
|
302
|
+
* - **Duas modalidades**: Bloqueante (modal) ou não-bloqueante (snackbar)
|
|
303
|
+
* - **Ações do usuário**: Aceitar tudo, rejeitar tudo, ou abrir preferências
|
|
304
|
+
* - **Link para política**: Opção de link para política de privacidade
|
|
305
|
+
* - **Branding opcional**: Marca discreta "fornecido por LÉdipO.eti.br"
|
|
306
|
+
* - **Totalmente customizável**: Via props, tokens de design ou componente próprio
|
|
307
|
+
*
|
|
308
|
+
* ### Estados de Exibição
|
|
309
|
+
* - **Não exibido**: Usuário já consentiu ou ainda hidratando (SSR)
|
|
310
|
+
* - **Snackbar**: Modo não-bloqueante, permite interação com a página
|
|
311
|
+
* - **Modal**: Modo bloqueante, impede interação até decisão
|
|
312
|
+
* - **Debug**: Sempre visível independente do estado (desenvolvimento)
|
|
313
|
+
*
|
|
314
|
+
* ### Integração com Sistema
|
|
315
|
+
* - Conecta automaticamente com `ConsentProvider`
|
|
316
|
+
* - Usa textos do `useConsentTexts()` para i18n
|
|
317
|
+
* - Aplica design tokens do `useDesignTokens()`
|
|
318
|
+
* - Registra todas as interações via sistema de logging
|
|
319
|
+
* - Suporte completo a SSR com hidratação segura
|
|
320
|
+
*
|
|
321
|
+
* ### Substituição Personalizada
|
|
322
|
+
* Para controle total, use `CookieBannerComponent` no ConsentProvider:
|
|
323
|
+
*
|
|
324
|
+
* ```tsx
|
|
325
|
+
* function CustomBanner() {
|
|
326
|
+
* const { acceptAll, rejectAll } = useConsent();
|
|
327
|
+
* return <div>Meu banner customizado</div>;
|
|
328
|
+
* }
|
|
329
|
+
*
|
|
330
|
+
* <ConsentProvider CookieBannerComponent={CustomBanner}>
|
|
331
|
+
* ```
|
|
332
|
+
*
|
|
333
|
+
* @param props - Propriedades para customizar comportamento e aparência do banner (tipado via CookieBannerProps)
|
|
334
|
+
* @returns Banner de consentimento ou `null` se não deve ser exibido
|
|
335
|
+
*
|
|
336
|
+
* @example Uso básico (renderizado automaticamente pelo ConsentProvider)
|
|
337
|
+
* ```typescript
|
|
338
|
+
* // ConsentProvider renderiza CookieBanner automaticamente
|
|
339
|
+
* function App() {
|
|
340
|
+
* return (
|
|
341
|
+
* // ConsentProvider envolve a aplicação
|
|
342
|
+
* // CookieBanner aparece quando necessário
|
|
343
|
+
* );
|
|
344
|
+
* }
|
|
345
|
+
* ```
|
|
346
|
+
*
|
|
347
|
+
* @example Customização via props no ConsentProvider
|
|
348
|
+
* ```typescript
|
|
349
|
+
* // Configuração com propriedades customizadas
|
|
350
|
+
* const bannerProps = {
|
|
351
|
+
* policyLinkUrl: "/privacy",
|
|
352
|
+
* blocking: false,
|
|
353
|
+
* hideBranding: true
|
|
354
|
+
* };
|
|
355
|
+
*
|
|
356
|
+
* // ConsentProvider com cookieBannerProps
|
|
357
|
+
* ```
|
|
358
|
+
*
|
|
359
|
+
* @example Uso manual com customização avançada
|
|
360
|
+
* ```typescript
|
|
361
|
+
* function App() {
|
|
362
|
+
* const bannerConfig = {
|
|
363
|
+
* policyLinkUrl: "https://example.com/cookies",
|
|
364
|
+
* blocking: true,
|
|
365
|
+
* PaperProps: { elevation: 8 },
|
|
366
|
+
* SnackbarProps: { anchorOrigin: { vertical: 'top' as const } }
|
|
367
|
+
* };
|
|
368
|
+
*
|
|
369
|
+
* // Renderização manual com config avançada
|
|
370
|
+
* return null; // CookieBanner com bannerConfig
|
|
371
|
+
* }
|
|
372
|
+
* ```
|
|
373
|
+
*
|
|
374
|
+
* @see {@link ConsentProvider} - Provider que renderiza este componente automaticamente
|
|
375
|
+
* @see {@link useConsent} - Hook para acessar funções de consentimento
|
|
376
|
+
* @see {@link useConsentTexts} - Hook para textos personalizáveis
|
|
377
|
+
* @see {@link CookieBannerProps} - Interface completa de propriedades
|
|
378
|
+
*
|
|
379
|
+
* @public
|
|
380
|
+
* @since 0.1.0
|
|
381
|
+
*/
|
|
382
|
+
declare function CookieBanner({ policyLinkUrl, termsLinkUrl, debug, blocking, hideBranding, SnackbarProps, PaperProps, }: Readonly<CookieBannerProps>): react_jsx_runtime.JSX.Element | null;
|
|
383
|
+
|
|
384
|
+
/**
|
|
385
|
+
* Props para o componente FloatingPreferencesButton.
|
|
386
|
+
*
|
|
387
|
+
* Permite configurar posição, ícone, tooltip, e comportamento de exibição do botão flutuante
|
|
388
|
+
* para abrir o modal de preferências de cookies LGPD.
|
|
389
|
+
*
|
|
390
|
+
* Todos os campos são opcionais e possuem valores padrão.
|
|
391
|
+
*/
|
|
392
|
+
interface FloatingPreferencesButtonProps {
|
|
393
|
+
/** Posição do botão flutuante. Padrão: 'bottom-right' */
|
|
394
|
+
position?: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right';
|
|
395
|
+
/** Offset da borda em pixels. Padrão: 24 */
|
|
396
|
+
offset?: number;
|
|
397
|
+
/** Ícone customizado. Padrão: CookieOutlined */
|
|
398
|
+
icon?: React.ReactNode;
|
|
399
|
+
/** Tooltip customizado exibido ao passar o mouse */
|
|
400
|
+
tooltip?: string;
|
|
401
|
+
/** Props adicionais para o Fab do MUI */
|
|
402
|
+
FabProps?: Partial<FabProps>;
|
|
403
|
+
/** Se deve esconder quando consentimento já foi dado. Padrão: false */
|
|
404
|
+
hideWhenConsented?: boolean;
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* @component
|
|
408
|
+
* @category Components
|
|
409
|
+
* @since 0.3.0
|
|
410
|
+
* Botão flutuante para abrir o modal de preferências de cookies.
|
|
411
|
+
*
|
|
412
|
+
* @remarks
|
|
413
|
+
* Este componente é renderizado automaticamente pelo `ConsentProvider` após o consentimento inicial.
|
|
414
|
+
* Ele permite ao usuário acessar rapidamente as configurações de consentimento LGPD a qualquer momento.
|
|
415
|
+
* Você pode substituí-lo passando seu próprio componente para a prop `FloatingPreferencesButtonComponent`
|
|
416
|
+
* no `ConsentProvider`.
|
|
417
|
+
*
|
|
418
|
+
* Componente memoizado para otimizar performance - só re-renderiza quando props mudam.
|
|
419
|
+
*
|
|
420
|
+
* @param {Readonly<FloatingPreferencesButtonProps>} props As propriedades para customizar o botão.
|
|
421
|
+
* @returns {JSX.Element | null} O componente do botão flutuante ou `null` se não for necessário exibi-lo.
|
|
422
|
+
*/
|
|
423
|
+
declare const FloatingPreferencesButton: React.NamedExoticComponent<Readonly<FloatingPreferencesButtonProps>>;
|
|
424
|
+
|
|
425
|
+
declare global {
|
|
426
|
+
/**
|
|
427
|
+
* @internal
|
|
428
|
+
* Variável global para rastrear integrações usadas.
|
|
429
|
+
* Usado internamente para logging e análise de performance.
|
|
430
|
+
*/
|
|
431
|
+
var __LGPD_USED_INTEGRATIONS__: string[] | undefined;
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* @interface PreferencesModalProps
|
|
435
|
+
* Propriedades para customizar o componente `PreferencesModal`.
|
|
436
|
+
*/
|
|
437
|
+
interface PreferencesModalProps {
|
|
438
|
+
/** Propriedades opcionais para customizar o componente `Dialog` do Material-UI. */
|
|
439
|
+
DialogProps?: Partial<DialogProps>;
|
|
440
|
+
/** Se `true`, oculta a marca "fornecido por LÉdipO.eti.br" no modal. Padrão: `false`. */
|
|
441
|
+
hideBranding?: boolean;
|
|
442
|
+
/** Estado de abertura do modal passado pelo Provider. Quando fornecido via PreferencesModalComponent, substitui o valor do hook useConsent. */
|
|
443
|
+
isModalOpen?: boolean;
|
|
444
|
+
/** Preferências de consentimento passadas pelo Provider. Quando fornecido via PreferencesModalComponent. */
|
|
445
|
+
preferences?: ConsentPreferences;
|
|
446
|
+
/** Função para atualizar preferências passada pelo Provider. Quando fornecido via PreferencesModalComponent. */
|
|
447
|
+
setPreferences?: (preferences: ConsentPreferences) => void;
|
|
448
|
+
/** Função para fechar o modal passada pelo Provider. Quando fornecido via PreferencesModalComponent. */
|
|
449
|
+
closePreferences?: () => void;
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* O `PreferencesModal` é o componente de UI que permite ao usuário ajustar suas preferências de consentimento.
|
|
453
|
+
* @component
|
|
454
|
+
* @category Components
|
|
455
|
+
* @since 0.1.0
|
|
456
|
+
* @remarks
|
|
457
|
+
* Este modal é renderizado automaticamente pelo `ConsentProvider` quando o usuário clica para gerenciar as preferências.
|
|
458
|
+
* Você pode substituí-lo passando seu próprio componente para a prop `PreferencesModalComponent`
|
|
459
|
+
* no `ConsentProvider` para ter controle total sobre a aparência e o comportamento do modal.
|
|
460
|
+
* @param {Readonly<PreferencesModalProps>} props As propriedades para customizar o modal.
|
|
461
|
+
* @returns {JSX.Element} O componente do modal de preferências.
|
|
462
|
+
* @example
|
|
463
|
+
* ```tsx
|
|
464
|
+
* <PreferencesModal DialogProps={{ maxWidth: 'md' }} hideBranding={true} />
|
|
465
|
+
* ```
|
|
466
|
+
*/
|
|
467
|
+
declare function PreferencesModal({ DialogProps, hideBranding, isModalOpen: isModalOpenProp, preferences: preferencesProp, setPreferences: setPreferencesProp, closePreferences: closePreferencesProp, }: Readonly<PreferencesModalProps>): react_jsx_runtime.JSX.Element;
|
|
468
|
+
|
|
469
|
+
export { Branding, type BrandingProps, ConsentProvider, type ConsentProviderProps, CookieBanner, type CookieBannerProps, FloatingPreferencesButton, type FloatingPreferencesButtonProps, PreferencesModal, type PreferencesModalProps };
|