Samsung Design System Tokens
Manual visual para consumir tokens, primitives, patterns e icones do samsungbr.design-system em projetos VTEX.
Manual oficial para consumir o samsungbr.design-system
O design-system e a API publica para manter storefronts VTEX consistentes, acessiveis e faceis de evoluir. Esta pagina organiza o que usar, quando usar e como compor sem duplicar estilo no samsungbr.store-front.
Tokens
Fonte unica para color, typography, spacing, grid, effects e alias semanticos.
Primitives
Box, Stack, Inline, Grid, PageContainer, Typography e Section para layout consistente.
Patterns
Receitas oficiais para montar telas VTEX sem duplicar decisoes visuais.
Icons
Catalogo Samsung por peso, consumido pelo componente Icon do design-system.
VTEX Usage
Regras praticas para import, builder, TypeScript simples e baixa dependencia de CSS.
Regra de ouro
Se existir primitive, token, pattern ou Icon no design-system, o storefront deve consumir essa API antes de criar CSS ou componente local.
import {
Box,
Stack,
Inline,
Grid,
PageContainer,
Typography,
Section,
Icon,
} from 'samsungbr.design-system'Color, typography, spacing, grid, effects e alias
Tokens sao a fundacao visual. Eles aparecem aqui uma unica vez, agrupados por categoria, com preview e uso pratico para evitar repeticao e valores soltos no storefront.
Color
Use color tokens para marca, neutros, feedback e tokens semanticos de text, background e border.
Primary
Base de contraste, preto e branco Samsung.
color.primary.black
#000000background='color.primary.black'color.primary.white
#ffffffbackground='color.primary.white'Brand / Skyblue
Cores proprietarias para marca, links e estados ativos.
color.brand.skyblue.base
#2189ffbackground='color.brand.skyblue.base'color.brand.skyblue.dark
#006beabackground='color.brand.skyblue.dark'color.brand.skyblue.light
#68aeffbackground='color.brand.skyblue.light'Secondary
Apoio cromatico para campanhas, editoriais e feedback visual.
color.secondary.coral.base
#ef3434background='color.secondary.coral.base'color.secondary.coral.dark
#d62e2ebackground='color.secondary.coral.dark'color.secondary.coral.light
#f36e6ebackground='color.secondary.coral.light'color.secondary.orange.base
#f66700background='color.secondary.orange.base'color.secondary.orange.dark
#c74700background='color.secondary.orange.dark'color.secondary.seaBlue
#00b3e3background='color.secondary.seaBlue'color.secondary.teal.base
#00838fbackground='color.secondary.teal.base'color.secondary.teal.dark
#007d89background='color.secondary.teal.dark'Gray Scale
Escala neutra para fundos, divisores, texto secundario e superficies.
color.grayScale.0
#f7f7f7background='color.grayScale.0'color.grayScale.1
#eeeeeebackground='color.grayScale.1'color.grayScale.2
#ddddddbackground='color.grayScale.2'color.grayScale.3
#bbbbbbbackground='color.grayScale.3'color.grayScale.4
#aaaaaabackground='color.grayScale.4'color.grayScale.5
#8f8f8fbackground='color.grayScale.5'color.grayScale.6
#757575background='color.grayScale.6'color.grayScale.7
#555555background='color.grayScale.7'color.grayScale.8
#313131background='color.grayScale.8'color.grayScale.9
#1c1c1cbackground='color.grayScale.9'Neutral
Neutros de interface para areas editoriais e modulos.
color.neutral.blue
#f5f7febackground='color.neutral.blue'color.neutral.beige
#f7f5f2background='color.neutral.beige'color.neutral.orange
#fef6f3background='color.neutral.orange'color.neutral.pink
#f6f0f5background='color.neutral.pink'Theme
Tokens oficiais do samsungbr.design-system.
color.theme.white
#ffffffbackground='color.theme.white'color.theme.black
#000000background='color.theme.black'color.theme.lightGray
#f7f7f7background='color.theme.lightGray'color.theme.darkGray
#313131background='color.theme.darkGray'Shadows
Tokens oficiais do samsungbr.design-system.
color.shadows.dimmed01
#636363background='color.shadows.dimmed01'color.shadows.dimmed02
#191919background='color.shadows.dimmed02'Text
Tokens oficiais do samsungbr.design-system.
color.text.primaryBlack
#000000background='color.text.primaryBlack'color.text.primaryWhite
#ffffffbackground='color.text.primaryWhite'color.text.secondary
#8f8f8fbackground='color.text.secondary'color.text.tertiary
#bbbbbbbackground='color.text.tertiary'color.text.skyblue
#006beabackground='color.text.skyblue'Background
Tokens oficiais do samsungbr.design-system.
color.background.black
#000000background='color.background.black'color.background.white
#ffffffbackground='color.background.white'State
Tokens oficiais do samsungbr.design-system.
color.state.button.defaultBlack
#000000background='color.state.button.defaultBlack'color.state.button.hoverBlack
#ffffffbackground='color.state.button.hoverBlack'color.state.button.disabledBlack
#00000033background='color.state.button.disabledBlack'color.state.button.defaultSkyblue
#006beabackground='color.state.button.defaultSkyblue'color.state.button.disabledSkyblue
#006bea33background='color.state.button.disabledSkyblue'Border
Tokens oficiais do samsungbr.design-system.
color.border.black
#000000background='color.border.black'color.border.gray
#bbbbbbbackground='color.border.gray'color.border.selection
#006beabackground='color.border.selection'Semantic
Tokens semanticos para background, text e border.
color.semantic.text.primary
#000000background='color.semantic.text.primary'color.semantic.text.inverse
#ffffffbackground='color.semantic.text.inverse'color.semantic.text.subtle
#8f8f8fbackground='color.semantic.text.subtle'color.semantic.text.disabled
#bbbbbbbackground='color.semantic.text.disabled'color.semantic.text.brand
#006beabackground='color.semantic.text.brand'color.semantic.background.canvas
#ffffffbackground='color.semantic.background.canvas'color.semantic.background.surface
#f5f7febackground='color.semantic.background.surface'color.semantic.background.inverted
#000000background='color.semantic.background.inverted'color.semantic.background.brand
#2189ffbackground='color.semantic.background.brand'color.semantic.border.default
#bbbbbbbackground='color.semantic.border.default'color.semantic.border.subtle
#ddddddbackground='color.semantic.border.subtle'color.semantic.border.brand
#006beabackground='color.semantic.border.brand'Typography
Use Typography para aplicar variants. A tabela mostra a escala renderizavel sem repetir cada metrica como um card separado.
heading.desktop.headline
Inspire the World, Create the Future
SamsungSSHead, SamsungSharpSans, SamsungOne, sans-serif
font-size 60
line-height 72
weight 700
variant='heading.desktop.headline'heading.desktop.headlineException
Inspire the World, Create the Future
SamsungSSHead, SamsungSharpSans, SamsungOne, sans-serif
font-size 60
line-height 72
weight 300
variant='heading.desktop.headlineException'heading.desktop.subHeadline
Inspire the World, Create the Future
SamsungSSHead, SamsungSharpSans, SamsungOne, sans-serif
font-size 56
line-height 67
weight 500
variant='heading.desktop.subHeadline'heading.desktop.subHeadline2
Inspire the World, Create the Future
SamsungSSHead, SamsungSharpSans, SamsungOne, sans-serif
font-size 48
line-height 58
weight 500
variant='heading.desktop.subHeadline2'heading.desktop.headlineLight
Inspire the World, Create the Future
SamsungSSHead, SamsungSharpSans, SamsungOne, sans-serif
font-size 40
line-height 48
weight 300
variant='heading.desktop.headlineLight'heading.desktop.display5
Inspire the World, Create the Future
SamsungSSHead, SamsungSharpSans, SamsungOne, sans-serif
font-size 28
line-height 34
weight 400
variant='heading.desktop.display5'heading.desktop.display6
Inspire the World, Create the Future
SamsungSharpSans, SamsungSSHead, SamsungOne, sans-serif
font-size 24
line-height 29
weight 700
variant='heading.desktop.display6'heading.desktop.display7
Inspire the World, Create the Future
SamsungSharpSans, SamsungSSHead, SamsungOne, sans-serif
font-size 20
line-height 24
weight 700
variant='heading.desktop.display7'heading.mobile.display1
Inspire the World, Create the Future
SamsungSSHead, SamsungSharpSans, SamsungOne, sans-serif
font-size 32
line-height 44
weight 700
variant='heading.mobile.display1'heading.mobile.display2
Inspire the World, Create the Future
SamsungSSHead, SamsungSharpSans, SamsungOne, sans-serif
font-size 30
line-height 40
weight 700
variant='heading.mobile.display2'heading.mobile.display3
Inspire the World, Create the Future
SamsungSSHead, SamsungSharpSans, SamsungOne, sans-serif
font-size 26
line-height 34
weight 700
variant='heading.mobile.display3'heading.mobile.display4
Inspire the World, Create the Future
SamsungSSHead, SamsungSharpSans, SamsungOne, sans-serif
font-size 24
line-height 32
weight 700
variant='heading.mobile.display4'heading.mobile.display5
Inspire the World, Create the Future
SamsungSSHead, SamsungSharpSans, SamsungOne, sans-serif
font-size 22
line-height 30
weight 700
variant='heading.mobile.display5'heading.mobile.display6
Inspire the World, Create the Future
SamsungSSHead, SamsungSharpSans, SamsungOne, sans-serif
font-size 20
line-height 28
weight 700
variant='heading.mobile.display6'title.desktop.title1
Inspire the World, Create the Future
SamsungSSHead, SamsungSharpSans, SamsungOne, sans-serif
font-size 36
line-height 44
weight 700
variant='title.desktop.title1'title.desktop.title2
Inspire the World, Create the Future
SamsungSSHead, SamsungSharpSans, SamsungOne, sans-serif
font-size 32
line-height 40
weight 700
variant='title.desktop.title2'title.desktop.title3
Inspire the World, Create the Future
SamsungSSHead, SamsungSharpSans, SamsungOne, sans-serif
font-size 28
line-height 36
weight 700
variant='title.desktop.title3'title.desktop.title4
Inspire the World, Create the Future
SamsungSSHead, SamsungSharpSans, SamsungOne, sans-serif
font-size 24
line-height 28
weight 700
variant='title.desktop.title4'title.desktop.title5
Inspire the World, Create the Future
SamsungSSHead, SamsungSharpSans, SamsungOne, sans-serif
font-size 22
line-height 24
weight 700
variant='title.desktop.title5'title.mobile.title1
Inspire the World, Create the Future
SamsungOne, SamsungSSBody, Arial, sans-serif
font-size 24
line-height 32
weight 700
variant='title.mobile.title1'title.mobile.title2
Inspire the World, Create the Future
SamsungOne, SamsungSSBody, Arial, sans-serif
font-size 22
line-height 30
weight 700
variant='title.mobile.title2'title.mobile.title3
Inspire the World, Create the Future
SamsungOne, SamsungSSBody, Arial, sans-serif
font-size 20
line-height 27
weight 700
variant='title.mobile.title3'title.mobile.title4
Inspire the World, Create the Future
SamsungOne, SamsungSSBody, Arial, sans-serif
font-size 18
line-height 24
weight 700
variant='title.mobile.title4'body.desktop.body1
Inspire the World, Create the Future
SamsungSSBody, SamsungOne, Arial, sans-serif
font-size 18
line-height 24
weight 400
variant='body.desktop.body1'body.desktop.body2
Inspire the World, Create the Future
SamsungSSBody, SamsungOne, Arial, sans-serif
font-size 16
line-height 22
weight 400
variant='body.desktop.body2'body.desktop.body3
Inspire the World, Create the Future
SamsungSSBody, SamsungOne, Arial, sans-serif
font-size 14
line-height 20
weight 400
variant='body.desktop.body3'body.desktop.body4
Inspire the World, Create the Future
SamsungSSBody, SamsungOne, Arial, sans-serif
font-size 12
line-height 16
weight 400
variant='body.desktop.body4'body.mobile.body1
Inspire the World, Create the Future
SamsungSSBody, SamsungOne, Arial, sans-serif
font-size 16
line-height 22
weight 400
variant='body.mobile.body1'body.mobile.body2
Inspire the World, Create the Future
SamsungSSBody, SamsungOne, Arial, sans-serif
font-size 14
line-height 19
weight 400
variant='body.mobile.body2'body.mobile.body3
Inspire the World, Create the Future
SamsungSSBody, SamsungOne, Arial, sans-serif
font-size 12
line-height 16
weight 400
variant='body.mobile.body3'body.mobile.body4
Inspire the World, Create the Future
SamsungSSBody, SamsungOne, Arial, sans-serif
font-size 10
line-height 14
weight 400
variant='body.mobile.body4'Spacing
Use spacing tokens para gaps, paddings e ritmo de pagina. Evite valores magicos no storefront.
Scale
Escala numerica base para ritmo, barras e medidas internas.
0px
preview proporcional
spacing.scale.0
0pxgap='spacing.scale.0'2px
preview proporcional
spacing.scale.2
2pxgap='spacing.scale.2'4px
preview proporcional
spacing.scale.4
4pxgap='spacing.scale.4'8px
preview proporcional
spacing.scale.8
8pxgap='spacing.scale.8'12px
preview proporcional
spacing.scale.12
12pxgap='spacing.scale.12'16px
preview proporcional
spacing.scale.16
16pxgap='spacing.scale.16'24px
preview proporcional
spacing.scale.24
24pxgap='spacing.scale.24'32px
preview proporcional
spacing.scale.32
32pxgap='spacing.scale.32'36px
preview proporcional
spacing.scale.36
36pxgap='spacing.scale.36'40px
preview proporcional
spacing.scale.40
40pxgap='spacing.scale.40'48px
preview proporcional
spacing.scale.48
48pxgap='spacing.scale.48'64px
preview proporcional
spacing.scale.64
64pxgap='spacing.scale.64'80px
preview proporcional
spacing.scale.80
80pxgap='spacing.scale.80'96px
preview proporcional
spacing.scale.96
96pxgap='spacing.scale.96'128px
preview proporcional
spacing.scale.128
128pxgap='spacing.scale.128'160px
preview proporcional
spacing.scale.160
160pxgap='spacing.scale.160'Inset
Tokens oficiais do samsungbr.design-system.
8px
preview proporcional
spacing.inset.xs
8pxgap='spacing.inset.xs'16px
preview proporcional
spacing.inset.sm
16pxgap='spacing.inset.sm'24px
preview proporcional
spacing.inset.md
24pxgap='spacing.inset.md'32px
preview proporcional
spacing.inset.lg
32pxgap='spacing.inset.lg'48px
preview proporcional
spacing.inset.xl
48pxgap='spacing.inset.xl'Stack
Gaps verticais entre blocos de conteudo.
4px
preview proporcional
spacing.stack.3xs
4pxgap='spacing.stack.3xs'8px
preview proporcional
spacing.stack.2xs
8pxgap='spacing.stack.2xs'12px
preview proporcional
spacing.stack.xs
12pxgap='spacing.stack.xs'16px
preview proporcional
spacing.stack.sm
16pxgap='spacing.stack.sm'24px
preview proporcional
spacing.stack.md
24pxgap='spacing.stack.md'32px
preview proporcional
spacing.stack.lg
32pxgap='spacing.stack.lg'48px
preview proporcional
spacing.stack.xl
48pxgap='spacing.stack.xl'64px
preview proporcional
spacing.stack.2xl
64pxgap='spacing.stack.2xl'96px
preview proporcional
spacing.stack.3xl
96pxgap='spacing.stack.3xl'Inline
Gaps horizontais entre icones, labels, botoes e chips.
8px
preview proporcional
spacing.inline.xs
8pxgap='spacing.inline.xs'16px
preview proporcional
spacing.inline.sm
16pxgap='spacing.inline.sm'24px
preview proporcional
spacing.inline.md
24pxgap='spacing.inline.md'32px
preview proporcional
spacing.inline.lg
32pxgap='spacing.inline.lg'Container
Largura de container por breakpoint.
32px
preview proporcional
spacing.container.padding.desktop.default
32pxgap='spacing.container.padding.desktop.default'48px
preview proporcional
spacing.container.padding.desktop.wide
48pxgap='spacing.container.padding.desktop.wide'24px
preview proporcional
spacing.container.padding.tablet.default
24pxgap='spacing.container.padding.tablet.default'16px
preview proporcional
spacing.container.padding.mobile.default
16pxgap='spacing.container.padding.mobile.default'Section
Tokens oficiais do samsungbr.design-system.
64px
preview proporcional
spacing.section.padding.desktop.sm
64pxgap='spacing.section.padding.desktop.sm'80px
preview proporcional
spacing.section.padding.desktop.md
80pxgap='spacing.section.padding.desktop.md'96px
preview proporcional
spacing.section.padding.desktop.lg
96pxgap='spacing.section.padding.desktop.lg'64px
preview proporcional
spacing.section.padding.tablet.default
64pxgap='spacing.section.padding.tablet.default'40px
preview proporcional
spacing.section.padding.mobile.default
40pxgap='spacing.section.padding.mobile.default'48px
preview proporcional
spacing.section.margin.desktop.default
48pxgap='spacing.section.margin.desktop.default'64px
preview proporcional
spacing.section.margin.desktop.lg
64pxgap='spacing.section.margin.desktop.lg'48px
preview proporcional
spacing.section.margin.tablet.default
48pxgap='spacing.section.margin.tablet.default'32px
preview proporcional
spacing.section.margin.mobile.default
32pxgap='spacing.section.margin.mobile.default'Component / Card
Espacamentos pensados para componentes recorrentes.
16px
preview proporcional
spacing.component.card.padding.sm
16pxgap='spacing.component.card.padding.sm'24px
preview proporcional
spacing.component.card.padding.md
24pxgap='spacing.component.card.padding.md'32px
preview proporcional
spacing.component.card.padding.lg
32pxgap='spacing.component.card.padding.lg'12px
preview proporcional
spacing.component.card.gap.sm
12pxgap='spacing.component.card.gap.sm'16px
preview proporcional
spacing.component.card.gap.md
16pxgap='spacing.component.card.gap.md'Component / Button
Espacamentos pensados para componentes recorrentes.
16px
preview proporcional
spacing.component.button.paddingX.sm
16pxgap='spacing.component.button.paddingX.sm'24px
preview proporcional
spacing.component.button.paddingX.md
24pxgap='spacing.component.button.paddingX.md'8px
preview proporcional
spacing.component.button.paddingY.sm
8pxgap='spacing.component.button.paddingY.sm'12px
preview proporcional
spacing.component.button.paddingY.md
12pxgap='spacing.component.button.paddingY.md'Page
Alias para composicao de pagina e largura de conteudo.
32px
preview proporcional
spacing.page.paddingX.desktop
32pxgap='spacing.page.paddingX.desktop'16px
preview proporcional
spacing.page.paddingX.mobile
16pxgap='spacing.page.paddingX.mobile'Grid
Use grid tokens para breakpoints, colunas, gutters, margens e container responsivo.
Container
Define a largura maxima e o alinhamento da pagina. Use PageContainer para respeitar a estrutura oficial.
Columns
Organizam conteudo por breakpoint. No Storefront, prefira Grid com base, md e lg numericos.
Gutter e margin
Controlam respiro entre colunas e bordas da pagina. Evite espaçamentos manuais quando o grid ja cobre o caso.
Anatomia do grid responsivo
Use uma grade fluida com 4 colunas no mobile, 8 em tablet e 12 em desktop. Essa progressao permite que o mesmo bloco escale sem recriar layout por pagina.
1
2
3
4
5
6
7
8
9
10
11
12
Como usar cada token de grid
Exemplos objetivos para Breakpoints, Columns, Type, Column, Gutter e Margin. Use sdsTokens.grid quando precisar consultar specs ou integrar uma excecao tecnica; para layout React, prefira PageContainer e Grid.
Breakpoints
sdsTokens.grid.breakpointsBreakpoints indicam onde a experiencia muda de mobile para tablet, desktop ou desktopHD.
Use para tomar decisoes condicionais de layout, documentar specs ou integrar com CSS customizado pontual.
import { sdsTokens } from 'samsungbr.design-system'
const mobile = sdsTokens.grid.breakpoints.mobile
const tablet = sdsTokens.grid.breakpoints.tablet
const desktop = sdsTokens.grid.breakpoints.desktopColumns
sdsTokens.grid.columnsColumns representa a quantidade total de colunas do grid em cada breakpoint.
Use como referencia para definir quantas colunas existem em cada viewport.
import { Grid, sdsTokens } from 'samsungbr.design-system'
<Grid
columns={{
base: sdsTokens.grid.columns.mobile,
md: sdsTokens.grid.columns.tablet,
lg: sdsTokens.grid.columns.desktop,
}}
gap='spacing.stack.md'
/>Type
sdsTokens.grid.typeType descreve o comportamento estrutural do grid, como fixed, fluid ou outra definicao oficial.
Use para documentar a estrategia de grid aplicada em cada breakpoint.
import { sdsTokens } from 'samsungbr.design-system'
const mobileGridType = sdsTokens.grid.type.mobile
const desktopGridType = sdsTokens.grid.type.desktop
const gridSpec = desktopGridType + ' grid'Column
sdsTokens.grid.columnColumn representa a medida individual de cada coluna dentro do grid oficial.
Use para consultar a largura de uma coluna em specs, calculos ou documentacao tecnica.
import { sdsTokens } from 'samsungbr.design-system'
const desktopColumn = sdsTokens.grid.column.desktop
const desktopHDColumn = sdsTokens.grid.column.desktopHD
const columnLabel = String(desktopColumn) + 'px column'Gutter
sdsTokens.grid.gutterGutter e o espaco entre colunas. Em composicao React, prefira o gap tokenizado do Grid.
Use para manter o espaco entre colunas consistente quando precisar integrar grid com CSS especifico.
import { Grid, sdsTokens } from 'samsungbr.design-system'
const desktopGutter = sdsTokens.grid.gutter.desktop
<Grid columns={{ base: 1, md: 2, lg: 3 }} gap="spacing.stack.md">
<Card />
</Grid>Margin
sdsTokens.grid.marginMargin define o respiro lateral por breakpoint. Para paginas, prefira PageContainer.
Use para entender o respiro lateral da pagina e evitar padding horizontal manual fora do sistema.
import { PageContainer, sdsTokens } from 'samsungbr.design-system'
const mobileMargin = sdsTokens.grid.margin.mobile
<PageContainer maxWidth='wide'>
<Section />
</PageContainer>Breakpoints e medidas
Resumo gerado a partir de sdsTokens.grid para consulta rapida de container, colunas, gutter e margens.
0
6
328
24
16
768rem
6
720
32
24
1024rem
12
976
24
24
1440rem
12
1318
24
24
Receitas de composicao
Use estes pontos de partida antes de criar CSS local para colunas, gaps ou containers.
Grid de cards
Beneficios, tiles de produto, links editoriais e documentacao.Comece com uma coluna no mobile, duas no tablet e tres no desktop.
<Grid columns={{ base: 1, md: 2, lg: 3 }} gap='spacing.stack.md'>
<Box padding='spacing.component.card.padding.md'>Card</Box>
</Grid>Conteudo + apoio visual
Secoes com texto de um lado e imagem, metricas ou preview do outro.Use duas colunas a partir de md e mantenha uma coluna no mobile.
Conteudo
Texto principal
Preview
<Grid columns={{ base: 1, md: 2, lg: 2 }} gap='spacing.stack.lg'>
<Content />
<Preview />
</Grid>Landing page modular
Paginas longas com hero, secoes e blocos de conversao.Combine PageContainer, Stack e Grid para manter ritmo vertical e colunas previsiveis.
<PageContainer maxWidth='wide'>
<Stack gap='spacing.stack.lg'>
<Grid columns={{ base: 1, md: 2, lg: 2 }} gap='spacing.stack.lg' />
</Stack>
</PageContainer>Breakpoints
Pontos de resposta usados para adaptar layouts.
breakpoints.mobile
0
breakpoints.tablet
768rem
breakpoints.desktop
1024rem
breakpoints.desktopHD
1440rem
Columns
Quantidade de colunas por contexto responsivo.
columns.mobile
6
columns.tablet
6
columns.desktop
12
columns.desktopHD
12
Type
Tipo de grid e configuracao estrutural.
type.mobile
stretch
type.tablet
center
type.desktop
center
type.desktopHD
center
Container
Largura de container por breakpoint.
container.mobile
328
container.tablet
720
container.desktop
976
container.desktopHD
1318
Column
Largura de coluna por breakpoint.
column.mobile
32
column.tablet
76
column.desktop
50
column.desktopHD
80
Gutter
Espaco entre colunas do grid.
gutter.mobile
24
gutter.tablet
32
gutter.desktop
24
gutter.desktopHD
24
Margin
Margens laterais por breakpoint.
margin.mobile
16
margin.tablet
24
margin.desktop
24
margin.desktopHD
24
Effects
Use effects para radius, shadow e camadas de overlay. Bordas continuam usando color.semantic.border.*.
Shadow
Elevacao para surfaces, overlays e elementos interativos.
shadow
effects.shadow.sm
0px 1px 3px rgba(0, 0, 0, 0.2)tokenToCssValue('effects.shadow.sm')shadow
effects.shadow.md
0px 4px 10px rgba(0, 0, 0, 0.2)tokenToCssValue('effects.shadow.md')Border
Tokens oficiais do samsungbr.design-system.
effect
effects.border.width.default
1pxtokenToCssValue('effects.border.width.default')effect
effects.border.style.default
solidtokenToCssValue('effects.border.style.default')Radius
Arredondamento oficial para cards, controles e containers.
0px
effects.radius.scale.none
0pxtokenToCssValue('effects.radius.scale.none')4px
effects.radius.scale.xs
4pxtokenToCssValue('effects.radius.scale.xs')6px
effects.radius.scale.sm
6pxtokenToCssValue('effects.radius.scale.sm')8px
effects.radius.scale.md
8pxtokenToCssValue('effects.radius.scale.md')20px
effects.radius.scale.lg
20pxtokenToCssValue('effects.radius.scale.lg')24px
effects.radius.scale.xl
24pxtokenToCssValue('effects.radius.scale.xl')30px
effects.radius.scale.pill
30pxtokenToCssValue('effects.radius.scale.pill')9999px
effects.radius.scale.full
9999pxtokenToCssValue('effects.radius.scale.full')6px
effects.radius.semantic.button.sm
6pxtokenToCssValue('effects.radius.semantic.button.sm')8px
effects.radius.semantic.button.md
8pxtokenToCssValue('effects.radius.semantic.button.md')8px
effects.radius.semantic.card.default
8pxtokenToCssValue('effects.radius.semantic.card.default')24px
effects.radius.semantic.card.lg
24pxtokenToCssValue('effects.radius.semantic.card.lg')6px
effects.radius.semantic.input.default
6pxtokenToCssValue('effects.radius.semantic.input.default')20px
effects.radius.semantic.container.default
20pxtokenToCssValue('effects.radius.semantic.container.default')30px
effects.radius.semantic.chip.default
30pxtokenToCssValue('effects.radius.semantic.chip.default')9999px
effects.radius.semantic.avatar.default
9999pxtokenToCssValue('effects.radius.semantic.avatar.default')Scrim
Camadas de sobreposicao para modais, sheets e foco visual.
effect
effects.scrim.scale.light
#00000099tokenToCssValue('effects.scrim.scale.light')effect
effects.scrim.scale.heavy
#000000e6tokenToCssValue('effects.scrim.scale.heavy')effect
effects.scrim.semantic.modal.default
#000000e6tokenToCssValue('effects.scrim.semantic.modal.default')effect
effects.scrim.semantic.overlay.default
#00000099tokenToCssValue('effects.scrim.semantic.overlay.default')Borders
Bordas usam tokens semanticos de cor, como color.semantic.border.default e color.semantic.border.brand. Eles aparecem uma unica vez em Color para evitar duplicacao.
<Box
style={{ border: "1px solid tokenToCssValue('color.semantic.border.default')" }}
/>Alias semanticos
Alias sao tokens semanticos. Prefira alias ao montar paginas e componentes com intencao de UI clara.
Expressam intencao
Um alias descreve o papel do estilo na interface, como card, page ou modal, em vez de expor apenas a escala base.
Protegem contra refactor visual
Se o radius ou padding oficial de cards mudar no design-system, o storefront continua usando o mesmo alias.
Reduzem decisoes locais
Devs nao precisam escolher entre varios spacing, shadow ou radius quando o componente ja tem uma intencao conhecida.
O que sao alias semanticos?
Alias semantico e um token que representa uma decisao de produto ou composicao, nao apenas um valor visual isolado. Em vez de escolher manualmente padding, radius e shadow, o dev usa o alias que descreve a intencao: card, page, modal ou outro padrao oficial.
Na pratica, tokens base respondem a pergunta "qual valor?". Alias respondem "qual papel esse bloco cumpre na interface?".
// Evite: decisao visual solta no storefront
const padding = '24px'
const radius = '8px'
// Prefira: intencao semantica vinda do design-system
const padding = tokenToCssValue('alias.card.padding')
const radius = tokenToCssValue('alias.card.radius')Exemplos de uso
Use estes exemplos como referencia de composicao. O alias deve entrar quando a intencao do bloco for conhecida, mesmo que o valor final seja resolvido com tokenToCssValue.
Card editorial
alias.cardSuperficie reutilizavel para vitrines, tiles e blocos de conteudo.
Use alias de card para padding, radius e shadow quando a superficie tiver comportamento de card.
<Box
padding='alias.card.padding'
style={{
borderRadius: tokenToCssValue('alias.card.radius'),
boxShadow: tokenToCssValue('alias.card.shadow'),
}}
>
<CardContent />
</Box>Container de pagina
alias.pageArea principal de uma pagina VTEX com largura e respiro consistentes.
Use alias de page para evitar max-width e padding horizontal manual em cada template.
<Box
maxWidth='alias.page.container'
style={{ paddingInline: tokenToCssValue('alias.page.paddingX') }}
>
<Section />
</Box>Modal ou overlay
alias.modalSuperficie elevada para dialog, drawer ou bloco temporario acima da pagina.
Use alias de modal quando a decisao visual pertence ao comportamento de overlay, nao a um card comum.
<Box
style={{
borderRadius: tokenToCssValue('alias.modal.radius'),
boxShadow: tokenToCssValue('alias.modal.shadow'),
}}
>
<DialogContent />
</Box>Page
Alias para composicao de pagina e largura de conteudo.
page
alias.page.paddingX.desktop
32pxUse alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.page.paddingX.desktop')page
alias.page.paddingX.tablet
24pxUse alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.page.paddingX.tablet')page
alias.page.paddingX.mobile
16pxUse alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.page.paddingX.mobile')page
alias.page.container.mobile
328pxUse alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.page.container.mobile')page
alias.page.container.tablet
720pxUse alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.page.container.tablet')page
alias.page.container.desktop
976pxUse alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.page.container.desktop')page
alias.page.container.desktopHD
1318pxUse alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.page.container.desktopHD')page
alias.page.gutter.mobile
24pxUse alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.page.gutter.mobile')page
alias.page.gutter.tablet
32pxUse alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.page.gutter.tablet')page
alias.page.gutter.desktop
24pxUse alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.page.gutter.desktop')page
alias.page.gutter.desktopHD
24pxUse alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.page.gutter.desktopHD')page
alias.page.margin.mobile
16pxUse alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.page.margin.mobile')page
alias.page.margin.tablet
24pxUse alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.page.margin.tablet')page
alias.page.margin.desktop
24pxUse alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.page.margin.desktop')page
alias.page.margin.desktopHD
24pxUse alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.page.margin.desktopHD')Surface
Tokens oficiais do samsungbr.design-system.
page
alias.surface.page
#ffffffUse alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.surface.page')card
alias.surface.card
#ffffffUse alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.surface.card')card
alias.surface.preview
#f5f7feUse alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.surface.preview')card
alias.surface.callout
#f5f7feUse alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.surface.callout')card
alias.surface.modal
#ffffffUse alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.surface.modal')Card
Alias semanticos para cards e modulos reutilizaveis.
card
alias.card.padding
24pxUse alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.card.padding')card
alias.card.radius
8pxUse alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.card.radius')card
alias.card.shadow
0px 1px 3px rgba(0, 0, 0, 0.2)Use alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.card.shadow')card
alias.card.border
1px solid #ddddddUse alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.card.border')Button
Tokens oficiais do samsungbr.design-system.
card
alias.button.paddingX
16pxUse alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.button.paddingX')card
alias.button.paddingY
8pxUse alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.button.paddingY')card
alias.button.radius
6pxUse alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.button.radius')card
alias.button.motionDuration
200msUse alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.button.motionDuration')card
alias.button.motionEasing
cubic-bezier(0.35, 0, 0.36, 1)Use alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.button.motionEasing')Modal
Alias para overlays e dialogs.
card
alias.modal.overlay
#000000e6Use alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.modal.overlay')card
alias.modal.radius
20pxUse alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.modal.radius')card
alias.modal.animationDuration
400msUse alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.modal.animationDuration')card
alias.modal.animationEasing
cubic-bezier(0, 0.18, 0.07, 1)Use alias quando a intencao visual for semantica, como card, pagina ou modal.
tokenToCssValue('alias.modal.animationEasing')Building blocks para Store Front
Primitives resolvem o layout antes do CSS customizado. Use exemplos pequenos e previsiveis para manter o storefront alinhado ao design-system.
Box
Container atomico para aplicar tokens de layout e superficie. Use como base de cards, banners, wrappers e areas com padding tokenizado.
Box com padding e surface
<Box padding='spacing.component.card.padding.md' background='color.semantic.background.surface'> Conteudo </Box>
Stack
Fluxo vertical com gap oficial do design-system. Use para empilhar titulo, texto, controles e grupos de cards.
<Stack gap='spacing.stack.sm'> <Typography variant='title.desktop.title4'>Titulo</Typography> <Typography variant='body.desktop.body2'>Descricao</Typography> </Stack>
Inline
Fluxo horizontal com gap e wrap para composicoes compactas. Use para icon + text, chips, actions e metadados.
<Inline align='center' gap='spacing.inline.sm' wrap='wrap'> <Icon name='cart' /> <Typography variant='body.desktop.body3'>Comprar</Typography> </Inline>
Grid
Grid responsivo simples para cards e layouts editoriais. Use quando uma area precisar de colunas por breakpoint.
<Grid columns={{ base: 1, md: 2, lg: 3 }} gap='spacing.stack.md'>
<Card />
</Grid>PageContainer
Container de pagina com largura padronizada. Use para limitar conteudo principal e respeitar margens de pagina.
maxWidth="content"
<PageContainer maxWidth='wide'> <Section /> </PageContainer>
Typography
Componente oficial para hierarquia textual Samsung. Use antes de criar font-size, weight ou line-height manual.
Samsung Head
Body text pela variant oficial.
<Typography as='h2' variant='title.desktop.title3'> Titulo da secao </Typography>
Section
Wrapper semantico para areas de pagina. Use para separar conteudo com label acessivel e spacing tokenizado.
Section semantica
<Section ariaLabel='Beneficios' spacing='spacing.stack.lg'> <Grid /> </Section>
Receitas para telas consistentes
Patterns sao receitas oficiais de composicao. Eles reduzem decisao manual, repeticao de CSS e variacao visual entre paginas VTEX.
Hero institucional
Abertura de paginas editoriais, campanhas ou areas de documentacao.
Samsung experience
Headline, descricao e area de suporte com ritmo oficial.
<Section ariaLabel='Hero'> <Stack gap='spacing.stack.md'> <Typography as='h1' variant='heading.desktop.display5'>Titulo</Typography> <Typography variant='body.desktop.body1'>Descricao curta.</Typography> </Stack> </Section>
Card grid
Listas de beneficios, produtos, conteudos ou links de navegacao.
<Grid columns={{ base: 1, md: 2, lg: 3 }} gap='spacing.stack.md'>
<Box padding='spacing.component.card.padding.md'>Card</Box>
</Grid>Secao de conteudo
Blocos explicativos com titulo, texto e suporte visual.
Texto
Visual
<Section ariaLabel='Conteudo' spacing='spacing.stack.lg'>
<Grid columns={{ base: 1, md: 2 }} gap='spacing.stack.lg'>...</Grid>
</Section>Banner de campanha
Chamadas comerciais com texto curto e acao principal.
Oferta Samsung
Call to action<Box padding='spacing.component.card.padding.lg' background='color.brand.skyblue.light'> <Stack gap='spacing.stack.sm'>Conteudo</Stack> </Box>
Bloco de documentacao
Explicar uma API, regra de uso ou decisao tecnica.
API publica
<Box padding=... /><Box padding='spacing.component.card.padding.md'> <Typography variant='title.desktop.title5'>API</Typography> <CodeBlock>...</CodeBlock> </Box>
Lista de beneficios
Mostrar vantagens, boas praticas ou etapas de um fluxo.
Consistente
Responsivo
VTEX friendly
<Stack gap='spacing.stack.sm'> <Inline align='center' gap='spacing.inline.sm'>...</Inline> </Stack>
Layout de landing page
Pagina de campanha ou produto com secoes escaneaveis.
<PageContainer maxWidth='wide'> <Stack gap='spacing.stack.lg'> <Section /> </Stack> </PageContainer>
Iconografia Samsung por peso
Icones devem ser consumidos pelo componente Icon. A pagina mostra uma amostra organizada por peso e categoria para manter performance e evitar uma lista infinita no builder VTEX.
Bold
Alta enfase para estados ativos, acoes primarias e UI densa.
navigation
action
industry
social
notification
communication
shopping
information
media
service
product
human
Regular
Uso padrao para navegacao, cards, listas e controles.
product
action
human
service
industry
navigation
shopping
trade-in
notification
communication
information
file
media
Light
Suporte visual leve, informacao secundaria e contextos editoriais.
product
industry
trade-in
communication
navigation
information
shopping
service
file
action
<Icon name='cart' variant='regular' size='md' title='Carrinho' />
Como usar no samsungbr.store-front
No VTEX IO, a pagina deve consumir exports diretos do samsungbr.design-system, manter TypeScript simples e usar CSS apenas como camada fina de acabamento.
import {
Box,
Stack,
Typography,
tokenToCssValue,
sdsTokens,
} from 'samsungbr.design-system'import { sdsTokens, tokenToCssValue } from 'samsungbr.design-system'
const colorGroups = sdsTokens.color
const brand = tokenToCssValue('color.brand.skyblue.base')
const cardPadding = tokenToCssValue('spacing.component.card.padding.md')import {
Box,
Stack,
Typography,
} from 'samsungbr.design-system'
function ExampleCard() {
return (
<Box padding='spacing.component.card.padding.md' background='color.semantic.background.surface'>
<Stack gap='spacing.stack.sm'>
<Typography as='h3' variant='title.desktop.title4'>
Titulo
</Typography>
<Typography variant='body.desktop.body2'>
Descricao do card usando primitives e tokens oficiais.
</Typography>
</Stack>
</Box>
)
}Use exports diretos
Importe primitives, tokens e Icon diretamente de samsungbr.design-system.
Prefira primitives
Comece com Box, Stack, Inline, Grid, PageContainer, Typography e Section antes de abrir CSS.
Use alias semanticos
Quando a intencao for card, pagina ou modal, prefira alias.* aos tokens brutos.
Evite hex direto
Valores visuais fixos quebram tema, consistencia e evolucao do design-system.
Evite tipos complexos
No builder VTEX, listas simples e interfaces pequenas reduzem risco de TS2590.
CSS como acabamento
Use CSS apenas para hover, foco, gradientes ou detalhes que ainda nao existem como primitive/token.
