diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml
index 77bc3cf..8e0c1f8 100644
--- a/.github/workflows/node.js.yml
+++ b/.github/workflows/node.js.yml
@@ -53,3 +53,18 @@ jobs:
cache: 'npm'
- run: npm i
- run: npm run build:package
+ build-types:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ node-version: [ 16.x, 18.x ]
+ # See supported Node.js release schedule at https://nodejs.org/en/about/releases/
+ steps:
+ - uses: actions/checkout@v3
+ - name: Use Node.js ${{ matrix.node-version }}
+ uses: actions/setup-node@v3
+ with:
+ node-version: ${{ matrix.node-version }}
+ cache: 'npm'
+ - run: npm i
+ - run: npm run build:types
diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts
index b4f2b3a..fe1830a 100644
--- a/docs/.vitepress/config.ts
+++ b/docs/.vitepress/config.ts
@@ -11,17 +11,23 @@ function buildSidebar() {
{
text: 'Components',
collapsible: true,
- items: [...getComponents()],
+ items: [
+ ...getComponents(),
+ ],
},
{
text: 'Form',
collapsible: true,
- items: [...getFormComponents()],
+ items: [
+ ...getFormComponents(),
+ ],
},
{
text: 'Utils',
collapsible: true,
- items: [...getUtils()],
+ items: [
+ ...getUtils(),
+ ],
},
]
}
@@ -41,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: 'Timeline', link: 'components/timeline' },
@@ -52,18 +59,19 @@ function getComponents() {
{ text: '- Footer', link: 'components/footer' },
{ text: '- Pagination', link: 'components/pagination' },
{ text: '- Sidebar', link: 'components/sidebar' },
- { text: '- Table', link: 'components/table' },
]
}
function getFormComponents() {
- return [{ text: 'Input', link: 'components/input' }]
+ return [
+ { text: 'Input', link: 'components/input' },
+ ]
}
function getUtils() {
return [
{ text: 'Flowbite Themable', link: '/components/flowbiteThemable/flowbiteThemable.md' },
- { text: 'Toast Provider', link: '/components/toastProvider/toastProvider.md' },
+ { text: 'Toast Provider', link: '/components/toastProvider/toastProvider.md' }
]
}
@@ -74,18 +82,21 @@ function getUtils() {
export default defineConfig({
title: 'Flowbite Vue 3',
cleanUrls: 'without-subfolders',
- head: [['link', { rel: 'icon', type: 'image/svg', href: '/assets/logo.svg' }]],
+ head: [
+ ['link', { rel: "icon", type: "image/svg", href: "/assets/logo.svg"}],
+ ],
themeConfig: {
sidebar: buildSidebar(),
logo: '/assets/logo.svg',
socialLinks: [
{ icon: 'github', link: 'https://github.com/themesberg/flowbite-vue' },
- { icon: 'discord', link: 'https://discord.gg/4eeurUVvTy' },
+ { icon: 'discord', link: 'https://discord.gg/4eeurUVvTy' }
],
footer: {
message: 'Released under the MIT License.',
- copyright: 'Copyright © 2022 Flowbite™',
+ copyright: 'Copyright © 2022 Flowbite™'
},
+
},
})
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/package-lock.json b/package-lock.json
index 8832eaf..b856eee 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "flowbite-vue",
- "version": "0.0.9",
+ "version": "0.0.10",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "flowbite-vue",
- "version": "0.0.9",
+ "version": "0.0.10",
"license": "MIT",
"dependencies": {
"@vueuse/core": "9.3.0",
@@ -42,8 +42,8 @@
"vue-tsc": "0.30.0"
},
"engines": {
- "node": "14.x",
- "npm": "8.x"
+ "node": ">=14.x",
+ "npm": ">=6.x"
},
"peerDependencies": {
"tailwindcss": "^3",
@@ -357,15 +357,15 @@
}
},
"node_modules/@eslint/eslintrc": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz",
- "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.0.tgz",
+ "integrity": "sha512-7yfvXy6MWLgWSFsLhz5yH3iQ52St8cdUY6FoGieKkRDVxuxmrNuUetIuu6cmjNWwniUHiWXjxCr5tTXDrbYS5A==",
"dev": true,
"dependencies": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
"espree": "^9.4.0",
- "globals": "^13.15.0",
+ "globals": "^13.19.0",
"ignore": "^5.2.0",
"import-fresh": "^3.2.1",
"js-yaml": "^4.1.0",
@@ -393,9 +393,9 @@
}
},
"node_modules/@humanwhocodes/config-array": {
- "version": "0.11.7",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz",
- "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==",
+ "version": "0.11.8",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz",
+ "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==",
"dev": true,
"dependencies": {
"@humanwhocodes/object-schema": "^1.2.1",
@@ -2811,9 +2811,9 @@
}
},
"node_modules/globals": {
- "version": "13.18.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz",
- "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==",
+ "version": "13.19.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz",
+ "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==",
"dev": true,
"dependencies": {
"type-fest": "^0.20.2"
@@ -4768,14 +4768,14 @@
"dev": true
},
"node_modules/vitepress/node_modules/@vueuse/core": {
- "version": "9.6.0",
- "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.6.0.tgz",
- "integrity": "sha512-qGUcjKQXHgN+jqXEgpeZGoxdCbIDCdVPz3QiF1uyecVGbMuM63o96I1GjYx5zskKgRI0FKSNsVWM7rwrRMTf6A==",
+ "version": "9.7.0",
+ "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.7.0.tgz",
+ "integrity": "sha512-/AGY/t7jJPxCyRoVTygNKoroTiCvRaaZIW+yeSlBCnI7QRpQ9cvXNTdNaSl3GvSyFbn83+XwZwEZvI1OpQfeGw==",
"dev": true,
"dependencies": {
"@types/web-bluetooth": "^0.0.16",
- "@vueuse/metadata": "9.6.0",
- "@vueuse/shared": "9.6.0",
+ "@vueuse/metadata": "9.7.0",
+ "@vueuse/shared": "9.7.0",
"vue-demi": "*"
},
"funding": {
@@ -4809,18 +4809,18 @@
}
},
"node_modules/vitepress/node_modules/@vueuse/metadata": {
- "version": "9.6.0",
- "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.6.0.tgz",
- "integrity": "sha512-sIC8R+kWkIdpi5X2z2Gk8TRYzmczDwHRhEFfCu2P+XW2JdPoXrziqsGpDDsN7ykBx4ilwieS7JUIweVGhvZ93w==",
+ "version": "9.7.0",
+ "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.7.0.tgz",
+ "integrity": "sha512-M7WsAgw28FNtTH0bzsGuHEtJOPJqPpyeHS6PHq+8UesLgNjZ9waMAntiUrgUQlxt09M4i2lH7y9sRi0jkfeXGA==",
"dev": true,
"funding": {
"url": "https://github.com/sponsors/antfu"
}
},
"node_modules/vitepress/node_modules/@vueuse/shared": {
- "version": "9.6.0",
- "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.6.0.tgz",
- "integrity": "sha512-/eDchxYYhkHnFyrb00t90UfjCx94kRHxc7J1GtBCqCG4HyPMX+krV9XJgVtWIsAMaxKVU4fC8NSUviG1JkwhUQ==",
+ "version": "9.7.0",
+ "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.7.0.tgz",
+ "integrity": "sha512-pwmt1y3TJ2s5KqWmkv9ZKEV59GwuZQZk8XLiU+hGswz0jej318ozbea9E4A/A50ksyM26swSFr7sZ9llNPsZHg==",
"dev": true,
"dependencies": {
"vue-demi": "*"
@@ -4988,9 +4988,9 @@
}
},
"node_modules/vscode-languageserver-textdocument": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.7.tgz",
- "integrity": "sha512-bFJH7UQxlXT8kKeyiyu41r22jCZXG8kuuVVA33OEJn1diWOZK5n8zBSPZFHVBOu8kXZ6h0LIRhf5UnCo61J4Hg==",
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.8.tgz",
+ "integrity": "sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==",
"dev": true
},
"node_modules/vscode-languageserver-types": {
@@ -5048,9 +5048,9 @@
}
},
"node_modules/vscode-uri": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.6.tgz",
- "integrity": "sha512-fmL7V1eiDBFRRnu+gfRWTzyPpNIHJTc4mWnFkwBUmO9U3KPgJAmTx7oxi2bl/Rh6HLdU7+4C9wlj0k2E4AdKFQ==",
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.7.tgz",
+ "integrity": "sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==",
"dev": true
},
"node_modules/vscode-vue-languageservice": {
@@ -5641,15 +5641,15 @@
"optional": true
},
"@eslint/eslintrc": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz",
- "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.0.tgz",
+ "integrity": "sha512-7yfvXy6MWLgWSFsLhz5yH3iQ52St8cdUY6FoGieKkRDVxuxmrNuUetIuu6cmjNWwniUHiWXjxCr5tTXDrbYS5A==",
"dev": true,
"requires": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
"espree": "^9.4.0",
- "globals": "^13.15.0",
+ "globals": "^13.19.0",
"ignore": "^5.2.0",
"import-fresh": "^3.2.1",
"js-yaml": "^4.1.0",
@@ -5671,9 +5671,9 @@
}
},
"@humanwhocodes/config-array": {
- "version": "0.11.7",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz",
- "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==",
+ "version": "0.11.8",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz",
+ "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==",
"dev": true,
"requires": {
"@humanwhocodes/object-schema": "^1.2.1",
@@ -7400,9 +7400,9 @@
}
},
"globals": {
- "version": "13.18.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz",
- "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==",
+ "version": "13.19.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz",
+ "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==",
"dev": true,
"requires": {
"type-fest": "^0.20.2"
@@ -8801,14 +8801,14 @@
"dev": true
},
"@vueuse/core": {
- "version": "9.6.0",
- "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.6.0.tgz",
- "integrity": "sha512-qGUcjKQXHgN+jqXEgpeZGoxdCbIDCdVPz3QiF1uyecVGbMuM63o96I1GjYx5zskKgRI0FKSNsVWM7rwrRMTf6A==",
+ "version": "9.7.0",
+ "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.7.0.tgz",
+ "integrity": "sha512-/AGY/t7jJPxCyRoVTygNKoroTiCvRaaZIW+yeSlBCnI7QRpQ9cvXNTdNaSl3GvSyFbn83+XwZwEZvI1OpQfeGw==",
"dev": true,
"requires": {
"@types/web-bluetooth": "^0.0.16",
- "@vueuse/metadata": "9.6.0",
- "@vueuse/shared": "9.6.0",
+ "@vueuse/metadata": "9.7.0",
+ "@vueuse/shared": "9.7.0",
"vue-demi": "*"
},
"dependencies": {
@@ -8822,15 +8822,15 @@
}
},
"@vueuse/metadata": {
- "version": "9.6.0",
- "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.6.0.tgz",
- "integrity": "sha512-sIC8R+kWkIdpi5X2z2Gk8TRYzmczDwHRhEFfCu2P+XW2JdPoXrziqsGpDDsN7ykBx4ilwieS7JUIweVGhvZ93w==",
+ "version": "9.7.0",
+ "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.7.0.tgz",
+ "integrity": "sha512-M7WsAgw28FNtTH0bzsGuHEtJOPJqPpyeHS6PHq+8UesLgNjZ9waMAntiUrgUQlxt09M4i2lH7y9sRi0jkfeXGA==",
"dev": true
},
"@vueuse/shared": {
- "version": "9.6.0",
- "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.6.0.tgz",
- "integrity": "sha512-/eDchxYYhkHnFyrb00t90UfjCx94kRHxc7J1GtBCqCG4HyPMX+krV9XJgVtWIsAMaxKVU4fC8NSUviG1JkwhUQ==",
+ "version": "9.7.0",
+ "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.7.0.tgz",
+ "integrity": "sha512-pwmt1y3TJ2s5KqWmkv9ZKEV59GwuZQZk8XLiU+hGswz0jej318ozbea9E4A/A50ksyM26swSFr7sZ9llNPsZHg==",
"dev": true,
"requires": {
"vue-demi": "*"
@@ -8938,9 +8938,9 @@
}
},
"vscode-languageserver-textdocument": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.7.tgz",
- "integrity": "sha512-bFJH7UQxlXT8kKeyiyu41r22jCZXG8kuuVVA33OEJn1diWOZK5n8zBSPZFHVBOu8kXZ6h0LIRhf5UnCo61J4Hg==",
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.8.tgz",
+ "integrity": "sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==",
"dev": true
},
"vscode-languageserver-types": {
@@ -8996,9 +8996,9 @@
}
},
"vscode-uri": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.6.tgz",
- "integrity": "sha512-fmL7V1eiDBFRRnu+gfRWTzyPpNIHJTc4mWnFkwBUmO9U3KPgJAmTx7oxi2bl/Rh6HLdU7+4C9wlj0k2E4AdKFQ==",
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.7.tgz",
+ "integrity": "sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==",
"dev": true
},
"vscode-vue-languageservice": {
diff --git a/package.json b/package.json
index 4fba9f5..c96214f 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "flowbite-vue",
- "version": "0.0.9",
+ "version": "0.0.10",
"repository": "https://github.com/themesberg/flowbite-vue.git",
"author": "themesberg",
"license": "MIT",
@@ -74,7 +74,7 @@
"tailwindcss": "^3"
},
"engines": {
- "node": "14.x",
- "npm": "8.x"
+ "node": ">=14.x",
+ "npm": ">=6.x"
}
}
diff --git a/src/components/Accordion/AccordionContent.vue b/src/components/Accordion/AccordionContent.vue
index 25e9274..8360fe5 100644
--- a/src/components/Accordion/AccordionContent.vue
+++ b/src/components/Accordion/AccordionContent.vue
@@ -12,11 +12,10 @@
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 7d76c84..1a34345 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 TimelineItem } from './components/Timeline/TimelineItem.vue'
export { default as TimelinePoint } from './components/Timeline/TimelinePoint.vue'