diff --git a/app/Console/Commands/Bootstrap.php b/app/Console/Commands/Bootstrap.php index 9edd5ff..96dab75 100644 --- a/app/Console/Commands/Bootstrap.php +++ b/app/Console/Commands/Bootstrap.php @@ -12,44 +12,41 @@ class Bootstrap extends Command public function handle(): int { - $courses = [ + $lessons = [ [ - 'name' => 'Bootcamp', - 'description' => 'Bootcamp', - 'lessons' => [ - [ - 'name' => 'Lesson 1', - 'description' => 'Lesson 1', - ], - [ - 'name' => 'Lesson 1b', - 'description' => 'Lesson 1b', - ], - [ - 'name' => 'Lesson 2', - 'description' => 'Lesson 2', - ], - [ - 'name' => 'Lesson 3', - 'description' => 'Lesson 3', - ], - ], - ] + 'name' => 'Lesson 1', + 'description' => 'Lesson 1', + ], + [ + 'name' => 'Lesson 1b', + 'description' => 'Lesson 1b', + ], + [ + 'name' => 'Lesson 2', + 'description' => 'Lesson 2', + ], + [ + 'name' => 'Lesson 3', + 'description' => 'Lesson 3', + ], + ]; + $course = [ + 'name' => 'Larascape', + 'description' => 'Interactive game to learn Laravel', + 'lessons' => $lessons ]; - foreach ($courses as $data) { - // TODO: firstOrCreate - $course = Course::firstOrCreate([ - 'name' => $data['name'], - 'description' => $data['description'], - ]); + $course = Course::firstOrCreate([ + 'name' => $course['name'], + 'description' => $course['description'], + ]); - foreach ($data['lessons'] as $index => $lesson) { - // TODO: firstOrCreate - $course->lessons()->firstOrCreate([ - 'index' => $index + 1, - ]); - } + foreach ($lessons as $index => $lesson) { + $course->lessons()->firstOrCreate([ + 'name' => $lesson['name'], + 'description' => $lesson['description'], + 'index' => $index + 1, + ]); } return 0; diff --git a/app/Http/Controllers/LogoutController.php b/app/Http/Controllers/LogoutController.php new file mode 100644 index 0000000..15dac30 --- /dev/null +++ b/app/Http/Controllers/LogoutController.php @@ -0,0 +1,19 @@ + Course::with('lessons')->get(), + ]); + } +} diff --git a/app/Http/Controllers/Public/IndexCourseController.php b/app/Http/Controllers/Public/IndexCourseController.php new file mode 100644 index 0000000..f66e03a --- /dev/null +++ b/app/Http/Controllers/Public/IndexCourseController.php @@ -0,0 +1,17 @@ + $course->name, + 'lessons' => $course->load('lessons')->lessons + ]); + } +} diff --git a/app/Http/Controllers/Public/ShowCoursesController.php b/app/Http/Controllers/Public/ShowCoursesController.php new file mode 100644 index 0000000..a3087b4 --- /dev/null +++ b/app/Http/Controllers/Public/ShowCoursesController.php @@ -0,0 +1,17 @@ + Course::withCount('lessons')->get() + ]); + } +} diff --git a/app/Models/Course.php b/app/Models/Course.php index 176dfe2..4d902a8 100644 --- a/app/Models/Course.php +++ b/app/Models/Course.php @@ -2,6 +2,7 @@ namespace App\Models; +use App\Models\Lesson; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\Factories\HasFactory; diff --git a/database/migrations/2022_09_06_235542_create_lessons_table.php b/database/migrations/2022_09_06_235542_create_lessons_table.php index c67fb9e..a824859 100644 --- a/database/migrations/2022_09_06_235542_create_lessons_table.php +++ b/database/migrations/2022_09_06_235542_create_lessons_table.php @@ -11,6 +11,8 @@ public function up() $table->id(); $table->foreignId('course_id'); $table->smallInteger('index'); + $table->text('name'); + $table->text('description'); $table->timestamps(); $table->softDeletes(); }); diff --git a/package-lock.json b/package-lock.json index 861f7cb..42aedd3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,10 +1,14 @@ { - "name": "codinglabs-learn", + "name": "learn", "lockfileVersion": 2, "requires": true, "packages": { "": { + "dependencies": { + "vue3-popper": "^1.5.0" + }, "devDependencies": { + "@headlessui/vue": "^1.7.3", "@inertiajs/inertia": "^0.11.0", "@inertiajs/inertia-vue3": "^0.6.0", "@inertiajs/progress": "^0.2.7", @@ -24,7 +28,6 @@ "version": "7.19.0", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.0.tgz", "integrity": "sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw==", - "dev": true, "bin": { "parser": "bin/babel-parser.js" }, @@ -48,6 +51,18 @@ "node": ">=12" } }, + "node_modules/@headlessui/vue": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@headlessui/vue/-/vue-1.7.3.tgz", + "integrity": "sha512-Is4iakKts9u9E0+jEZNzoJpBjwq2SamwEIoEl2RlyYSu6Zco536GsPXaQEfg/o7Eyc1GUUlcL+dJd4Rt7qyf7A==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, "node_modules/@inertiajs/inertia": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@inertiajs/inertia/-/inertia-0.11.0.tgz", @@ -129,6 +144,15 @@ "node": ">= 8" } }, + "node_modules/@popperjs/core": { + "version": "2.11.6", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", + "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, "node_modules/@tailwindcss/forms": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.3.tgz", @@ -158,7 +182,6 @@ "version": "3.2.39", "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.39.tgz", "integrity": "sha512-mf/36OWXqWn0wsC40nwRRGheR/qoID+lZXbIuLnr4/AngM0ov8Xvv8GHunC0rKRIkh60bTqydlqTeBo49rlbqw==", - "dev": true, "dependencies": { "@babel/parser": "^7.16.4", "@vue/shared": "3.2.39", @@ -170,7 +193,6 @@ "version": "3.2.39", "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.39.tgz", "integrity": "sha512-HMFI25Be1C8vLEEv1hgEO1dWwG9QQ8LTTPmCkblVJY/O3OvWx6r1+zsox5mKPMGvqYEZa6l8j+xgOfUspgo7hw==", - "dev": true, "dependencies": { "@vue/compiler-core": "3.2.39", "@vue/shared": "3.2.39" @@ -180,7 +202,6 @@ "version": "3.2.39", "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.39.tgz", "integrity": "sha512-fqAQgFs1/BxTUZkd0Vakn3teKUt//J3c420BgnYgEOoVdTwYpBTSXCMJ88GOBCylmUBbtquGPli9tVs7LzsWIA==", - "dev": true, "dependencies": { "@babel/parser": "^7.16.4", "@vue/compiler-core": "3.2.39", @@ -198,7 +219,6 @@ "version": "3.2.39", "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.39.tgz", "integrity": "sha512-EoGCJ6lincKOZGW+0Ky4WOKsSmqL7hp1ZYgen8M7u/mlvvEQUaO9tKKOy7K43M9U2aA3tPv0TuYYQFrEbK2eFQ==", - "dev": true, "dependencies": { "@vue/compiler-dom": "3.2.39", "@vue/shared": "3.2.39" @@ -208,7 +228,6 @@ "version": "3.2.39", "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.39.tgz", "integrity": "sha512-vlaYX2a3qMhIZfrw3Mtfd+BuU+TZmvDrPMa+6lpfzS9k/LnGxkSuf0fhkP0rMGfiOHPtyKoU9OJJJFGm92beVQ==", - "dev": true, "dependencies": { "@vue/shared": "3.2.39" } @@ -217,7 +236,6 @@ "version": "3.2.39", "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.39.tgz", "integrity": "sha512-HGuWu864zStiWs9wBC6JYOP1E00UjMdDWIG5W+FpUx28hV3uz9ODOKVNm/vdOy/Pvzg8+OcANxAVC85WFBbl3A==", - "dev": true, "dependencies": { "@babel/parser": "^7.16.4", "@vue/compiler-core": "3.2.39", @@ -230,7 +248,6 @@ "version": "3.2.39", "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.39.tgz", "integrity": "sha512-xKH5XP57JW5JW+8ZG1khBbuLakINTgPuINKL01hStWLTTGFOrM49UfCFXBcFvWmSbci3gmJyLl2EAzCaZWsx8g==", - "dev": true, "dependencies": { "@vue/reactivity": "3.2.39", "@vue/shared": "3.2.39" @@ -240,7 +257,6 @@ "version": "3.2.39", "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.39.tgz", "integrity": "sha512-4G9AEJP+sLhsqf5wXcyKVWQKUhI+iWfy0hWQgea+CpaTD7BR0KdQzvoQdZhwCY6B3oleSyNLkLAQwm0ya/wNoA==", - "dev": true, "dependencies": { "@vue/runtime-core": "3.2.39", "@vue/shared": "3.2.39", @@ -251,7 +267,6 @@ "version": "3.2.39", "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.39.tgz", "integrity": "sha512-1yn9u2YBQWIgytFMjz4f/t0j43awKytTGVptfd3FtBk76t1pd8mxbek0G/DrnjJhd2V7mSTb5qgnxMYt8Z5iSQ==", - "dev": true, "dependencies": { "@vue/compiler-ssr": "3.2.39", "@vue/shared": "3.2.39" @@ -263,8 +278,7 @@ "node_modules/@vue/shared": { "version": "3.2.39", "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.39.tgz", - "integrity": "sha512-D3dl2ZB9qE6mTuWPk9RlhDeP1dgNRUKC3NJxji74A4yL8M2MwlhLKUC/49WHjrNzSPug58fWx/yFbaTzGAQSBw==", - "dev": true + "integrity": "sha512-D3dl2ZB9qE6mTuWPk9RlhDeP1dgNRUKC3NJxji74A4yL8M2MwlhLKUC/49WHjrNzSPug58fWx/yFbaTzGAQSBw==" }, "node_modules/acorn": { "version": "7.4.1", @@ -525,8 +539,12 @@ "node_modules/csstype": { "version": "2.6.20", "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz", - "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==", - "dev": true + "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==" + }, + "node_modules/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==" }, "node_modules/deepmerge": { "version": "4.2.2", @@ -955,8 +973,7 @@ "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" }, "node_modules/fast-glob": { "version": "3.2.12", @@ -1224,7 +1241,6 @@ "version": "0.25.9", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, "dependencies": { "sourcemap-codec": "^1.4.8" } @@ -1291,7 +1307,6 @@ "version": "3.3.4", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -1356,8 +1371,7 @@ "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -1384,7 +1398,6 @@ "version": "8.4.16", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", - "dev": true, "funding": [ { "type": "opencollective", @@ -1658,7 +1671,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -1667,7 +1679,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -1675,8 +1686,7 @@ "node_modules/sourcemap-codec": { "version": "1.4.8", "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", @@ -1832,7 +1842,6 @@ "version": "3.2.39", "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.39.tgz", "integrity": "sha512-tRkguhRTw9NmIPXhzk21YFBqXHT2t+6C6wPOgQ50fcFVWnPdetmRqbmySRHznrYjX2E47u0cGlKGcxKZJ38R/g==", - "dev": true, "dependencies": { "@vue/compiler-dom": "3.2.39", "@vue/compiler-sfc": "3.2.39", @@ -1841,6 +1850,21 @@ "@vue/shared": "3.2.39" } }, + "node_modules/vue3-popper": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vue3-popper/-/vue3-popper-1.5.0.tgz", + "integrity": "sha512-xaEnx90YBnlSg5G2yWqm2DHWHg+DB99UVRp4VsyTF0QLXyHrqSuE1Xo5+sG0AQq/lBcrGMlk5NU5xE2MDLKViw==", + "dependencies": { + "@popperjs/core": "^2.9.2", + "debounce": "^1.2.1" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "vue": "^3.2.20" + } + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -1864,8 +1888,7 @@ "@babel/parser": { "version": "7.19.0", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.0.tgz", - "integrity": "sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw==", - "dev": true + "integrity": "sha512-74bEXKX2h+8rrfQUfsBfuZZHzsEs6Eql4pqy/T4Nn6Y9wNPggQOqD6z6pn5Bl8ZfysKouFZT/UXEH94ummEeQw==" }, "@esbuild/linux-loong64": { "version": "0.15.7", @@ -1874,6 +1897,13 @@ "dev": true, "optional": true }, + "@headlessui/vue": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@headlessui/vue/-/vue-1.7.3.tgz", + "integrity": "sha512-Is4iakKts9u9E0+jEZNzoJpBjwq2SamwEIoEl2RlyYSu6Zco536GsPXaQEfg/o7Eyc1GUUlcL+dJd4Rt7qyf7A==", + "dev": true, + "requires": {} + }, "@inertiajs/inertia": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@inertiajs/inertia/-/inertia-0.11.0.tgz", @@ -1941,6 +1971,11 @@ "fastq": "^1.6.0" } }, + "@popperjs/core": { + "version": "2.11.6", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", + "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" + }, "@tailwindcss/forms": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.3.tgz", @@ -1961,7 +1996,6 @@ "version": "3.2.39", "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.39.tgz", "integrity": "sha512-mf/36OWXqWn0wsC40nwRRGheR/qoID+lZXbIuLnr4/AngM0ov8Xvv8GHunC0rKRIkh60bTqydlqTeBo49rlbqw==", - "dev": true, "requires": { "@babel/parser": "^7.16.4", "@vue/shared": "3.2.39", @@ -1973,7 +2007,6 @@ "version": "3.2.39", "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.39.tgz", "integrity": "sha512-HMFI25Be1C8vLEEv1hgEO1dWwG9QQ8LTTPmCkblVJY/O3OvWx6r1+zsox5mKPMGvqYEZa6l8j+xgOfUspgo7hw==", - "dev": true, "requires": { "@vue/compiler-core": "3.2.39", "@vue/shared": "3.2.39" @@ -1983,7 +2016,6 @@ "version": "3.2.39", "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.39.tgz", "integrity": "sha512-fqAQgFs1/BxTUZkd0Vakn3teKUt//J3c420BgnYgEOoVdTwYpBTSXCMJ88GOBCylmUBbtquGPli9tVs7LzsWIA==", - "dev": true, "requires": { "@babel/parser": "^7.16.4", "@vue/compiler-core": "3.2.39", @@ -2001,7 +2033,6 @@ "version": "3.2.39", "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.39.tgz", "integrity": "sha512-EoGCJ6lincKOZGW+0Ky4WOKsSmqL7hp1ZYgen8M7u/mlvvEQUaO9tKKOy7K43M9U2aA3tPv0TuYYQFrEbK2eFQ==", - "dev": true, "requires": { "@vue/compiler-dom": "3.2.39", "@vue/shared": "3.2.39" @@ -2011,7 +2042,6 @@ "version": "3.2.39", "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.39.tgz", "integrity": "sha512-vlaYX2a3qMhIZfrw3Mtfd+BuU+TZmvDrPMa+6lpfzS9k/LnGxkSuf0fhkP0rMGfiOHPtyKoU9OJJJFGm92beVQ==", - "dev": true, "requires": { "@vue/shared": "3.2.39" } @@ -2020,7 +2050,6 @@ "version": "3.2.39", "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.39.tgz", "integrity": "sha512-HGuWu864zStiWs9wBC6JYOP1E00UjMdDWIG5W+FpUx28hV3uz9ODOKVNm/vdOy/Pvzg8+OcANxAVC85WFBbl3A==", - "dev": true, "requires": { "@babel/parser": "^7.16.4", "@vue/compiler-core": "3.2.39", @@ -2033,7 +2062,6 @@ "version": "3.2.39", "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.39.tgz", "integrity": "sha512-xKH5XP57JW5JW+8ZG1khBbuLakINTgPuINKL01hStWLTTGFOrM49UfCFXBcFvWmSbci3gmJyLl2EAzCaZWsx8g==", - "dev": true, "requires": { "@vue/reactivity": "3.2.39", "@vue/shared": "3.2.39" @@ -2043,7 +2071,6 @@ "version": "3.2.39", "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.39.tgz", "integrity": "sha512-4G9AEJP+sLhsqf5wXcyKVWQKUhI+iWfy0hWQgea+CpaTD7BR0KdQzvoQdZhwCY6B3oleSyNLkLAQwm0ya/wNoA==", - "dev": true, "requires": { "@vue/runtime-core": "3.2.39", "@vue/shared": "3.2.39", @@ -2054,7 +2081,6 @@ "version": "3.2.39", "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.39.tgz", "integrity": "sha512-1yn9u2YBQWIgytFMjz4f/t0j43awKytTGVptfd3FtBk76t1pd8mxbek0G/DrnjJhd2V7mSTb5qgnxMYt8Z5iSQ==", - "dev": true, "requires": { "@vue/compiler-ssr": "3.2.39", "@vue/shared": "3.2.39" @@ -2063,8 +2089,7 @@ "@vue/shared": { "version": "3.2.39", "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.39.tgz", - "integrity": "sha512-D3dl2ZB9qE6mTuWPk9RlhDeP1dgNRUKC3NJxji74A4yL8M2MwlhLKUC/49WHjrNzSPug58fWx/yFbaTzGAQSBw==", - "dev": true + "integrity": "sha512-D3dl2ZB9qE6mTuWPk9RlhDeP1dgNRUKC3NJxji74A4yL8M2MwlhLKUC/49WHjrNzSPug58fWx/yFbaTzGAQSBw==" }, "acorn": { "version": "7.4.1", @@ -2235,8 +2260,12 @@ "csstype": { "version": "2.6.20", "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz", - "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==", - "dev": true + "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==" + }, + "debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==" }, "deepmerge": { "version": "4.2.2", @@ -2463,8 +2492,7 @@ "estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" }, "fast-glob": { "version": "3.2.12", @@ -2655,7 +2683,6 @@ "version": "0.25.9", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, "requires": { "sourcemap-codec": "^1.4.8" } @@ -2706,8 +2733,7 @@ "nanoid": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" }, "node-releases": { "version": "2.0.6", @@ -2754,8 +2780,7 @@ "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "picomatch": { "version": "2.3.1", @@ -2773,7 +2798,6 @@ "version": "8.4.16", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", - "dev": true, "requires": { "nanoid": "^3.3.4", "picocolors": "^1.0.0", @@ -2923,20 +2947,17 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" }, "sourcemap-codec": { "version": "1.4.8", "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" }, "supports-preserve-symlinks-flag": { "version": "1.0.0", @@ -3026,7 +3047,6 @@ "version": "3.2.39", "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.39.tgz", "integrity": "sha512-tRkguhRTw9NmIPXhzk21YFBqXHT2t+6C6wPOgQ50fcFVWnPdetmRqbmySRHznrYjX2E47u0cGlKGcxKZJ38R/g==", - "dev": true, "requires": { "@vue/compiler-dom": "3.2.39", "@vue/compiler-sfc": "3.2.39", @@ -3035,6 +3055,15 @@ "@vue/shared": "3.2.39" } }, + "vue3-popper": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vue3-popper/-/vue3-popper-1.5.0.tgz", + "integrity": "sha512-xaEnx90YBnlSg5G2yWqm2DHWHg+DB99UVRp4VsyTF0QLXyHrqSuE1Xo5+sG0AQq/lBcrGMlk5NU5xE2MDLKViw==", + "requires": { + "@popperjs/core": "^2.9.2", + "debounce": "^1.2.1" + } + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/package.json b/package.json index 39d8528..749ecb0 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "build": "vite build" }, "devDependencies": { + "@headlessui/vue": "^1.7.3", "@inertiajs/inertia": "^0.11.0", "@inertiajs/inertia-vue3": "^0.6.0", "@inertiajs/progress": "^0.2.7", @@ -18,5 +19,8 @@ "tailwindcss": "^3.1.0", "vite": "^3.0.0", "vue": "^3.2.31" + }, + "dependencies": { + "vue3-popper": "^1.5.0" } } diff --git a/public/images/placeholder.png b/public/images/placeholder.png new file mode 100644 index 0000000..bf1d310 Binary files /dev/null and b/public/images/placeholder.png differ diff --git a/resources/js/Components/ApplicationLogo.vue b/resources/js/Components/ApplicationLogo.vue index d503f69..0938249 100644 --- a/resources/js/Components/ApplicationLogo.vue +++ b/resources/js/Components/ApplicationLogo.vue @@ -1,5 +1,17 @@ + + diff --git a/resources/js/Components/PrimaryButton.vue b/resources/js/Components/Buttons/PrimaryButton.vue similarity index 78% rename from resources/js/Components/PrimaryButton.vue rename to resources/js/Components/Buttons/PrimaryButton.vue index 6d4697e..6c3d6cd 100644 --- a/resources/js/Components/PrimaryButton.vue +++ b/resources/js/Components/Buttons/PrimaryButton.vue @@ -1,10 +1,10 @@