diff --git a/composer.json b/composer.json
index 16385d86..53034903 100644
--- a/composer.json
+++ b/composer.json
@@ -45,6 +45,7 @@
"require-dev": {
"fakerphp/faker": "^1.24",
"laravel/boost": "^2.4",
+ "laravel/dusk": "^8.6",
"laravel/pail": "^1.2.5",
"laravel/pao": "^1.0.6",
"laravel/pint": "^1.29",
diff --git a/storage/framework/views/00ab7a69c98c40ae6f245d1264277ae3.php b/storage/framework/views/00ab7a69c98c40ae6f245d1264277ae3.php
new file mode 100755
index 00000000..453a8fe4
--- /dev/null
+++ b/storage/framework/views/00ab7a69c98c40ae6f245d1264277ae3.php
@@ -0,0 +1,116 @@
+
+
+
+ 'f4ac99e09542ff494432bc959d4fee61::auth','data' => ['title' => __('Reset password')]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
+withName('layouts::auth'); ?>
+shouldRender()): ?>
+startComponent($component->resolveView(), $component->data()); ?>
+
+except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
+
+withAttributes(['title' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(__('Reset password'))]); ?>
+
+
+
+
+
+ 'components.auth-header','data' => ['title' => __('Reset password'),'description' => __('Please enter your new password below')]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
+withName('auth-header'); ?>
+shouldRender()): ?>
+startComponent($component->resolveView(), $component->data()); ?>
+
+except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
+
+withAttributes(['title' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(__('Reset password')),'description' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(__('Please enter your new password below'))]); ?>
+
+
+renderComponent(); ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 'components.auth-session-status','data' => ['class' => 'text-center','status' => session('status')]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
+withName('auth-session-status'); ?>
+shouldRender()): ?>
+startComponent($component->resolveView(), $component->data()); ?>
+
+except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
+
+withAttributes(['class' => 'text-center','status' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(session('status'))]); ?>
+
+
+renderComponent(); ?>
+
+
+
+
+
+
+
+
+
+
+
+
+ renderComponent(); ?>
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/storage/framework/views/1602763181ecabc13b12a76deff67c79.php b/storage/framework/views/1602763181ecabc13b12a76deff67c79.php
new file mode 100755
index 00000000..2cb749c2
--- /dev/null
+++ b/storage/framework/views/1602763181ecabc13b12a76deff67c79.php
@@ -0,0 +1,214 @@
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ fonts(); ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Let's get started
+
Laravel has an incredibly rich ecosystem.
We suggest starting with the following.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/storage/framework/views/2274702ff5b5c92a127ffba52b8895d3.php b/storage/framework/views/2274702ff5b5c92a127ffba52b8895d3.php
new file mode 100755
index 00000000..96b402c6
--- /dev/null
+++ b/storage/framework/views/2274702ff5b5c92a127ffba52b8895d3.php
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+ 'f4ac99e09542ff494432bc959d4fee61::auth','data' => ['title' => __('Email verification')]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
+withName('layouts::auth'); ?>
+shouldRender()): ?>
+startComponent($component->resolveView(), $component->data()); ?>
+
+except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
+
+withAttributes(['title' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(__('Email verification'))]); ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ renderComponent(); ?>
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/storage/framework/views/2354fa9c82a5f7540fb08381a7ce1320.php b/storage/framework/views/2354fa9c82a5f7540fb08381a7ce1320.php
new file mode 100755
index 00000000..b07d4020
--- /dev/null
+++ b/storage/framework/views/2354fa9c82a5f7540fb08381a7ce1320.php
@@ -0,0 +1,106 @@
+
+
+
+
+ 'f4ac99e09542ff494432bc959d4fee61::auth','data' => ['title' => __('Forgot password')]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
+withName('layouts::auth'); ?>
+shouldRender()): ?>
+startComponent($component->resolveView(), $component->data()); ?>
+
+except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
+
+withAttributes(['title' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(__('Forgot password'))]); ?>
+
+
+
+
+
+ 'components.auth-header','data' => ['title' => __('Forgot password'),'description' => __('Enter your email to receive a password reset link')]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
+withName('auth-header'); ?>
+shouldRender()): ?>
+startComponent($component->resolveView(), $component->data()); ?>
+
+except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
+
+withAttributes(['title' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(__('Forgot password')),'description' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(__('Enter your email to receive a password reset link'))]); ?>
+
+
+renderComponent(); ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 'components.auth-session-status','data' => ['class' => 'text-center','status' => session('status')]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
+withName('auth-session-status'); ?>
+shouldRender()): ?>
+startComponent($component->resolveView(), $component->data()); ?>
+
+except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
+
+withAttributes(['class' => 'text-center','status' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(session('status'))]); ?>
+
+
+renderComponent(); ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ renderComponent(); ?>
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/storage/framework/views/383500ecc4c85ef9f3dfc69110720605.php b/storage/framework/views/383500ecc4c85ef9f3dfc69110720605.php
new file mode 100755
index 00000000..df8e2b1a
--- /dev/null
+++ b/storage/framework/views/383500ecc4c85ef9f3dfc69110720605.php
@@ -0,0 +1,128 @@
+
+
+ 'f4ac99e09542ff494432bc959d4fee61::auth','data' => ['title' => __('Register')]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
+withName('layouts::auth'); ?>
+shouldRender()): ?>
+startComponent($component->resolveView(), $component->data()); ?>
+
+except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
+
+withAttributes(['title' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(__('Register'))]); ?>
+
+
+
+
+
+ 'components.auth-header','data' => ['title' => __('Create an account'),'description' => __('Enter your details below to create your account')]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
+withName('auth-header'); ?>
+shouldRender()): ?>
+startComponent($component->resolveView(), $component->data()); ?>
+
+except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
+
+withAttributes(['title' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(__('Create an account')),'description' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(__('Enter your details below to create your account'))]); ?>
+
+
+renderComponent(); ?>
+
+
+
+
+
+
+
+
+
+
+
+
+ 'components.auth-session-status','data' => ['class' => 'text-center','status' => session('status')]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
+withName('auth-session-status'); ?>
+shouldRender()): ?>
+startComponent($component->resolveView(), $component->data()); ?>
+
+except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
+
+withAttributes(['class' => 'text-center','status' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(session('status'))]); ?>
+
+
+renderComponent(); ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ renderComponent(); ?>
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/storage/framework/views/888a6c9b824475516963dfcc203be9cc.php b/storage/framework/views/888a6c9b824475516963dfcc203be9cc.php
new file mode 100755
index 00000000..09377418
--- /dev/null
+++ b/storage/framework/views/888a6c9b824475516963dfcc203be9cc.php
@@ -0,0 +1,5 @@
+startSection('title', __('Forbidden')); ?>
+startSection('code', '403'); ?>
+startSection('message', __($exception->getMessage() ?: 'Forbidden')); ?>
+
+make('errors::minimal', array_diff_key(get_defined_vars(), ['__data' => 1, '__path' => 1]))->render(); ?>
\ No newline at end of file
diff --git a/storage/framework/views/914396596e7bb1508018e2c55649efa2.php b/storage/framework/views/914396596e7bb1508018e2c55649efa2.php
new file mode 100755
index 00000000..4f2b2826
--- /dev/null
+++ b/storage/framework/views/914396596e7bb1508018e2c55649efa2.php
@@ -0,0 +1,26 @@
+mount($__name, $__params, $__key, $__componentSlots);
+
+echo $__html;
+
+unset($__html);
+unset($__key);
+$__key = $__keyOuter;
+unset($__keyOuter);
+unset($__name);
+unset($__params);
+unset($__componentSlots);
+unset($__split);
+?>
\ No newline at end of file
diff --git a/storage/framework/views/98270ca1e24eae3fca858017c4a6a832.php b/storage/framework/views/98270ca1e24eae3fca858017c4a6a832.php
new file mode 100755
index 00000000..10396845
--- /dev/null
+++ b/storage/framework/views/98270ca1e24eae3fca858017c4a6a832.php
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ yieldContent('title'); ?>
+
+
+
+
+
+
+
+
+
+
+ yieldContent('code'); ?>
+
+
+
+ yieldContent('message'); ?>
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/storage/framework/views/a168b0ebcff266df6b662fc4b6d06e88.blade.php b/storage/framework/views/a168b0ebcff266df6b662fc4b6d06e88.blade.php
new file mode 100755
index 00000000..76a5d4bc
--- /dev/null
+++ b/storage/framework/views/a168b0ebcff266df6b662fc4b6d06e88.blade.php
@@ -0,0 +1 @@
+@livewire($name, $params)
\ No newline at end of file
diff --git a/storage/framework/views/fdb6caa22e669669149394ff1e1442b4.php b/storage/framework/views/fdb6caa22e669669149394ff1e1442b4.php
new file mode 100755
index 00000000..baad1500
--- /dev/null
+++ b/storage/framework/views/fdb6caa22e669669149394ff1e1442b4.php
@@ -0,0 +1,5 @@
+startSection('title', __('Payment Required')); ?>
+startSection('code', '402'); ?>
+startSection('message', __('Payment Required')); ?>
+
+make('errors::minimal', array_diff_key(get_defined_vars(), ['__data' => 1, '__path' => 1]))->render(); ?>
\ No newline at end of file
diff --git a/storage/framework/views/feaf560721db14b8be80db48e471b04f.php b/storage/framework/views/feaf560721db14b8be80db48e471b04f.php
new file mode 100755
index 00000000..d336b503
--- /dev/null
+++ b/storage/framework/views/feaf560721db14b8be80db48e471b04f.php
@@ -0,0 +1,66 @@
+env;
+
+if (($__data['attributes'] ?? null) instanceof \Illuminate\View\ComponentAttributeBag) { $__data = $__data + $__data['attributes']->all(); unset($__data['attributes']); }
+extract($__slots, EXTR_SKIP); unset($__slots);
+extract($__data, EXTR_SKIP);
+$attributes = \Livewire\Blaze\Runtime\BlazeAttributeBag::make($__data, $__bound, $__keys);
+unset($__data, $__bound, $__keys);
+ob_start();
+?>
+
+
+
+
+ 'outline',
+];
+$variant ??= $attributes['variant'] ?? $__defaults['variant']; unset($attributes['variant']);
+unset($__defaults);
+?>
+
+add(match($variant) {
+ 'outline' => '[:where(&)]:size-6',
+ 'solid' => '[:where(&)]:size-6',
+ 'mini' => '[:where(&)]:size-5',
+ 'micro' => '[:where(&)]:size-4',
+ });
+?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/storage/framework/views/ff2bdfd8745efcb3222667dfa9ff8434.php b/storage/framework/views/ff2bdfd8745efcb3222667dfa9ff8434.php
new file mode 100755
index 00000000..b7cc957b
--- /dev/null
+++ b/storage/framework/views/ff2bdfd8745efcb3222667dfa9ff8434.php
@@ -0,0 +1,143 @@
+
+
+ 'f4ac99e09542ff494432bc959d4fee61::auth','data' => ['title' => __('Log in')]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
+withName('layouts::auth'); ?>
+shouldRender()): ?>
+startComponent($component->resolveView(), $component->data()); ?>
+
+except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
+
+withAttributes(['title' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(__('Log in'))]); ?>
+
+
+
+
+
+ 'components.auth-header','data' => ['title' => __('Log in to your account'),'description' => __('Enter your email and password below to log in')]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
+withName('auth-header'); ?>
+shouldRender()): ?>
+startComponent($component->resolveView(), $component->data()); ?>
+
+except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
+
+withAttributes(['title' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(__('Log in to your account')),'description' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(__('Enter your email and password below to log in'))]); ?>
+
+
+renderComponent(); ?>
+
+
+
+
+
+
+
+
+
+
+
+
+ 'components.auth-session-status','data' => ['class' => 'text-center','status' => session('status')]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
+withName('auth-session-status'); ?>
+shouldRender()): ?>
+startComponent($component->resolveView(), $component->data()); ?>
+
+except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
+
+withAttributes(['class' => 'text-center','status' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute(session('status'))]); ?>
+
+
+renderComponent(); ?>
+
+
+
+
+
+
+
+
+
+
+
+
+ 'components.passkey-verify','data' => []] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?>
+withName('passkey-verify'); ?>
+shouldRender()): ?>
+startComponent($component->resolveView(), $component->data()); ?>
+
+except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?>
+
+withAttributes([]); ?>
+
+
+renderComponent(); ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ renderComponent(); ?>
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file