diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts
index 492e67d..38db977 100644
--- a/docs/.vitepress/config.ts
+++ b/docs/.vitepress/config.ts
@@ -47,6 +47,7 @@ function getComponents() {
{ text: 'Progress', link: 'components/progress' },
{ text: 'Rating', link: 'components/rating' },
{ text: 'Spinner', link: '/components/spinner' },
+ { text: 'Table', link: 'components/table' },
{ text: 'Tabs', link: '/components/tabs' },
{ text: 'ListGroup', link: 'components/list-group' },
{ text: 'Toast', link: 'components/toast' },
@@ -57,7 +58,6 @@ function getComponents() {
{ text: '- Footer', link: 'components/footer' },
{ text: '- Pagination', link: 'components/pagination' },
{ text: '- Sidebar', link: 'components/sidebar' },
- { text: '- Table', link: 'components/table' },
{ text: '- Timeline', link: 'components/timeline' },
]
}
diff --git a/docs/components/table.md b/docs/components/table.md
index 163ec9d..3d9f3a2 100644
--- a/docs/components/table.md
+++ b/docs/components/table.md
@@ -1,15 +1,219 @@
# Vue Table Component - Flowbite
-```vue
-
-
-
-
-```
+#### Button groups are a Tailwind CSS powered set of buttons sticked together in a horizontal line
+
+---
+
+:::tip
+Original reference: [https://flowbite.com/docs/components/tables/](https://flowbite.com/docs/components/tables/)
+:::
+
+## Basic example
+
+```vue
+
+
+
+ Product name
+ Color
+ Category
+ Price
+ Edit
+
+
+
+ Apple MacBook Pro 17"
+ Sliver
+ Laptop
+ $2999
+
+ Edit
+
+
+
+ Microsoft Surface Pro
+ White
+ Laptop PC
+ $1999
+
+ Edit
+
+
+
+ Magic Mouse 2
+ Black
+ Accessories
+ $99
+
+ Edit
+
+
+
+
+
+
+
+```
+
+## Striped example
+
+
+
+```vue
+
+
+
+ Product name
+ Color
+ Category
+ Price
+ Edit
+
+
+
+ Apple MacBook Pro 17"
+ Sliver
+ Laptop
+ $2999
+
+ Edit
+
+
+
+ Microsoft Surface Pro
+ White
+ Laptop PC
+ $1999
+
+ Edit
+
+
+
+ Magic Mouse 2
+ Black
+ Accessories
+ $99
+
+ Edit
+
+
+
+
+
+
+
+```
+
+## Striped columns example
+
+
+
+```vue
+
+
+
+ Product name
+ Color
+ Category
+ Price
+ Edit
+
+
+
+ Apple MacBook Pro 17"
+ Sliver
+ Laptop
+ $2999
+
+ Edit
+
+
+
+ Microsoft Surface Pro
+ White
+ Laptop PC
+ $1999
+
+ Edit
+
+
+
+ Magic Mouse 2
+ Black
+ Accessories
+ $99
+
+ Edit
+
+
+
+
+
+
+
+```
+
+## Hoverable example
+
+
+
+```vue
+
+
+
+ Product name
+ Color
+ Category
+ Price
+ Edit
+
+
+
+ Apple MacBook Pro 17"
+ Sliver
+ Laptop
+ $2999
+
+ Edit
+
+
+
+ Microsoft Surface Pro
+ White
+ Laptop PC
+ $1999
+
+ Edit
+
+
+
+ Magic Mouse 2
+ Black
+ Accessories
+ $99
+
+ Edit
+
+
+
+
+
+
+
+```
diff --git a/docs/components/table/examples/TableExample.vue b/docs/components/table/examples/TableExample.vue
index e2c2921..0258b50 100644
--- a/docs/components/table/examples/TableExample.vue
+++ b/docs/components/table/examples/TableExample.vue
@@ -1,8 +1,43 @@
-
+
+
+ Product name
+ Color
+ Category
+ Price
+ Edit
+
+
+
+ Apple MacBook Pro 17"
+ Sliver
+ Laptop
+ $2999
+
+ Edit
+
+
+
+ Microsoft Surface Pro
+ White
+ Laptop PC
+ $1999
+
+ Edit
+
+
+
+ Magic Mouse 2
+ Black
+ Accessories
+ $99
+
+ Edit
+
+
+
+
diff --git a/docs/components/table/examples/TableHoverableExample.vue b/docs/components/table/examples/TableHoverableExample.vue
new file mode 100644
index 0000000..40488b0
--- /dev/null
+++ b/docs/components/table/examples/TableHoverableExample.vue
@@ -0,0 +1,43 @@
+
+
+
+ Product name
+ Color
+ Category
+ Price
+ Edit
+
+
+
+ Apple MacBook Pro 17"
+ Sliver
+ Laptop
+ $2999
+
+ Edit
+
+
+
+ Microsoft Surface Pro
+ White
+ Laptop PC
+ $1999
+
+ Edit
+
+
+
+ Magic Mouse 2
+ Black
+ Accessories
+ $99
+
+ Edit
+
+
+
+
+
+
diff --git a/docs/components/table/examples/TableStripedColumnsExample.vue b/docs/components/table/examples/TableStripedColumnsExample.vue
new file mode 100644
index 0000000..7508083
--- /dev/null
+++ b/docs/components/table/examples/TableStripedColumnsExample.vue
@@ -0,0 +1,43 @@
+
+
+
+ Product name
+ Color
+ Category
+ Price
+ Edit
+
+
+
+ Apple MacBook Pro 17"
+ Sliver
+ Laptop
+ $2999
+
+ Edit
+
+
+
+ Microsoft Surface Pro
+ White
+ Laptop PC
+ $1999
+
+ Edit
+
+
+
+ Magic Mouse 2
+ Black
+ Accessories
+ $99
+
+ Edit
+
+
+
+
+
+
diff --git a/docs/components/table/examples/TableStripedExample.vue b/docs/components/table/examples/TableStripedExample.vue
new file mode 100644
index 0000000..bfbb7d5
--- /dev/null
+++ b/docs/components/table/examples/TableStripedExample.vue
@@ -0,0 +1,43 @@
+
+
+
+ Product name
+ Color
+ Category
+ Price
+ Edit
+
+
+
+ Apple MacBook Pro 17"
+ Sliver
+ Laptop
+ $2999
+
+ Edit
+
+
+
+ Microsoft Surface Pro
+ White
+ Laptop PC
+ $1999
+
+ Edit
+
+
+
+ Magic Mouse 2
+ Black
+ Accessories
+ $99
+
+ Edit
+
+
+
+
+
+
diff --git a/src/components/Table/Table.vue b/src/components/Table/Table.vue
index ff2de14..cb190ec 100644
--- a/src/components/Table/Table.vue
+++ b/src/components/Table/Table.vue
@@ -1,104 +1,29 @@
-
-
- |
- Product name
- |
-
- Color
- |
-
- Category
- |
-
- Price
- |
-
- Edit
- |
-
-
-
-
- |
- Apple MacBook Pro 17"
- |
-
- Sliver
- |
-
- Laptop
- |
-
- $2999
- |
-
- Edit
- |
-
-
- |
- Microsoft Surface Pro
- |
-
- White
- |
-
- Laptop PC
- |
-
- $1999
- |
-
- Edit
- |
-
-
- |
- Magic Mouse 2
- |
-
- Black
- |
-
- Accessories
- |
-
- $99
- |
-
- Edit
- |
-
-
+
diff --git a/src/components/Table/TableBody.vue b/src/components/Table/TableBody.vue
new file mode 100644
index 0000000..9a1b1f0
--- /dev/null
+++ b/src/components/Table/TableBody.vue
@@ -0,0 +1,7 @@
+
+
+
+
+
+
diff --git a/src/components/Table/TableCell.vue b/src/components/Table/TableCell.vue
new file mode 100644
index 0000000..9bc5e9a
--- /dev/null
+++ b/src/components/Table/TableCell.vue
@@ -0,0 +1,11 @@
+
+
+
+ |
+
+
diff --git a/src/components/Table/TableHead.vue b/src/components/Table/TableHead.vue
new file mode 100644
index 0000000..16aba62
--- /dev/null
+++ b/src/components/Table/TableHead.vue
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/Table/TableHeadCell.vue b/src/components/Table/TableHeadCell.vue
new file mode 100644
index 0000000..b8e08b6
--- /dev/null
+++ b/src/components/Table/TableHeadCell.vue
@@ -0,0 +1,10 @@
+
+
+
+ |
+
+
diff --git a/src/components/Table/TableRow.vue b/src/components/Table/TableRow.vue
new file mode 100644
index 0000000..f129b2a
--- /dev/null
+++ b/src/components/Table/TableRow.vue
@@ -0,0 +1,10 @@
+
+
+
+
+
+
diff --git a/src/components/Table/composables/useTableCellClasses.ts b/src/components/Table/composables/useTableCellClasses.ts
new file mode 100644
index 0000000..86cd6c8
--- /dev/null
+++ b/src/components/Table/composables/useTableCellClasses.ts
@@ -0,0 +1,20 @@
+import { computed, inject } from 'vue'
+import type { Ref } from 'vue'
+import classNames from 'classnames'
+
+const baseClasses = 'px-6 py-4 first:font-medium first:text-gray-900 first:dark:text-white first:whitespace-nowrap last:text-right'
+const stripedCellClasses = 'even:bg-gray-white even:dark:bg-gray-900 odd:dark:bg-gray-800 odd:bg-gray-50'
+
+export function useTableCellClasses(): { tableCellClasses: Ref } {
+ const isColumnsStriped = inject('stripedColumns')
+
+ const tableCellClasses = computed(() => {
+ return classNames(baseClasses, {
+ [stripedCellClasses]: isColumnsStriped,
+ })
+ })
+
+ return {
+ tableCellClasses,
+ }
+}
diff --git a/src/components/Table/composables/useTableHeadCellClasses.ts b/src/components/Table/composables/useTableHeadCellClasses.ts
new file mode 100644
index 0000000..f928fe8
--- /dev/null
+++ b/src/components/Table/composables/useTableHeadCellClasses.ts
@@ -0,0 +1,20 @@
+import { computed, inject } from 'vue'
+import type { Ref } from 'vue'
+import classNames from 'classnames'
+
+const baseClasses = 'px-6 py-3 text-xs uppercase'
+const stripedHeadCellClasses = 'even:bg-white even:dark:bg-gray-900 odd:dark:bg-gray-800 odd:bg-gray-50'
+
+export function useTableHeadCellClasses(): { tableHeadCellClasses: Ref } {
+ const isColumnsStriped = inject('stripedColumns')
+
+ const tableHeadCellClasses = computed(() => {
+ return classNames(baseClasses, {
+ [stripedHeadCellClasses]: isColumnsStriped,
+ })
+ })
+
+ return {
+ tableHeadCellClasses,
+ }
+}
diff --git a/src/components/Table/composables/useTableRowClasses.ts b/src/components/Table/composables/useTableRowClasses.ts
new file mode 100644
index 0000000..75209e5
--- /dev/null
+++ b/src/components/Table/composables/useTableRowClasses.ts
@@ -0,0 +1,23 @@
+import { computed, inject } from 'vue'
+import type { Ref } from 'vue'
+import classNames from 'classnames'
+
+const baseClasses = 'bg-white dark:bg-gray-800 [&:not(:last-child)]:border-b [&:not(:last-child)]:dark:border-gray-700'
+const stripedClasses = 'odd:bg-white even:bg-gray-50 odd:dark:bg-gray-800 even:dark:bg-gray-700'
+const hoverableClasses = 'hover:bg-gray-50 dark:hover:bg-gray-600'
+
+export function useTableRowClasses(): { tableRowClasses: Ref } {
+ const isStriped = inject('striped')
+ const isHoverable = inject('hoverable')
+
+ const tableRowClasses = computed(() => {
+ return classNames(baseClasses, {
+ [stripedClasses]: isStriped,
+ [hoverableClasses]: isHoverable,
+ })
+ })
+
+ return {
+ tableRowClasses,
+ }
+}
diff --git a/src/index.ts b/src/index.ts
index 9de0f19..466a0a8 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -32,6 +32,11 @@ export { default as Progress } from './components/Progress/Progress.vue'
export { default as Rating } from './components/Rating/Rating.vue'
export { default as Sidebar } from './components/Sidebar/Sidebar.vue'
export { default as Table } from './components/Table/Table.vue'
+export { default as TableHead } from './components/Table/TableHead.vue'
+export { default as TableBody } from './components/Table/TableBody.vue'
+export { default as TableHeadCell } from './components/Table/TableHeadCell.vue'
+export { default as TableRow } from './components/Table/TableRow.vue'
+export { default as TableCell } from './components/Table/TableCell.vue'
export { default as Timeline } from './components/Timeline/Timeline.vue'
export { default as Toast } from './components/Toast/Toast.vue'
export { default as ToastProvider } from './components/Toast/components/ToastProvider/ToastProvider.vue'