# Table

## Basic usage

<sonic-code>
  <template>
    <sonic-table>
      <sonic-tr>
        <sonic-th>Id</sonic-th>
        <sonic-th>Name</sonic-th>
        <sonic-th>Email</sonic-th>
      </sonic-tr>
      <sonic-tr>
        <sonic-td>1</sonic-td>
        <sonic-td>George Bluth</sonic-td>
        <sonic-td>george.bluth@reqres.in</sonic-td>
      </sonic-tr>
      <sonic-tr>
        <sonic-td>2</sonic-td>
        <sonic-td>Janet Weaver</sonic-td>
        <sonic-td>janet.weaver@reqres.in</sonic-td>
      </sonic-tr>
      <sonic-tr>
        <sonic-td>3</sonic-td>
        <sonic-td>Emma Wong</sonic-td>
        <sonic-td>emma.wong@reqres.in</sonic-td>
      </sonic-tr>
    </sonic-table>
  </template>
</sonic-code>

## List / fetch

<sonic-code>
  <template>
    <sonic-table>
      <sonic-thead>
        <sonic-tr>
          <sonic-th>Id</sonic-th>
          <sonic-th>Name</sonic-th>
          <sonic-th>Email</sonic-th>
        </sonic-tr> 
      </sonic-thead>
      <sonic-tbody>
        <sonic-list debug fetch serviceURL="https://reqres.in" dataProvider="api/users" key="data" displayContents>
          <template>
            <sonic-tr>
              <sonic-td data-bind ::inner-html="$id"></sonic-td>
              <sonic-td data-bind ::inner-html="$first_name <b>$last_name</b>"></sonic-td>
              <sonic-td data-bind ::inner-html="$email"></sonic-td>
            </sonic-tr>
          </template>
        <sonic-list>
      </sonic-tbody>
    </sonic-table>
  </template>
</sonic-code>

## Size

<sonic-code>
  <template>
    <div class="grid grid-cols-4 gap-3">
      <sonic-table size="2xs" bordered>
        <sonic-tr><sonic-td class="w-[5rem]">2xs</sonic-td></sonic-tr>
      </sonic-table>
      <sonic-table size="xs" bordered>
        <sonic-tr><sonic-td class="w-[5rem]">xs</sonic-td></sonic-tr>
      </sonic-table>
      <sonic-table size="sm" bordered>
        <sonic-tr><sonic-td class="w-[5rem]">sm</sonic-td></sonic-tr>
      </sonic-table>
      <sonic-table size="md" bordered>
        <sonic-tr><sonic-td class="w-[5rem]">md</sonic-td></sonic-tr>
      </sonic-table>
      <sonic-table bordered>
        <sonic-tr><sonic-td class="w-[5rem]">default</sonic-td></sonic-tr>
      </sonic-table>
      <sonic-table size="lg" bordered>
        <sonic-tr><sonic-td class="w-[5rem]">lg</sonic-td></sonic-tr>
      </sonic-table>
      <sonic-table size="xl" bordered>
        <sonic-tr><sonic-td class="w-[5rem]">xl</sonic-td></sonic-tr>
      </sonic-table>
      <sonic-table size="2xl" bordered>
        <sonic-tr><sonic-td class="w-[5rem]">2xl</sonic-td></sonic-tr>
      </sonic-table>
    </div>
  </template>
</sonic-code>

## Bordered

<sonic-code>
  <template>
    <sonic-table bordered>
      <sonic-thead>
        <sonic-tr>
          <sonic-th>Id</sonic-th>
          <sonic-th>Name</sonic-th>
          <sonic-th>Email</sonic-th>
        </sonic-tr>
      </sonic-thead>
      <sonic-tbody>
        <sonic-tr>
          <sonic-td>1</sonic-td>
          <sonic-td>George Bluth</sonic-td>
          <sonic-td>george.bluth@reqres.in</sonic-td>
        </sonic-tr>
        <sonic-tr>
          <sonic-td>2</sonic-td>
          <sonic-td>Janet Weaver</sonic-td>
          <sonic-td>janet.weaver@reqres.in</sonic-td>
        </sonic-tr>
        <sonic-tr>
          <sonic-td>3</sonic-td>
          <sonic-td>Emma Wong</sonic-td>
          <sonic-td>emma.wong@reqres.in</sonic-td>
        </sonic-tr>
      </sonic-tbody>
    </sonic-table>
  </template>
</sonic-code>

## MaxHeight

<sonic-code>
  <template>
    <sonic-table maxHeight="8rem">
      <sonic-thead>
        <sonic-tr>
          <sonic-th>Id</sonic-th>
          <sonic-th>Name</sonic-th>
          <sonic-th>Email</sonic-th>
        </sonic-tr> 
      </sonic-thead>
      <sonic-tbody>
        <sonic-list  fetch serviceURL="https://reqres.in" dataProvider="api/users" key="data" displayContents>
          <template>
            <sonic-tr>
              <sonic-td data-bind ::inner-html="$id"></sonic-td>
              <sonic-td data-bind ::inner-html="$first_name <b>$last_name</b>"></sonic-td>
              <sonic-td data-bind ::inner-html="$email"></sonic-td>
            </sonic-tr>
          </template>
        <sonic-list>
      </sonic-tbody>
    </sonic-table>
  </template>
</sonic-code>

## Type

Values available : primary, info, success, warning, danger

<sonic-code>
  <template>
    <sonic-table bordered>
        <sonic-tr>
          <sonic-th type="info">Attribute type set on</sonic-th>
          <sonic-th type="info">sonic-th</sonic-th>
        </sonic-tr>
        <sonic-tr>
          <sonic-td type="danger">Attribute type set on</sonic-td>
          <sonic-td type="danger">sonic-td</sonic-td>
        </sonic-tr>
        <sonic-tr type="success">
          <sonic-td>Attribute type set on</sonic-td>
          <sonic-td>sonic-tr</sonic-td>
        </sonic-tr>
      </sonic-tbody>
    </sonic-table>
  </template>
</sonic-code>

## Colspan / rowspan

<sonic-code>
  <template>
    <sonic-table >
      <sonic-tbody>
        <sonic-tr>
          <sonic-td colspan="2" class="bg-info text-neutral-0">colspan : 2</sonic-td>
          <sonic-td>cell</sonic-td>
        </sonic-tr>
        <sonic-tr>
          <sonic-td>cell</sonic-td>
          <sonic-td>cell</sonic-td>
          <sonic-td rowspan="2" class="bg-success text-neutral-0">rowspan : 2</sonic-td>
        </sonic-tr>
        <sonic-tr>
          <sonic-td>cell</sonic-td>
          <sonic-td>cell</sonic-td>
        </sonic-tr>
      </sonic-tbody>
    </sonic-table>
  </template>
</sonic-code>

## Cell style attributes

The following attributes will be used to set the style of the component :  
- align
- minWidth
- maxWidth
- width

<sonic-code>
  <template>
    <sonic-table bordered>
      <sonic-thead>
        <sonic-tr>
          <sonic-th width="7rem">align</sonic-th>
          <sonic-th minWidth="20rem">minWidth</sonic-th>
          <sonic-th>maxWidth</sonic-th>
          <sonic-th>width</sonic-th>
        </sonic-tr>
      </sonic-thead>
      <sonic-tbody>
        <sonic-tr>
          <sonic-td align="left">Left</sonic-td>
          <sonic-td>20rem</sonic-td>
          <sonic-td>5rem</sonic-td>
          <sonic-td>15rem</sonic-td>
        </sonic-tr>
        <sonic-tr>
          <sonic-td align="center">center</sonic-td>
          <sonic-td>20rem</sonic-td>
          <sonic-td maxWidth="5rem">5rem</sonic-td>
          <sonic-td>15rem</sonic-td>
        </sonic-tr>
        <sonic-tr>
          <sonic-td align="right">right</sonic-td>
          <sonic-td>20rem</sonic-td>
          <sonic-td>5rem - Lorem ipsum dolor</sonic-td>
          <sonic-td width="60rem">15rem - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam porta sollicitudin mollis. Curabitur sit amet nibh diam. Vivamus a pharetra mauris.</sonic-td>
        </sonic-tr>
    </sonic-table>
  </template>
</sonic-code>


## Responsive

Every table is responsive by default

<sonic-code>
  <template>
    <sonic-table bordered>
      <sonic-thead>
        <sonic-tr>
          <sonic-th>Id</sonic-th>
          <sonic-th>Name</sonic-th>
          <sonic-th>Email</sonic-th>
          <sonic-th>Comment</sonic-th>
        </sonic-tr> 
      </sonic-thead>
      <sonic-tbody>
        <sonic-list fetch serviceURL="https://reqres.in" dataProvider="api/users" key="data" displayContents>
          <template>
            <sonic-tr>
              <sonic-td data-bind ::inner-html="$id"></sonic-td>
              <sonic-td minWidth="10rem" data-bind ::inner-html="$first_name <b>$last_name</b>"></sonic-td>
              <sonic-td data-bind ::inner-html="$email"></sonic-td>
              <sonic-td minWidth="40rem">
                hasellus suscipit vulputate lacus, in tempor turpis aliquam vel. Nunc eleifend, velit id ultrices elementum, ipsum felis porttitor dui, id laoreet diam nulla sed urna. 
              </sonic-td>
            </sonic-tr>
          </template>
        <sonic-list>
      </sonic-tbody>
    </sonic-table>
  </template>
</sonic-code>


## Sticky header

<sonic-code>
  <template>
    <sonic-table bordered noCustomScroll>
      <sonic-thead class="sticky top-16">
        <sonic-tr>
          <sonic-th minWidth="max(20ch,12rem)">Company</sonic-th>
          <sonic-th type="success">Contact</sonic-th>
          <sonic-th>Country</sonic-th>
          <sonic-th align="center">Quantity</sonic-th>
          <sonic-th align="right">Price</sonic-th>
          <sonic-th></sonic-th>
        </sonic-tr>
      </sonic-thead>
      <sonic-tbody>
        <sonic-tr>
          <sonic-td>Alfreds Futterkiste</sonic-td>
          <sonic-td>Maria Anders</sonic-td>
          <sonic-td>Germany</sonic-td>
          <sonic-td align="center">2</sonic-td>
          <sonic-td align="right">40€</sonic-td>
          <sonic-td td align="right"
            ><sonic-button shape="circle" variant="outline" size="sm">
              <sonic-icon library="iconoir" name="edit-pencil" size="lg"></sonic-icon
            ></sonic-button>
          </sonic-td>
        </sonic-tr>
        <sonic-tr>
          <sonic-td>Centro comercial Moctezuma</sonic-td>
          <sonic-td
            colspan="2"
            align="center"
            class="
              text-center
              text-neutral-400
            "
            >no information yet</sonic-td
          >
          <sonic-td align="center">3</sonic-td>
          <sonic-td align="right">40€</sonic-td>
          <sonic-td td align="right"
            ><sonic-button shape="circle" variant="outline" size="sm">
              <sonic-icon library="iconoir" name="edit-pencil" size="lg"></sonic-icon
            ></sonic-button>
          </sonic-td>
        </sonic-tr>
        <sonic-tr>
          <sonic-td>Ernst Handel</sonic-td>
          <sonic-td>Roland Mendel</sonic-td>
          <sonic-td>Austria</sonic-td>
          <sonic-td align="center">4</sonic-td>
          <sonic-td align="right">40€</sonic-td>
          <sonic-td td align="right"
            ><sonic-button shape="circle" variant="outline" size="sm">
              <sonic-icon library="iconoir" name="edit-pencil" size="lg"></sonic-icon
            ></sonic-button>
          </sonic-td>
        </sonic-tr>
        <sonic-tr>
          <sonic-td>Island Trading</sonic-td>
          <sonic-td>Helen Bennett</sonic-td>
          <sonic-td>UK</sonic-td>
          <sonic-td align="center">1</sonic-td>
          <sonic-td align="right">40€</sonic-td>
          <sonic-td td align="right"
            ><sonic-button shape="circle" variant="outline" size="sm">
              <sonic-icon library="iconoir" name="edit-pencil" size="lg"></sonic-icon
            ></sonic-button>
          </sonic-td>
        </sonic-tr>
        <sonic-tr type="warning">
          <sonic-td>Laughing Bacchus Winecellars</sonic-td>
          <sonic-td>Yoshi Tannamuri</sonic-td>
          <sonic-td>Canada</sonic-td>
          <sonic-td align="center">0</sonic-td>
          <sonic-td align="right">40€</sonic-td>
          <sonic-td td align="right"
            ><sonic-button shape="circle" variant="outline" size="sm">
              <sonic-icon library="iconoir" name="edit-pencil" size="lg"></sonic-icon
            ></sonic-button>
          </sonic-td>
        </sonic-tr>
        <sonic-tr>
          <sonic-td>Magazzini Alimentari Riuniti</sonic-td>
          <sonic-td>Giovanni Rovelli</sonic-td>
          <sonic-td type="danger">Italy</sonic-td>
          <sonic-td align="center">20</sonic-td>
          <sonic-td align="right">40€</sonic-td>
          <sonic-td td align="right"
            ><sonic-button shape="circle" variant="outline" size="sm">
              <sonic-icon library="iconoir" name="edit-pencil" size="lg"></sonic-icon
            ></sonic-button>
          </sonic-td>
        </sonic-tr>
        <sonic-tr>
          <sonic-td>Alfreds Futterkiste</sonic-td>
          <sonic-td>Maria Anders</sonic-td>
          <sonic-td>Germany</sonic-td>
          <sonic-td align="center">2</sonic-td>
          <sonic-td align="right">40€</sonic-td>
          <sonic-td td align="right"
            ><sonic-button shape="circle" variant="outline" size="sm">
              <sonic-icon library="iconoir" name="edit-pencil" size="lg"></sonic-icon
            ></sonic-button>
          </sonic-td>
        </sonic-tr>
        <sonic-tr>
          <sonic-td>Centro comercial Moctezuma</sonic-td>
          <sonic-td
            colspan="2"
            align="center"
            class="
              text-center
              text-neutral-400
            "
            >no information yet</sonic-td
          >
          <sonic-td align="center">3</sonic-td>
          <sonic-td align="right">40€</sonic-td>
          <sonic-td td align="right"
            ><sonic-button shape="circle" variant="outline" size="sm">
              <sonic-icon library="iconoir" name="edit-pencil" size="lg"></sonic-icon
            ></sonic-button>
          </sonic-td>
        </sonic-tr>
        <sonic-tr>
          <sonic-td>Ernst Handel</sonic-td>
          <sonic-td>Roland Mendel</sonic-td>
          <sonic-td>Austria</sonic-td>
          <sonic-td align="center">4</sonic-td>
          <sonic-td align="right">40€</sonic-td>
          <sonic-td td align="right"
            ><sonic-button shape="circle" variant="outline" size="sm">
              <sonic-icon library="iconoir" name="edit-pencil" size="lg"></sonic-icon
            ></sonic-button>
          </sonic-td>
        </sonic-tr>
        <sonic-tr>
          <sonic-td>Island Trading</sonic-td>
          <sonic-td>Helen Bennett</sonic-td>
          <sonic-td>UK</sonic-td>
          <sonic-td align="center">1</sonic-td>
          <sonic-td align="right">40€</sonic-td>
          <sonic-td td align="right"
            ><sonic-button shape="circle" variant="outline" size="sm">
              <sonic-icon library="iconoir" name="edit-pencil" size="lg"></sonic-icon
            ></sonic-button>
          </sonic-td>
        </sonic-tr>
        <sonic-tr type="warning">
          <sonic-td>Laughing Bacchus Winecellars</sonic-td>
          <sonic-td>Yoshi Tannamuri</sonic-td>
          <sonic-td>Canada</sonic-td>
          <sonic-td align="center">0</sonic-td>
          <sonic-td align="right">40€</sonic-td>
          <sonic-td td align="right"
            ><sonic-button shape="circle" variant="outline" size="sm">
              <sonic-icon library="iconoir" name="edit-pencil" size="lg"></sonic-icon
            ></sonic-button>
          </sonic-td>
        </sonic-tr>
        <sonic-tr>
          <sonic-td>Magazzini Alimentari Riuniti</sonic-td>
          <sonic-td>Giovanni Rovelli</sonic-td>
          <sonic-td>Italy</sonic-td>
          <sonic-td align="center">20</sonic-td>
          <sonic-td align="right">40€</sonic-td>
          <sonic-td td align="right"
            ><sonic-button shape="circle" variant="outline" size="sm">
              <sonic-icon library="iconoir" name="edit-pencil" size="lg"></sonic-icon
            ></sonic-button>
          </sonic-td>
        </sonic-tr>
      </sonic-tbody>
      <sonic-caption>table caption</sonic-caption>
    </sonic-table>
  </template>
</sonic-code>