Skip to content

Tema ​

Fizemos nossa SDK com uma abordagem de alto nível de personalização, onde toda a configuração da UI pode ser feita em tempo de execução através de configurações usando o construtor da classe ou através do método setConfig.

Em resumo, o objeto de configuração possui duas propriedades para trabalhar o tema:

  • theme: Mapeado para o tipo IConfigTheme
  • enableComponents: Mapeado para o tipo IConfigEnableComponents

Abaixo, você pode ver a tipagem dessas duas propriedades de maneira expandida.

typescript
type BoxShadow = {
	offsetX: string;
	offsetY: string;
	color?: string;
	blur?: string;
	spread?: string;
	inset?: boolean;
};

type Border = {
	width: string;
	color: string;
	style: string;
	radius: string;
};

interface IConfigTheme {
	widget: {
		background: string;
		option: {
			foreground: string;
			hoverBackground: string;
			activeBackground: string;
			focusRingColor: string;
		};
		closeButton: {
			foreground: string;
			hoverBackground: string;
			activeBackground: string;
			focusRingColor: string;
		};
		border: Border;
		shadow: BoxShadow[];
	};

	translationWindow: {
		layout: "relative" | "absolute" | "fixed";
		draggable: boolean;
		position: {
			preset:
				| "topLeft"
				| "top"
				| "topRight"
				| "middleLeft"
				| "middleRight"
				| "bottomLeft"
				| "bottom"
				| "bottomRight"
				| "custom";
			top?: string;
			left?: string;
			right?: string;
			bottom?: string;
		};
		background: string;
		width: string;
		height: string;
		border: Border;
		shadow: BoxShadow[];
	};

	rateWindow: {
		background: string;
		foreground: string;
		titleFontSize: string;
		descriptionFontSize: string;
		border: Border;
		shadow: BoxShadow[];
	};

	loading: {
		internal: {
			color: string;
			background: string;
			border: {
				width: string;
				color: string;
				style: string;
				radius: string;
			};
		};
		external: {
			color: string;
		};
	};

	caption: {
		color: string;
		fontSize: string;
	};

	iconButtonContainer: {
		background: string;
		border: Border;
		shadow: BoxShadow[];
	};

	header: {
		background: string;
		foreground: string;
		border: Border;
		shadow: BoxShadow[];
	};

	button: {
		background: string;
		foreground: string;
		hoverBackground: string;
		activeBackground: string;
		focusRingColor: string;
		border: Border;
		shadow: BoxShadow[];
	};

	rateButton: {
		foreground: string;
		hoverBackground: string;
		activeBackground: string;
		focusRingColor: string;
	};

	iconButton: {
		foreground: string;
		hoverBackground: string;
		activeBackground: string;
		focusRingColor: string;
		border: {
			radius: string;
		};
	};

	errorMessage: {
		background: string;
		foreground: string;
		titleFontSize: string;
		iconColor: string;
		descriptionFontSize: string;
		border: Border;
		shadow: BoxShadow[];
	};
}

interface IConfigEnableComponents {
	changeSpeedButton: boolean;
	pauseAnimationButton: boolean;
	stopAnimationButton: boolean;
	repeatAnimationButton: boolean;
	rateAnimationButton: boolean;
	widget: boolean;
	header: boolean;
	caption: boolean;
	zoom: boolean;
	rotate: boolean;
}

Propriedades em Comum ​

Algumas propriedades em certos componentes são iguais entre si e podem acabar tendo estruturas complexas. Para evitar muita repetição de grandes estruturas, iremos apresenta-las abaixo:

shadow ​

  • tipo: BoxShadow[]

É um array de objetos, onde cada objeto possui as seguintes propriedades:

  • offsetX: string
  • offsetY: string
  • blur: string
  • spread: string
  • color: string
  • inset: boolean

Ele serve para definir várias sombras em um elemento.

border ​

  • tipo: Border

É um objeto com as seguintes propriedades:

  • width: string
  • color: string
  • style: string
  • radius: string

Ele serve para definir todas as propriedades de borda de um elemento.

enableComponents ​

  • tipo: IConfigEnableComponents
  • padrão:
json
{
	"caption": true,
	"changeSpeedButton": true,
	"header": true,
	"pauseAnimationButton": true,
	"rateAnimationButton": true,
	"repeatAnimationButton": true,
	"stopAnimationButton": true,
	"widget": true,
	"zoom": true,
	"rotate": true
}

Esse campo serve para habilitar ou desabilitar os componentes da biblioteca. Cada campo é opcional e não é necessário informar todos os valores. Recomendamos utilizar essa propriedade, caso deseje desativar os componentes que a biblioteca fornece e criar suas próprias implementações.

DICA

É possível remover todos os elementos da interface, sendo o avatar 3D o único elemento visível disponível, não podendo ser removido.

caption ​

  • tipo: boolean
  • padrão: true

Habilita ou desabilita a legenda durante traduções.

changeSpeedButton ​

  • tipo: boolean
  • padrão: true

Habilita ou desabilita a o botão que troca a velocidade de tradução.

  • tipo: boolean
  • padrão: true

Habilita ou desabilita o cabeçalho da janela de tradução.

pauseAnimationButton ​

  • tipo: boolean
  • padrão: true

Habilita ou desabilita o botão de pausar a tradução.

rateAnimationButton ​

  • tipo: boolean
  • padrão: true

Habilita ou desabilita o botão para abrir a janela de avaliação, seja pelo widget ou pela janela de tradução.

repeatAnimationButton ​

  • tipo: boolean
  • padrão: true

Habilita ou desabilita o botão para repetir a última tradução.

stopAnimationButton ​

  • tipo: boolean
  • padrão: true

Habilita ou desabilita o botão para parar uma tradução.

widget ​

  • tipo: boolean
  • padrão: true

Habilita ou desabilita o widget da biblioteca.

zoom ​

  • tipo: boolean
  • padrão: true

Habilita ou desabilita o zoom no avatar.

rotate ​

  • tipo: boolean
  • padrão: true

Habilita ou desabilita a rotação no avatar.

theme ​

  • tipo: object
  • padrão:
json
{
	"widget": {
		"background": "#EDEDED",
		"border": {
			"color": "#BDBDBD",
			"radius": "12px",
			"style": "solid",
			"width": "1px"
		},
		"option": {
			"foreground": "#2E2E2E",
			"hoverBackground": "#e1e1e1",
			"activeBackground": "#c9c9c9",
			"focusRingColor": "#C64F01"
		},
		"closeButton": {
			"foreground": "#C22929",
			"hoverBackground": "#e1e1e1",
			"activeBackground": "#c9c9c9",
			"focusRingColor": "#C64F01"
		},
		"shadow": [
			{
				"offsetX": "0px",
				"offsetY": "2px",
				"blur": "6px",
				"spread": "2px",
				"color": "rgba(0, 0, 0, 0.15)",
				"inset": false
			},
			{
				"offsetX": "0px",
				"offsetY": "1px",
				"blur": "2px",
				"spread": "0px",
				"color": "rgba(0, 0, 0, 0.08)",
				"inset": false
			}
		]
	},
	"translationWindow": {
		"layout": "fixed",
		"draggable": true,
		"position": {
			"preset": "topRight",
			"top": "",
			"left": "",
			"right": "",
			"bottom": ""
		}
	},
	"loading": {
		"external": {
			"color": "#c64f01"
		},
		"internal": {
			"color": "#FFFFFF",
			"background": "#333333d9",
			"border": {
				"color": "#FFFFFF",
				"width": "0.75px",
				"radius": "10px",
				"style": "solid"
			}
		}
	},
	"caption": { "color": "#2E2E2E2E", "fontSize": "14px" },
	"iconButtonContainer": {
		"background": "#FFFFFF",
		"border": {
			"color": "transparent",
			"radius": "12px",
			"style": "solid",
			"width": "0"
		},
		"shadow": [
			{
				"offsetX": "0px",
				"offsetY": "2px",
				"blur": "6px",
				"spread": "2px",
				"color": "rgba(0, 0, 0, 0.15)",
				"inset": false
			},
			{
				"offsetX": "0px",
				"offsetY": "1px",
				"blur": "2px",
				"spread": "0px",
				"color": "rgba(0, 0, 0, 0.08)",
				"inset": false
			}
		]
	},
	"header": {
		"background": "#FFFFFF",
		"foreground": "#2E2E2E",
		"border": {
			"color": "transparent",
			"radius": "0px",
			"style": "solid",
			"width": "0"
		},
		"shadow": [
			{
				"offsetX": "0px",
				"offsetY": "2px",
				"blur": "6px",
				"spread": "2px",
				"color": "rgba(0, 0, 0, 0.15)",
				"inset": false
			},
			{
				"offsetX": "0px",
				"offsetY": "1px",
				"blur": "2px",
				"spread": "0px",
				"color": "rgba(0, 0, 0, 0.08)",
				"inset": false
			}
		]
	},
	"button": {
		"background": "#c64f01",
		"foreground": "#FFFFFF",
		"hoverBackground": "#b24701",
		"activeBackground": "#9e3f01",
		"focusRingColor": "#c64f01",
		"border": {
			"color": "transparent",
			"radius": "12px",
			"style": "solid",
			"width": "0"
		},
		"shadow": []
	},
	"rateButton": {
		"foreground": "#2E2E2E",
		"hoverBackground": "#e1e1e1",
		"activeBackground": "#c9c9c9",
		"focusRingColor": "#C64F01"
	},
	"iconButton": {
		"foreground": "#2E2E2E",
		"hoverBackground": "#e1e1e1",
		"activeBackground": "#c9c9c9",
		"focusRingColor": "#C64F01",
		"border": {
			"radius": "12px"
		}
	},
	"errorMessage": {
		"background": "#FFF1C5",
		"foreground": "#472201",
		"titleFontSize": "14px",
		"descriptionFontSize": "12px",
		"iconColor": "#BA6A03",
		"shadow": [],
		"border": {
			"color": "#BA6A03",
			"radius": "8px",
			"style": "solid",
			"width": "1px"
		}
	}
}

Esse campo serve para personalizar o estilo dos elementos da biblioteca. Cada campo é opcional e não é necessário informar todos os valores.


widget ​

background ​

  • tipo: string
  • padrão: #EDEDED

Define a cor de fundo do widget e do menu de opções.

border ​

  • Padrões:
    • width: 1px
    • radius: 12px
    • style: solid
    • color: #BDBDBD

Veja a estrutura do campo border.

option ​

  • tipo: object
  • padrão:
json
{
	"foreground": "#2E2E2E",
	"hoverBackground": "#e1e1e1",
	"activeBackground": "#c9c9c9",
	"focusRingColor": "#C64F01"
}

Define a estilização de cada opções dentro do menu de opções.

foreground ​
  • tipo: string
  • padrão: #2E2E2E

Define a cor dos textos e ícone do elemento.

hoverBackground ​
  • tipo: string
  • padrão: #e1e1e1

Define a cor de fundo do elemento quando o usuário passar o mouse em cima.

activeBackground ​
  • tipo: string
  • padrão: #c9c9c9

Define a cor de fundo do elemento quando o usuário clicar no elemento.

focusRingColor ​
  • tipo: string
  • padrão: #C64F01

Define a cor do contorno do elemento quando o usuário estiver com o elemento em foco.

closeButton ​

  • tipo: object
  • padrão:
json
{
	"foreground": "#C22929",
	"hoverBackground": "#e1e1e1",
	"activeBackground": "#c9c9c9",
	"focusRingColor": "#C64F01"
}

Define a estilização de uma opção específica do menu de opções: Botão para fechar aplicação.

foreground ​
  • tipo: string
  • padrão: #C22929

Define a cor dos textos e ícone do elemento.

hoverBackground ​
  • tipo: string
  • padrão: #e1e1e1

Define a cor de fundo do elemento quando o usuário passar o mouse em cima.

activeBackground ​
  • tipo: string
  • padrão: #c9c9c9

Define a cor de fundo do elemento quando o usuário clicar no elemento.

focusRingColor ​
  • tipo: string
  • padrão: #C64F01

Define a cor do contorno do elemento quando o usuário estiver com o elemento em foco.

shadow ​

  • Padrões:
json
[
	{
		"offsetX": "0px",
		"offsetY": "2px",
		"blur": "6px",
		"spread": "2px",
		"color": "rgba(0, 0, 0, 0.15)",
		"inset": false
	},
	{
		"offsetX": "0px",
		"offsetY": "1px",
		"blur": "2px",
		"spread": "0px",
		"color": "rgba(0, 0, 0, 0.08)",
		"inset": false
	}
]

Veja a estrutura do campo shadow.


translationWindow ​

layout ​

  • tipo: "relative" | "absolute" | "fixed"
  • padrão: fixed

Define como a janela de tradução vai ser alocado na página, por padrão, ela é fixada na tela.

draggable ​

  • tipo: boolean
  • padrão: true

Define se a janela de tradução (e o widget) pode ser arrastada.

position ​

  • tipo: object
  • padrão:
json
{
	"preset": "topRight",
	"top": "",
	"left": "",
	"right": "",
	"bottom": ""
}

Exemplo de posicionamento

Propriedade que define a posição da janela de tradução em relação ao elemento pai. Por padrão, a janela se posiciona no canto superior direito. É possível utilizar presets de posicionamento e/ou definir as coordenadas top, left, right e bottom diretamente.

  • presets: "topLeft" | "top" | "topRight" | "middleLeft" | "middleRight" | "bottomLeft" | "bottom" | "bottomRight" | "custom"

Cada preset vai posicionar o elemento em uma das 8 posições, podendo ser utilizada em conjunto com os campos top, left, right e bottom que irão substituir os posicionamentos setados pelos presets.

Caso não queira usar nenhum preset e definir somente os campos top, left, right e bottom, basta setar o preset com o valor custom.

background ​

  • tipo: string
  • padrão: #EDEDED

Define a cor de fundo da janela de tradução.

width ​

  • tipo: string
  • padrão: 200px

Define a largura da janela de tradução.

height ​

  • tipo: string
  • padrão: 310px

Define a altura da janela de tradução.

border ​

  • Padrões:
    • width: 1px
    • radius: 16px
    • style: solid
    • color: #BDBDBD

Define a borda da janela de tradução.

Veja a estrutura do campo border.

shadow ​

  • Padrões:
json
[
	{
		"offsetX": "0px",
		"offsetY": "2px",
		"blur": "6px",
		"spread": "2px",
		"color": "rgba(0, 0, 0, 0.15)",
		"inset": false
	},
	{
		"offsetX": "0px",
		"offsetY": "1px",
		"blur": "2px",
		"spread": "0px",
		"color": "rgba(0, 0, 0, 0.08)",
		"inset": false
	}
]

Define as sombras da janela de tradução.

Veja a estrutura do campo shadow.


rateWindow ​

Esse componente serve como uma interface para avaliação da qualidade das traduções e é possível exibi-lo sempre ao final de uma tradução ainda não avaliada na sessão. Ele é composto por outros mini-componentes que também possuem personalização.

background ​

  • tipo: string
  • padrão: #FFFFFF

Define a cor de fundo do elemento.

foreground ​

  • tipo: string
  • padrão: #2E2E2E

Define a cor do elementos textuais internos.

titleFontSize ​

  • tipo: string
  • padrão: 12px

Define a fonte do título do elemento.

descriptionFontSize ​

  • tipo: string
  • padrão: 12px

Define a fonte da descrição do elemento.

border ​

  • Padrões:
    • width: 0
    • radius: 16px 16px 0 0
    • style: solid
    • color: #000

Veja a estrutura do campo border.

shadow ​

  • Padrões:
json
[
	{
		"offsetX": "0px",
		"offsetY": "2px",
		"blur": "6px",
		"spread": "2px",
		"color": "rgba(0, 0, 0, 0.15)",
		"inset": false
	},
	{
		"offsetX": "0px",
		"offsetY": "1px",
		"blur": "2px",
		"spread": "0px",
		"color": "rgba(0, 0, 0, 0.08)",
		"inset": false
	}
]

Veja a estrutura do campo shadow.


loading ​

O componente de carregamento é dividido entre internal e external.

  • external: É usado para carregar os dados iniciais do SDK.
  • internal: É usado entre traduções.

internal ​

  • tipo: object
  • padrão:
json
{
	"color": "#FFFFFF",
	"background": "#333333d9",
	"border": {
		"color": "#FFFFFF",
		"width": "0.75px",
		"radius": "10px",
		"style": "solid"
	}
}

Define como o loading entre traduções deve ser personalizado.

color ​
  • tipo: string
  • padrão: #FFFFFF

Define a cor do spinner em rotação;

background ​
  • tipo: string
  • padrão: #333333d9

Define a cor de fundo do spinner em rotação;

border ​
  • Padrões:
    • width: 0.75px
    • radius: 10px
    • style: solid
    • color: #FFFFFF

Veja a estrutura do campo border.

external ​

  • tipo: object
  • padrão:
json
{
	"color": "#FFFFFF"
}

Define como o loading para carregamento de dados iniciais do SDK deve ser personalizado.

color ​
  • tipo: string
  • padrão: #FFFFFF

Define a cor do spinner em rotação;


caption ​

O componente de legenda da tradução atual.

color ​

  • tipo: string
  • padrão: #2E2E2E2E

Define a cor do texto da legenda;

fontSize ​

  • tipo: string
  • padrão: 14px

Define o tamanho da fonte da legenda.


iconButtonContainer ​

O componente de container para os componentes IconButton.

background ​

  • tipo: string
  • padrão: #FFFFFF

Define a cor de fundo do elemento.

border ​

  • Padrões:
    • width: 0
    • radius: 12px
    • style: solid
    • color: transparent

Veja a estrutura do campo border.

shadow ​

  • Padrões:
json
[
	{
		"offsetX": "0px",
		"offsetY": "2px",
		"blur": "6px",
		"spread": "2px",
		"color": "rgba(0, 0, 0, 0.15)",
		"inset": false
	},
	{
		"offsetX": "0px",
		"offsetY": "1px",
		"blur": "2px",
		"spread": "0px",
		"color": "rgba(0, 0, 0, 0.08)",
		"inset": false
	}
]

Veja a estrutura do campo shadow.


header ​

O componente de cabeçalho da aplicação, aparecendo durante o estado ready.

background ​

  • tipo: string
  • padrão: #FFFFFF

Define a cor de fundo do elemento.

foreground ​

  • tipo: string
  • padrão: #2E2E2E

Define a cor do elementos textuais internos.

border ​

  • Padrões:
    • width: 0
    • radius: 0
    • style: solid
    • color: transparent

Veja a estrutura do campo border.

shadow ​

  • Padrões:
json
[
	{
		"offsetX": "0px",
		"offsetY": "2px",
		"blur": "6px",
		"spread": "2px",
		"color": "rgba(0, 0, 0, 0.15)",
		"inset": false
	},
	{
		"offsetX": "0px",
		"offsetY": "1px",
		"blur": "2px",
		"spread": "0px",
		"color": "rgba(0, 0, 0, 0.08)",
		"inset": false
	}
]

Veja a estrutura do campo shadow.


button ​

Esse componente faz parte do RateWindow e serve como o botão de envio da avaliação

background ​

  • tipo: string
  • padrão: #c64f01

Define a cor de fundo do elemento.

hoverBackground ​

  • tipo: string
  • padrão: #b24701

Define a cor de fundo do elemento quando o usuário passar o mouse por cima.

activeBackground ​

  • tipo: string
  • padrão: #9e3f01

Define a cor de fundo do elemento quando o usuário clicar nele.

focusRingColor ​

  • tipo: string
  • padrão: #c64f01

Define a cor do contorno do elemento quando o usuário estiver com o elemento em foco.

border ​

  • Padrões:
    • width: 0
    • radius: 12px
    • style: solid
    • color: transparent

Veja a estrutura do campo border.

shadow ​

  • Padrões:
json
[]

Veja a estrutura do campo shadow.


rateButton ​

Esse componente faz parte do RateWindow e serve como o botão para selecionar se a qualidade da avaliação foi boa ou ruim.

foreground ​

  • tipo: string
  • padrão: #2E2E2E

Define a cor do texto e do ícone do elemento quando ainda não estiver selecionado.

hoverBackground ​

  • tipo: string
  • padrão: #e1e1e1

Define a cor de fundo do elemento quando o usuário passar o mouse por cima.

activeBackground ​

  • tipo: string
  • padrão: #c9c9c9

Define a cor de fundo do elemento quando o usuário clicar nele.

focusRingColor ​

  • tipo: string
  • padrão: #C64F01

Define a cor do contorno do elemento quando o usuário estiver com o elemento em foco.


iconButton ​

Esse componente representa todos os botões com ícone que aparecem na aplicação. Eles podem ser usados na interface diretamente, ou podem estar dentro de um IconButtonContainer.

foreground ​

  • tipo: string
  • padrão: #2E2E2E

Define a cor do ícone do elemento.

hoverBackground ​

  • tipo: string
  • padrão: #e1e1e1

Define a cor de fundo do elemento quando o usuário passar o mouse por cima.

activeBackground ​

  • tipo: string
  • padrão: #c9c9c9

Define a cor de fundo do elemento quando o usuário clicar nele.

focusRingColor ​

  • tipo: string
  • padrão: #C64F01

Define a cor do contorno do elemento quando o usuário estiver com o elemento em foco.

border.radius ​

  • tipo: string
  • padrão: 12px

Para esse elemento, somente o arredondamento de borda é permitido.


errorMessage ​

Esse componente serve para exibir mensagens de erro na aplicação. Ele tem uma mensagem fixa e pode conter um botão para fechar a mensagem.

background ​

  • tipo: string
  • padrão: #FFF1C5

Define a cor de fundo do elemento.

foreground ​

  • tipo: string
  • padrão: #472201

Define a cor dos textos do elemento.

titleFontSize ​

  • tipo: string
  • padrão: 14px

Define o tamanho do título do elemento.

descriptionFontSize ​

  • tipo: string
  • padrão: 12px

Define o tamanho da descrição do elemento.

iconColor ​

  • tipo: string
  • padrão: #BA6A03

Define a cor do ícone do elemento.

border ​

  • Padrões:
    • width: 1px
    • radius: 8px
    • style: solid
    • color: #BA6A03

Veja a estrutura do campo border.

shadow ​

  • Padrões:
json
[]

Veja a estrutura do campo shadow.

Lançado sob Licença MIT.