@pipelinesolucoes/button 1.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/README.md +44 -0
  2. package/dist/app/layout.d.ts +6 -0
  3. package/dist/app/layout.js +19 -0
  4. package/dist/app/layout.js.map +1 -0
  5. package/dist/app/page.d.ts +1 -0
  6. package/dist/app/page.js +6 -0
  7. package/dist/app/page.js.map +1 -0
  8. package/dist/components/ActionButton.d.ts +45 -0
  9. package/dist/components/ActionButton.js +39 -0
  10. package/dist/components/ActionButton.js.map +1 -0
  11. package/dist/components/CircularIconLink.d.ts +43 -0
  12. package/dist/components/CircularIconLink.js +35 -0
  13. package/dist/components/CircularIconLink.js.map +1 -0
  14. package/dist/components/DownloadButton.d.ts +116 -0
  15. package/dist/components/DownloadButton.js +80 -0
  16. package/dist/components/DownloadButton.js.map +1 -0
  17. package/dist/components/FormButtonGroup.d.ts +55 -0
  18. package/dist/components/FormButtonGroup.js +78 -0
  19. package/dist/components/FormButtonGroup.js.map +1 -0
  20. package/dist/components/NavigationButton.d.ts +48 -0
  21. package/dist/components/NavigationButton.js +80 -0
  22. package/dist/components/NavigationButton.js.map +1 -0
  23. package/dist/components/NavigationLink.d.ts +73 -0
  24. package/dist/components/NavigationLink.js +101 -0
  25. package/dist/components/NavigationLink.js.map +1 -0
  26. package/dist/components/ScrollToTopButton.d.ts +10 -0
  27. package/dist/components/ScrollToTopButton.js +44 -0
  28. package/dist/components/ScrollToTopButton.js.map +1 -0
  29. package/dist/components/StyledButton.d.ts +6 -0
  30. package/dist/components/StyledButton.js +39 -0
  31. package/dist/components/StyledButton.js.map +1 -0
  32. package/dist/components/WhatsAppButton.d.ts +28 -0
  33. package/dist/components/WhatsAppButton.js +40 -0
  34. package/dist/components/WhatsAppButton.js.map +1 -0
  35. package/dist/components/WhatsAppIcon.d.ts +28 -0
  36. package/dist/components/WhatsAppIcon.js +31 -0
  37. package/dist/components/WhatsAppIcon.js.map +1 -0
  38. package/dist/index.d.ts +16 -0
  39. package/dist/index.js +12 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/pages/_app.d.ts +2 -0
  42. package/dist/pages/_app.js +20 -0
  43. package/dist/pages/_app.js.map +1 -0
  44. package/dist/pages/_document.d.ts +9 -0
  45. package/dist/pages/_document.js +33 -0
  46. package/dist/pages/_document.js.map +1 -0
  47. package/dist/theme.d.ts +29 -0
  48. package/dist/theme.js +232 -0
  49. package/dist/theme.js.map +1 -0
  50. package/dist/tsconfig.tsbuildinfo +1 -0
  51. package/dist/types/ButtonKind.d.ts +4 -0
  52. package/dist/types/ButtonKind.js +2 -0
  53. package/dist/types/ButtonKind.js.map +1 -0
  54. package/dist/types/CommonForwardProps.d.ts +1 -0
  55. package/dist/types/CommonForwardProps.js +13 -0
  56. package/dist/types/CommonForwardProps.js.map +1 -0
  57. package/dist/types/DataCard.d.ts +6 -0
  58. package/dist/types/DataCard.js +2 -0
  59. package/dist/types/DataCard.js.map +1 -0
  60. package/dist/types/ShadowConfig.d.ts +6 -0
  61. package/dist/types/ShadowConfig.js +2 -0
  62. package/dist/types/ShadowConfig.js.map +1 -0
  63. package/dist/types/style/BorderProps.d.ts +5 -0
  64. package/dist/types/style/BorderProps.js +2 -0
  65. package/dist/types/style/BorderProps.js.map +1 -0
  66. package/dist/types/style/ColorProps.d.ts +6 -0
  67. package/dist/types/style/ColorProps.js +2 -0
  68. package/dist/types/style/ColorProps.js.map +1 -0
  69. package/dist/types/style/CommonStyleProps.d.ts +5 -0
  70. package/dist/types/style/CommonStyleProps.js +2 -0
  71. package/dist/types/style/CommonStyleProps.js.map +1 -0
  72. package/dist/types/style/LayoutProps.d.ts +6 -0
  73. package/dist/types/style/LayoutProps.js +2 -0
  74. package/dist/types/style/LayoutProps.js.map +1 -0
  75. package/package.json +57 -0
package/README.md ADDED
@@ -0,0 +1,44 @@
1
+ # Sobre
2
+
3
+ Este projeto é uma biblioteca React preparada para publicação no npm.
4
+ Essa biblioteca contem componentes de botao.
5
+
6
+ - ActionButton: Botão de ação estilizado baseado no tema e com tipografia configurável via `variant`.
7
+ - FormButtonGroup: Agrupador de botões "Deletar", Cancelar" e "Salvar" para uso **dentro** de formulários.
8
+ - NavigationButton: Botão de navegação reutilizável baseado em um link (`<a>`), estilizado com Material UI.
9
+ - NavigationLink: Link de navegação reutilizável baseado em um link (`<a>`), estilizado com Material UI.
10
+
11
+
12
+ Abaixo está o passo a passo para publicar ou atualizar a lib.
13
+
14
+ # Pré-requisitos
15
+
16
+ 1. Node.js instalado
17
+ - Recomenda-se uma versão LTS. Verifique com: node -v
18
+
19
+ # Como Publicar a biblioteca:
20
+
21
+ 1. Instalar dependências: npm install
22
+
23
+ 2. No package.json, altere o campo version de acordo com a semântica de versionamento.
24
+ 1.0.1 – correção de bug
25
+ 1.1.0 – nova funcionalidade compatível
26
+ 2.0.0 – mudanças incompatíveis
27
+
28
+ - para publicar versão beta: "1.0.0-beta.x"
29
+
30
+ 3. Este pacote é publicado exclusivamente via CI/CD (GitHub Actions).
31
+
32
+ - Releases são disparados apenas por tags Git (vX.Y.Z)
33
+ - Publicações manuais (npm publish) são desabilitadas
34
+ - A autenticação no npm utiliza Trusted Publishing (OIDC)
35
+ - Nenhum token npm é armazenado ou utilizado
36
+ - Tokens de publicação estão explicitamente desabilitados
37
+ - Autenticação em dois fatores (2FA) é obrigatória
38
+ - Versionamento segue Semantic Versioning (SemVer)
39
+
40
+ Esse modelo garante publicações seguras, rastreáveis e reprodutíveis.
41
+
42
+ # Comando:
43
+
44
+ 1. npm view pipesol-button versions --json - verifica todas as versões publicadas no npm.
@@ -0,0 +1,6 @@
1
+ import type { Metadata } from "next";
2
+ import "./globals.css";
3
+ export declare const metadata: Metadata;
4
+ export default function RootLayout({ children, }: Readonly<{
5
+ children: React.ReactNode;
6
+ }>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Geist, Geist_Mono } from "next/font/google";
3
+ import "./globals.css";
4
+ const geistSans = Geist({
5
+ variable: "--font-geist-sans",
6
+ subsets: ["latin"],
7
+ });
8
+ const geistMono = Geist_Mono({
9
+ variable: "--font-geist-mono",
10
+ subsets: ["latin"],
11
+ });
12
+ export const metadata = {
13
+ title: "Create Next App",
14
+ description: "Generated by create next app",
15
+ };
16
+ export default function RootLayout({ children, }) {
17
+ return (_jsx("html", { lang: "en", children: _jsx("body", { className: `${geistSans.variable} ${geistMono.variable}`, children: children }) }));
18
+ }
19
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/app/layout.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,eAAe,CAAC;AAEvB,MAAM,SAAS,GAAG,KAAK,CAAC;IACtB,QAAQ,EAAE,mBAAmB;IAC7B,OAAO,EAAE,CAAC,OAAO,CAAC;CACnB,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,UAAU,CAAC;IAC3B,QAAQ,EAAE,mBAAmB;IAC7B,OAAO,EAAE,CAAC,OAAO,CAAC;CACnB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAa;IAChC,KAAK,EAAE,iBAAiB;IACxB,WAAW,EAAE,8BAA8B;CAC5C,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,QAAQ,GAGR;IACA,OAAO,CACL,eAAM,IAAI,EAAC,IAAI,YACb,eAAM,SAAS,EAAE,GAAG,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,EAAE,YAC3D,QAAQ,GACJ,GACF,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1 @@
1
+ export default function Home(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,6 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ export default function Home() {
4
+ return (_jsx("p", { children: "teste" }));
5
+ }
6
+ //# sourceMappingURL=page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/app/page.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,MAAM,CAAC,OAAO,UAAU,IAAI;IAC1B,OAAO,CACL,gCAAY,CACb,CAAC;AACJ,CAAC"}
@@ -0,0 +1,45 @@
1
+ import React from "react";
2
+ import { ButtonKind } from "../types/ButtonKind";
3
+ import { TypographyVariant } from "@mui/material/styles";
4
+ import { CommonStyleProps } from "../types/style/CommonStyleProps";
5
+ export interface ActionButtonProps extends CommonStyleProps {
6
+ kind?: ButtonKind;
7
+ text: string;
8
+ variant?: TypographyVariant;
9
+ aria_label: string;
10
+ icon?: React.ReactNode;
11
+ disabled?: boolean;
12
+ onClick?: React.MouseEventHandler<HTMLButtonElement>;
13
+ }
14
+ /**
15
+ * Botão estilizado baseado no tema e com tipografia configurável via `variant`.
16
+ *
17
+ * @param {string} text Texto exibido dentro do botão.
18
+ * @param {TypographyVariant} [variant="body1"] Variante da tipografia usada no texto.
19
+ * @param {React.ReactNode} icon Ícone opcional exibido antes do texto.
20
+ * @param {'none' | 'primary' | 'secondary'} [kind="none"] Token visual aplicado ao botão.
21
+ * @param {string} [width="auto"] Largura do botão.
22
+ * @param {string} [height="auto"] Altura do botão.
23
+ * @param {string} [padding="12px 20px"] Espaçamento interno.
24
+ * @param {string} [margin="0"] Margem externa.
25
+ * @param {boolean} [disabled=false] Estado desabilitado.
26
+ * @param {string} [background="transparent"] Cor de fundo.
27
+ * @param {string} backgroundHover Cor de fundo no hover.
28
+ * @param {string} colorText Cor do texto.
29
+ * @param {string} colorHover Cor do texto no hover.
30
+ * @param {string} [borderRadius="0"] Raio da borda.
31
+ * @param {string} [boxShadow="none"] Sombra do botão.
32
+ * @param {Function} onClick Evento de clique.
33
+ * @param {string} aria_label Texto para acessibilidade.
34
+ *
35
+ * @example
36
+ * ```tsx
37
+ * <ActionButton
38
+ * text="Enviar"
39
+ * variant="h6"
40
+ * onClick={() => console.log("clicou")}
41
+ * />
42
+ * ```
43
+ */
44
+ declare const ActionButton: React.FC<ActionButtonProps>;
45
+ export default ActionButton;
@@ -0,0 +1,39 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import Typography from "@mui/material/Typography";
3
+ import { StyledButtonKind } from "./StyledButton";
4
+ /**
5
+ * Botão estilizado baseado no tema e com tipografia configurável via `variant`.
6
+ *
7
+ * @param {string} text Texto exibido dentro do botão.
8
+ * @param {TypographyVariant} [variant="body1"] Variante da tipografia usada no texto.
9
+ * @param {React.ReactNode} icon Ícone opcional exibido antes do texto.
10
+ * @param {'none' | 'primary' | 'secondary'} [kind="none"] Token visual aplicado ao botão.
11
+ * @param {string} [width="auto"] Largura do botão.
12
+ * @param {string} [height="auto"] Altura do botão.
13
+ * @param {string} [padding="12px 20px"] Espaçamento interno.
14
+ * @param {string} [margin="0"] Margem externa.
15
+ * @param {boolean} [disabled=false] Estado desabilitado.
16
+ * @param {string} [background="transparent"] Cor de fundo.
17
+ * @param {string} backgroundHover Cor de fundo no hover.
18
+ * @param {string} colorText Cor do texto.
19
+ * @param {string} colorHover Cor do texto no hover.
20
+ * @param {string} [borderRadius="0"] Raio da borda.
21
+ * @param {string} [boxShadow="none"] Sombra do botão.
22
+ * @param {Function} onClick Evento de clique.
23
+ * @param {string} aria_label Texto para acessibilidade.
24
+ *
25
+ * @example
26
+ * ```tsx
27
+ * <ActionButton
28
+ * text="Enviar"
29
+ * variant="h6"
30
+ * onClick={() => console.log("clicou")}
31
+ * />
32
+ * ```
33
+ */
34
+ const ActionButton = ({ kind = "none", width = "auto", height = "auto", padding = "12px 20px", margin = "0", text, icon, disabled = false, onClick, background = "transparent", backgroundHover, colorText, colorHover, borderRadius = "0", boxShadow = "none", variant = "body1", aria_label }) => {
35
+ return (_jsx(StyledButtonKind, { kind: kind, width: width, height: height, padding: padding, margin: margin, disabled: disabled, startIcon: icon, onClick: onClick, background: background, backgroundHover: backgroundHover, colorText: colorText, colorHover: colorHover, borderRadius: borderRadius, boxShadow: boxShadow, "aria-label": aria_label, children: _jsx(Typography, { variant: variant, children: text }) }));
36
+ };
37
+ ActionButton.displayName = "ActionButton";
38
+ export default ActionButton;
39
+ //# sourceMappingURL=ActionButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionButton.js","sourceRoot":"","sources":["../../src/components/ActionButton.tsx"],"names":[],"mappings":";AACA,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAclD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,YAAY,GAAgC,CAAC,EACjD,IAAI,GAAG,MAAM,EACb,KAAK,GAAG,MAAM,EACd,MAAM,GAAG,MAAM,EACf,OAAO,GAAG,WAAW,EACrB,MAAM,GAAG,GAAG,EACZ,IAAI,EACJ,IAAI,EACJ,QAAQ,GAAG,KAAK,EAChB,OAAO,EACP,UAAU,GAAG,aAAa,EAC1B,eAAe,EACf,SAAS,EACT,UAAU,EACV,YAAY,GAAG,GAAG,EAClB,SAAS,GAAG,MAAM,EAClB,OAAO,GAAG,OAAO,EACjB,UAAU,EACX,EAAE,EAAE;IACH,OAAO,CACL,KAAC,gBAAgB,IACf,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,IAAI,EACf,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,gBACR,UAAU,YAEtB,KAAC,UAAU,IAAC,OAAO,EAAE,OAAO,YAAG,IAAI,GAAc,GAChC,CACpB,CAAC;AACJ,CAAC,CAAC;AAEF,YAAY,CAAC,WAAW,GAAG,cAAc,CAAC;AAC1C,eAAe,YAAY,CAAC"}
@@ -0,0 +1,43 @@
1
+ import React, { ReactElement } from 'react';
2
+ import { SvgIconProps } from '@mui/material';
3
+ /**
4
+ * Propriedades do componente `CircularIconLink`.
5
+ */
6
+ export interface CircularIconLinkProps {
7
+ /**
8
+ * Ícone do Material UI (`<SvgIcon>`) ou uma imagem (`<img>`).
9
+ * Aceita:
10
+ * ```tsx
11
+ * <Instagram sx={{ color: 'white' }} />
12
+ * // ou
13
+ * <img src="/logo.png" alt="logo" width={24} height={24} />
14
+ * ```
15
+ */
16
+ children: ReactElement<HTMLImageElement> | ReactElement<SvgIconProps>;
17
+ /** URL a ser aberta (opcional se onClick for usado) */
18
+ url?: string;
19
+ /** Cor de fundo do círculo */
20
+ background_color: string;
21
+ /** Texto para acessibilidade (`aria-label`) */
22
+ aria_label: string;
23
+ /** Padding interno do círculo. @default "4px" */
24
+ padding?: string;
25
+ /** Estilo da borda. @default "2px solid transparent" */
26
+ border?: string;
27
+ /** Define se o link será aberto em nova aba. @default true */
28
+ openInNewTab?: boolean;
29
+ /** Evento de clique customizado. Se definido, sobrescreve o comportamento padrão */
30
+ onClick?: () => void;
31
+ }
32
+ /**
33
+ * **CircularIconLink**
34
+ *
35
+ * Componente que exibe um **ícone ou imagem dentro de um círculo clicável**,
36
+ * permitindo criar links visuais para redes sociais, sites ou qualquer URL externa.
37
+ *
38
+ * - Aceita ícones do Material UI (`<SvgIcon>`) ou imagens (`<img>`).
39
+ * - O círculo possui cor de fundo, padding e borda personalizáveis.
40
+ * - Ao clicar, executa o `onClick` se definido, caso contrário abre a `url` em nova aba ou na mesma aba.
41
+ */
42
+ declare const CircularIconLink: React.FC<CircularIconLinkProps>;
43
+ export default CircularIconLink;
@@ -0,0 +1,35 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { Box, IconButton } from '@mui/material';
4
+ import { styled } from '@mui/material/styles';
5
+ const StyledBox = styled(Box, {
6
+ shouldForwardProp: (prop) => !['background_color', 'padding', 'border'].includes(prop),
7
+ })(({ background_color, padding, border }) => ({
8
+ backgroundColor: background_color,
9
+ padding: padding,
10
+ borderRadius: '50%',
11
+ display: 'inline-block',
12
+ border: border,
13
+ }));
14
+ /**
15
+ * **CircularIconLink**
16
+ *
17
+ * Componente que exibe um **ícone ou imagem dentro de um círculo clicável**,
18
+ * permitindo criar links visuais para redes sociais, sites ou qualquer URL externa.
19
+ *
20
+ * - Aceita ícones do Material UI (`<SvgIcon>`) ou imagens (`<img>`).
21
+ * - O círculo possui cor de fundo, padding e borda personalizáveis.
22
+ * - Ao clicar, executa o `onClick` se definido, caso contrário abre a `url` em nova aba ou na mesma aba.
23
+ */
24
+ const CircularIconLink = ({ url, background_color = 'transparent', aria_label, padding = '4px', border = 'none', children, openInNewTab = true, onClick, }) => {
25
+ const handleClick = () => {
26
+ if (url) {
27
+ const target = openInNewTab ? '_blank' : '_self';
28
+ const features = openInNewTab ? 'noopener noreferrer' : '';
29
+ window.open(url, target, features);
30
+ }
31
+ };
32
+ return (_jsx(StyledBox, { background_color: background_color, padding: padding, border: border, children: _jsx(IconButton, { "aria-label": aria_label, onClick: onClick || handleClick, children: children }) }));
33
+ };
34
+ export default CircularIconLink;
35
+ //# sourceMappingURL=CircularIconLink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CircularIconLink.js","sourceRoot":"","sources":["../../src/components/CircularIconLink.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,GAAG,EAAE,UAAU,EAAgB,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,EAAE;IAC5B,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE,CAC1B,CAAC,CAAC,kBAAkB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAc,CAAC;CACtE,CAAC,CAIC,CAAC,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7C,eAAe,EAAE,gBAAgB;IACjC,OAAO,EAAE,OAAO;IAChB,YAAY,EAAE,KAAK;IACnB,OAAO,EAAE,cAAc;IACvB,MAAM,EAAE,MAAM;CACf,CAAC,CAAC,CAAC;AAuCJ;;;;;;;;;GASG;AACH,MAAM,gBAAgB,GAAoC,CAAC,EACzD,GAAG,EACH,gBAAgB,GAAG,aAAa,EAChC,UAAU,EACV,OAAO,GAAG,KAAK,EACf,MAAM,GAAG,MAAM,EACf,QAAQ,EACR,YAAY,GAAG,IAAI,EACnB,OAAO,GACR,EAAE,EAAE;IACH,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;YACjD,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,SAAS,IAAC,gBAAgB,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,YAC7E,KAAC,UAAU,kBAAa,UAAU,EAAE,OAAO,EAAE,OAAO,IAAI,WAAW,YAChE,QAAQ,GACE,GACH,CACb,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,116 @@
1
+ import React from 'react';
2
+ /**
3
+ * Interface de propriedades para o componente `DownloadButton`.
4
+ *
5
+ * Use este botão para disponibilizar o download de um arquivo mantendo
6
+ * controle total sobre cores, raio de borda, sombra, dimensões e ícone.
7
+ *
8
+ * As propriedades marcadas com `@default` indicam o valor que será utilizado
9
+ * quando a prop não for fornecida ao componente.
10
+ */
11
+ export interface DownloadButtonProps {
12
+ /**
13
+ * URL do arquivo a ser baixado.
14
+ */
15
+ file: string;
16
+ /**
17
+ * Nome do arquivo que será salvo no disco.
18
+ */
19
+ fileName: string;
20
+ /**
21
+ * Cor de fundo do botão.
22
+ * @default "#1976d2"
23
+ */
24
+ background?: string;
25
+ /**
26
+ * Cor de fundo exibida no estado hover.
27
+ * @default "#1565c0"
28
+ */
29
+ backgroundHover?: string;
30
+ /**
31
+ * Cor do texto do botão.
32
+ * @default "#fff"
33
+ */
34
+ color?: string;
35
+ /**
36
+ * Cor do texto exibida no estado hover.
37
+ * Se não informada, herda a mesma cor definida em `color`.
38
+ */
39
+ colorHover?: string;
40
+ /**
41
+ * Raio da borda do botão (qualquer valor CSS válido).
42
+ * @default "8px"
43
+ */
44
+ borderRadius?: string;
45
+ /**
46
+ * Sombra do botão (valor CSS de box-shadow).
47
+ * @default "none"
48
+ */
49
+ boxShadow?: string;
50
+ /**
51
+ * Ícone opcional exibido à esquerda do conteúdo.
52
+ */
53
+ icon?: React.ReactNode;
54
+ /**
55
+ * Conteúdo textual do botão (recomendado utilizar `Typography`).
56
+ */
57
+ children: React.ReactNode;
58
+ /**
59
+ * Texto de acessibilidade que descreve a função do botão
60
+ * para leitores de tela (atributo `aria-label`).
61
+ */
62
+ arialLabel: string;
63
+ /**
64
+ * Largura do botão (valor CSS).
65
+ * @default "auto"
66
+ */
67
+ width?: string;
68
+ /**
69
+ * Altura do botão (valor CSS).
70
+ * @default "fit-content"
71
+ */
72
+ height?: string;
73
+ }
74
+ /**
75
+ * Botão de download customizável com suporte a ícone e conteúdo centralizado.
76
+ * O texto deve ser passado via `Typography` como children.
77
+ *
78
+ * ### Parâmetros
79
+ * @param {string} file URL do arquivo a ser baixado.
80
+ * @param {string} fileName Nome do arquivo que será salvo.
81
+ * @param {string} [background="#1976d2"] Cor de fundo padrão do botão. **@default** "#1976d2"
82
+ * @param {string} [backgroundHover="#1565c0"] Cor de fundo no hover. **@default** "#1565c0"
83
+ * @param {string} [color="#fff"] Cor do texto padrão. **@default** "#fff"
84
+ * @param {string} [colorHover] Cor do texto no hover (herda `color` quando ausente).
85
+ * @param {string} [borderRadius="8px"] Raio da borda do botão. **@default** "8px"
86
+ * @param {string} [boxShadow="none"] Sombra do botão. **@default** "none"
87
+ * @param {string} arialLabel Texto de acessibilidade (atributo `aria-label`).
88
+ * @param {React.ReactNode} [icon] Ícone opcional exibido à esquerda do conteúdo.
89
+ * @param {React.ReactNode} children Conteúdo do botão (ex.: `Typography`).
90
+ * @param {string} [width="auto"] Largura do botão (valor CSS). **@default** "auto"
91
+ * @param {string} [height="fit-content"] Altura do botão (valor CSS). **@default** "fit-content"
92
+ *
93
+ * @example
94
+ * ```tsx
95
+ * import { Typography } from '@mui/material';
96
+ * import { Download as DownloadIcon } from '@mui/icons-material';
97
+ *
98
+ * <DownloadButton
99
+ * file="/docs/manual.pdf"
100
+ * fileName="manual.pdf"
101
+ * arialLabel="Baixar manual do produto"
102
+ * background="#28a745"
103
+ * backgroundHover="#218838"
104
+ * color="#fff"
105
+ * borderRadius="12px"
106
+ * boxShadow="0 2px 8px rgba(0,0,0,0.15)"
107
+ * width="220px"
108
+ * height="44px"
109
+ * icon={<DownloadIcon />}
110
+ * >
111
+ * <Typography variant="button">Baixar Manual</Typography>
112
+ * </DownloadButton>
113
+ * ```
114
+ */
115
+ declare const DownloadButton: React.FC<DownloadButtonProps>;
116
+ export default DownloadButton;
@@ -0,0 +1,80 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { styled } from '@mui/material/styles';
3
+ const StyledLink = styled('a', {
4
+ shouldForwardProp: (prop) => ![
5
+ 'background',
6
+ 'backgroundHover',
7
+ 'color',
8
+ 'colorHover',
9
+ 'borderRadius',
10
+ 'boxShadow',
11
+ 'width',
12
+ 'height'
13
+ ].includes(prop),
14
+ })(({ background, backgroundHover, color, colorHover, borderRadius, boxShadow, width, height }) => ({
15
+ width: width,
16
+ height: height,
17
+ display: 'inline-flex',
18
+ alignItems: 'center',
19
+ justifyContent: 'center',
20
+ gap: '8px',
21
+ background: background || '#1976d2',
22
+ color: color || '#fff',
23
+ borderRadius: borderRadius || '8px',
24
+ boxShadow: boxShadow || 'none',
25
+ padding: '8px 16px',
26
+ cursor: 'pointer',
27
+ textDecoration: 'none',
28
+ transition: 'all 0.3s ease',
29
+ '&:hover': {
30
+ background: backgroundHover || '#1565c0',
31
+ color: colorHover || color || '#fff',
32
+ },
33
+ }));
34
+ /**
35
+ * Botão de download customizável com suporte a ícone e conteúdo centralizado.
36
+ * O texto deve ser passado via `Typography` como children.
37
+ *
38
+ * ### Parâmetros
39
+ * @param {string} file URL do arquivo a ser baixado.
40
+ * @param {string} fileName Nome do arquivo que será salvo.
41
+ * @param {string} [background="#1976d2"] Cor de fundo padrão do botão. **@default** "#1976d2"
42
+ * @param {string} [backgroundHover="#1565c0"] Cor de fundo no hover. **@default** "#1565c0"
43
+ * @param {string} [color="#fff"] Cor do texto padrão. **@default** "#fff"
44
+ * @param {string} [colorHover] Cor do texto no hover (herda `color` quando ausente).
45
+ * @param {string} [borderRadius="8px"] Raio da borda do botão. **@default** "8px"
46
+ * @param {string} [boxShadow="none"] Sombra do botão. **@default** "none"
47
+ * @param {string} arialLabel Texto de acessibilidade (atributo `aria-label`).
48
+ * @param {React.ReactNode} [icon] Ícone opcional exibido à esquerda do conteúdo.
49
+ * @param {React.ReactNode} children Conteúdo do botão (ex.: `Typography`).
50
+ * @param {string} [width="auto"] Largura do botão (valor CSS). **@default** "auto"
51
+ * @param {string} [height="fit-content"] Altura do botão (valor CSS). **@default** "fit-content"
52
+ *
53
+ * @example
54
+ * ```tsx
55
+ * import { Typography } from '@mui/material';
56
+ * import { Download as DownloadIcon } from '@mui/icons-material';
57
+ *
58
+ * <DownloadButton
59
+ * file="/docs/manual.pdf"
60
+ * fileName="manual.pdf"
61
+ * arialLabel="Baixar manual do produto"
62
+ * background="#28a745"
63
+ * backgroundHover="#218838"
64
+ * color="#fff"
65
+ * borderRadius="12px"
66
+ * boxShadow="0 2px 8px rgba(0,0,0,0.15)"
67
+ * width="220px"
68
+ * height="44px"
69
+ * icon={<DownloadIcon />}
70
+ * >
71
+ * <Typography variant="button">Baixar Manual</Typography>
72
+ * </DownloadButton>
73
+ * ```
74
+ */
75
+ const DownloadButton = ({ width = 'auto', height = 'fit-content', file, fileName, background, backgroundHover, color, colorHover, borderRadius, boxShadow, arialLabel, icon, children, }) => {
76
+ return (_jsxs(StyledLink, { href: file, download: fileName, background: background, backgroundHover: backgroundHover, color: color, colorHover: colorHover, borderRadius: borderRadius, boxShadow: boxShadow, "aria-label": arialLabel, width: width, height: height, children: [icon && _jsx("span", { children: icon }), children] }));
77
+ };
78
+ DownloadButton.displayName = 'DownloadButton';
79
+ export default DownloadButton;
80
+ //# sourceMappingURL=DownloadButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DownloadButton.js","sourceRoot":"","sources":["../../src/components/DownloadButton.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAuF9C,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,EAAE;IAC7B,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE,CAC1B,CAAC;QACC,YAAY;QACZ,iBAAiB;QACjB,OAAO;QACP,YAAY;QACZ,cAAc;QACd,WAAW;QACX,OAAO;QACP,QAAQ;KACT,CAAC,QAAQ,CAAC,IAAc,CAAC;CAC7B,CAAC,CASC,CAAC,EAAE,UAAU,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IAClG,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,aAAa;IACtB,UAAU,EAAE,QAAQ;IACpB,cAAc,EAAE,QAAQ;IACxB,GAAG,EAAE,KAAK;IACV,UAAU,EAAE,UAAU,IAAI,SAAS;IACnC,KAAK,EAAE,KAAK,IAAI,MAAM;IACtB,YAAY,EAAE,YAAY,IAAI,KAAK;IACnC,SAAS,EAAE,SAAS,IAAI,MAAM;IAC9B,OAAO,EAAE,UAAU;IACnB,MAAM,EAAE,SAAS;IACjB,cAAc,EAAE,MAAM;IACtB,UAAU,EAAE,eAAe;IAC3B,SAAS,EAAE;QACT,UAAU,EAAE,eAAe,IAAI,SAAS;QACxC,KAAK,EAAE,UAAU,IAAI,KAAK,IAAI,MAAM;KACrC;CACF,CAAC,CAAC,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,cAAc,GAAkC,CAAC,EACrD,KAAK,GAAG,MAAM,EACd,MAAM,GAAG,aAAa,EACtB,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,eAAe,EACf,KAAK,EACL,UAAU,EACV,YAAY,EACZ,SAAS,EACT,UAAU,EACV,IAAI,EACJ,QAAQ,GACT,EAAE,EAAE;IACH,OAAO,CACL,MAAC,UAAU,IACT,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,eAAe,EAChC,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,gBACR,UAAU,EACtB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,aAEb,IAAI,IAAI,yBAAO,IAAI,GAAQ,EAC3B,QAAQ,IACE,CACd,CAAC;AACJ,CAAC,CAAC;AAEF,cAAc,CAAC,WAAW,GAAG,gBAAgB,CAAC;AAE9C,eAAe,cAAc,CAAC"}
@@ -0,0 +1,55 @@
1
+ import React from 'react';
2
+ import { TypographyVariant } from '@mui/material/styles';
3
+ export interface FormButtonGroupProps {
4
+ showDeleteButton?: boolean;
5
+ variant?: TypographyVariant;
6
+ onCancel?: () => void;
7
+ onDelete?: () => void;
8
+ }
9
+ /**
10
+ * Agrupador de botões "Deletar", Cancelar" e "Salvar" para uso **dentro** de formulários.
11
+ *
12
+ * O botão **"Salvar"** possui `type="submit"` e dispara o `onSubmit` do `<form>`.
13
+ *
14
+ * @param {TypographyVariant} [variant="body1"] Variante da tipografia usada no texto.
15
+ * @param {boolean} [showDeleteButton="false"] Exibir botao Deletar.
16
+ * @param {() => void} [onCancel]
17
+ * Função disparada ao clicar em **"Cancelar"**.
18
+ * Ideal para fechar modal, navegar de volta, limpar estado ou desfazer alterações.
19
+ *
20
+ * @default onCancel = () => {}
21
+ *
22
+ * @param {() => void} [onDelete]
23
+ * Função disparada ao clicar em **"Deletar"**.
24
+ *
25
+ * @default onDelete = () => {}
26
+ *
27
+ * @example
28
+ * ```tsx
29
+ * import React from 'react';
30
+ * import Box from '@mui/material/Box';
31
+ * import TextField from '@mui/material/TextField';
32
+ * import { FormButtonGroup } from './FormButtonGroup';
33
+ *
34
+ * const MyForm: React.FC = () => {
35
+ * const handleSubmit = (event: React.FormEvent<HTMLFormElement>) => {
36
+ * event.preventDefault();
37
+ * // sua lógica de envio...
38
+ * console.log('Form submetido');
39
+ * };
40
+ *
41
+ * return (
42
+ * <Box component="form" onSubmit={handleSubmit} noValidate>
43
+ * <TextField label="Nome" fullWidth margin="normal" />
44
+ * <FormButtonGroup
45
+ * exibirBotaoDelete = {true}
46
+ * onCancel={() => console.log('cancelado')}
47
+ * onDelete={() => console.log('deletado')}
48
+ * />
49
+ * </Box>
50
+ * );
51
+ * };
52
+ * ```
53
+ */
54
+ declare const FormButtonGroup: React.FC<FormButtonGroupProps>;
55
+ export default FormButtonGroup;
@@ -0,0 +1,78 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { styled } from '@mui/material/styles';
3
+ import { StyledButtonKind } from './StyledButton';
4
+ import { Typography } from '@mui/material';
5
+ const ActionsContainerWithDelete = styled('div', {
6
+ shouldForwardProp: (prop) => !['onCancel'].includes(prop),
7
+ })(() => ({
8
+ display: 'grid',
9
+ gridTemplateColumns: '1fr auto auto',
10
+ gap: '16px',
11
+ justifyItems: 'flex-start',
12
+ width: '100%',
13
+ }));
14
+ const ActionsContainer = styled('div', {
15
+ shouldForwardProp: (prop) => !['onCancel'].includes(prop),
16
+ })(() => ({
17
+ display: 'flex',
18
+ flexDirection: 'row',
19
+ gap: '16px',
20
+ justifyContent: 'flex-end',
21
+ width: '100%',
22
+ }));
23
+ /**
24
+ * Agrupador de botões "Deletar", Cancelar" e "Salvar" para uso **dentro** de formulários.
25
+ *
26
+ * O botão **"Salvar"** possui `type="submit"` e dispara o `onSubmit` do `<form>`.
27
+ *
28
+ * @param {TypographyVariant} [variant="body1"] Variante da tipografia usada no texto.
29
+ * @param {boolean} [showDeleteButton="false"] Exibir botao Deletar.
30
+ * @param {() => void} [onCancel]
31
+ * Função disparada ao clicar em **"Cancelar"**.
32
+ * Ideal para fechar modal, navegar de volta, limpar estado ou desfazer alterações.
33
+ *
34
+ * @default onCancel = () => {}
35
+ *
36
+ * @param {() => void} [onDelete]
37
+ * Função disparada ao clicar em **"Deletar"**.
38
+ *
39
+ * @default onDelete = () => {}
40
+ *
41
+ * @example
42
+ * ```tsx
43
+ * import React from 'react';
44
+ * import Box from '@mui/material/Box';
45
+ * import TextField from '@mui/material/TextField';
46
+ * import { FormButtonGroup } from './FormButtonGroup';
47
+ *
48
+ * const MyForm: React.FC = () => {
49
+ * const handleSubmit = (event: React.FormEvent<HTMLFormElement>) => {
50
+ * event.preventDefault();
51
+ * // sua lógica de envio...
52
+ * console.log('Form submetido');
53
+ * };
54
+ *
55
+ * return (
56
+ * <Box component="form" onSubmit={handleSubmit} noValidate>
57
+ * <TextField label="Nome" fullWidth margin="normal" />
58
+ * <FormButtonGroup
59
+ * exibirBotaoDelete = {true}
60
+ * onCancel={() => console.log('cancelado')}
61
+ * onDelete={() => console.log('deletado')}
62
+ * />
63
+ * </Box>
64
+ * );
65
+ * };
66
+ * ```
67
+ */
68
+ const FormButtonGroup = ({ showDeleteButton = false, variant = "body1", onCancel = () => { }, onDelete = () => { }, }) => {
69
+ if (showDeleteButton) {
70
+ return (_jsxs(ActionsContainerWithDelete, { onCancel: onCancel, children: [_jsx(StyledButtonKind, { kind: "delete", type: "button", onClick: onDelete, "aria-label": "botao Deletar", sx: { width: 'auto' }, children: _jsx(Typography, { variant: variant, children: "Deletar" }) }), _jsx(StyledButtonKind, { kind: "secondary", type: "button", onClick: onCancel, "aria-label": "botao Cancelar", sx: { width: 'auto' }, children: _jsx(Typography, { variant: variant, children: "Cancelar" }) }), _jsx(StyledButtonKind, { kind: "primary", type: "submit", "aria-label": "botao Salvar", sx: { width: 'auto' }, children: _jsx(Typography, { variant: variant, children: "Salvar" }) })] }));
71
+ }
72
+ else {
73
+ return (_jsxs(ActionsContainer, { onCancel: onCancel, children: [_jsx(StyledButtonKind, { kind: "secondary", type: "button", "aria-label": "botao Cancelar", onClick: onCancel, sx: { width: 'auto' }, children: _jsx(Typography, { variant: variant, children: "Cancelar" }) }), _jsx(StyledButtonKind, { kind: "primary", type: "submit", "aria-label": "botao Salvar", sx: { width: 'auto' }, children: _jsx(Typography, { variant: variant, children: "Salvar" }) })] }));
74
+ }
75
+ };
76
+ FormButtonGroup.displayName = 'FormButtonGroup';
77
+ export default FormButtonGroup;
78
+ //# sourceMappingURL=FormButtonGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormButtonGroup.js","sourceRoot":"","sources":["../../src/components/FormButtonGroup.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import React from 'react';
2
+ import { TypographyVariant } from '@mui/material/styles';
3
+ import { ButtonKind } from '../types/ButtonKind';
4
+ import { CommonStyleProps } from "../types/style/CommonStyleProps";
5
+ interface NavigationButtonProps extends CommonStyleProps {
6
+ kind?: ButtonKind;
7
+ variant?: TypographyVariant;
8
+ text: string;
9
+ aria_label: string;
10
+ url: string;
11
+ }
12
+ /**
13
+ * Botão de navegação reutilizável baseado em um link (`<a>`), estilizado com Material UI.
14
+ *
15
+ * Regras de navegação:
16
+ * - Se `url` contiver `http`, o link é tratado como externo e abre em nova aba.
17
+ * - Caso contrário, é tratado como link interno ou âncora.
18
+ *
19
+ * @param {ButtonKind} [kind="none"] Tipo de botão baseado nos tokens do tema.
20
+ * @param {string} url URL ou âncora de destino.
21
+ * @param {string} aria_label Texto para acessibilidade.
22
+ * @param {string} [background] Cor de fundo do botão.
23
+ * @param {string} [backgroundHover] Cor de fundo no hover.
24
+ * @param {string} [colorText] Cor do texto.
25
+ * @param {string} [colorHover] Cor do texto no hover.
26
+ * @param {string} [border="none"] Borda do botão.
27
+ * @param {string} [borderRadius="0"] Raio da borda.
28
+ * @param {string} [boxShadow="none"] Sombra do botão.
29
+ * @param {string} width Largura do botão.
30
+ * @param {string} [margin="0"] Margem externa.
31
+ * @param {string} [padding="8px 24px"] Espaçamento interno.
32
+ * @param {string} [text] Texto do botão.
33
+ * @param {TypographyVariant} [variant="body1"] Variante da tipografia usada no texto.
34
+ *
35
+ * @example
36
+ * ```tsx
37
+ * <NavigationButton
38
+ * kind="primary"
39
+ * url="#contato"
40
+ * aria_label="Ir para contato"
41
+ * width="fit-content"
42
+ * >
43
+ * Fale conosco
44
+ * </NavigationButton>
45
+ * ```
46
+ */
47
+ declare const NavigationButton: React.FC<NavigationButtonProps>;
48
+ export default NavigationButton;