Standard Tile
The Standard Tile represents our usual way to promote products, or for other instances where an image should be followed by some descriptive text. It is a versatile component with many variations, designed to handle most (but not all) tile needs.
Every Standard Tile includes:
an "image" sub-component
a "contents" sub-component that contains the tile's name, plus some other optional sub-components such as a description, pricing, promo code, or a badge.
Standard Tile is most often used inside of a grid element, since it is responsive and will expand its width to fill all available space.
Playground
<StandardTile>{' '}{/* use component="a" as appropriate */}<StandardTileImage>{/* Responsive or Fluid Image goes here */}</StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription>Description</StandardTileDescription></StandardTileContents></StandardTile>
<div class="standard-tile"><!-- use <a> instead of <div> as appropriate --><div class="standard-tile-image"><!-- Responsive or Fluid Image goes here --></div><div class="standard-tile-contents"><div class="standard-tile-name">Name</div><div class="standard-tile-description">Description</div></div></div>
Skins
default skin
The default tile contains many optional elements. Only the tile image and tile name are required.
<GridContainer><Row><Column span={4}><StandardTile component="a" href="#"><StandardTileImage><FluidImage src="https://picsum.photos/400/400?id=1" /></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription>Description</StandardTileDescription></StandardTileContents></StandardTile></Column><Column span={4}><StandardTile component="a" href="#"><StandardTileImage><FluidImage src="https://picsum.photos/400/600?id=2" /></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription>Description</StandardTileDescription></StandardTileContents></StandardTile></Column><Column span={4}><StandardTile component="a" href="#"><StandardTileImage><FluidImage src="https://picsum.photos/600/400?id=3" /></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription><ul className="stylized-list"><li>Bullet list inside description</li><li>Bullet list</li><li>Bullet list</li></ul></StandardTileDescription></StandardTileContents></StandardTile></Column><Column span={4}><StandardTile component="a" href="#"><StandardTileImage><FluidImage src="https://picsum.photos/400/400?id=3" /></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTilePrice><Pricing><PricingOffer>100 Starting at</PricingOffer>{' '}<PricingComparison><ListPrice>€10.99</ListPrice>{' '}<DiscountPrice>€8.99</DiscountPrice></PricingComparison>{' '}<ShortTaxMessage>Inc. VAT</ShortTaxMessage></Pricing></StandardTilePrice></StandardTileContents></StandardTile></Column></Row></GridContainer>
"gallery" skin
The "gallery" skin is for displaying a design choice, where clicking on the tile selects or drills down on that choice, rather than going to a product page for the product.
Tiles with the "gallery" skin should only be used inside a Grid using the "tight" option.
<GridContainer gutter="tight"><Row><Column span={4}><StandardTile skin="gallery" component="a" href="#"><StandardTileImage><FluidImage src="https://picsum.photos/400/400" /></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription>Description</StandardTileDescription></StandardTileContents></StandardTile></Column><Column span={4}><StandardTile skin="gallery" component="a" href="#"><StandardTileImage><FluidImage src="https://picsum.photos/600/400?q=1" /></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription>Description</StandardTileDescription></StandardTileContents></StandardTile></Column><Column span={4}><StandardTile skin="gallery" component="a" href="#"><StandardTileImage><FluidImage src="https://picsum.photos/600/400?q=2" /></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription>Description</StandardTileDescription></StandardTileContents></StandardTile></Column><Column span={4}><StandardTile skin="gallery" component="a" href="#"><StandardTileImage><FluidImage src="https://picsum.photos/400/400?q=3" /></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTilePrice><Pricing><PricingOffer>100 Starting at</PricingOffer>{' '}<PricingComparison><ListPrice>€10.99</ListPrice>{' '}<DiscountPrice>€8.99</DiscountPrice></PricingComparison>{' '}<ShortTaxMessage>Inc. VAT</ShortTaxMessage></Pricing></StandardTilePrice></StandardTileContents></StandardTile></Column></Row></GridContainer>
<div class="standard-tile standard-tile-skin-gallery">etc</div>
"gallery" skin with background image
The "gallery" skin can also take a background image for the tile, using the "Background" sub-component. The tile will then put a background color under the tile contents, so that they can be seen against that background image.
<GridContainer gutter="tight"><Row><Column span={4}><StandardTile skin="gallery" component="a" href="#"><StandardTileBackground><FluidImage src="http://picsum.photos/id/1053/1200/1200" /></StandardTileBackground><StandardTileImage><FluidImage src="https://picsum.photos/800/400?id=1" /></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription>Description</StandardTileDescription></StandardTileContents></StandardTile></Column><Column span={4}><StandardTile skin="gallery" component="a" href="#"><StandardTileBackground><FluidImage src="http://picsum.photos/id/1053/1200/1200" /></StandardTileBackground><StandardTileImage><FluidImage src="https://picsum.photos/800/400?id=2" /></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription>Description</StandardTileDescription></StandardTileContents></StandardTile></Column><Column span={4}><StandardTile skin="gallery" component="a" href="#"><StandardTileBackground><FluidImage src="http://picsum.photos/id/1053/1200/1200" /></StandardTileBackground><StandardTileImage><FluidImage src="https://picsum.photos/800/400?id=3" /></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription>Description</StandardTileDescription></StandardTileContents></StandardTile></Column><Column span={4}><StandardTile skin="gallery" component="a" href="#"><StandardTileBackground><FluidImage src="http://picsum.photos/id/1053/1200/1200" /></StandardTileBackground><StandardTileImage><FluidImage src="https://picsum.photos/800/400?id=4" /></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTilePrice><Pricing><PricingOffer>100 Starting at</PricingOffer>{' '}<PricingComparison><ListPrice>€10.99</ListPrice>{' '}<DiscountPrice>€8.99</DiscountPrice></PricingComparison>{' '}<ShortTaxMessage>Inc. VAT</ShortTaxMessage></Pricing></StandardTilePrice></StandardTileContents></StandardTile></Column></Row></GridContainer>
<div class="standard-tile standard-tile-skin-gallery"><div class="standard-tile-background">background image goes here</div><div class="standard-tile-image">tile image goes here</div><div class="standard-tile-contents">etc</div></div>
"gallery" skin with translucent background
Setting background="translucent"
on a gallery tile will set its background to translucent grey, so that it can be overlaid on colored backgrounds.
<Box p={4} backgroundColor="rio"><GridContainer gutter="tight"><Row><Column span={4}><StandardTileskin="gallery"component="a"href="#"background="translucent"><StandardTileImage><FluidImage src="https://picsum.photos/800/400?id=1" /></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription>Description</StandardTileDescription></StandardTileContents></StandardTile></Column><Column span={4}><StandardTileskin="gallery"component="a"href="#"background="translucent"><StandardTileBackground><FluidImage src="http://picsum.photos/id/1053/1200/1200" /></StandardTileBackground><StandardTileImage><FluidImage src="https://picsum.photos/800/400?id=2" /></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription>Description</StandardTileDescription></StandardTileContents></StandardTile></Column><Column span={4}><StandardTileskin="gallery"component="a"href="#"background="translucent"><StandardTileBackground><FluidImage src="http://picsum.photos/id/1053/1200/1200" /></StandardTileBackground><StandardTileImage><FluidImage src="https://picsum.photos/800/400?id=3" /></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription>Description</StandardTileDescription></StandardTileContents></StandardTile></Column></Row></GridContainer></Box>
<divclass="standard-tilestandard-tile-background-translucentstandard-tile-skin-gallery">etc</div>
"circular" skin
Use the "circular" skin only to drive to a curated category page or pre-filtered gallery. Do not use it to drive traffic to a PDP or standard Category page!
Tiles with the "circular" skin should use the FluidImage
component for the tile's image.
<><GridContainer><Row><Column span={4}><StandardTile skin="circular" component="a" href="#"><StandardTileImage><FluidImage src="https://picsum.photos/400/400" /></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName></StandardTileContents></StandardTile></Column></Row></GridContainer></>
<a href="someurl" class="standard-tile standard-tile-skin-circular"><div class="standard-tile-image"><img src="https://picsum.photos/400/400" class="fluid-image" /></div><div class="standard-tile-contents"><div class="standard-tile-name">Name</div></div></a>
"product" skin
Standard Tiles should use the "product" skin when clicking on them takes you to a product/category page.
<GridContainer><Row><Column span={4}><StandardTile skin="product" component="a" href="#"><StandardTileImage><FluidImage src="https://picsum.photos/400/400" /></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription>Description</StandardTileDescription></StandardTileContents></StandardTile></Column><Column span={4}><StandardTile skin="product" component="a" href="#"><StandardTileImage><FluidImage src="https://picsum.photos/400/600?q=1" /></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription>Description</StandardTileDescription></StandardTileContents></StandardTile></Column><Column span={4}><StandardTile skin="product" component="a" href="#"><StandardTileImage><FluidImage src="https://picsum.photos/600/400?q=3" /></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription>Description</StandardTileDescription></StandardTileContents></StandardTile></Column><Column span={4}><StandardTile skin="product" component="a" href="#"><StandardTileImage><FluidImage src="https://picsum.photos/400/400?q=4" /></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTilePrice><Pricing><PricingOffer>100 Starting at</PricingOffer>{' '}<PricingComparison><ListPrice>€10.99</ListPrice>{' '}<DiscountPrice>€8.99</DiscountPrice></PricingComparison>{' '}<ShortTaxMessage>Inc. VAT</ShortTaxMessage></Pricing></StandardTilePrice></StandardTileContents></StandardTile></Column><Column span={4}><StandardTile skin="product" component="a" href="#"><StandardTileOverlay><Callout>Callout</Callout></StandardTileOverlay><StandardTileImage><FluidImage src="https://picsum.photos/400/400?q=5" /></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName></StandardTileContents></StandardTile></Column></Row></GridContainer>
<a href="someurl" class="standard-tile standard-tile-skin-product"> etc </a>
"product" skin using full-bleed image
Tiles with the "product" skin can also specify the "full-bleed" option, making the tile's image touch the sides of the tile.
<GridContainer><Row><Column span={4}><StandardTileskin="product"imageWidth="full-bleed"component="a"href="#"><StandardTileImage><FluidImage src="https://picsum.photos/1600/1300?text=16:13 image" /></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription>Description</StandardTileDescription></StandardTileContents></StandardTile></Column><Column span={4}><StandardTileskin="product"imageWidth="full-bleed"component="a"href="#"><StandardTileImage><FluidImage src="https://picsum.photos/400/400?q=1" /></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription>Description</StandardTileDescription></StandardTileContents></StandardTile></Column><Column span={4}><StandardTileskin="product"imageWidth="full-bleed"component="a"href="#"><StandardTileImage><FluidImage src="https://picsum.photos/1600/1300?text=16:13 image" /></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription>Description</StandardTileDescription></StandardTileContents></StandardTile></Column><Column span={4}><StandardTileskin="product"imageWidth="full-bleed"component="a"href="#"><StandardTileImage><FluidImage src="https://picsum.photos/400/400?q=4" /></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription>Description</StandardTileDescription></StandardTileContents></StandardTile></Column><Column span={4}><StandardTileskin="product"imageWidth="full-bleed"component="a"href="#"><StandardTileImage><FluidImage src="https://picsum.photos/400/600?q=5" /></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTilePrice><Pricing><PricingOffer>100 Starting at</PricingOffer>{' '}<PricingComparison><ListPrice>€10.99</ListPrice>{' '}<DiscountPrice>€8.99</DiscountPrice></PricingComparison>{' '}<ShortTaxMessage>Inc. VAT</ShortTaxMessage></Pricing></StandardTilePrice></StandardTileContents></StandardTile></Column><Column span={4}><StandardTileskin="product"imageWidth="full-bleed"component="a"href="#"><StandardTileOverlay><Callout>Callout</Callout></StandardTileOverlay><StandardTileImage><FluidImage src="https://picsum.photos/600/400?q=1" /></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName></StandardTileContents></StandardTile></Column></Row></GridContainer>
<ahref="someurl"class="standard-tile standard-tile-full-bleed standard-tile-skin-product">etc</a>
Tiles as links
We often want our Standard Tile to act as a link to another page. If that's the case, you can make the entire tile be a link.
<GridContainer><Row><Column span={4}><StandardTile skin="product" component="a" href="#"><StandardTileImage><FluidImage src="https://picsum.photos/400/400?id=1" /></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName></StandardTileContents></StandardTile></Column></Row></GridContainer>
<StandardTile skin="product" component="a" href="#"><StandardTileImage>{/* image goes here */}</StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription>Description</StandardTileDescription></StandardTileContents></StandardTile>
<a href="somehref" class="standard-tile standard-tile-skin-product"><div class="standard-tile-image"><!--image goes here --></div><div class="standard-tile-contents"><div class="standard-tile-name">Name</div><div class="standard-tile-description">Description</div></div></a>
Tiles inside links
If you cannot make the entire tile be a link, you should place the tile inside a Link with the "unstyled" skin to prevent the link from styling the tile's contents.
<Link href="someurl" skin="unstyled"><StandardTile>etc.</StandardTile></Link>
<a href="somehref" class="link-skin-unstyled"><div class="standard-tile"><!-- etc --></div></a>
Price
Tiles can take an optional "price" sub-element to show a product price. The content inside of this "price" element should follow the standard pricing API.
<GridContainer><Row><Column span={4}><StandardTile skin="product"><StandardTileImage><BasicResponsiveImageaspectRatio={1}src="https://picsum.photos/400/400"/></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription>Description</StandardTileDescription><StandardTilePrice><Pricing><PricingOffer>100 Starting at</PricingOffer>{' '}<PricingComparison><ListPrice>€10.99</ListPrice>{' '}<DiscountPrice>€8.99</DiscountPrice></PricingComparison>{' '}<ShortTaxMessage>Inc. VAT</ShortTaxMessage></Pricing></StandardTilePrice></StandardTileContents></StandardTile></Column></Row></GridContainer>
<StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription>Description</StandardTileDescription><StandardTilePrice>{/* pricing goes here */}</StandardTilePrice></StandardTileContents>
<div class="standard-tile-contents"><div class="standard-tile-name">Name</div><div class="standard-tile-description">Description</div><div class="standard-tile-price"><!-- pricing goes here, using standard Pricing API --></div></div>
Color Swatches
Standard Tiles can also take a set of Color Swatches. To support this, wrap the Color Swatches component with the Standard Tiles Swatches sub-component.
<GridContainer><Row><Column span={4}><StandardTile skin="gallery" component="a" href="#"><StandardTileImage><FluidImage src="https://picsum.photos/400/400" /></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTilePrice>$price</StandardTilePrice><StandardTileSwatches><SelectionSet defaultSelectedValue="indigo"><ColorSwatches><SelectionSetInput value="red/black"><SelectionSetLabel><ColorSwatchprimaryColor="red"secondaryColor="black"title="color red/black"/></SelectionSetLabel></SelectionSetInput><SelectionSetInput value="indigo"><SelectionSetLabel><ColorSwatch primaryColor="indigo" title="color indigo" /></SelectionSetLabel></SelectionSetInput><SelectionSetInput value="green"><SelectionSetLabel><ColorSwatch primaryColor="green" title="color green" /></SelectionSetLabel></SelectionSetInput><SelectionSetInput value="gold"><SelectionSetLabel><ColorSwatch primaryColor="gold" title="color gold" /></SelectionSetLabel></SelectionSetInput><SelectionSetInput value="blue"><SelectionSetLabel><ColorSwatch primaryColor="blue" title="color blue" /></SelectionSetLabel></SelectionSetInput><SelectionSetInput value="orange"><SelectionSetLabel><ColorSwatch primaryColor="orange" title="color orange" /></SelectionSetLabel></SelectionSetInput><SelectionSetInput value="pink"><SelectionSetLabel><ColorSwatch primaryColor="pink" title="color pink" /></SelectionSetLabel></SelectionSetInput><SelectionSetInput value="brown"><SelectionSetLabel><ColorSwatch primaryColor="brown" title="color brown" /></SelectionSetLabel></SelectionSetInput><SelectionSetInput disabled value="limegreen"><SelectionSetLabel><ColorSwatchprimaryColor="limegreen"title="color lime green"/></SelectionSetLabel></SelectionSetInput><SelectionSetInput disabled value="darkmagenta"><SelectionSetLabel><ColorSwatchprimaryColor="darkmagenta"title="color dark magenta"/></SelectionSetLabel></SelectionSetInput></ColorSwatches></SelectionSet></StandardTileSwatches></StandardTileContents></StandardTile></Column></Row></GridContainer>
If there are a large number of swatches, you can use the "color swatch" variant of the Accordion to hide some of them.
Place this Accordion in the Standard Tile Contents sub-component, and then place the Standard Tile Swatches sub-component inside the Accordion's content zone.
<GridContainer><Row><Column span={4}><StandardTile skin="gallery"><StandardTileImage><FluidImage src="https://picsum.photos/400/400" /></StandardTileImage><StandardTileContents><Accordion skin="color-swatches"><Collapsible><CollapsibleSummary><CollapsibleSummaryButton>10<Box as="span" visuallyHidden>{' '}color choices</Box></CollapsibleSummaryButton></CollapsibleSummary><CollapsibleContent><StandardTileSwatches><SelectionSet defaultSelectedValue="indigo"><ColorSwatches><SelectionSetInput value="red/black"><SelectionSetLabel><ColorSwatchprimaryColor="red"secondaryColor="black"title="color red/black"/></SelectionSetLabel></SelectionSetInput><SelectionSetInput value="indigo"><SelectionSetLabel><ColorSwatchprimaryColor="indigo"title="color indigo"/></SelectionSetLabel></SelectionSetInput><SelectionSetInput value="green"><SelectionSetLabel><ColorSwatchprimaryColor="green"title="color green"/></SelectionSetLabel></SelectionSetInput><SelectionSetInput value="gold"><SelectionSetLabel><ColorSwatch primaryColor="gold" title="color gold" /></SelectionSetLabel></SelectionSetInput><SelectionSetInput value="blue"><SelectionSetLabel><ColorSwatch primaryColor="blue" title="color blue" /></SelectionSetLabel></SelectionSetInput><SelectionSetInput value="orange"><SelectionSetLabel><ColorSwatchprimaryColor="orange"title="color orange"/></SelectionSetLabel></SelectionSetInput><SelectionSetInput value="pink"><SelectionSetLabel><ColorSwatch primaryColor="pink" title="color pink" /></SelectionSetLabel></SelectionSetInput><SelectionSetInput value="brown"><SelectionSetLabel><ColorSwatchprimaryColor="brown"title="color brown"/></SelectionSetLabel></SelectionSetInput><SelectionSetInput disabled value="limegreen"><SelectionSetLabel><ColorSwatchprimaryColor="limegreen"title="color lime green"/></SelectionSetLabel></SelectionSetInput><SelectionSetInput disabled value="darkmagenta"><SelectionSetLabel><ColorSwatchprimaryColor="darkmagenta"title="color dark magenta"/></SelectionSetLabel></SelectionSetInput></ColorSwatches></SelectionSet></StandardTileSwatches></CollapsibleContent></Collapsible></Accordion><StandardTileName>Tile name</StandardTileName><StandardTilePrice>$price</StandardTilePrice></StandardTileContents></StandardTile></Column></Row></GridContainer>
Callouts and Overlays
Each Standard Tile has an "overlay" sub-component that goes on top of the tile. You can put a Callout inside this "overlay" sub-component to make it appear on top of the tile's contents.
<GridContainer><Row><Column span={4}><StandardTile skin="product"><StandardTileOverlay><Callout>Callout</Callout></StandardTileOverlay><StandardTileImage><BasicResponsiveImageaspectRatio={1}src="https://picsum.photos/400/400"/></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription>Description</StandardTileDescription></StandardTileContents></StandardTile></Column></Row></GridContainer>
<StandardTile skin="product"><StandardTileOverlay><Callout>Callout</Callout></StandardTileOverlay><StandardTileImage>// image goes here</StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription>Description</StandardTileDescription></StandardTileContents></StandardTile>
<div class="standard-tile standard-tile-skin-product"><div class="standard-tile-overlay"><span class="callout">Callout</span></div><div class="standard-tile-image"><!-- image goes here --></div><div class="standard-tile-contents"><div class="standard-tile-name">Name</div><div class="standard-tile-description">Description</div></div></div>
You can place multiple elements inside the tile's overlay. The items will be displayed in a row across the top of the tile.
(If you want the last item in that row to sit in the top right corner of the tile, you'll need to align that item's content to the right.)
<GridContainer><Row><Column span={4}><StandardTile skin="product"><StandardTileOverlay><Callout>Callout</Callout><Typography align="right"><ControlIcon iconType="check" /><Typography as="span" textSize={7}>Design templates</Typography></Typography></StandardTileOverlay><StandardTileImage>// image goes here</StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription>Description</StandardTileDescription></StandardTileContents></StandardTile></Column></Row></GridContainer>
Promo Codes
If you want to add a Promo Code to a tile, place it inside an optional "tile promo code" sub-component.
<GridContainer><Row><Column span={4}><StandardTile skin="product"><StandardTileImage><BasicResponsiveImageaspectRatio={1}src="https://picsum.photos/400/400"/></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTilePromoCode><StandardTilePromoCodeLabel>50% off with promo code</StandardTilePromoCodeLabel><PromoCode>Promo Code</PromoCode></StandardTilePromoCode><StandardTileDescription>Description</StandardTileDescription></StandardTileContents></StandardTile></Column></Row></GridContainer>
<StandardTileContents><StandardTileName>Name</StandardTileName><StandardTilePromoCode><StandardTilePromoCodeLabel>50% off with promo code</StandardTilePromoCodeLabel><PromoCode>Promo Code</PromoCode></StandardTilePromoCode><StandardTileDescription>Description</StandardTileDescription></StandardTileContents>
<div class="standard-tile-contents"><div class="standard-tile-name">Name</div><div class="standard-tile-promo-code"><div class="standard-tile-promo-code-label">50% off with promo code</div><span class="promo-code">Promo Code</span></div><div class="standard-tile-description">Description</div></div>
Additional features for the default skin
These should not be used with tiles that are using the "product" or "gallery" skins.
CTA
If you are using the default skin, you may also want to add an optional "CTA" visual to the tile to emphasize that the tile is clickable. Note: this "CTA" should not be an actual link! (HTML prohibits putting an <a>
link inside another <a>
.) Instead, use Visage's "CTA" skin to give the appearance of a link; React's StandardTileCTA
component takes care of these semantics for you.
Note: if the only text element on the tile is the tile's name, it should still use the "name" sub-component, and should not be a "CTA".
<GridContainer><Row><Column span={4}><StandardTile component="a" href="#"><StandardTileImage><BasicResponsiveImageaspectRatio={1}src="https://picsum.photos/400/400"/></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription>Description</StandardTileDescription><StandardTileCTA>Create now</StandardTileCTA></StandardTileContents></StandardTile></Column></Row></GridContainer>
Badge
If you are using the default skin and want to add a Badge above tile's name, place it inside an optional "tile badge" sub-component.
<GridContainer><Row><Column span={4}><StandardTile><StandardTileImage><BasicResponsiveImageaspectRatio={1}src="https://picsum.photos/400/400"/></StandardTileImage><StandardTileContents><StandardTileBadge><Badge>Recommended</Badge></StandardTileBadge><StandardTileName>Name</StandardTileName><StandardTileDescription>Description</StandardTileDescription></StandardTileContents></StandardTile></Column></Row></GridContainer>
<StandardTileContents><StandardTileBadge><Badge>Recommended</Badge></StandardTileBadge><StandardTileName>Name</StandardTileName><StandardTileDescription>Description</StandardTileDescription></StandardTileContents>
<div class="standard-tile-contents"><div class="standard-tile-badge"><span class="badge">Recommended</span></div><div class="standard-tile-name">Name</div><div class="standard-tile-description">Description</div></div>
Footer
Tiles with the default skin do not automatically align their content to the bottom of the tile, unlike the other skins. Thus, default tiles can add an optional footer, which sits below the "contents" sub-component. The footer will always be vertically aligned to the bottom of the tile.
<GridContainer><Row><Column span={4}><StandardTile><StandardTileImage><BasicResponsiveImageaspectRatio={1}src="https://picsum.photos/400/400?text=image"/></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription>This tile's link is in a Standard Tile Footer.</StandardTileDescription></StandardTileContents><StandardTileFooter><StandardTileCTA>Get Started</StandardTileCTA></StandardTileFooter></StandardTile></Column><Column span={4}><StandardTile><StandardTileImage><BasicResponsiveImageaspectRatio={1}src="https://picsum.photos/400/400?text=image"/></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription>This tile is much, much, much, much, much, much, much, much, much,much, much, much, much, much, much, much, much, much taller.</StandardTileDescription></StandardTileContents><StandardTileFooter><StandardTileCTA>Get Started</StandardTileCTA></StandardTileFooter></StandardTile></Column></Row></GridContainer>
<StandardTile><StandardTileImage>{/* image goes here */}</StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription>Description</StandardTileDescription></StandardTileContents><StandardTileFooter>Footer</StandardTileFooter></StandardTile>
<div class="standard-tile"><div class="standard-tile-image"><!-- image goes here --></div><div class="standard-tile-contents"><div class="standard-tile-name">Name</div><div class="standard-tile-description">This tile's link is in a Standard Tile Footer.</div></div><div class="standard-tile-footer"><div class="link link-skin-cta">Get Started</div></div></div>
Horizontal tiles
You can set a tile with the default skin to have a horizontal layout, with the image at left and the text contents at right.
<GridContainer><Row><Column span={6}><StandardTile layout="horizontal"><StandardTileImage><BasicResponsiveImageaspectRatio={1}src="https://picsum.photos/400/400?text=image"/></StandardTileImage><StandardTileContents><StandardTileName>Name</StandardTileName><StandardTileDescription>Description</StandardTileDescription></StandardTileContents></StandardTile></Column></Row></GridContainer>
<StandardTile layout="horizontal">...</StandardTile>
<div class="standard-tile standard-tile-horizontal"></div>
Components
StandardTileContents
StandardTileContents
has no props of its own
All props are forwarded to the element specified in thecomponent
prop(default: <div/>
)
StandardTileCTA
StandardTileCTA
has no props of its own
All props are forwarded to the element specified in thecomponent
prop(default: <div/>
)
StandardTileDescription
StandardTileDescription
has no props of its own
All props are forwarded to the element specified in thecomponent
prop(default: <div/>
)
StandardTileImage
StandardTileImage
has no props of its own
All props are forwarded to the element specified in thecomponent
prop(default: <div/>
)
StandardTileName
StandardTileName
has no props of its own
All props are forwarded to the element specified in thecomponent
prop(default: <div/>
)
StandardTileOverlay
StandardTileOverlay
has no props of its own
All props are forwarded to the element specified in thecomponent
prop(default: <div/>
)
StandardTilePrice
StandardTilePrice
has no props of its own
All props are forwarded to the element specified in thecomponent
prop(default: <div/>
)
StandardTilePromoCode
StandardTilePromoCode
has no props of its own
All props are forwarded to the element specified in thecomponent
prop(default: <div/>
)
StandardTilePromoCodeLabel
StandardTilePromoCodeLabel
has no props of its own
All props are forwarded to the element specified in thecomponent
prop(default: <div/>
)
StandardTileBadge
StandardTileBadge
has no props of its own
All props are forwarded to the element specified in thecomponent
prop(default: <div/>
)
StandardTileFooter
StandardTileFooter
has no props of its own
All props are forwarded to the element specified in thecomponent
prop(default: <div/>
)
Guidelines
Designer Guidelines
Standard Tiles must have an image and a tile name. Other sub-elements (such as description, promo code, etc) are optional.
Standard Tiles do not enforce an aspect ratio on the image. The full image will always be displayed, in its natural aspect ratio.
Horizontal tiles should use minimal text. The text area (to the right of the image) should not be taller than the image.
Special notes on color swatch usage:
Tiles with color swatches should be at least 3 columns wide on the layout grid.
Tiles with color swatches should use a limited set of other optional tile elements. The most common use is in conjunction with ratings and pricing.
Developer Guidelines
Use a Fluid Image for tiles with the "product" or "gallery" skins, as these tiles already have a specified height for the image. Tiles with the default skin can use either a Fluid Image or a Responsive Image.
The "CTA" on the tile is for the action (that's the "A" in "CTA"), such as "See designs" or "Start more". This is an optional sub-element that should only be used for an action. If the only text on the tile is the tile's name, that name should go into the "name" sub-element.
If the entire tile is a link (or is wrapped by a link), then the "CTA" should be a
<button>
tag. This prevents nested<a>
tags, which are prohibited by HTML.
Accessibility Guidelines
If a sequence of tiles is semantically a list, as is usually the case (e.g. a list of products), then the layout grid elements around the tiles should use ul and li tags, so that the tiles are grouped semantically into a list. Use
<ul class="row">
and<li class="col-N">
for the grid elements around the tiles.
Tile images have specific requirement for
alt
attributes:The tile's image should use an empty
alt
attribute if there is nearby HTML text that presents the same content as the description of the image — which is usually the case for Standard Tiles, since the tile name immediately follows the image, and typically describes the image. (Using an emptyalt
attribute prevents screen readers from saying the same thing twice in a row: "Business Cards... Business Cards.")SEO may require that a tile image's
alt
attribute not be empty (per the above), so that the image shows up better in image searches. In this case, if the image and the tile name are both inside the same hyperlink, you can putrole="presentation" aria-hidden="true"
onto the image. This will hide the image entirely from assistive technologies, but not from screens or search engines.