# Ecommerce

> Components designed for eCommerce layouts, including product displays and card grids.

Web: https://vuemail.dev/components/ecommerce

Paste any snippet into an email built with Vuemail. The snippets are single file components that use the primitives from `@vuemaildev/vuemail`.

## One product

Source: https://github.com/psycarlo/vuemail/tree/main/apps/web/components/one-product

### Tailwind

```vue
<script setup lang="ts">
import { Button, Heading, Img, Section, Text } from '@vuemaildev/vuemail';
</script>

<template>
  <Section class="my-[16px]">
    <Img
      alt="Braun Collection"
      class="w-full rounded-[12px] object-cover"
      :height="320"
      src="/static/braun-collection.jpg"
    />
    <Section class="mt-[32px] text-center">
      <Text
        class="mt-[16px] font-semibold text-[18px] text-indigo-600 leading-[28px]"
      >
        Classic Watches
      </Text>
      <Heading
        as="h1"
        class="font-semibold text-[36px] text-gray-900 leading-[40px] tracking-[0.4px]"
      >
        Elegant Comfort
      </Heading>
      <Text class="mt-[8px] text-[16px] text-gray-500 leading-[24px]">
        Dieter Rams’ work has an outstanding quality which distinguishes it from
        the vast majority of industrial design of the entire 20th Century.
      </Text>
      <Text class="font-semibold text-[16px] text-gray-900 leading-[24px]">
        $210.00
      </Text>
      <Button
        class="mt-[16px] rounded-[8px] bg-indigo-600 px-[24px] py-[12px] font-semibold text-white"
        href="https://vuemail.dev"
      >Buy now</Button>
    </Section>
  </Section>
</template>
```

### Inline styles

```vue
<script setup lang="ts">
import { Button, Heading, Img, Section, Text } from '@vuemaildev/vuemail';
</script>

<template>
  <Section :style="{ marginTop: '16px', marginBottom: '16px' }">
    <Img
      alt="Braun Collection"
      :height="320"
      src="/static/braun-collection.jpg"
      :style="{ width: '100%', borderRadius: '12px', objectFit: 'cover' }"
    />
    <Section :style="{ marginTop: '32px', textAlign: 'center' }">
      <Text
        :style="{
          marginTop: '16px',
          fontSize: '18px',
          lineHeight: '28px',
          fontWeight: 600,
          color: 'rgb(79,70,229)',
        }"
      >
        Classic Watches
      </Text>
      <Heading
        as="h1"
        :style="{
          fontSize: '36px',
          lineHeight: '40px',
          fontWeight: 600,
          letterSpacing: '0.4px',
          color: 'rgb(17,24,39)',
        }"
      >
        Elegant Comfort
      </Heading>
      <Text
        :style="{
          marginTop: '8px',
          fontSize: '16px',
          lineHeight: '24px',
          color: 'rgb(107,114,128)',
        }"
      >
        Dieter Rams’ work has an outstanding quality which distinguishes it from
        the vast majority of industrial design of the entire 20th Century.
      </Text>
      <Text
        :style="{
          fontSize: '16px',
          lineHeight: '24px',
          fontWeight: 600,
          color: 'rgb(17,24,39)',
        }"
      >
        $210.00
      </Text>
      <Button
        href="https://vuemail.dev"
        :style="{
          marginTop: '16px',
          borderRadius: '8px',
          backgroundColor: 'rgb(79,70,229)',
          paddingLeft: '24px',
          paddingRight: '24px',
          paddingTop: '12px',
          paddingBottom: '12px',
          fontWeight: 600,
          color: 'rgb(255,255,255)',
        }"
      >Buy now</Button>
    </Section>
  </Section>
</template>
```

## One product with image on the left

Source: https://github.com/psycarlo/vuemail/tree/main/apps/web/components/one-product-with-image-on-the-left

### Tailwind

```vue
<script setup lang="ts">
import { Button, Img, Section, Text } from '@vuemaildev/vuemail';
</script>

<template>
  <Section class="my-[16px]">
    <table class="w-full">
      <tbody class="w-full">
        <tr class="w-full">
          <td class="box-border w-1/2 pr-[32px]">
            <Img
              alt="Braun Vintage"
              class="w-full rounded-[8px] object-cover"
              :height="220"
              src="/static/braun-vintage.jpg"
            />
          </td>
          <td class="w-1/2 align-baseline">
            <Text
              class="m-0 mt-[8px] font-semibold text-[20px] text-gray-900 leading-[28px]"
            >
              Great Timepiece
            </Text>
            <Text class="mt-[8px] text-[16px] text-gray-500 leading-[24px]">
              Renowned for their minimalist design and high functionality,
              celebrating the principles of simplicity and clarity.
            </Text>
            <Text
              class="mt-[8px] font-semibold text-[18px] text-gray-900 leading-[28px]"
            >
              $120.00
            </Text>
            <Button
              class="w-3/4 rounded-[8px] bg-indigo-600 px-[16px] py-[12px] text-center font-semibold text-white"
              href="https://vuemail.dev"
            >Buy</Button>
          </td>
        </tr>
      </tbody>
    </table>
  </Section>
</template>
```

### Inline styles

```vue
<script setup lang="ts">
import { Button, Img, Section, Text } from '@vuemaildev/vuemail';
</script>

<template>
  <Section :style="{ marginTop: '16px', marginBottom: '16px' }">
    <table :style="{ width: '100%' }">
      <tbody :style="{ width: '100%' }">
        <tr :style="{ width: '100%' }">
          <td
            :style="{
              width: '50%',
              paddingRight: '32px',
              boxSizing: 'border-box',
            }"
          >
            <Img
              alt="Braun Vintage"
              :height="220"
              src="/static/braun-vintage.jpg"
              :style="{
                borderRadius: '8px',
                width: '100%',
                objectFit: 'cover',
              }"
            />
          </td>
          <td :style="{ width: '50%', verticalAlign: 'baseline' }">
            <Text
              :style="{
                margin: '0px',
                marginTop: '8px',
                fontSize: '20px',
                lineHeight: '28px',
                fontWeight: 600,
                color: 'rgb(17,24,39)',
              }"
            >
              Great Timepiece
            </Text>
            <Text
              :style="{
                marginTop: '8px',
                fontSize: '16px',
                lineHeight: '24px',
                color: 'rgb(107,114,128)',
              }"
            >
              Renowned for their minimalist design and high functionality,
              celebrating the principles of simplicity and clarity.
            </Text>
            <Text
              :style="{
                marginTop: '8px',
                fontSize: '18px',
                lineHeight: '28px',
                fontWeight: 600,
                color: 'rgb(17,24,39)',
              }"
            >
              $120.00
            </Text>
            <Button
              href="https://vuemail.dev"
              :style="{
                width: '75%',
                borderRadius: '8px',
                backgroundColor: 'rgb(79,70,229)',
                paddingTop: '12px',
                paddingBottom: '12px',
                paddingLeft: '16px',
                paddingRight: '16px',
                textAlign: 'center',
                fontWeight: 600,
                color: 'rgb(255,255,255)',
              }"
            >Buy</Button>
          </td>
        </tr>
      </tbody>
    </table>
  </Section>
</template>
```

## Title + three cards in a row

Source: https://github.com/psycarlo/vuemail/tree/main/apps/web/components/title-three-cards-in-a-row

### Tailwind

```vue
<script setup lang="ts">
import { Button, Img, Row, Section, Text } from '@vuemaildev/vuemail';
import ResponsiveColumn from '../_components/responsive-column.vue';
import ResponsiveRow from '../_components/responsive-row.vue';
</script>

<template>
  <Section class="my-[16px]">
    <Row>
      <Text class="m-0 font-semibold text-[20px] text-gray-900 leading-[28px]">
        Timing Products
      </Text>
      <Text class="mt-[8px] text-[16px] text-gray-500 leading-[24px]">
        Dieter Rams consistently implemented his design principles over the
        course of over three decades as the Braun design leader.
      </Text>
    </Row>
    <ResponsiveRow class="mt-[16px]">
      <ResponsiveColumn class="py-[16px] pr-[4px] text-left">
        <Img
          alt="Braun Analogue Clock"
          class="w-full rounded-[8px] object-cover"
          :height="180"
          src="/static/braun-analogue-clock.jpg"
        />
        <Text
          class="m-0 mt-[24px] font-semibold text-[20px] text-gray-900 leading-[28px]"
        >
          Analogue Clock
        </Text>
        <Text class="m-0 mt-[16px] text-[16px] text-gray-500 leading-[24px]">
          Thoughtful and simply designed.
        </Text>
        <Text
          class="m-0 mt-[8px] font-semibold text-[16px] text-gray-900 leading-[24px]"
        >
          $40.00
        </Text>
        <Button
          class="mt-[16px] rounded-[8px] bg-indigo-600 px-[24px] py-[12px] font-semibold text-white"
          href="https://vuemail.dev"
        >Buy</Button>
      </ResponsiveColumn>
      <ResponsiveColumn class="px-[4px] py-[16px] text-left">
        <Img
          alt="Braun Wall Clock"
          class="w-full rounded-[8px] object-cover"
          :height="180"
          src="/static/braun-wall-clock.jpg"
        />
        <Text
          class="m-0 mt-[24px] font-semibold text-[20px] text-gray-900 leading-[28px]"
        >
          Wall Clock
        </Text>
        <Text class="m-0 mt-[16px] text-[16px] text-gray-500 leading-[24px]">
          The original easy to read dial layout.
        </Text>
        <Text
          class="m-0 mt-[8px] font-semibold text-[16px] text-gray-900 leading-[24px]"
        >
          $45.00
        </Text>
        <Button
          class="mt-[16px] rounded-[8px] bg-indigo-600 px-[24px] py-[12px] font-semibold text-white"
          href="https://vuemail.dev"
        >Buy</Button>
      </ResponsiveColumn>
      <ResponsiveColumn class="py-[16px] pl-[4px] text-left">
        <Img
          alt="Braun Classic Watch"
          class="w-full rounded-[8px] object-cover"
          :height="180"
          src="/static/braun-classic-watch.jpg"
        />
        <Text
          class="m-0 mt-[24px] font-semibold text-[20px] text-gray-900 leading-[28px]"
        >
          Classic Watch
        </Text>
        <Text class="m-0 mt-[16px] text-[16px] text-gray-500 leading-[24px]">
          Functional, classic, and built to last.
        </Text>
        <Text
          class="m-0 mt-[8px] font-semibold text-[16px] text-gray-900 leading-[24px]"
        >
          $210.00
        </Text>
        <Button
          class="mt-[16px] rounded-[8px] bg-indigo-600 px-[24px] py-[12px] font-semibold text-white"
          href="https://vuemail.dev"
        >Buy</Button>
      </ResponsiveColumn>
    </ResponsiveRow>
  </Section>
</template>
```

### Inline styles

```vue
<script setup lang="ts">
import { Button, Img, Row, Section, Text } from '@vuemaildev/vuemail';
import ResponsiveColumn from '../_components/responsive-column.vue';
import ResponsiveRow from '../_components/responsive-row.vue';
</script>

<template>
  <Section :style="{ marginTop: '16px', marginBottom: '16px' }">
    <Row>
      <Text
        :style="{
          margin: '0px',
          fontSize: '20px',
          lineHeight: '28px',
          fontWeight: 600,
          color: 'rgb(17,24,39)',
        }"
      >
        Timing Products
      </Text>
      <Text
        :style="{
          marginTop: '8px',
          fontSize: '16px',
          lineHeight: '24px',
          color: 'rgb(107,114,128)',
        }"
      >
        Dieter Rams consistently implemented his design principles over the
        course of over three decades as the Braun design leader.
      </Text>
    </Row>
    <ResponsiveRow :style="{ marginTop: '16px' }">
      <ResponsiveColumn
        :style="{
          textAlign: 'left',
          paddingRight: '4px',
          paddingTop: '16px',
          paddingBottom: '16px',
        }"
      >
        <Img
          alt="Braun Analogue Clock"
          :height="180"
          src="/static/braun-analogue-clock.jpg"
          :style="{ width: '100%', borderRadius: '8px', objectFit: 'cover' }"
        />
        <Text
          :style="{
            margin: '0px',
            marginTop: '24px',
            fontSize: '20px',
            lineHeight: '28px',
            fontWeight: 600,
            color: 'rgb(17,24,39)',
          }"
        >
          Analogue Clock
        </Text>
        <Text
          :style="{
            margin: '0px',
            marginTop: '16px',
            fontSize: '16px',
            lineHeight: '24px',
            color: 'rgb(107,114,128)',
          }"
        >
          Thoughtful and simply designed.
        </Text>
        <Text
          :style="{
            margin: '0px',
            marginTop: '8px',
            fontSize: '16px',
            lineHeight: '24px',
            fontWeight: 600,
            color: 'rgb(17,24,39)',
          }"
        >
          $40.00
        </Text>
        <Button
          href="https://vuemail.dev"
          :style="{
            marginTop: '16px',
            borderRadius: '8px',
            backgroundColor: 'rgb(79,70,229)',
            paddingLeft: '24px',
            paddingRight: '24px',
            paddingTop: '12px',
            paddingBottom: '12px',
            fontWeight: 600,
            color: 'rgb(255,255,255)',
          }"
        >Buy</Button>
      </ResponsiveColumn>
      <ResponsiveColumn
        :style="{
          textAlign: 'left',
          paddingRight: '4px',
          paddingLeft: '4px',
          paddingTop: '16px',
          paddingBottom: '16px',
        }"
      >
        <Img
          alt="Braun Wall Clock"
          :height="180"
          src="/static/braun-wall-clock.jpg"
          :style="{ width: '100%', borderRadius: '8px', objectFit: 'cover' }"
        />
        <Text
          :style="{
            margin: '0px',
            marginTop: '24px',
            fontSize: '20px',
            lineHeight: '28px',
            fontWeight: 600,
            color: 'rgb(17,24,39)',
          }"
        >
          Wall Clock
        </Text>
        <Text
          :style="{
            margin: '0px',
            marginTop: '16px',
            fontSize: '16px',
            lineHeight: '24px',
            color: 'rgb(107,114,128)',
          }"
        >
          The original easy to read dial layout.
        </Text>
        <Text
          :style="{
            margin: '0px',
            marginTop: '8px',
            fontSize: '16px',
            lineHeight: '24px',
            fontWeight: 600,
            color: 'rgb(17,24,39)',
          }"
        >
          $45.00
        </Text>
        <Button
          href="https://vuemail.dev"
          :style="{
            marginTop: '16px',
            borderRadius: '8px',
            backgroundColor: 'rgb(79,70,229)',
            paddingLeft: '24px',
            paddingRight: '24px',
            paddingTop: '12px',
            paddingBottom: '12px',
            fontWeight: 600,
            color: 'rgb(255,255,255)',
          }"
        >Buy</Button>
      </ResponsiveColumn>
      <ResponsiveColumn
        :style="{
          paddingTop: '16px',
          paddingBottom: '16px',
          paddingLeft: '4px',
          textAlign: 'left',
        }"
      >
        <Img
          alt="Braun Classic Watch"
          :height="180"
          src="/static/braun-classic-watch.jpg"
          :style="{ width: '100%', borderRadius: '8px', objectFit: 'cover' }"
        />
        <Text
          :style="{
            margin: '0px',
            marginTop: '24px',
            fontSize: '20px',
            lineHeight: '28px',
            fontWeight: 600,
            color: 'rgb(17,24,39)',
          }"
        >
          Classic Watch
        </Text>
        <Text
          :style="{
            margin: '0px',
            marginTop: '16px',
            fontSize: '16px',
            lineHeight: '24px',
            color: 'rgb(107,114,128)',
          }"
        >
          Functional, classic, and built to last.
        </Text>
        <Text
          :style="{
            margin: '0px',
            marginTop: '8px',
            fontSize: '16px',
            lineHeight: '24px',
            fontWeight: 600,
            color: 'rgb(17,24,39)',
          }"
        >
          $210.00
        </Text>
        <Button
          href="https://vuemail.dev"
          :style="{
            marginTop: '16px',
            borderRadius: '8px',
            backgroundColor: 'rgb(79,70,229)',
            paddingLeft: '24px',
            paddingRight: '24px',
            paddingTop: '12px',
            paddingBottom: '12px',
            fontWeight: 600,
            color: 'rgb(255,255,255)',
          }"
        >Buy</Button>
      </ResponsiveColumn>
    </ResponsiveRow>
  </Section>
</template>
```

## Title + four cards

Source: https://github.com/psycarlo/vuemail/tree/main/apps/web/components/title-four-cards

### Tailwind

```vue
<script setup lang="ts">
import {
  Button,
  Column,
  Hr,
  Img,
  Row,
  Section,
  Text,
} from '@vuemaildev/vuemail';
</script>

<template>
  <Section class="my-[16px]">
    <Section>
      <Row>
        <Text
          class="m-0 font-semibold text-[20px] text-gray-900 leading-[28px]"
        >
          Timing Products
        </Text>
        <Text class="mt-[8px] text-[16px] text-gray-500 leading-[24px]">
          Dieter Rams consistently implemented his design principles over the
          course of over three decades as the Braun design leader.
        </Text>
      </Row>
      <Row class="mt-[16px]">
        <Column align="left" class="w-1/2 pr-[8px]" :colspan="1">
          <Img
            alt="Braun Wall Clock"
            class="w-full rounded-[8px] object-cover"
            :height="250"
            src="/static/braun-wall-clock.jpg"
          />
          <Text
            class="m-0 mt-[24px] font-semibold text-[20px] text-gray-900 leading-[28px]"
          >
            Wall Clock
          </Text>
          <Text class="m-0 mt-[16px] text-[16px] text-gray-500 leading-[24px]">
            Easy to read dial layout.
          </Text>
          <Text
            class="m-0 mt-[8px] font-semibold text-[16px] text-gray-900 leading-[24px]"
          >
            $45.00
          </Text>
          <Button
            class="mt-[16px] rounded-[8px] bg-indigo-600 px-[24px] py-[12px] font-semibold text-white"
            href="https://vuemail.dev"
          >Buy</Button>
        </Column>
        <Column align="left" class="w-1/2 pl-[8px]" :colspan="1">
          <Img
            alt="Braun Wireless Alarm"
            class="w-full rounded-[8px] object-cover"
            :height="250"
            src="/static/braun-wireless-alarm.jpg"
          />
          <Text
            class="m-0 mt-[24px] font-semibold text-[20px] text-gray-900 leading-[28px]"
          >
            Wireless Alarm
          </Text>
          <Text class="m-0 mt-[16px] text-[16px] text-gray-500 leading-[24px]">
            Designed with a focus on function.
          </Text>
          <Text
            class="m-0 mt-[8px] font-semibold text-[16px] text-gray-900 leading-[24px]"
          >
            $50.00
          </Text>
          <Button
            class="mt-[16px] rounded-[8px] bg-indigo-600 px-[24px] py-[12px] font-semibold text-white"
            href="https://vuemail.dev"
          >Buy</Button>
        </Column>
      </Row>
    </Section>
    <Hr class="mx-0 my-[24px] w-full border border-gray-200 border-solid" />
    <Section>
      <Row>
        <Column align="left" class="w-1/2 pr-[8px]" :colspan="1">
          <Img
            alt="Braun Classic Watch"
            class="w-full rounded-[8px] object-cover"
            :height="250"
            src="/static/braun-classic-watch.jpg"
          />
          <Text
            class="m-0 mt-[24px] font-semibold text-[20px] text-gray-900 leading-[28px]"
          >
            Classic Watch
          </Text>
          <Text class="m-0 mt-[16px] text-[16px] text-gray-500 leading-[24px]">
            Functional, classic, and built to last.
          </Text>
          <Text
            class="m-0 mt-[8px] font-semibold text-[16px] text-gray-900 leading-[24px]"
          >
            $210.00
          </Text>
          <Button
            class="mt-[16px] rounded-[8px] bg-indigo-600 px-[24px] py-[12px] font-semibold text-white"
            href="https://vuemail.dev"
          >Buy</Button>
        </Column>
        <Column align="left" class="w-1/2 pl-[8px]" :colspan="1">
          <Img
            alt="Braun Analogue Clock"
            class="w-full rounded-[8px] object-cover"
            :height="250"
            src="/static/braun-analogue-clock.jpg"
          />
          <Text
            class="m-0 mt-[24px] font-semibold text-[20px] text-gray-900 leading-[28px]"
          >
            Analogue Clock
          </Text>
          <Text class="m-0 mt-[16px] text-[16px] text-gray-500 leading-[24px]">
            Thoughtful and simply designed.
          </Text>
          <Text
            class="m-0 mt-[8px] font-semibold text-[16px] text-gray-900 leading-[24px]"
          >
            $40.00
          </Text>
          <Button
            class="mt-[16px] rounded-[8px] bg-indigo-600 px-[24px] py-[12px] font-semibold text-white"
            href="https://vuemail.dev"
          >Buy</Button>
        </Column>
      </Row>
    </Section>
  </Section>
</template>
```

### Inline styles

```vue
<script setup lang="ts">
import {
  Button,
  Column,
  Hr,
  Img,
  Row,
  Section,
  Text,
} from '@vuemaildev/vuemail';
</script>

<template>
  <Section :style="{ marginTop: '16px', marginBottom: '16px' }">
    <Section>
      <Row>
        <Text
          :style="{
            margin: '0px',
            fontSize: '20px',
            lineHeight: '28px',
            fontWeight: 600,
            color: 'rgb(17,24,39)',
          }"
        >
          Timing Products
        </Text>
        <Text
          :style="{
            marginTop: '8px',
            fontSize: '16px',
            lineHeight: '24px',
            color: 'rgb(107,114,128)',
          }"
        >
          Dieter Rams consistently implemented his design principles over the
          course of over three decades as the Braun design leader.
        </Text>
      </Row>
      <Row :style="{ marginTop: '16px' }">
        <Column
          align="left"
          :colspan="1"
          :style="{ width: '50%', paddingRight: '8px' }"
        >
          <Img
            alt="Braun Wall Clock"
            :height="250"
            src="/static/braun-wall-clock.jpg"
            :style="{ width: '100%', borderRadius: '8px', objectFit: 'cover' }"
          />
          <Text
            :style="{
              margin: '0px',
              marginTop: '24px',
              fontSize: '20px',
              fontWeight: 600,
              lineHeight: '28px',
              color: 'rgb(17,24,39)',
            }"
          >
            Wall Clock
          </Text>
          <Text
            :style="{
              margin: '0px',
              marginTop: '16px',
              fontSize: '16px',
              lineHeight: '24px',
              color: 'rgb(107,114,128)',
            }"
          >
            Easy to read dial layout.
          </Text>
          <Text
            :style="{
              margin: '0px',
              marginTop: '8px',
              fontSize: '16px',
              lineHeight: '24px',
              fontWeight: 600,
              color: 'rgb(17,24,39)',
            }"
          >
            $45.00
          </Text>
          <Button
            href="https://vuemail.dev"
            :style="{
              marginTop: '16px',
              borderRadius: '8px',
              backgroundColor: 'rgb(79,70,229)',
              paddingLeft: '24px',
              paddingRight: '24px',
              paddingTop: '12px',
              paddingBottom: '12px',
              fontWeight: 600,
              color: 'rgb(255,255,255)',
            }"
          >Buy</Button>
        </Column>
        <Column
          align="left"
          :colspan="1"
          :style="{ width: '50%', paddingLeft: '8px' }"
        >
          <Img
            alt="Braun Wireless Alarm"
            :height="250"
            src="/static/braun-wireless-alarm.jpg"
            :style="{ width: '100%', borderRadius: '8px', objectFit: 'cover' }"
          />
          <Text
            :style="{
              margin: '0px',
              marginTop: '24px',
              fontSize: '20px',
              lineHeight: '28px',
              fontWeight: 600,
              color: 'rgb(17,24,39)',
            }"
          >
            Wireless Alarm
          </Text>
          <Text
            :style="{
              margin: '0px',
              marginTop: '16px',
              fontSize: '16px',
              lineHeight: '24px',
              color: 'rgb(107,114,128)',
            }"
          >
            Designed with a focus on function.
          </Text>
          <Text
            :style="{
              margin: '0px',
              marginTop: '8px',
              fontSize: '16px',
              lineHeight: '24px',
              fontWeight: 600,
              color: 'rgb(17,24,39)',
            }"
          >
            $50.00
          </Text>
          <Button
            href="https://vuemail.dev"
            :style="{
              marginTop: '16px',
              borderRadius: '8px',
              backgroundColor: 'rgb(79,70,229)',
              paddingLeft: '24px',
              paddingRight: '24px',
              paddingTop: '12px',
              paddingBottom: '12px',
              fontWeight: 600,
              color: 'rgb(255,255,255)',
            }"
          >Buy</Button>
        </Column>
      </Row>
    </Section>
    <Hr
      :style="{
        marginLeft: '0px',
        marginRight: '0px',
        marginTop: '24px',
        marginBottom: '24px',
        width: '100%',
        borderWidth: '1px',
        borderStyle: 'solid',
        borderColor: 'rgb(229,231,235)',
      }"
    />
    <Section>
      <Row>
        <Column
          align="left"
          :colspan="1"
          :style="{ width: '50%', paddingRight: '8px' }"
        >
          <Img
            alt="Braun Classic Watch"
            :height="250"
            src="/static/braun-classic-watch.jpg"
            :style="{ width: '100%', borderRadius: '8px', objectFit: 'cover' }"
          />
          <Text
            :style="{
              margin: '0px',
              marginTop: '24px',
              fontSize: '20px',
              lineHeight: '28px',
              fontWeight: 600,
              color: 'rgb(17,24,39)',
            }"
          >
            Classic Watch
          </Text>
          <Text
            :style="{
              margin: '0px',
              marginTop: '16px',
              fontSize: '16px',
              lineHeight: '24px',
              color: 'rgb(107,114,128)',
            }"
          >
            Functional, classic, and built to last.
          </Text>
          <Text
            :style="{
              margin: '0px',
              marginTop: '8px',
              fontSize: '16px',
              lineHeight: '24px',
              fontWeight: 600,
              color: 'rgb(17,24,39)',
            }"
          >
            $210.00
          </Text>
          <Button
            href="https://vuemail.dev"
            :style="{
              marginTop: '16px',
              borderRadius: '8px',
              backgroundColor: 'rgb(79,70,229)',
              paddingLeft: '24px',
              paddingRight: '24px',
              paddingTop: '12px',
              paddingBottom: '12px',
              fontWeight: 600,
              color: 'rgb(255,255,255)',
            }"
          >Buy</Button>
        </Column>
        <Column
          align="left"
          :colspan="1"
          :style="{ width: '50%', paddingLeft: '8px' }"
        >
          <Img
            alt="Braun Analogue Clock"
            :height="250"
            src="/static/braun-analogue-clock.jpg"
            :style="{ width: '100%', borderRadius: '8px', objectFit: 'cover' }"
          />
          <Text
            :style="{
              margin: '0px',
              marginTop: '24px',
              fontSize: '20px',
              lineHeight: '28px',
              fontWeight: 600,
              color: 'rgb(17,24,39)',
            }"
          >
            Analogue Clock
          </Text>
          <Text
            :style="{
              margin: '0px',
              marginTop: '16px',
              fontSize: '16px',
              lineHeight: '24px',
              color: 'rgb(107,114,128)',
            }"
          >
            Thoughtful and simply designed.
          </Text>
          <Text
            :style="{
              margin: '0px',
              marginTop: '8px',
              fontSize: '16px',
              lineHeight: '24px',
              fontWeight: 600,
              color: 'rgb(17,24,39)',
            }"
          >
            $40.00
          </Text>
          <Button
            href="https://vuemail.dev"
            :style="{
              marginTop: '16px',
              borderRadius: '8px',
              backgroundColor: 'rgb(79,70,229)',
              paddingLeft: '24px',
              paddingRight: '24px',
              paddingTop: '12px',
              paddingBottom: '12px',
              fontWeight: 600,
              color: 'rgb(255,255,255)',
            }"
          >Buy</Button>
        </Column>
      </Row>
    </Section>
  </Section>
</template>
```

## Checkout

Source: https://github.com/psycarlo/vuemail/tree/main/apps/web/components/checkout

### Tailwind

```vue
<script setup lang="ts">
import {
  Button,
  Column,
  Heading,
  Img,
  Row,
  Section,
  Text,
} from '@vuemaildev/vuemail';
</script>

<template>
  <Section class="py-[16px] text-center">
    <Heading as="h1" class="mb-0 font-semibold text-[30px] leading-[36px]">
      You left something in your cart
    </Heading>
    <Section
      class="my-[16px] rounded-[8px] border border-gray-200 border-solid p-[16px] pt-0"
    >
      <table class="mb-[16px]" width="100%">
        <tbody>
          <tr>
            <th class="border-0 border-gray-200 border-b border-solid py-[8px]">
              &nbsp;
            </th>
            <th
              align="left"
              class="border-0 border-gray-200 border-b border-solid py-[8px] text-gray-500"
              :colspan="6"
            >
              <Text class="font-semibold">Product</Text>
            </th>
            <th
              align="center"
              class="border-0 border-gray-200 border-b border-solid py-[8px] text-gray-500"
            >
              <Text class="font-semibold">Quantity</Text>
            </th>
            <th
              align="center"
              class="border-0 border-gray-200 border-b border-solid py-[8px] text-gray-500"
            >
              <Text class="font-semibold">Price</Text>
            </th>
          </tr>
          <tr>
            <td class="border-0 border-gray-200 border-b border-solid py-[8px]">
              <Img
                alt="Braun Classic Watch"
                class="rounded-[8px] object-cover"
                :height="110"
                src="/static/braun-classic-watch.jpg"
              />
            </td>
            <td
              align="left"
              class="border-0 border-gray-200 border-b border-solid py-[8px]"
              :colspan="6"
            >
              <Text>Classic Watch</Text>
            </td>
            <td
              align="center"
              class="border-0 border-gray-200 border-b border-solid py-[8px]"
            >
              <Text>1</Text>
            </td>
            <td
              align="center"
              class="border-0 border-gray-200 border-b border-solid py-[8px]"
            >
              <Text>$210.00</Text>
            </td>
          </tr>
          <tr>
            <td class="border-0 border-gray-200 border-b border-solid py-[8px]">
              <Img
                alt="Braun Analogue Clock"
                class="rounded-[8px] object-cover"
                :height="110"
                src="/static/braun-analogue-clock.jpg"
              />
            </td>
            <td
              align="left"
              class="border-0 border-gray-200 border-b border-solid py-[8px]"
              :colspan="6"
            >
              <Text>Analogue Clock</Text>
            </td>
            <td
              align="center"
              class="border-0 border-gray-200 border-b border-solid py-[8px]"
            >
              <Text>1</Text>
            </td>
            <td
              align="center"
              class="border-0 border-gray-200 border-b border-solid py-[8px]"
            >
              <Text>$40.00</Text>
            </td>
          </tr>
        </tbody>
      </table>
      <Row>
        <Column align="center">
          <Button
            class="box-border w-full rounded-[8px] bg-indigo-600 px-[12px] py-[12px] text-center font-semibold text-white"
            href="https://vuemail.dev"
          >Checkout</Button>
        </Column>
      </Row>
    </Section>
  </Section>
</template>
```

### Inline styles

```vue
<script setup lang="ts">
import {
  Button,
  Column,
  Heading,
  Img,
  Row,
  Section,
  Text,
} from '@vuemaildev/vuemail';
</script>

<template>
  <Section
    :style="{ paddingTop: '16px', paddingBottom: '16px', textAlign: 'center' }"
  >
    <Heading
      as="h1"
      :style="{
        fontSize: '30px',
        lineHeight: '36px',
        marginBottom: '0px',
        fontWeight: 600,
      }"
    >
      You left something in your cart
    </Heading>
    <Section
      :style="{
        padding: '16px',
        paddingTop: '0px',
        marginTop: '16px',
        marginBottom: '16px',
        borderRadius: '8px',
        borderWidth: '1px',
        borderStyle: 'solid',
        borderColor: 'rgb(229,231,235)',
      }"
    >
      <table :style="{ marginBottom: '16px' }" width="100%">
        <tbody>
          <tr>
            <th
              :style="{
                paddingTop: '8px',
                paddingBottom: '8px',
                borderWidth: '0px',
                borderBottomWidth: '1px',
                borderStyle: 'solid',
                borderColor: 'rgb(229,231,235)',
              }"
            >
              &nbsp;
            </th>
            <th
              align="left"
              :colspan="6"
              :style="{
                paddingTop: '8px',
                paddingBottom: '8px',
                color: 'rgb(107,114,128)',
                borderWidth: '0px',
                borderBottomWidth: '1px',
                borderStyle: 'solid',
                borderColor: 'rgb(229,231,235)',
              }"
            >
              <Text :style="{ fontWeight: 600 }">Product</Text>
            </th>
            <th
              align="center"
              :style="{
                paddingTop: '8px',
                paddingBottom: '8px',
                color: 'rgb(107,114,128)',
                borderWidth: '0px',
                borderBottomWidth: '1px',
                borderStyle: 'solid',
                borderColor: 'rgb(229,231,235)',
              }"
            >
              <Text :style="{ fontWeight: 600 }">Quantity</Text>
            </th>
            <th
              align="center"
              :style="{
                paddingTop: '8px',
                paddingBottom: '8px',
                color: 'rgb(107,114,128)',
                borderWidth: '0px',
                borderBottomWidth: '1px',
                borderStyle: 'solid',
                borderColor: 'rgb(229,231,235)',
              }"
            >
              <Text :style="{ fontWeight: 600 }">Price</Text>
            </th>
          </tr>
          <tr>
            <td
              :style="{
                paddingTop: '8px',
                paddingBottom: '8px',
                borderWidth: '0px',
                borderBottomWidth: '1px',
                borderStyle: 'solid',
                borderColor: 'rgb(229,231,235)',
              }"
            >
              <Img
                alt="Braun Classic Watch"
                :height="110"
                src="/static/braun-classic-watch.jpg"
                :style="{ objectFit: 'cover', borderRadius: '8px' }"
              />
            </td>
            <td
              align="left"
              :colspan="6"
              :style="{
                paddingTop: '8px',
                paddingBottom: '8px',
                borderWidth: '0px',
                borderBottomWidth: '1px',
                borderStyle: 'solid',
                borderColor: 'rgb(229,231,235)',
              }"
            >
              <Text>Classic Watch</Text>
            </td>
            <td
              align="center"
              :style="{
                paddingTop: '8px',
                paddingBottom: '8px',
                borderWidth: '0px',
                borderBottomWidth: '1px',
                borderStyle: 'solid',
                borderColor: 'rgb(229,231,235)',
              }"
            >
              <Text>1</Text>
            </td>
            <td
              align="center"
              :style="{
                paddingTop: '8px',
                paddingBottom: '8px',
                borderWidth: '0px',
                borderBottomWidth: '1px',
                borderStyle: 'solid',
                borderColor: 'rgb(229,231,235)',
              }"
            >
              <Text>$210.00</Text>
            </td>
          </tr>
          <tr>
            <td
              :style="{
                paddingTop: '8px',
                paddingBottom: '8px',
                borderWidth: '0px',
                borderBottomWidth: '1px',
                borderStyle: 'solid',
                borderColor: 'rgb(229,231,235)',
              }"
            >
              <Img
                alt="Braun Analogue Clock"
                :height="110"
                src="/static/braun-analogue-clock.jpg"
                :style="{ objectFit: 'cover', borderRadius: '8px' }"
              />
            </td>
            <td
              align="left"
              :colspan="6"
              :style="{
                paddingTop: '8px',
                paddingBottom: '8px',
                borderWidth: '0px',
                borderBottomWidth: '1px',
                borderStyle: 'solid',
                borderColor: 'rgb(229,231,235)',
              }"
            >
              <Text>Analogue Clock</Text>
            </td>
            <td
              align="center"
              :style="{
                paddingTop: '8px',
                paddingBottom: '8px',
                borderWidth: '0px',
                borderBottomWidth: '1px',
                borderStyle: 'solid',
                borderColor: 'rgb(229,231,235)',
              }"
            >
              <Text>1</Text>
            </td>
            <td
              align="center"
              :style="{
                paddingTop: '8px',
                paddingBottom: '8px',
                borderWidth: '0px',
                borderBottomWidth: '1px',
                borderStyle: 'solid',
                borderColor: 'rgb(229,231,235)',
              }"
            >
              <Text>$40.00</Text>
            </td>
          </tr>
        </tbody>
      </table>
      <Row>
        <Column align="center">
          <Button
            href="https://vuemail.dev"
            :style="{
              width: '100%',
              boxSizing: 'border-box',
              paddingLeft: '12px',
              paddingRight: '12px',
              borderRadius: '8px',
              textAlign: 'center',
              backgroundColor: 'rgb(79,70,229)',
              paddingTop: '12px',
              paddingBottom: '12px',
              fontWeight: 600,
              color: 'rgb(255,255,255)',
            }"
          >Checkout</Button>
        </Column>
      </Row>
    </Section>
  </Section>
</template>
```
