diff --git a/src/app/Http/Controllers/Dashboard/UserProfileController.php b/src/app/Http/Controllers/Dashboard/UserProfileController.php
new file mode 100644
index 0000000..6873b30
--- /dev/null
+++ b/src/app/Http/Controllers/Dashboard/UserProfileController.php
@@ -0,0 +1,86 @@
+validateTwoFactorAuthenticationState($request);
+
+ return Jetstream::inertia()->render($request, 'Profile/Show', [
+ 'sessions' => $this->sessions($request)->all(),
+ 'timezones' => timezone_identifiers_list(),
+ ]);
+ }
+
+ /**
+ * Get the current sessions.
+ *
+ * @since 1.0.0
+ *
+ * @param \Illuminate\Http\Request $request
+ *
+ * @return \Illuminate\Support\Collection
+ */
+ public function sessions(Request $request): Collection
+ {
+ if (config('session.driver') !== 'database') {
+ return collect();
+ }
+
+ return collect(
+ DB::connection(config('session.connection'))->table(config('session.table', 'sessions'))
+ ->where('user_id', $request->user()->getAuthIdentifier())
+ ->orderBy('last_activity', 'desc')
+ ->get()
+ )->map(function ($session) use ($request) {
+ $agent = $this->createAgent($session);
+
+ return (object) [
+ 'agent' => [
+ 'is_desktop' => $agent->isDesktop(),
+ 'platform' => $agent->platform(),
+ 'browser' => $agent->browser(),
+ ],
+ 'ip_address' => $session->ip_address,
+ 'is_current_device' => $session->id === $request->session()->getId(),
+ 'last_active' => Carbon::createFromTimestamp($session->last_activity)->diffForHumans(),
+ ];
+ });
+ }
+
+ /**
+ * Create a new agent instance from the given session.
+ *
+ * @since 1.0.0
+ *
+ * @param mixed $session
+ *
+ * @return \Jenssegers\Agent\Agent
+ */
+ protected function createAgent($session): Agent
+ {
+ return tap(new Agent, function ($agent) use ($session) {
+ $agent->setUserAgent($session->user_agent);
+ });
+ }
+}
diff --git a/src/app/Views/Components/CountryFlags.php b/src/app/Views/Components/CountryFlags.php
new file mode 100644
index 0000000..a389d6d
--- /dev/null
+++ b/src/app/Views/Components/CountryFlags.php
@@ -0,0 +1,28 @@
+
+import { reactive } from 'vue'
+import Modal from './Modal.vue'
+
+const emit = defineEmits(['close'])
+
+const props = defineProps({
+ show: {
+ default: false
+ },
+ maxWidth: {
+ default: '2xl'
+ },
+ closeable: {
+ default: true
+ },
+})
+
+// computed properties
+
+// watchers
+
+// lifecycle hooks
+
+// methods
+function close() {
+ emit('close')
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/resources/js/Components/Modals/ConfirmPassword.vue b/src/resources/js/Components/Modals/ConfirmPassword.vue
new file mode 100644
index 0000000..a24becb
--- /dev/null
+++ b/src/resources/js/Components/Modals/ConfirmPassword.vue
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+ {{ title }}
+
+
+
+ {{ content }}
+
+
+
+
+
+
+
+
+
+
+ Cancel
+
+
+
+ {{ button }}
+
+
+
+
+
diff --git a/src/resources/js/Components/Modals/Dialog.vue b/src/resources/js/Components/Modals/Dialog.vue
new file mode 100644
index 0000000..0493d8c
--- /dev/null
+++ b/src/resources/js/Components/Modals/Dialog.vue
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/resources/js/Components/Modals/Modal.vue b/src/resources/js/Components/Modals/Modal.vue
new file mode 100644
index 0000000..4a281d4
--- /dev/null
+++ b/src/resources/js/Components/Modals/Modal.vue
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/resources/views/components/country-flag.blade.php b/src/resources/views/components/country-flag.blade.php
new file mode 100644
index 0000000..d77346b
--- /dev/null
+++ b/src/resources/views/components/country-flag.blade.php
@@ -0,0 +1,382 @@
+
\ No newline at end of file
diff --git a/src/resources/views/components/flags.blade.php b/src/resources/views/components/flags.blade.php
new file mode 100644
index 0000000..3c43e9f
--- /dev/null
+++ b/src/resources/views/components/flags.blade.php
@@ -0,0 +1,13 @@
+
diff --git a/src/resources/views/components/flags/br_BR.blade.php b/src/resources/views/components/flags/br_BR.blade.php
new file mode 100644
index 0000000..08a2519
--- /dev/null
+++ b/src/resources/views/components/flags/br_BR.blade.php
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/resources/views/components/flags/cn_CN.blade.php b/src/resources/views/components/flags/cn_CN.blade.php
new file mode 100644
index 0000000..260da62
--- /dev/null
+++ b/src/resources/views/components/flags/cn_CN.blade.php
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/resources/views/components/flags/de_DE.blade.php b/src/resources/views/components/flags/de_DE.blade.php
new file mode 100644
index 0000000..f7a6765
--- /dev/null
+++ b/src/resources/views/components/flags/de_DE.blade.php
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/resources/views/components/flags/en_US.blade.php b/src/resources/views/components/flags/en_US.blade.php
new file mode 100644
index 0000000..7dd9842
--- /dev/null
+++ b/src/resources/views/components/flags/en_US.blade.php
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/resources/views/components/flags/es_MX.blade.php b/src/resources/views/components/flags/es_MX.blade.php
new file mode 100644
index 0000000..2c4a52d
--- /dev/null
+++ b/src/resources/views/components/flags/es_MX.blade.php
@@ -0,0 +1,415 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/resources/views/components/flags/es_SP.blade.php b/src/resources/views/components/flags/es_SP.blade.php
new file mode 100644
index 0000000..e39f143
--- /dev/null
+++ b/src/resources/views/components/flags/es_SP.blade.php
@@ -0,0 +1,323 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/resources/views/components/flags/fr_FR.blade.php b/src/resources/views/components/flags/fr_FR.blade.php
new file mode 100644
index 0000000..0dafadf
--- /dev/null
+++ b/src/resources/views/components/flags/fr_FR.blade.php
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/resources/views/components/flags/jp_JP.blade.php b/src/resources/views/components/flags/jp_JP.blade.php
new file mode 100644
index 0000000..6403625
--- /dev/null
+++ b/src/resources/views/components/flags/jp_JP.blade.php
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/resources/views/components/flags/tw_TW.blade.php b/src/resources/views/components/flags/tw_TW.blade.php
new file mode 100644
index 0000000..4fd0231
--- /dev/null
+++ b/src/resources/views/components/flags/tw_TW.blade.php
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/resources/views/meta/facebook.blade.php b/src/resources/views/meta/facebook.blade.php
new file mode 100644
index 0000000..4c06ea5
--- /dev/null
+++ b/src/resources/views/meta/facebook.blade.php
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/resources/views/meta/geo-tags.blade.php b/src/resources/views/meta/geo-tags.blade.php
new file mode 100644
index 0000000..5e409b3
--- /dev/null
+++ b/src/resources/views/meta/geo-tags.blade.php
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/resources/views/meta/monetization.blade.php b/src/resources/views/meta/monetization.blade.php
new file mode 100644
index 0000000..b410cbc
--- /dev/null
+++ b/src/resources/views/meta/monetization.blade.php
@@ -0,0 +1,2 @@
+
+
diff --git a/src/resources/views/meta/twitter.blade.php b/src/resources/views/meta/twitter.blade.php
new file mode 100644
index 0000000..9d04d85
--- /dev/null
+++ b/src/resources/views/meta/twitter.blade.php
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/src/resources/views/meta/website-verifications.blade.php b/src/resources/views/meta/website-verifications.blade.php
new file mode 100644
index 0000000..c715634
--- /dev/null
+++ b/src/resources/views/meta/website-verifications.blade.php
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/routes/web.php b/src/routes/web.php
new file mode 100644
index 0000000..ad9977a
--- /dev/null
+++ b/src/routes/web.php
@@ -0,0 +1,22 @@
+group(function () {
+ $authMiddleware = config('jetstream.guard')
+ ? 'auth:'.config('jetstream.guard')
+ : 'auth';
+
+ Route::group(['middleware' => [$authMiddleware, 'verified']], function () {
+ // User & Profile...
+ Route::get('/user/profile', [UserProfileController::class, 'show'])
+ ->name('profile.show');
+ });
+});