diff --git a/app/Http/Controllers/JobController.php b/app/Http/Controllers/JobController.php index 5d9af6b..907fd5d 100644 --- a/app/Http/Controllers/JobController.php +++ b/app/Http/Controllers/JobController.php @@ -21,7 +21,7 @@ class JobController extends Controller public function show($jobId, Request $request) { return Inertia::render('Job', [ - 'job' => Job::where('id', $jobId)->with('jobInfos')->first(), + 'job' => Job::where('id', $jobId)->with('jobInfos', 'jobRuns')->first(), 'error' => $request->input('error'), ]); } diff --git a/components.json b/components.json index 30afef8..e21e779 100644 --- a/components.json +++ b/components.json @@ -2,7 +2,6 @@ "$schema": "https://shadcn-vue.com/schema.json", "style": "default", "typescript": true, - "tsConfigPath": "./tsconfig.json", "tailwind": { "config": "tailwind.config.js", "css": "resources/css/app.css", @@ -10,9 +9,12 @@ "cssVariables": true, "prefix": "" }, - "framework": "laravel", "aliases": { "components": "@/Components", - "utils": "@/lib/utils" - } + "composables": "@/composables", + "utils": "@/lib/utils", + "ui": "@/Components/ui", + "lib": "@/lib" + }, + "iconLibrary": "lucide" } diff --git a/package-lock.json b/package-lock.json index 016807c..00fabbf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "lucide-react": "^0.474.0", "lucide-vue-next": "^0.474.0", "radix-vue": "^1.9.13", + "reka-ui": "^2.1.0", "tailwind-merge": "^2.6.0", "tailwindcss-animate": "^1.0.7" }, @@ -21,8 +22,10 @@ "autoprefixer": "^10.4.12", "axios": "^1.7.4", "concurrently": "^9.0.1", + "laravel-echo": "^2.0.2", "laravel-vite-plugin": "^1.2.0", "postcss": "^8.4.31", + "pusher-js": "^8.4.0", "sass-embedded": "^1.83.4", "tailwindcss": "^3.2.1", "typescript": "^5.6.3", @@ -956,20 +959,20 @@ } }, "node_modules/@tanstack/virtual-core": { - "version": "3.11.3", - "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.11.3.tgz", - "integrity": "sha512-v2mrNSnMwnPJtcVqNvV0c5roGCBqeogN8jDtgtuHCphdwBasOZ17x8UV8qpHUh+u0MLfX43c0uUHKje0s+Zb0w==", + "version": "3.13.4", + "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.13.4.tgz", + "integrity": "sha512-fNGO9fjjSLns87tlcto106enQQLycCKR4DPNpgq3djP5IdcPFdPAmaKjsgzIeRhH7hWrELgW12hYnRthS5kLUw==", "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" } }, "node_modules/@tanstack/vue-virtual": { - "version": "3.11.3", - "resolved": "https://registry.npmjs.org/@tanstack/vue-virtual/-/vue-virtual-3.11.3.tgz", - "integrity": "sha512-BVZ00i5XBucetRj2doVd32jOPtJthvZSVJvx9GL4gSQsyngliSCtzlP1Op7TFrEtmebRKT8QUQE1tRhOQzWecQ==", + "version": "3.13.4", + "resolved": "https://registry.npmjs.org/@tanstack/vue-virtual/-/vue-virtual-3.13.4.tgz", + "integrity": "sha512-1fPrd3hE1SS4R/9JbX1AlzueY4duCK7ixuLcMW5GMnk9N6WbLo9MioNKiv22V+UaXKOLNy8tLdzT8NYerOFTOQ==", "dependencies": { - "@tanstack/virtual-core": "3.11.3" + "@tanstack/virtual-core": "3.13.4" }, "funding": { "type": "github", @@ -2239,6 +2242,15 @@ "jiti": "bin/jiti.js" } }, + "node_modules/laravel-echo": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/laravel-echo/-/laravel-echo-2.0.2.tgz", + "integrity": "sha512-Ciai6hA7r35MFqNRb8G034cvm9WiveSTFQQKRGJhWtZGbng7C8BBa5QvqDxk/Mw5GeJ+q19jrEwQhf7r1b1lcg==", + "dev": true, + "engines": { + "node": ">=20" + } + }, "node_modules/laravel-vite-plugin": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-1.2.0.tgz", @@ -2487,6 +2499,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/ohash": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.6.tgz", + "integrity": "sha512-TBu7PtV8YkAZn0tSxobKY2n2aAQva936lhRrj6957aDaCf9IEtqsKbgMzXE/F/sjqYOwmrukeORHNLe5glk7Cg==" + }, "node_modules/package-json-from-dist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", @@ -2700,6 +2717,15 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "dev": true }, + "node_modules/pusher-js": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/pusher-js/-/pusher-js-8.4.0.tgz", + "integrity": "sha512-wp3HqIIUc1GRyu1XrP6m2dgyE9MoCsXVsWNlohj0rjSkLf+a0jLvEyVubdg58oMk7bhjBWnFClgp8jfAa6Ak4Q==", + "dev": true, + "dependencies": { + "tweetnacl": "^1.0.3" + } + }, "node_modules/qs": { "version": "6.14.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", @@ -2847,6 +2873,37 @@ "node": ">=8.10.0" } }, + "node_modules/reka-ui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/reka-ui/-/reka-ui-2.1.0.tgz", + "integrity": "sha512-w4kEDEyXhIqv4QeFJeiuBc4mQP37hH/UTRpEb9dMbPdR49JG5TcV/s0+ntNRONUUW4LDLX7E1ZPcwBw5hnu0yw==", + "dependencies": { + "@floating-ui/dom": "^1.6.13", + "@floating-ui/vue": "^1.1.6", + "@internationalized/date": "^3.5.0", + "@internationalized/number": "^3.5.0", + "@tanstack/vue-virtual": "^3.12.0", + "@vueuse/core": "^12.5.0", + "@vueuse/shared": "^12.5.0", + "aria-hidden": "^1.2.4", + "defu": "^6.1.4", + "ohash": "^1.1.4" + }, + "peerDependencies": { + "vue": ">= 3.2.0" + } + }, + "node_modules/reka-ui/node_modules/@vueuse/shared": { + "version": "12.8.2", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-12.8.2.tgz", + "integrity": "sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==", + "dependencies": { + "vue": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -3697,6 +3754,12 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true + }, "node_modules/typescript": { "version": "5.7.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", diff --git a/package.json b/package.json index 93db9e2..3f56697 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "lucide-react": "^0.474.0", "lucide-vue-next": "^0.474.0", "radix-vue": "^1.9.13", + "reka-ui": "^2.1.0", "tailwind-merge": "^2.6.0", "tailwindcss-animate": "^1.0.7" } diff --git a/resources/js/Components/Layout/Job/JobRuns/JobRunArtifacts.vue b/resources/js/Components/Layout/Job/JobRuns/JobRunArtifacts.vue new file mode 100644 index 0000000..b80c139 --- /dev/null +++ b/resources/js/Components/Layout/Job/JobRuns/JobRunArtifacts.vue @@ -0,0 +1,24 @@ + + + + + diff --git a/resources/js/Components/Layout/Job/JobRuns/JobRunItem.vue b/resources/js/Components/Layout/Job/JobRuns/JobRunItem.vue new file mode 100644 index 0000000..1cfed77 --- /dev/null +++ b/resources/js/Components/Layout/Job/JobRuns/JobRunItem.vue @@ -0,0 +1,28 @@ + + + diff --git a/resources/js/Components/Layout/Job/JobRuns/JobRuns.vue b/resources/js/Components/Layout/Job/JobRuns/JobRuns.vue new file mode 100644 index 0000000..b47d2e9 --- /dev/null +++ b/resources/js/Components/Layout/Job/JobRuns/JobRuns.vue @@ -0,0 +1,28 @@ + + + diff --git a/resources/js/Components/ui/accordion/Accordion.vue b/resources/js/Components/ui/accordion/Accordion.vue new file mode 100644 index 0000000..d52d816 --- /dev/null +++ b/resources/js/Components/ui/accordion/Accordion.vue @@ -0,0 +1,19 @@ + + + diff --git a/resources/js/Components/ui/accordion/AccordionContent.vue b/resources/js/Components/ui/accordion/AccordionContent.vue new file mode 100644 index 0000000..8e856a0 --- /dev/null +++ b/resources/js/Components/ui/accordion/AccordionContent.vue @@ -0,0 +1,24 @@ + + + diff --git a/resources/js/Components/ui/accordion/AccordionItem.vue b/resources/js/Components/ui/accordion/AccordionItem.vue new file mode 100644 index 0000000..b26a07b --- /dev/null +++ b/resources/js/Components/ui/accordion/AccordionItem.vue @@ -0,0 +1,24 @@ + + + diff --git a/resources/js/Components/ui/accordion/AccordionTrigger.vue b/resources/js/Components/ui/accordion/AccordionTrigger.vue new file mode 100644 index 0000000..e5f4f6f --- /dev/null +++ b/resources/js/Components/ui/accordion/AccordionTrigger.vue @@ -0,0 +1,39 @@ + + + diff --git a/resources/js/Components/ui/accordion/index.ts b/resources/js/Components/ui/accordion/index.ts new file mode 100644 index 0000000..9340ac0 --- /dev/null +++ b/resources/js/Components/ui/accordion/index.ts @@ -0,0 +1,4 @@ +export { default as Accordion } from './Accordion.vue' +export { default as AccordionContent } from './AccordionContent.vue' +export { default as AccordionItem } from './AccordionItem.vue' +export { default as AccordionTrigger } from './AccordionTrigger.vue' diff --git a/resources/js/Components/ui/separator/Separator.vue b/resources/js/Components/ui/separator/Separator.vue new file mode 100644 index 0000000..aaf3fcc --- /dev/null +++ b/resources/js/Components/ui/separator/Separator.vue @@ -0,0 +1,35 @@ + + + diff --git a/resources/js/Components/ui/separator/index.ts b/resources/js/Components/ui/separator/index.ts new file mode 100644 index 0000000..2287bcb --- /dev/null +++ b/resources/js/Components/ui/separator/index.ts @@ -0,0 +1 @@ +export { default as Separator } from './Separator.vue' diff --git a/resources/js/Pages/Job.vue b/resources/js/Pages/Job.vue index c1bac3f..61494fb 100644 --- a/resources/js/Pages/Job.vue +++ b/resources/js/Pages/Job.vue @@ -1,6 +1,7 @@