Post

Função
Esta molécula foi desenhada para compor um feed de postagens. Ela comporta campos de identificação do usuário e a ação executada que originou a postagem (se houver), indicador temporal da postagem, pode comportar uma imagem, descrição ou corpo de texto da postagem, e botões de ação para responder, curtir ou mais.
Estrutura Básica

Espaçamentos
- horizontalMargin, como Margem Lateral
- horizontalPadding, como Espaçamentos Internos Horizontais
- verticalMargin, como Margens Superior e Inferior
- verticalPadding, como Espaçamentos Internos Verticais
Átomos
- Avatar, como User Avatar
- Label, como Action Info
- ButtonIcon, como More Actions
- 3 Labels, como TimeStamp, Separador e Edit Marker
- SimpleImage, como Imagem do Post
- Label, como Description Text
- 2 LabelButtons, como Reply Button e Like Button
- ButtonIcon, como Like Icon
Prop-Token Mapping
Props da Molécula
| Prop | Token | Default Value | Use |
|---|---|---|---|
| horizontalMargin | SpacingMarginal | 16 | 1 |
| horizontalPadding | SpacingMarginal | 16 | 2 |
| verticalMargin | SpacingBase | 8 | 3 |
| verticalPadding | SpacingBase | 8 | 4 |
| avatarBaseProps | - | - | 5 |
| userNameBaseProps | - | - | 6 |
| buttonIconMoreButtonBaseProps | - | - | 7 |
| labelAuxiliaryBaseProps | - | - | 8 |
| postImageBaseProps | - | - | 9 |
| descriptionTextBaseProps | - | - | 10 |
| labelButtonBaseProps | - | - | 11 |
| buttonIconLikeBaseProps | - | - | 12 |
avatarBaseProps
| Prop | Token | Default Value |
|---|---|---|
| size | SizeAvatarComment | 48 |
| borderColor | ColorPrimary | #A94CC9 |
| borderRadius | BorderRadiusAvatar | 24 |
| borderWidth | BorderWidthAvatar | 0 |
userNameBaseProps
| userNameBaseProps | Token | Default Value |
|---|---|---|
| fontFamily | FontFamilyBrand | SF Pro Display / Robot |
| fontSize | FontSizeHeading | 16 |
| fontWeight | FontWeightBold | Bold (700) |
| lineHeight | LineHeightTitle | 24 |
| multilineLimit | MultilineLimitTitle | 1 |
| textAlign | TextAlignmentHeading | Left |
| textCase | TextCaseHighlight | Sentence |
| textColor | ColorPrimary | #A94CC9 |
| opacity | OpacityDisabled | 0.3 |
buttonIconMoreBaseProps
| buttonIconMoreBaseProps | Token | Default Value |
|---|---|---|
| size | SizeIconBase | 24 |
| tintColor | ColorMediumNeutral | #464646 |
labelAuxiliaryBaseProps
| labelAuxiliaryBaseProps | Token | Default Value |
|---|---|---|
| fontFamily | FontFamilyBase | undefined |
| fontSize | FontSizeFormAuxiliary | 12 |
| fontWeight | FontWeightBold | Bold (700) |
| lineHeight | LineHeightBase | 20 |
| textAlign | TextAlignmentBody | Left |
| textCase | TextCaseBody | None |
| textColor | ColorLightNeutral | #9E9E9E |
postImageBaseProps
| Prop | Token | Default Value |
|---|---|---|
| borderColor | ColorNone | #000000 00% |
| borderRadius | BorderRadiusImage | 0 |
| borderWidth | BorderWidthImage | 0 |
| opacity | OpacityImage | 1 |
| resizeMode | ResizeModeImage | Fill |
labelCommentBaseProps
| labelCommentBaseProps | Token | Default Value |
|---|---|---|
| fontFamily | FontFamilyBase | undefined |
| fontSize | FontSizeBody | 14 |
| fontWeight | FontWeightNormal | Regular (400) |
| lineHeight | LineHeightBase | 20 |
| textAlign | TextAlignmentBody | Left |
| textCase | TextCaseBody | None |
| textColor | ColorDarkNeutral | #212121 |
labelButtonBaseProps
| labelButtonBaseProps | Token | Default Value |
|---|---|---|
| fontFamily | FontFamilyButton | SF Pro Display / Robot |
| fontSize | FontSizeButton | 12 |
| fontWeight | FontWeightBold | Bold (700) |
| lineHeight | LineHeightBase | 20 |
| multilineLimit | MultilineLimitButton | 1 |
| textAlign | TextAlignmentButton | Center |
| textCase | TextCaseButton | Uppercase |
| textColor | ColorPrimary | #A94CC9 |
| opacity | OpacityDisabled | 0.3 |
buttonIconLikeBaseProps
| buttonIconLikeBaseProps | Token | Default Value |
|---|---|---|
| size | SizeIconAuxiliary | 16 |
| tintColor | ColorPrimary | #A94CC9 |
Reações
Conteúdo

O Action Info pode crescer até a segunda linha, e ao ultrapassar o limite de caracteres, surgem reticências. No caso de surgir uma segunda linha, o timestamp é empurrado para baixo, e o Vertical Padding passa a acordar-se neste, em vez de no Avatar. O timestamp só pode ocupar uma linha, e se necessário, surgem reticências. Como este conteúdo não é exibido em outro lugar, é necessário estar atento ao volume de informações nesta linha, sendo o mais sucinto possível. A Imagem tem uma proporção fixa delimitada pelo projeto. O Post Description pode extender-se até um limite de linhas definido pelo projeto, inclusive podendo ser ilimitado. No caso de limitar o tamanho, surge uma ação de "ver mais", que mostra o post em detalhe com o conteúdo completo. Os Label Buttons de ação podem ocupar somente uma linha. Portanto deve-se ter atenção ao volume de texto nestes espaços, sendo estes os mais sucintos possível.

No caso de não haver um Description Text, o espaço deste não é exibido. Neste caso, os Espaçamentos Internos Verticais que vinham antes e depois do Description Text aparecem em seguida um do outro, gerando um espaçamento total que é o dobro do discriminado no token.
Responsividade

No caso de uma redução na largura da tela, os campos que contém label diminuem sua largura. Os ícones e Avatar mantêm seu tamanho original em largura e altura, e a Imagem diminui a altura e largura mantendo a proporção configurada.
Estados

Quando o comentário não foi editado, ou o projeto não propor edições aos comentários, o Separador e o EditMarker não ficam visíveis.
Também prevemos uma variação no LikeIcon (que deve variar em função do projeto), para indicar que a ação foi efetuada. O Label do LikeButton também poderá mudar para indicar a ação efetuada, ou até mesmo para aparecer como contador, dependendo do projeto.
Tipos
CarouselPost

Esta varição é bastante semelhante á molécula original, entretanto, está preparada para receber mais de uma imagem. A única diferença é o surgimento de um componente de indicador do carrossel. Ele não apresenta variáveis tokenizáveis de tamanho e espaçamentos internos, sendo os únicos valores customizáveis:
IndicatorBaseProps
| Prop | Token | Default Value |
|---|---|---|
| corderColor | ColorPrimary | #A94CC9 |
| color | ColorPrimary | #A94CC9 |
VideoPost

Tem a mesma função da molécula original descrita a cima, entretanto, no lugar da imagem há um vídeo. Há a adição de um ícone que indica que trata-se de um vídeo. Há também um overlay com gradiente, para garantir a lgibilidade do ícone mesmo em fundos que dêem pouco contraste. Este overlay não é customizável.
buttonVideoBaseProps
| buttonIconLikeBaseProps | Token | Default Value |
|---|---|---|
| size | SizeIconBase | 24 |
| tintColor | ColorComplementary* | #FFFFFF |
*Neste caso, se a cor complementar for escura, aconselha-se chapar o ícone em branco.
As reações e estados são os mesmos da molécula original.
TextPost

Tem a mesma função e estrutura da molécula original descrita a cima, entretanto não há o átomo SimpleImage. Neste caso, os Espaçamentos Internos Verticais que vinham antes e depois da SimpleImage aparecem em seguida um do outro, gerando um espaçamento total que é o dobro do discriminado no token.
As reações e estados são os mesmos da molécula original.
