diff --git a/app/Http/Controllers/TeamController.php b/app/Http/Controllers/TeamController.php
index 4e37d9e..b713d88 100644
--- a/app/Http/Controllers/TeamController.php
+++ b/app/Http/Controllers/TeamController.php
@@ -4,6 +4,7 @@ namespace App\Http\Controllers;
use App\Http\Requests\StoreTeamRequest;
use App\Http\Requests\UpdateTeamRequest;
+use App\Http\Resources\TeamResource;
use App\Models\Team;
use Illuminate\Http\Request;
use Inertia\Inertia;
@@ -16,7 +17,7 @@ class TeamController extends Controller
public function index(Request $request)
{
return Inertia::render('team/Index', [
- 'teams' => Team::visibleTo($request->user()),
+ 'teams' => TeamResource::collection(Team::visibleTo($request->user())->get())->resolve($request),
]);
}
diff --git a/package.json b/package.json
index e02f01f..b8115ba 100644
--- a/package.json
+++ b/package.json
@@ -14,12 +14,14 @@
"@inertiajs/vite": "^3.0.0",
"@inertiajs/vue3": "^3.0.0",
"@laravel/passkeys": "^0.2.0",
- "@lucide/vue": "^1.17.0",
+ "@lucide/vue": "^1.43.0",
"@vueuse/core": "^12.8.2",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
+ "cn": "^0.2.6",
"laravel-vite-plugin": "^3.0.0",
- "reka-ui": "^2.9.8",
+ "lucide-vue": "^0.517.0",
+ "reka-ui": "^2.10.4",
"tailwind-merge": "^3.2.0",
"tailwindcss": "^4.1.1",
"tw-animate-css": "^1.2.5",
@@ -50,9 +52,9 @@
"devEngines": {
"packageManager": {
"name": "pnpm",
- "version": "12.3.4",
+ "version": "11.26.0",
"onFail": "error"
}
},
- "packageManager": "pnpm@12.3.4"
+ "packageManager": "pnpm@11.26.0"
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 239321e..c733e04 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -6,97 +6,195 @@ importers:
.:
configDependencies: {}
packageManagerDependencies:
+ '@pnpm/exe':
+ specifier: 11.26.0
+ version: 11.26.0
pnpm:
- specifier: 12.3.4
- version: 12.3.4
+ specifier: 11.26.0
+ version: 11.26.0
packages:
- '@pnpm/exe.darwin-arm64@12.3.4':
- resolution: {integrity: sha512-PAyUol8T1+/+ViOiXAt51ECA+QnfXCqz6foL4bW+LsoX0NcVd5XVEM2mRQu+LV4oc7uRz9zf9U0P+XFfuQeDAw==}
+ '@pnpm/exe@11.26.0':
+ resolution: {integrity: sha512-eeiNi7WeXulOO1BzDAU9HIk+N3dokG+xwKPUupNQoZT5auL3rh2pFW9DqdIEnCC2xtt/hZd6UGtKyb6OMpqndw==}
+ hasBin: true
+
+ '@pnpm/linux-arm64@11.26.0':
+ resolution: {integrity: sha512-M0IDuD4hbXxpLBsj1/I9pODcxu/gxTDtbyQmsVGYu1TZwCCpf6YU1x3lzq8aCGjrysmXYQAtCiY8GBjdw4UGFg==}
cpu: [arm64]
- os: [darwin]
+ os: [linux]
- '@pnpm/exe.darwin-x64@12.3.4':
- resolution: {integrity: sha512-fxP9JCk0Cdye+ePuj+GJJLMUMTqHGWRdb1dtv4How876uQ2ehxvenpgiYAir/ceO9PsYUZkFTtyZdx+rRu5QOA==}
+ '@pnpm/linux-x64@11.26.0':
+ resolution: {integrity: sha512-nUuNRsFCGVje3FHtOaWxIQl2EP4NBktKr+PpLN7uhuWnJCCMN/F9RKjNJAM+dUPyvAZs8VDvS0kA8J55kyybyg==}
cpu: [x64]
- os: [darwin]
+ os: [linux]
- '@pnpm/exe.linux-arm64-musl@12.3.4':
- resolution: {integrity: sha512-FBOt0/7ye6O6q4AllVV5QMviB6qE6fqkeczV/+MDWQsmo+QJrlfsh6X7CpH/tClVpBZEyIbjpUoT8bNhCYBxEg==}
+ '@pnpm/linuxstatic-arm64@11.26.0':
+ resolution: {integrity: sha512-+dXROkvdWjskrQtjwJAFuJI7Q2uTkghBfLsd0vqRmorX3fPuinhoRjJJ/UPtWXzJqwcByJBmdJRW+q2964m5qQ==}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@pnpm/exe.linux-arm64@12.3.4':
- resolution: {integrity: sha512-t71AVA7LRqiKTyZ5xMYaZc2n5DfdpMbfokZuiIOXHBOM03ECnF0t4iYwaBDqJgVjlKYUOwaF/bRQajGNA4cJ4w==}
- cpu: [arm64]
- os: [linux]
- libc: [glibc]
-
- '@pnpm/exe.linux-x64-musl@12.3.4':
- resolution: {integrity: sha512-RPmk7Jb/aYaFvL2iyDN/AtMY+hUEsue732WmXpcuQ9tBpMnGyA5py7Z3+e+qmQaJ0zY/4ni9jJiyPBQHujmv6w==}
+ '@pnpm/linuxstatic-x64@11.26.0':
+ resolution: {integrity: sha512-0eXE6spzIBdCbYhJZQ0u/sIOD0v30sqk2PrzoixzsNMc7S/lhd7EkBMVJ6cCPiCL2TXvOsrJC2SpWPBK769A9A==}
cpu: [x64]
os: [linux]
libc: [musl]
- '@pnpm/exe.linux-x64@12.3.4':
- resolution: {integrity: sha512-2ZqOlSPkfwX1h5cR+FPiWf8+F+2hZT/3TvhUK5sigHqwaQCIiq8R7CGxhndKs63JtcLi2a1Qpo+wX/EoyfjyJQ==}
+ '@pnpm/macos-arm64@11.26.0':
+ resolution: {integrity: sha512-Za3kKV89Zj0SFzQf6zEUTUIy13xH8UiNyb7aILDRjPiTvTaUSCh3q+nvljISfGH1XcopXvo+p3K8Q2nrKYWAug==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@pnpm/win-arm64@11.26.0':
+ resolution: {integrity: sha512-5akeLtbqbFDdJtCV4qgLmDBV3R+XNs6E7h7Xb4ZBzS3rLRp8e/y/ZdgrZaGF5Kjo45g0BLAxdGUREHbU2/lGUw==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@pnpm/win-x64@11.26.0':
+ resolution: {integrity: sha512-f15SfIo7nppxBII+STy6jpd1z3LgGTZh6skfuxKA/xHmkzopnQJQXr4hBnl1rJLJAnmuOhN8BssaC4LiXmS78w==}
+ cpu: [x64]
+ os: [win32]
+
+ '@reflink/reflink-darwin-arm64@0.1.19':
+ resolution: {integrity: sha512-ruy44Lpepdk1FqDz38vExBY/PVUsjxZA+chd9wozjUH9JjuDT/HEaQYA6wYN9mf041l0yLVar6BCZuWABJvHSA==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@reflink/reflink-darwin-x64@0.1.19':
+ resolution: {integrity: sha512-By85MSWrMZa+c26TcnAy8SDk0sTUkYlNnwknSchkhHpGXOtjNDUOxJE9oByBnGbeuIE1PiQsxDG3Ud+IVV9yuA==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@reflink/reflink-linux-arm64-gnu@0.1.19':
+ resolution: {integrity: sha512-7P+er8+rP9iNeN+bfmccM4hTAaLP6PQJPKWSA4iSk2bNvo6KU6RyPgYeHxXmzNKzPVRcypZQTpFgstHam6maVg==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@reflink/reflink-linux-arm64-musl@0.1.19':
+ resolution: {integrity: sha512-37iO/Dp6m5DDaC2sf3zPtx/hl9FV3Xze4xoYidrxxS9bgP3S8ALroxRK6xBG/1TtfXKTvolvp+IjrUU6ujIGmA==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@reflink/reflink-linux-x64-gnu@0.1.19':
+ resolution: {integrity: sha512-jbI8jvuYCaA3MVUdu8vLoLAFqC+iNMpiSuLbxlAgg7x3K5bsS8nOpTRnkLF7vISJ+rVR8W+7ThXlXlUQ93ulkw==}
+ engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@pnpm/exe.win32-arm64@12.3.4':
- resolution: {integrity: sha512-ANyrHqyqco6SXBysUTRF74itDyyraea7IbFsKFdNXTjcFnfycTDx37EwuhdpPYFNSIh2JhUG4fByclsRfiHX7w==}
+ '@reflink/reflink-linux-x64-musl@0.1.19':
+ resolution: {integrity: sha512-e9FBWDe+lv7QKAwtKOt6A2W/fyy/aEEfr0g6j/hWzvQcrzHCsz07BNQYlNOjTfeytrtLU7k449H1PI95jA4OjQ==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@reflink/reflink-win32-arm64-msvc@0.1.19':
+ resolution: {integrity: sha512-09PxnVIQcd+UOn4WAW73WU6PXL7DwGS6wPlkMhMg2zlHHG65F3vHepOw06HFCq+N42qkaNAc8AKIabWvtk6cIQ==}
+ engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
- '@pnpm/exe.win32-x64@12.3.4':
- resolution: {integrity: sha512-WH/KqBPY/hq2Tb7SgQltEZytimcjgKRaCRL/aM9CI0c67iKc5TVmHUhIiL3Ux9FB4bWn36i6XewUcScQI+zG8w==}
+ '@reflink/reflink-win32-x64-msvc@0.1.19':
+ resolution: {integrity: sha512-E//yT4ni2SyhwP8JRjVGWr3cbnhWDiPLgnQ66qqaanjjnMiu3O/2tjCPQXlcGc/DEYofpDc9fvhv6tALQsMV9w==}
+ engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
- pnpm@12.3.4:
- resolution: {integrity: sha512-lhqkH7B32joEpEHZ+OFevAyW2o73ELLrZ7+e58sGEOq9SPH9hfUc/+c4RnhfoPh8VqOocqHYk/hEZ0G1zORUVw==}
- engines: {node: '>=18.*'}
+ '@reflink/reflink@0.1.19':
+ resolution: {integrity: sha512-DmCG8GzysnCZ15bres3N5AHCmwBwYgp0As6xjhQ47rAUTUXxJiK+lLUxaGsX3hd/30qUpVElh05PbGuxRPgJwA==}
+ engines: {node: '>= 10'}
+
+ detect-libc@2.1.2:
+ resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
+ engines: {node: '>=8'}
+
+ pnpm@11.26.0:
+ resolution: {integrity: sha512-/A4r+JC5+YNhHxq2jAY3vOkUOQZTaZ+DwaeLAF7SXyyB53kgyP2O7i7PC1iyjNywCoTZf2m898VrLzRHECOGZA==}
+ engines: {node: '>=22.13'}
hasBin: true
snapshots:
- '@pnpm/exe.darwin-arm64@12.3.4':
- optional: true
-
- '@pnpm/exe.darwin-x64@12.3.4':
- optional: true
-
- '@pnpm/exe.linux-arm64-musl@12.3.4':
- optional: true
-
- '@pnpm/exe.linux-arm64@12.3.4':
- optional: true
-
- '@pnpm/exe.linux-x64-musl@12.3.4':
- optional: true
-
- '@pnpm/exe.linux-x64@12.3.4':
- optional: true
-
- '@pnpm/exe.win32-arm64@12.3.4':
- optional: true
-
- '@pnpm/exe.win32-x64@12.3.4':
- optional: true
-
- pnpm@12.3.4:
+ '@pnpm/exe@11.26.0':
+ dependencies:
+ '@reflink/reflink': 0.1.19
+ detect-libc: 2.1.2
optionalDependencies:
- '@pnpm/exe.darwin-arm64': 12.3.4
- '@pnpm/exe.darwin-x64': 12.3.4
- '@pnpm/exe.linux-arm64': 12.3.4
- '@pnpm/exe.linux-arm64-musl': 12.3.4
- '@pnpm/exe.linux-x64': 12.3.4
- '@pnpm/exe.linux-x64-musl': 12.3.4
- '@pnpm/exe.win32-arm64': 12.3.4
- '@pnpm/exe.win32-x64': 12.3.4
+ '@pnpm/linux-arm64': 11.26.0
+ '@pnpm/linux-x64': 11.26.0
+ '@pnpm/linuxstatic-arm64': 11.26.0
+ '@pnpm/linuxstatic-x64': 11.26.0
+ '@pnpm/macos-arm64': 11.26.0
+ '@pnpm/win-arm64': 11.26.0
+ '@pnpm/win-x64': 11.26.0
+
+ '@pnpm/linux-arm64@11.26.0':
+ optional: true
+
+ '@pnpm/linux-x64@11.26.0':
+ optional: true
+
+ '@pnpm/linuxstatic-arm64@11.26.0':
+ optional: true
+
+ '@pnpm/linuxstatic-x64@11.26.0':
+ optional: true
+
+ '@pnpm/macos-arm64@11.26.0':
+ optional: true
+
+ '@pnpm/win-arm64@11.26.0':
+ optional: true
+
+ '@pnpm/win-x64@11.26.0':
+ optional: true
+
+ '@reflink/reflink-darwin-arm64@0.1.19':
+ optional: true
+
+ '@reflink/reflink-darwin-x64@0.1.19':
+ optional: true
+
+ '@reflink/reflink-linux-arm64-gnu@0.1.19':
+ optional: true
+
+ '@reflink/reflink-linux-arm64-musl@0.1.19':
+ optional: true
+
+ '@reflink/reflink-linux-x64-gnu@0.1.19':
+ optional: true
+
+ '@reflink/reflink-linux-x64-musl@0.1.19':
+ optional: true
+
+ '@reflink/reflink-win32-arm64-msvc@0.1.19':
+ optional: true
+
+ '@reflink/reflink-win32-x64-msvc@0.1.19':
+ optional: true
+
+ '@reflink/reflink@0.1.19':
+ optionalDependencies:
+ '@reflink/reflink-darwin-arm64': 0.1.19
+ '@reflink/reflink-darwin-x64': 0.1.19
+ '@reflink/reflink-linux-arm64-gnu': 0.1.19
+ '@reflink/reflink-linux-arm64-musl': 0.1.19
+ '@reflink/reflink-linux-x64-gnu': 0.1.19
+ '@reflink/reflink-linux-x64-musl': 0.1.19
+ '@reflink/reflink-win32-arm64-msvc': 0.1.19
+ '@reflink/reflink-win32-x64-msvc': 0.1.19
+
+ detect-libc@2.1.2: {}
+
+ pnpm@11.26.0: {}
---
lockfileVersion: '9.0'
@@ -119,7 +217,7 @@ importers:
specifier: ^0.2.0
version: 0.2.0(react@19.3.0)(vue@3.5.42(typescript@5.9.3))
'@lucide/vue':
- specifier: ^1.17.0
+ specifier: ^1.43.0
version: 1.43.0(vue@3.5.42(typescript@5.9.3))
'@vueuse/core':
specifier: ^12.8.2
@@ -130,11 +228,17 @@ importers:
clsx:
specifier: ^2.1.1
version: 2.1.1
+ cn:
+ specifier: ^0.2.6
+ version: 0.2.6
laravel-vite-plugin:
specifier: ^3.0.0
version: 3.2.0(vite@8.2.2(@types/node@22.20.2)(jiti@2.7.0))
+ lucide-vue:
+ specifier: ^0.517.0
+ version: 0.517.0(vue@3.5.42(typescript@5.9.3))
reka-ui:
- specifier: ^2.9.8
+ specifier: ^2.10.4
version: 2.10.4(vue@3.5.42(typescript@5.9.3))
tailwind-merge:
specifier: ^3.2.0
@@ -1023,6 +1127,11 @@ packages:
'@volar/typescript@2.4.15':
resolution: {integrity: sha512-2aZ8i0cqPGjXb4BhkMsPYDkkuc2ZQ6yOpqwAuNwUoncELqoy5fRgOQtLR9gB0g902iS0NAkvpIzs27geVyVdPg==}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
'@vue/compiler-core@3.5.42':
resolution: {integrity: sha512-2Ye1ilMtKXxl8qZUrQ5j0CdgenFp/HFQmta6rfRyfEsTG69L6Wk+tWuNoHYHMx9E8tF2Slvdg1FuwDvAXdy1LQ==}
@@ -1284,6 +1393,11 @@ packages:
resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
engines: {node: '>=6'}
+ cn@0.2.6:
+ resolution: {integrity: sha512-+i4L0zUGgRcEnhsxueVrP7iBGxBx5iD0WOTYg1MwFEu2ZyCmH5Ov2V1cul2Ht5UchRQQgftCf4be/RxspuW6QQ==}
+ engines: {node: '>=20'}
+ hasBin: true
+
code-excerpt@4.0.0:
resolution: {integrity: sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -1592,6 +1706,12 @@ packages:
resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==}
engines: {node: '>= 12.0.0'}
+ lucide-vue@0.517.0:
+ resolution: {integrity: sha512-ctSLCEslH5DchFq+/jku2cjQoBago2Q8EkK5i32hZaFVPV/6iUe1NjycwmIQLdprvEhnvNQxJbmEHUO5v41myw==}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ peerDependencies:
+ vue: ^2.6.12
+
lz-string@1.5.0:
resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==}
hasBin: true
@@ -2601,11 +2721,13 @@ snapshots:
'@volar/source-map@2.4.15': {}
- '@volar/typescript@2.4.15':
+ '@volar/typescript@2.4.15(typescript@5.9.3)':
dependencies:
'@volar/language-core': 2.4.15
path-browserify: 1.0.1
vscode-uri: 3.2.0
+ optionalDependencies:
+ typescript: 5.9.3
'@vue/compiler-core@3.5.42':
dependencies:
@@ -2841,6 +2963,8 @@ snapshots:
clsx@2.1.1: {}
+ cn@0.2.6: {}
+
code-excerpt@4.0.0:
dependencies:
convert-to-spaces: 2.0.1
@@ -3076,6 +3200,10 @@ snapshots:
lightningcss-win32-arm64-msvc: 1.33.0
lightningcss-win32-x64-msvc: 1.33.0
+ lucide-vue@0.517.0(vue@3.5.42(typescript@5.9.3)):
+ dependencies:
+ vue: 3.5.42(typescript@5.9.3)
+
lz-string@1.5.0: {}
magic-string@0.30.21:
@@ -3462,7 +3590,7 @@ snapshots:
vue-tsc@2.2.12(typescript@5.9.3):
dependencies:
- '@volar/typescript': 2.4.15
+ '@volar/typescript': 2.4.15(typescript@5.9.3)
'@vue/language-core': 2.2.12(typescript@5.9.3)
typescript: 5.9.3
diff --git a/resources/js/components/ui/button/index.ts b/resources/js/components/ui/button/index.ts
index 26e2c55..0a62178 100644
--- a/resources/js/components/ui/button/index.ts
+++ b/resources/js/components/ui/button/index.ts
@@ -4,7 +4,7 @@ import { cva } from "class-variance-authority"
export { default as Button } from "./Button.vue"
export const buttonVariants = cva(
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
{
variants: {
variant: {
@@ -22,9 +22,11 @@ export const buttonVariants = cva(
},
size: {
"default": "h-9 px-4 py-2 has-[>svg]:px-3",
+ "xs": "h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",
"sm": "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
"lg": "h-10 rounded-md px-6 has-[>svg]:px-4",
"icon": "size-9",
+ "icon-xs": "size-6 rounded-md [&_svg:not([class*='size-'])]:size-3",
"icon-sm": "size-8",
"icon-lg": "size-10",
},
diff --git a/resources/js/components/ui/table/Table.vue b/resources/js/components/ui/table/Table.vue
new file mode 100644
index 0000000..0d0cd9b
--- /dev/null
+++ b/resources/js/components/ui/table/Table.vue
@@ -0,0 +1,16 @@
+
+
+
+
+
diff --git a/resources/js/components/ui/table/TableBody.vue b/resources/js/components/ui/table/TableBody.vue
new file mode 100644
index 0000000..d14a2d3
--- /dev/null
+++ b/resources/js/components/ui/table/TableBody.vue
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
diff --git a/resources/js/components/ui/table/TableCaption.vue b/resources/js/components/ui/table/TableCaption.vue
new file mode 100644
index 0000000..3630084
--- /dev/null
+++ b/resources/js/components/ui/table/TableCaption.vue
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
diff --git a/resources/js/components/ui/table/TableCell.vue b/resources/js/components/ui/table/TableCell.vue
new file mode 100644
index 0000000..3a83b7d
--- /dev/null
+++ b/resources/js/components/ui/table/TableCell.vue
@@ -0,0 +1,22 @@
+
+
+
+ |
+
+ |
+
diff --git a/resources/js/components/ui/table/TableEmpty.vue b/resources/js/components/ui/table/TableEmpty.vue
new file mode 100644
index 0000000..9519328
--- /dev/null
+++ b/resources/js/components/ui/table/TableEmpty.vue
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/resources/js/components/ui/table/TableFooter.vue b/resources/js/components/ui/table/TableFooter.vue
new file mode 100644
index 0000000..29e0ce9
--- /dev/null
+++ b/resources/js/components/ui/table/TableFooter.vue
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
diff --git a/resources/js/components/ui/table/TableHead.vue b/resources/js/components/ui/table/TableHead.vue
new file mode 100644
index 0000000..3a2ea4c
--- /dev/null
+++ b/resources/js/components/ui/table/TableHead.vue
@@ -0,0 +1,17 @@
+
+
+
+
+
+ |
+
diff --git a/resources/js/components/ui/table/TableHeader.vue b/resources/js/components/ui/table/TableHeader.vue
new file mode 100644
index 0000000..b4ab5cf
--- /dev/null
+++ b/resources/js/components/ui/table/TableHeader.vue
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
diff --git a/resources/js/components/ui/table/TableRow.vue b/resources/js/components/ui/table/TableRow.vue
new file mode 100644
index 0000000..8f1d172
--- /dev/null
+++ b/resources/js/components/ui/table/TableRow.vue
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
diff --git a/resources/js/components/ui/table/index.ts b/resources/js/components/ui/table/index.ts
new file mode 100644
index 0000000..3be308b
--- /dev/null
+++ b/resources/js/components/ui/table/index.ts
@@ -0,0 +1,9 @@
+export { default as Table } from "./Table.vue"
+export { default as TableBody } from "./TableBody.vue"
+export { default as TableCaption } from "./TableCaption.vue"
+export { default as TableCell } from "./TableCell.vue"
+export { default as TableEmpty } from "./TableEmpty.vue"
+export { default as TableFooter } from "./TableFooter.vue"
+export { default as TableHead } from "./TableHead.vue"
+export { default as TableHeader } from "./TableHeader.vue"
+export { default as TableRow } from "./TableRow.vue"
diff --git a/resources/js/pages/team/Index.vue b/resources/js/pages/team/Index.vue
index 99f3903..0809a74 100644
--- a/resources/js/pages/team/Index.vue
+++ b/resources/js/pages/team/Index.vue
@@ -4,6 +4,16 @@ import teamRoutes from "@/routes/teams";
import {Head} from "@inertiajs/vue3";
import type {Team} from "@/types/models";
import TextLink from "@/components/TextLink.vue";
+import {Card, CardContent} from "@/components/ui/card";
+import {
+ Table,
+ TableBody,
+ TableCaption,
+ TableCell,
+ TableHead,
+ TableHeader,
+ TableRow,
+} from "@/components/ui/table"
defineOptions({
layout: {
@@ -24,32 +34,37 @@ defineProps<{
-
+
+
+
+
+
+
+ Name
+ Slug
+ Mitglieder
+ 2FA
+
+
+
+
+ {{ team.name }}
+ {{ team.slug }}
+ {{ team.members.length }}
+ {{ team.multi_factor_required }}
+
+
+
+ Du bist noch von keinem Team mitglied.
+ Tritt einem Team bei oder
+ erstelle eins.
+
+
+
+
-
-
-
- | Name |
- Slug |
- Mitglieder |
- 2FA |
-
-
-
-
- | {{ team.name }} |
- {{ team.slug }} |
- {{ team.members.length }} |
- {{ team.multi_factor_required }} |
-
-
- Du bist noch von keinem Team mitglied.
- Tritt einem Team bei oder erstelle eins.
-
-
-