< AdvancedTable 
    columns = { [ "Name" ,   "Age" ] . map ( ( c )   =>   ( {  label :  c  } ) ) } 
    rows = { [ 
      {  name :   "Alice" ,  age :   19   } , 
      {  name :   "Bob" ,  age :   25   } , 
    ] } 
    buildRow = { ( row )   =>   ( 
      < > 
        < td > { row . name } </ td > 
        < td > { row . age } </ td > 
      </ > 
    ) } 
 /> Use the optional thProps property of columns.
< AdvancedTable 
    columns = { [ 
      { 
       label :   "Name" , 
      } , 
      { 
       label :   "Age" , 
       thProps :   { 
         className :   "text-right" , 
        } , 
      } , 
    ] } 
    rows = { [ 
      {  name :   "Alice" ,  age :   19   } , 
      {  name :   "Bob" ,  age :   25   } , 
    ] } 
    buildRow = { ( row )   =>   ( 
      < > 
        < td > { row . name } </ td > 
        < td   className = " text-right " > { row . age } </ td > 
      </ > 
    ) } 
 /> Set sortType to "automatic" to enable automatic sorting. This is useful if you don't have paginated data.
< AdvancedTable 
    sortType = " automatic " 
    columns = { [ 
      {  label :   "Name" ,  sortKey :   "name"   } , 
      {  label :   "Age" ,  sortKey :   "age"   } , 
    ] } 
    rows = { [ 
      {  name :   "Alice" ,  age :   19   } , 
      {  name :   "Bob" ,  age :   25   } , 
    ] } 
    buildRow = { ( row )   =>   ( 
      < > 
        < td > { row . name } </ td > 
        < td > { row . age } </ td > 
      </ > 
    ) } 
    onSort = { ( sortKey ,  sortType )   =>   { 
      console . log ( sortKey ,  sortType ) ; 
    } } 
 /> When sortKey is a nested property like "firm.name" it will sort by eg. user.firm.name instead of user["firm.name"].
< AdvancedTable 
    sortType = " automatic " 
    columns = { [ 
      {  label :   "Name" ,  sortKey :   "name"   } , 
      {  label :   "Firm" ,  sortKey :   "firm.name"   } , 
    ] } 
    rows = { [ 
      {  name :   "Alice" ,  firm :   {  name :   "Acme"   }   } , 
      {  name :   "Bob" ,  firm :   {  name :   "Beta"   }   } , 
    ] } 
    buildRow = { ( row )   =>   ( 
      < > 
        < td > { row . name } </ td > 
        < td > { row . firm . name } </ td > 
      </ > 
    ) } 
 /> Often times a table will have some sort of "total" row at the bottom that you don't want to include in the sorting. Set shouldSortLastRow to false to exclude this row.
Name Cost Milk 5 Eggs 4 Bread 2 Total 11 
< AdvancedTable 
    sortType = " automatic " 
    columns = { [ 
      {  label :   "Name" ,  sortKey :   "name"   } , 
      {  label :   "Cost" ,  sortKey :   "cost"   } , 
    ] } 
    rows = { [ 
      {  name :   "Milk" ,  cost :   5   } , 
      {  name :   "Eggs" ,  cost :   4   } , 
      {  name :   "Bread" ,  cost :   2   } , 
      {  name :   "Total" ,  cost :   11   } , 
    ] } 
    buildRow = { ( row ,  _ ,  isLastRow )   =>   ( 
      < > 
        < td   className = { isLastRow  ?   "font-bold"   :   "" } > { row . name } </ td > 
        < td   className = { isLastRow  ?   "font-bold"   :   "" } > { row . cost } </ td > 
      </ > 
    ) } 
    shouldSortLastRow = { false } 
 /> Set sortType to "url" to enable URL-based sorting. This will add an <a> to the header of each column with an href based on the current URL and with sort and direction added as query params.
< AdvancedTable 
    sortType = " url " 
    columns = { [ 
      {  label :   "Name" ,  sortKey :   "name"   } , 
      {  label :   "Age" ,  sortKey :   "age"   } , 
    ] } 
    rows = { [ 
      {  name :   "Alice" ,  age :   19   } , 
      {  name :   "Bob" ,  age :   25   } , 
    ] } 
    buildRow = { ( row )   =>   ( 
      < > 
        < td > { row . name } </ td > 
        < td > { row . age } </ td > 
      </ > 
    ) } 
    sortKey = { null } 
    sortDirection = { null } 
 /> < AdvancedTable 
    sortType = " url " 
    columns = { [ 
      {  label :   "Name" ,  sortKey :   "name"   } , 
      {  label :   "Age" ,  sortKey :   "age"   } , 
    ] } 
    rows = { [ 
      {  name :   "Alice" ,  age :   19   } , 
      {  name :   "Bob" ,  age :   25   } , 
    ] } 
    buildHref = { ( key ,  direction )   => 
      ` /users?sort= ${ key } &direction= ${ direction } ` 
    } 
    buildRow = { ( row )   =>   ( 
      < > 
        < td > { row . name } </ td > 
        < td > { row . age } </ td > 
      </ > 
    ) } 
    sortKey = { null } 
    sortDirection = { null } 
 /> Set sortType to "controlled" to enable controlled sorting. This will allow you to manually sort the table via the onSort prop.
< AdvancedTable 
    sortType = " controlled " 
    columns = { [ 
      {  label :   "Name" ,  sortKey :   "name"   } , 
      {  label :   "Age" ,  sortKey :   "age"   } , 
    ] } 
    rows = { rows } 
    buildRow = { ( row )   =>   ( 
      < > 
        < td > { row . name } </ td > 
        < td > { row . age } </ td > 
      </ > 
    ) } 
    sortKey = { sortKey } 
    sortDirection = { sortDirection } 
    onSort = { ( key ,  direction )   =>   { 
      setSortKey ( key ) ; 
      setSortDirection ( direction ) ; 
      setRows ( 
       key  ===   null 
          ?  initialRows
          :   [ ... rows ] . sort ( ( a ,  b )   =>   { 
              const  aValue  =   ( a [ key  as   keyof   typeof  a ]   as   string )   ??   "" ; 
              const  bValue  =   ( b [ key  as   keyof   typeof  b ]   as   string )   ??   "" ; 
 
              return  direction  ===   "asc" 
                ?  aValue . localeCompare ( bValue ) 
                :  bValue . localeCompare ( aValue ) ; 
            } ) 
      ) ; 
    } } 
 /> To exclude a column from sorting, just omit sortKey. This applies to all sorting types. This example excludes the "Age" column.
< AdvancedTable 
    sortType = " automatic " 
    columns = { [ {  label :   "Name" ,  sortKey :   "name"   } ,   {  label :   "Age"   } ] } 
    rows = { [ 
      {  name :   "Alice" ,  age :   19   } , 
      {  name :   "Bob" ,  age :   25   } , 
    ] } 
    buildRow = { ( row :   RowData )   =>   ( 
      < > 
        < td > { row . name } </ td > 
        < td > { row . age } </ td > 
      </ > 
    ) } 
 /> < AdvancedTable 
    columns = { [ 
      { 
       label :   "Name" , 
       helpTooltipContent :   "Some help text to explain something" , 
      } , 
      { 
       label :   "Age" , 
      } , 
    ] } 
    rows = { [ 
      {  name :   "Alice" ,  age :   19   } , 
      {  name :   "Bob" ,  age :   25   } , 
    ] } 
    buildRow = { ( row )   =>   ( 
      < > 
        < td > { row . name } </ td > 
        < td > { row . age } </ td > 
      </ > 
    ) } 
 /> < AdvancedTable 
    sortType = " automatic " 
    columns = { [ 
      { 
       label :   "Name" , 
       sortKey :   "name" , 
       helpTooltipContent :   "Some help text to explain something" , 
      } , 
      { 
       label :   "Age" , 
       sortKey :   "age" , 
      } , 
    ] } 
    rows = { [ 
      {  name :   "Alice" ,  age :   19   } , 
      {  name :   "Bob" ,  age :   25   } , 
    ] } 
    buildRow = { ( row )   =>   ( 
      < > 
        < td > { row . name } </ td > 
        < td > { row . age } </ td > 
      </ > 
    ) } 
 />