Introdução
O Tab Layout é um paradigma de estruturação de layouts criado no Store Framework para permitir a construção de layouts com abas ou guias.
Neste paradigma, temos dois containers: o tab-list e o tab-content. Em cada um destes containers, temos os itens que os compõem. Dentro do tab-list, temos os tab-list.item. Já no tab-content, temos os tab-content.item.
Abaixo, veremos um exemplo de implementação de um tab layout.
Primeiro, é necessário declarar o block tab-layout no template desejado:
_10{_10 "store.home": {_10 "blocks": [..."tab-layout"]_10 }_10}
Depois, é necessário declarar um tab-list e um tab-content como children do tab-layout:
_10..._10"tab-layout": {_10 "children": [_10 "tab-list",_10 "tab-content"_10 ]_10}
Com isso, temos esses dois containers como componentes do nosso tab-layout. O próximo passo é declarar os tab-list.item e tab-content.item como children do tab-list e do tab-content, respectivamente:
_10..._10"tab-list": {_10 "children": [_10 "tab-list.item#1",_10 "tab-list.item#2"_10 ]_10}
_10..._10"tab-content": {_10 "children": [_10 "tab-content.item#1",_10 "tab-content.item#2"_10 ]_10}
Na próxima etapa, temos que declarar as propriedades dos tab-list.item. O código abaixo gera uma interface de tabs como a desta imagem:

A propriedade tabId é muito importante, pois ela é a chave que conecta o botão de um tab-list.item com um tab-content.item.
_14..._14"tab-list.item#1": {_14 "props": {_14 "tabId": "majorAppliances",_14 "label": "Major Appliances",_14 "defaultActiveTab": true_14 }_14},_14"tab-list.item#2": {_14 "props": {_14 "tabId": "electronics",_14 "label": "Electronics"_14 }_14}
A seguir, vamos declarar as children e as props dos tab-content.item.
No array de children, é possível incluir diversos blocos como rich-text, info-card, image, flex-layout e etc.
Na prop tabId, é necessário incluir os mesmos identificadores (ids) declarados nos tab-list.item para que o link entre a aba e o conteúdo funcione.
_17..._17"tab-content.item#1": {_17 "children": [_17 "rich-text#1"_17 ],_17 "props": {_17 "tabId": "majorAppliances"_17 }_17},_17"tab-content.item#2": {_17 "children": [_17 "rich-text#2"_17 ],_17 "props": {_17 "tabId": "electronics"_17 }_17}
Por fim, você deve declarar as propriedades do seu conteúdo. No nosso exemplo, colocamos apenas um rich-text em cada tab-content.item:
_14"rich-text#1": {_14 "props": {_14 "text": "Texto para Major Appliances",_14 "textPosition": "CENTER",_14 "font": "t-heading-3"_14 }_14},_14"rich-text#2": {_14 "props": {_14 "text": "Texto para Electronics",_14 "textPosition": "CENTER",_14 "font": "t-heading-3"_14 }_14}
Atividade
Nesta atividade, vamos criar a estrutura simples de um tab layout, conforme imagem abaixo. Mais tarde, vamos incluir algum conteúdo para estilizar nossa página customizada.

-
No arquivo
home.jsonccriado anteriormente, adicione umtab-layout#home; -
Declare o bloco
tab-layout#homee adicione como seus filhos umtab-list#homee umtab-content#home; -
Declare um
tab-list#homee adicione como seus filhos umtab-list.item#home1e umtab-list.item#home2; -
Declare as props do
tab-list.item#home1de maneira que a interface exiba o texto "Major Appliances". (Dica: não se esqueça que incluir nas props umtabId="majorAppliances"e a propriedadedefaultActiveTab=true); -
Declare as props do
tab-list.item#home2de maneira que a interface exiba o texto "Electronics". (Dica: não se esqueça que incluir nas props umtabId="electronics"); -
Agora, vamos para a parte o conteúdo. Declare um
tab-content#homeno seu tema e adicione os filhostab-content.item#home1etab-content.item#home2; -
Em cada
tab-content.item, declare apenas umrich-textcomo filho (por exemplo,rich-text#home1erich-text#home2); -
Depois, inclua uma prop
tabIdem cadatab-content.itemde maneira que aconteça o link entre otab-listcriado anteriormente etab-content; -
Por fim, adicione os
rich-texte declare suas props conforme o código abaixo:_14"rich-text#home1": {_14"props": {_14"text": "Área do conteúdo da tab-list.item com tabId = majorAppliances",_14"textPosition": "CENTER",_14"font": "t-heading-3"_14}_14},_14"rich-text#home2": {_14"props": {_14"text": "Área do conteúdo da tab-list.item com tabId = electronics",_14"textPosition": "CENTER",_14"font": "t-heading-3"_14}_14}