@archbase/components 4.4.0 → 4.6.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.
@@ -0,0 +1,37 @@
1
+ export type ArchbaseSlideToConfirmStatus = 'idle' | 'loading' | 'success' | 'error';
2
+ export interface ArchbaseSlideToConfirmProps {
3
+ /** Texto exibido antes da confirmacao. */
4
+ label?: string;
5
+ /** Texto exibido apos confirmar. */
6
+ successLabel?: string;
7
+ /** Executada ao completar o gesto. Rejeitar volta o controle ao inicio. */
8
+ onConfirm: () => Promise<void> | void;
9
+ /** Chamada quando `onConfirm` rejeita. */
10
+ onError?: (erro: unknown) => void;
11
+ width?: number;
12
+ height?: number;
13
+ disabled?: boolean;
14
+ /** Volta ao estado inicial apos confirmar, em milissegundos. Zero mantem. */
15
+ resetAfter?: number;
16
+ /** Fracao do curso necessaria para confirmar, entre 0 e 1. */
17
+ threshold?: number;
18
+ className?: string;
19
+ 'aria-label'?: string;
20
+ }
21
+ /**
22
+ * Confirmacao por deslize, para acoes destrutivas ou irreversiveis.
23
+ *
24
+ * Adaptado de Lightswind UI (MIT, Muhilan / codewithMUHILAN).
25
+ *
26
+ * A diferenca principal nao e visual. O original era um `div` arrastavel: quem
27
+ * navega por teclado ou usa leitor de tela **nao conseguia confirmar** — num
28
+ * controle cuja unica funcao e confirmar. Aqui ele e um `slider` de verdade:
29
+ *
30
+ * - `role="slider"` com `aria-valuenow`, entao o leitor anuncia o progresso;
31
+ * - setas movem o polegar, `Home`/`End` vao aos extremos, `End` confirma;
32
+ * - `Enter` e `Espaco` confirmam direto, para quem so quer executar a acao.
33
+ *
34
+ * O gesto continua sendo a defesa contra o clique acidental — o teclado apenas
35
+ * deixa de ser excluido dela.
36
+ */
37
+ export declare function ArchbaseSlideToConfirm({ label, successLabel, onConfirm, onError, width, height, disabled, resetAfter, threshold, className, 'aria-label': ariaLabel, }: ArchbaseSlideToConfirmProps): import("react/jsx-runtime").JSX.Element;
@@ -2,3 +2,5 @@ export { ArchbaseActionButtons } from './ArchbaseActionButtons';
2
2
  export type { ArchbaseActionButtonsProps, ArchbaseActionButtonsOptions, ArchbaseAction, ActionButtonsCustomComponentsDefinition, } from './ArchbaseActionButtons';
3
3
  export { ArchbaseSpeedDial } from './ArchbaseSpeedDial';
4
4
  export type { ArchbaseSpeedDialProps, ArchbaseSpeedDialAction } from './ArchbaseSpeedDial';
5
+ export { ArchbaseSlideToConfirm } from './ArchbaseSlideToConfirm';
6
+ export type { ArchbaseSlideToConfirmProps, ArchbaseSlideToConfirmStatus, } from './ArchbaseSlideToConfirm';
@@ -0,0 +1,41 @@
1
+ import { CSSProperties, ReactNode } from 'react';
2
+ export type ArchbaseDeviceVariant = 'phone' | 'tablet' | 'desktop';
3
+ export interface ArchbaseDeviceFrameProps {
4
+ /** Conteudo exibido na tela. Aceita imagem, video ou aplicacao viva. */
5
+ children?: ReactNode;
6
+ variant?: ArchbaseDeviceVariant;
7
+ /** Largura da moldura em pixels. A altura segue a proporcao do aparelho. */
8
+ width?: number;
9
+ /** Cor do corpo. Ausente, acompanha o esquema de cor. */
10
+ frameColor?: string;
11
+ /** Recorte superior (a "ilha"), so em telefone. */
12
+ showNotch?: boolean;
13
+ /** Botoes laterais desenhados no corpo. */
14
+ showButtons?: boolean;
15
+ shadow?: boolean;
16
+ /** Descricao para leitores de tela. A moldura em si e decorativa. */
17
+ 'aria-label'?: string;
18
+ className?: string;
19
+ style?: CSSProperties;
20
+ }
21
+ /**
22
+ * Moldura de aparelho para apresentar uma tela.
23
+ *
24
+ * Inspirado no `iphone16-pro` de Lightswind UI (MIT, Muhilan /
25
+ * codewithMUHILAN). Tres diferencas deliberadas:
26
+ *
27
+ * - **Nome generico.** Componente de biblioteca batizado de um modelo especifico
28
+ * envelhece junto com o modelo; `variant` cobre telefone, tablet e monitor.
29
+ * - **HTML e CSS, nao SVG.** O original recortava a tela com `clipPath` e so
30
+ * aceitava `src` de imagem ou video. Aqui a tela e um elemento comum, entao
31
+ * cabe qualquer conteudo — inclusive a aplicacao rodando de verdade, que e o
32
+ * uso mais interessante numa demonstracao.
33
+ * - **Cores por prop, nao por classe montada em runtime.** O original fazia
34
+ * `className={`fill-${frameColor}`}`; o compilador do Tailwind nao enxerga
35
+ * classe formada em execucao, entao aquelas regras nunca chegavam ao CSS e a
36
+ * prop de cor nao surtia efeito em build de producao.
37
+ *
38
+ * O `clipPath` do original tambem usava `id="screen"` fixo — duas molduras na
39
+ * mesma pagina colidiam. Sem SVG, o problema deixa de existir.
40
+ */
41
+ export declare function ArchbaseDeviceFrame({ children, variant, width, frameColor, showNotch, showButtons, shadow, 'aria-label': ariaLabel, className, style, }: ArchbaseDeviceFrameProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,46 @@
1
+ import { CSSProperties, ReactNode } from 'react';
2
+ export interface ArchbaseGlowingCardsProps {
3
+ children: ReactNode;
4
+ /** Raio do brilho que acompanha o ponteiro, em pixels. */
5
+ glowRadius?: number;
6
+ /** Opacidade do brilho, entre 0 e 1. */
7
+ glowOpacity?: number;
8
+ gap?: number | string;
9
+ /** Colunas fixas. Ausente, ajusta ao espaco disponivel. */
10
+ columns?: number;
11
+ /** Largura minima do cartao quando as colunas sao automaticas. */
12
+ minCardWidth?: number;
13
+ className?: string;
14
+ style?: CSSProperties;
15
+ }
16
+ export interface ArchbaseGlowingCardProps {
17
+ children: ReactNode;
18
+ /** Cor do brilho deste cartao. */
19
+ glowColor?: string;
20
+ /** Eleva o cartao ao passar o ponteiro. */
21
+ hoverEffect?: boolean;
22
+ onClick?: () => void;
23
+ className?: string;
24
+ style?: CSSProperties;
25
+ }
26
+ /**
27
+ * Grade de cartoes com um unico brilho que atravessa todos, acompanhando o
28
+ * ponteiro.
29
+ *
30
+ * Adaptado de Lightswind UI (MIT, Muhilan / codewithMUHILAN).
31
+ *
32
+ * A posicao do ponteiro e publicada em custom properties no container, e cada
33
+ * cartao publica o proprio deslocamento dentro dele. O gradiente subtrai um do
34
+ * outro, o que faz o foco atravessar a grade como uma luz unica em vez de
35
+ * acender dentro de cada cartao isoladamente.
36
+ *
37
+ * Nada disso passa por estado do React: mover o ponteiro sobre uma grade grande
38
+ * nao dispara render. O original recalculava estado por evento, o que
39
+ * transforma um enfeite em travamento quando os cartoes se multiplicam.
40
+ */
41
+ export declare function ArchbaseGlowingCards({ children, glowRadius, glowOpacity, gap, columns, minCardWidth, className, style, }: ArchbaseGlowingCardsProps): import("react/jsx-runtime").JSX.Element;
42
+ /**
43
+ * Cartao do grupo. Fora de `ArchbaseGlowingCards` continua valido — apenas sem
44
+ * o brilho, porque as custom properties nao existem.
45
+ */
46
+ export declare function ArchbaseGlowingCard({ children, glowColor, hoverEffect, onClick, className, style, }: ArchbaseGlowingCardProps): import("react/jsx-runtime").JSX.Element;
@@ -26,3 +26,7 @@ export { ArchbaseLightbox, ArchbaseLightboxProvider, useArchbaseLightbox, useArc
26
26
  export type { ArchbaseLightboxProps, ArchbaseLightboxSlide, ArchbaseLightboxProviderProps, UseArchbaseLightboxReturn, } from './ArchbaseLightbox';
27
27
  export { ArchbasePhotoAlbum } from './ArchbasePhotoAlbum';
28
28
  export type { ArchbasePhotoAlbumProps, ArchbasePhotoAlbumPhoto, ArchbasePhotoAlbumLayout, } from './ArchbasePhotoAlbum';
29
+ export { ArchbaseGlowingCards, ArchbaseGlowingCard } from './ArchbaseGlowingCards';
30
+ export type { ArchbaseGlowingCardsProps, ArchbaseGlowingCardProps, } from './ArchbaseGlowingCards';
31
+ export { ArchbaseDeviceFrame } from './ArchbaseDeviceFrame';
32
+ export type { ArchbaseDeviceFrameProps, ArchbaseDeviceVariant } from './ArchbaseDeviceFrame';
@@ -0,0 +1,51 @@
1
+ import { ReactNode } from 'react';
2
+ import { MantineColor } from '@mantine/core';
3
+ export interface ArchbaseStickyTopBarProps {
4
+ children: ReactNode;
5
+ /**
6
+ * Visibilidade controlada. Ignorada quando `showOnScroll` esta ligado.
7
+ */
8
+ visible?: boolean;
9
+ /** Aparece depois de rolar; util para barra de acao que so importa adiante. */
10
+ showOnScroll?: boolean;
11
+ /** Rolagem, em pixels, a partir da qual a barra aparece. */
12
+ scrollThreshold?: number;
13
+ /** Botao de fechar. */
14
+ dismissible?: boolean;
15
+ onDismiss?: () => void;
16
+ /**
17
+ * Chave de persistencia da dispensa. Definida, a barra nao volta a aparecer
18
+ * para quem ja a fechou — mensagem de sistema que reaparece a cada
19
+ * navegacao vira ruido e ensina o usuario a ignorar o lugar todo.
20
+ */
21
+ dismissStorageKey?: string;
22
+ color?: MantineColor;
23
+ /** Fixa no topo da janela. Desligado, acompanha o fluxo da pagina. */
24
+ sticky?: boolean;
25
+ /** Altura reservada, em pixels. */
26
+ height?: number;
27
+ zIndex?: number;
28
+ /**
29
+ * Papel semantico. `status` para informacao passageira; `region` para
30
+ * conteudo que o usuario pode querer reencontrar.
31
+ */
32
+ role?: 'status' | 'region' | 'alert';
33
+ 'aria-label'?: string;
34
+ className?: string;
35
+ }
36
+ /**
37
+ * Barra fixa no topo, para aviso de sistema ou acao contextual.
38
+ *
39
+ * Adaptado de Lightswind UI (MIT, Muhilan / codewithMUHILAN), com o que faltava
40
+ * para uso em produto:
41
+ *
42
+ * - **Dispensavel, com memoria opcional.** O original nao fechava. Aviso que
43
+ * nao se fecha e o usuario cobre com a mao.
44
+ * - **Semantica.** Era um `div` mudo; agora recebe papel e rotulo, e um leitor
45
+ * de tela anuncia a mensagem quando ela chega.
46
+ * - **`useSyncExternalStore` nao entra aqui, mas o listener de rolagem e
47
+ * passivo** — sem isso o navegador nao pode adiantar a rolagem enquanto o
48
+ * manipulador roda.
49
+ * - **Movimento reduzido** troca o deslize por aparecer e sumir.
50
+ */
51
+ export declare function ArchbaseStickyTopBar({ children, visible, showOnScroll, scrollThreshold, dismissible, onDismiss, dismissStorageKey, color, sticky, height, zIndex, role, 'aria-label': ariaLabel, className, }: ArchbaseStickyTopBarProps): import("react/jsx-runtime").JSX.Element;
@@ -8,3 +8,5 @@ export { ArchbaseDataGridSkeleton, ArchbaseFormSkeleton, ArchbaseCardSkeleton, A
8
8
  export type { ArchbaseDataGridSkeletonProps, ArchbaseFormSkeletonProps, ArchbaseCardSkeletonProps, ArchbaseKanbanSkeletonProps, ArchbaseListSkeletonProps, } from './ArchbaseSkeleton';
9
9
  export { ArchbaseRipple, useArchbaseRipple } from './ArchbaseRipple';
10
10
  export type { ArchbaseRippleProps, UseArchbaseRippleOptions, UseArchbaseRippleReturn } from './ArchbaseRipple';
11
+ export { ArchbaseStickyTopBar } from './ArchbaseStickyTopBar';
12
+ export type { ArchbaseStickyTopBarProps } from './ArchbaseStickyTopBar';