commit 74c479bc610ae7f988d8acf359c352e717f48ef6 Author: t0is Date: Sat Apr 5 15:58:14 2025 +0200 init commit diff --git a/.env b/.env new file mode 100644 index 0000000..fffb839 --- /dev/null +++ b/.env @@ -0,0 +1,18 @@ + +APP_NAME=transcriptor +VITE_APP_NAME="${APP_NAME}" +APP_URL=http://0.0.0.0:8004 +ASSET_URL=http://0.0.0.0:8004 + +DB_CONNECTION=mariadb +DB_QUEUE_CONNECTION=mariadb +DB_HOST=192.168.0.187 +DB_PORT=3306 +DB_DATABASE=transcriptor +DB_USERNAME=t0is +DB_PASSWORD=Silenceisgolden555 + +APP_KEY=base64:ZbNIu92nsvQmghttxsgjENh6Aqk4xR+o6LU7Wt9mpy8= + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4354f84 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +/vendor/ +node_modules/ +package-lock.json +composer.lock +.idea +/src/storage/debugbar diff --git a/README.md b/README.md new file mode 100644 index 0000000..14eb966 --- /dev/null +++ b/README.md @@ -0,0 +1,33 @@ +# Laravel Jetstream React (Typescript) Starter Kit + +## Introduction + +A React starter kit based on Laravel Jetstream which provides a robust, modern starting point for building Laravel applications with a React frontend using [Inertia](https://inertiajs.com). + +Inertia allows you to build modern, single-page React applications using classic server-side routing and controllers. This lets you enjoy the frontend power of React combined with the incredible backend productivity of Laravel and lightning-fast Vite compilation. + +This React starter kit utilizes React 19, TypeScript, Tailwind, and the [HeadlessUI](https://headlessui.com/) component library. + +## Getting Started + +```bash +laravel new --using=adrum/laravel-jetstream-react-typescript +``` + +## Documentation + +Documentation for Official Laravel Jetstream can be found on the [Laravel website](https://jetstream.laravel.com/). This project is not an official Laravel Jestream starter kit, but most of the documentation for Jetstream should apply to this project as well. + +Note: The installer has already been run for you, so you can skip the `jetstream:install` command. Feel free to disable Jetstream features you don't need in the `conifg/jetstream.php` file. + +## Other Starter Kits + +Check out my other Laravel starter kits: + +- [Laravel 12+ React (Mantine) Starter Kit](https://github.com/adrum/laravel-react-mantine-starter-kit): A React starter kit based on the oficial Laravel 12 React Starter Kit which provides a robust, modern starting point for building Laravel applications with a React frontend using Inertia. +- [Laravel Jetstream + React (Typescript) Starter Kit](https://github.com/adrum/laravel-jetstream-react-typescript): A React starter kit based on Laravel Jetstream which provides a robust, modern starting point for building Laravel applications with a React frontend using Inertia. +- [Laravel Jetstream + React (Mantine) Starter Kit](https://github.com/adrum/laravel-jetstream-react-mantine): Same as the above, except it swaps HeadlessUI with [Mantine](https://mantine.dev). + +## License + +The Laravel Jetstream React (Typescript) Starter Kit starter kit is open-sourced software licensed under the MIT license. diff --git a/app/Actions/Fortify/CreateNewUser.php b/app/Actions/Fortify/CreateNewUser.php new file mode 100644 index 0000000..bb4bbe2 --- /dev/null +++ b/app/Actions/Fortify/CreateNewUser.php @@ -0,0 +1,53 @@ + $input + */ + public function create(array $input): User + { + Validator::make($input, [ + 'name' => ['required', 'string', 'max:255'], + 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], + 'password' => $this->passwordRules(), + 'terms' => Jetstream::hasTermsAndPrivacyPolicyFeature() ? ['accepted', 'required'] : '', + ])->validate(); + + return DB::transaction(function () use ($input) { + return tap(User::create([ + 'name' => $input['name'], + 'email' => $input['email'], + 'password' => Hash::make($input['password']), + ]), function (User $user) { + $this->createTeam($user); + }); + }); + } + + /** + * Create a personal team for the user. + */ + protected function createTeam(User $user): void + { + $user->ownedTeams()->save(Team::forceCreate([ + 'user_id' => $user->id, + 'name' => explode(' ', $user->name, 2)[0]."'s Team", + 'personal_team' => true, + ])); + } +} diff --git a/app/Actions/Fortify/PasswordValidationRules.php b/app/Actions/Fortify/PasswordValidationRules.php new file mode 100644 index 0000000..76b19d3 --- /dev/null +++ b/app/Actions/Fortify/PasswordValidationRules.php @@ -0,0 +1,18 @@ +|string> + */ + protected function passwordRules(): array + { + return ['required', 'string', Password::default(), 'confirmed']; + } +} diff --git a/app/Actions/Fortify/ResetUserPassword.php b/app/Actions/Fortify/ResetUserPassword.php new file mode 100644 index 0000000..7a57c50 --- /dev/null +++ b/app/Actions/Fortify/ResetUserPassword.php @@ -0,0 +1,29 @@ + $input + */ + public function reset(User $user, array $input): void + { + Validator::make($input, [ + 'password' => $this->passwordRules(), + ])->validate(); + + $user->forceFill([ + 'password' => Hash::make($input['password']), + ])->save(); + } +} diff --git a/app/Actions/Fortify/UpdateUserPassword.php b/app/Actions/Fortify/UpdateUserPassword.php new file mode 100644 index 0000000..7005639 --- /dev/null +++ b/app/Actions/Fortify/UpdateUserPassword.php @@ -0,0 +1,32 @@ + $input + */ + public function update(User $user, array $input): void + { + Validator::make($input, [ + 'current_password' => ['required', 'string', 'current_password:web'], + 'password' => $this->passwordRules(), + ], [ + 'current_password.current_password' => __('The provided password does not match your current password.'), + ])->validateWithBag('updatePassword'); + + $user->forceFill([ + 'password' => Hash::make($input['password']), + ])->save(); + } +} diff --git a/app/Actions/Fortify/UpdateUserProfileInformation.php b/app/Actions/Fortify/UpdateUserProfileInformation.php new file mode 100644 index 0000000..9738772 --- /dev/null +++ b/app/Actions/Fortify/UpdateUserProfileInformation.php @@ -0,0 +1,56 @@ + $input + */ + public function update(User $user, array $input): void + { + Validator::make($input, [ + 'name' => ['required', 'string', 'max:255'], + 'email' => ['required', 'email', 'max:255', Rule::unique('users')->ignore($user->id)], + 'photo' => ['nullable', 'mimes:jpg,jpeg,png', 'max:1024'], + ])->validateWithBag('updateProfileInformation'); + + if (isset($input['photo'])) { + $user->updateProfilePhoto($input['photo']); + } + + if ($input['email'] !== $user->email && + $user instanceof MustVerifyEmail) { + $this->updateVerifiedUser($user, $input); + } else { + $user->forceFill([ + 'name' => $input['name'], + 'email' => $input['email'], + ])->save(); + } + } + + /** + * Update the given verified user's profile information. + * + * @param array $input + */ + protected function updateVerifiedUser(User $user, array $input): void + { + $user->forceFill([ + 'name' => $input['name'], + 'email' => $input['email'], + 'email_verified_at' => null, + ])->save(); + + $user->sendEmailVerificationNotification(); + } +} diff --git a/app/Actions/Jetstream/AddTeamMember.php b/app/Actions/Jetstream/AddTeamMember.php new file mode 100644 index 0000000..43f92a0 --- /dev/null +++ b/app/Actions/Jetstream/AddTeamMember.php @@ -0,0 +1,81 @@ +authorize('addTeamMember', $team); + + $this->validate($team, $email, $role); + + $newTeamMember = Jetstream::findUserByEmailOrFail($email); + + AddingTeamMember::dispatch($team, $newTeamMember); + + $team->users()->attach( + $newTeamMember, ['role' => $role] + ); + + TeamMemberAdded::dispatch($team, $newTeamMember); + } + + /** + * Validate the add member operation. + */ + protected function validate(Team $team, string $email, ?string $role): void + { + Validator::make([ + 'email' => $email, + 'role' => $role, + ], $this->rules(), [ + 'email.exists' => __('We were unable to find a registered user with this email address.'), + ])->after( + $this->ensureUserIsNotAlreadyOnTeam($team, $email) + )->validateWithBag('addTeamMember'); + } + + /** + * Get the validation rules for adding a team member. + * + * @return array + */ + protected function rules(): array + { + return array_filter([ + 'email' => ['required', 'email', 'exists:users'], + 'role' => Jetstream::hasRoles() + ? ['required', 'string', new Role] + : null, + ]); + } + + /** + * Ensure that the user is not already on the team. + */ + protected function ensureUserIsNotAlreadyOnTeam(Team $team, string $email): Closure + { + return function ($validator) use ($team, $email) { + $validator->errors()->addIf( + $team->hasUserWithEmail($email), + 'email', + __('This user already belongs to the team.') + ); + }; + } +} diff --git a/app/Actions/Jetstream/CreateTeam.php b/app/Actions/Jetstream/CreateTeam.php new file mode 100644 index 0000000..7ace5d9 --- /dev/null +++ b/app/Actions/Jetstream/CreateTeam.php @@ -0,0 +1,37 @@ + $input + */ + public function create(User $user, array $input): Team + { + Gate::forUser($user)->authorize('create', Jetstream::newTeamModel()); + + Validator::make($input, [ + 'name' => ['required', 'string', 'max:255'], + ])->validateWithBag('createTeam'); + + AddingTeam::dispatch($user); + + $user->switchTeam($team = $user->ownedTeams()->create([ + 'name' => $input['name'], + 'personal_team' => false, + ])); + + return $team; + } +} diff --git a/app/Actions/Jetstream/DeleteTeam.php b/app/Actions/Jetstream/DeleteTeam.php new file mode 100644 index 0000000..680dc36 --- /dev/null +++ b/app/Actions/Jetstream/DeleteTeam.php @@ -0,0 +1,17 @@ +purge(); + } +} diff --git a/app/Actions/Jetstream/DeleteUser.php b/app/Actions/Jetstream/DeleteUser.php new file mode 100644 index 0000000..4b051af --- /dev/null +++ b/app/Actions/Jetstream/DeleteUser.php @@ -0,0 +1,44 @@ +deleteTeams($user); + $user->deleteProfilePhoto(); + $user->tokens->each->delete(); + $user->delete(); + }); + } + + /** + * Delete the teams and team associations attached to the user. + */ + protected function deleteTeams(User $user): void + { + $user->teams()->detach(); + + $user->ownedTeams->each(function (Team $team) { + $this->deletesTeams->delete($team); + }); + } +} diff --git a/app/Actions/Jetstream/InviteTeamMember.php b/app/Actions/Jetstream/InviteTeamMember.php new file mode 100644 index 0000000..08385ac --- /dev/null +++ b/app/Actions/Jetstream/InviteTeamMember.php @@ -0,0 +1,88 @@ +authorize('addTeamMember', $team); + + $this->validate($team, $email, $role); + + InvitingTeamMember::dispatch($team, $email, $role); + + $invitation = $team->teamInvitations()->create([ + 'email' => $email, + 'role' => $role, + ]); + + Mail::to($email)->send(new TeamInvitation($invitation)); + } + + /** + * Validate the invite member operation. + */ + protected function validate(Team $team, string $email, ?string $role): void + { + Validator::make([ + 'email' => $email, + 'role' => $role, + ], $this->rules($team), [ + 'email.unique' => __('This user has already been invited to the team.'), + ])->after( + $this->ensureUserIsNotAlreadyOnTeam($team, $email) + )->validateWithBag('addTeamMember'); + } + + /** + * Get the validation rules for inviting a team member. + * + * @return array + */ + protected function rules(Team $team): array + { + return array_filter([ + 'email' => [ + 'required', 'email', + Rule::unique(Jetstream::teamInvitationModel())->where(function (Builder $query) use ($team) { + $query->where('team_id', $team->id); + }), + ], + 'role' => Jetstream::hasRoles() + ? ['required', 'string', new Role] + : null, + ]); + } + + /** + * Ensure that the user is not already on the team. + */ + protected function ensureUserIsNotAlreadyOnTeam(Team $team, string $email): Closure + { + return function ($validator) use ($team, $email) { + $validator->errors()->addIf( + $team->hasUserWithEmail($email), + 'email', + __('This user already belongs to the team.') + ); + }; + } +} diff --git a/app/Actions/Jetstream/RemoveTeamMember.php b/app/Actions/Jetstream/RemoveTeamMember.php new file mode 100644 index 0000000..ddf755e --- /dev/null +++ b/app/Actions/Jetstream/RemoveTeamMember.php @@ -0,0 +1,51 @@ +authorize($user, $team, $teamMember); + + $this->ensureUserDoesNotOwnTeam($teamMember, $team); + + $team->removeUser($teamMember); + + TeamMemberRemoved::dispatch($team, $teamMember); + } + + /** + * Authorize that the user can remove the team member. + */ + protected function authorize(User $user, Team $team, User $teamMember): void + { + if (! Gate::forUser($user)->check('removeTeamMember', $team) && + $user->id !== $teamMember->id) { + throw new AuthorizationException; + } + } + + /** + * Ensure that the currently authenticated user does not own the team. + */ + protected function ensureUserDoesNotOwnTeam(User $teamMember, Team $team): void + { + if ($teamMember->id === $team->owner->id) { + throw ValidationException::withMessages([ + 'team' => [__('You may not leave a team that you created.')], + ])->errorBag('removeTeamMember'); + } + } +} diff --git a/app/Actions/Jetstream/UpdateTeamName.php b/app/Actions/Jetstream/UpdateTeamName.php new file mode 100644 index 0000000..b4e28d9 --- /dev/null +++ b/app/Actions/Jetstream/UpdateTeamName.php @@ -0,0 +1,30 @@ + $input + */ + public function update(User $user, Team $team, array $input): void + { + Gate::forUser($user)->authorize('update', $team); + + Validator::make($input, [ + 'name' => ['required', 'string', 'max:255'], + ])->validateWithBag('updateTeamName'); + + $team->forceFill([ + 'name' => $input['name'], + ])->save(); + } +} diff --git a/app/Http/Controllers/ChannelController.php b/app/Http/Controllers/ChannelController.php new file mode 100644 index 0000000..0e952e5 --- /dev/null +++ b/app/Http/Controllers/ChannelController.php @@ -0,0 +1,32 @@ +has('languages')) { + $query->whereIn('language', $request->input('languages')); + } + + // Retrieve the videos (you can add pagination if desired) + $channels = $query->get(); + + // Return the videos as a JSON response + return response()->json($channels); + } +} diff --git a/app/Http/Controllers/ClipController.php b/app/Http/Controllers/ClipController.php new file mode 100644 index 0000000..3388f2e --- /dev/null +++ b/app/Http/Controllers/ClipController.php @@ -0,0 +1,60 @@ +join('videos', 'clips.video_id', '=', 'videos.id') + ->with(['video', 'video.transcriptions', 'video.channel']) + ->select('clips.*') // Ensures only Clip attributes are returned + ->orderBy('videos.external_date', 'desc'); + + // Filter by channel_ids + if ($request->has('channel_ids')) { + $query->whereHas('video', function ($q) use ($request) { + $q->whereIn('channel_id', $request->input('channel_ids')); + }); + } + + // Filter by specific video_id + if ($request->has('video_id')) { + $query->whereHas('video', function ($q) use ($request) { + $q->where('id', $request->input('video_id')); + }); + } + + // Filter by languages (via video.channel.language) + if ($request->has('languages')) { + $languages = $request->input('languages'); + $query->whereHas('video.channel', function ($q) use ($languages) { + $q->whereIn('language', $languages); + }); + } + + // Filter by external_date range + if ($request->has('start_date') && $request->has('end_date')) { + $query->whereBetween('videos.external_date', [ + $request->input('start_date'), + $request->input('end_date'), + ]); + } + + // Retrieve the results (consider using paginate() for large sets) + $clips = $query->get(); + + return response()->json($clips); + } +} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php new file mode 100644 index 0000000..8677cd5 --- /dev/null +++ b/app/Http/Controllers/Controller.php @@ -0,0 +1,8 @@ +subDays(30); + + // 1. Average transcription duration (last 30 days, valid start & finish, min 120s) + $transcriptionDurationAverage = Transcription::whereNotNull('transcription_start') + ->whereNotNull('transcription_finish') + ->where('transcription_start', '>=', $thirtyDaysAgo) + ->whereRaw('TIMESTAMPDIFF(SECOND, transcription_start, transcription_finish) >= 120') + ->whereRaw('transcription_start > "2025-03-26 23:59:59"') + ->selectRaw('AVG(TIMESTAMPDIFF(SECOND, transcription_start, transcription_finish)) as avg_duration') + ->value('avg_duration'); + + // 2. Average VOD processing time (last 30 days, downloaded & processed = true) + $vodProcessingAverage = Video::where('data_downloaded', true) + ->where('processed', true) + ->where('created_at', '>=', $thirtyDaysAgo) + ->whereNotNull('created_at') + ->whereNotNull('updated_at') + ->whereRaw('updated_at > "2025-03-31 23:59:59"') + ->selectRaw('AVG(TIMESTAMPDIFF(SECOND, created_at, updated_at)) as avg_processing') + ->value('avg_processing'); + + $averageExternalDate = DB::table('videos') + ->where('data_downloaded', false) + ->whereNotNull('external_date') + ->selectRaw('AVG(UNIX_TIMESTAMP(external_date)) as avg_timestamp') + ->value('avg_timestamp'); + + $now = Carbon::now()->timestamp; + + $vodDelayNow = $averageExternalDate ? ($now - $averageExternalDate) : null; + + // 3. Average clip count per day (only clips from the last 30 days) + $clipsPerDay = Clip::where('created_at', '>=', $thirtyDaysAgo) + ->selectRaw('DATE(created_at) as date, COUNT(*) as clip_count') + ->whereRaw('created_at > "2025-03-28 23:59:59"') + ->groupBy(DB::raw('DATE(created_at)')) + ->pluck('clip_count'); + + $averageClipsPerDay = $clipsPerDay->avg(); + + // 4. Count of videos: downloaded = true & false + $videoDownloadStats = Video::selectRaw(" + SUM(CASE WHEN data_downloaded = 1 THEN 1 ELSE 0 END) as downloaded_true, + SUM(CASE WHEN data_downloaded = 0 THEN 1 ELSE 0 END) as downloaded_false + ")->first(); + + // 5. Count of videos with processed = true + $processedVideoCount = Video::where('processed', true)->count(); + + // Return all the stats + return response()->json([ + 'transcription_duration_average' => round($transcriptionDurationAverage, 2), + 'vod_processing_average' => round($vodDelayNow, 2), + 'clip_average_per_day' => round($averageClipsPerDay, 0), + 'video_downloaded_true' => $videoDownloadStats->downloaded_true, + 'video_downloaded_false' => $videoDownloadStats->downloaded_false, + 'processed_video_count' => $processedVideoCount, + ]); + } +} + +?> diff --git a/app/Http/Controllers/VideoController.php b/app/Http/Controllers/VideoController.php new file mode 100644 index 0000000..eae5a13 --- /dev/null +++ b/app/Http/Controllers/VideoController.php @@ -0,0 +1,46 @@ +has('channel_ids')) { + $query->whereIn('channel_id', $request->input('channel_ids')); + } + + // Filter by language if provided + // Assuming that the Video model has a relationship to Channel + // and the Channel model has a 'language' attribute + if ($request->has('languages')) { + $languages = $request->input('languages'); + $query->whereHas('channel', function ($q) use ($languages) { + $q->whereIn('language', $languages); + }); + } + + if($request->has('start_date') && $request->has('end_date')) { + $query->whereBetween('external_date', [$request->input('start_date'), $request->input('end_date')]); + } + + // Retrieve the videos (you can add pagination if desired) + $videos = $query->orderBy('external_date', 'desc')->get(); + + // Return the videos as a JSON response + return response()->json($videos); + } +} diff --git a/app/Http/Middleware/HandleInertiaRequests.php b/app/Http/Middleware/HandleInertiaRequests.php new file mode 100644 index 0000000..51a9b05 --- /dev/null +++ b/app/Http/Middleware/HandleInertiaRequests.php @@ -0,0 +1,41 @@ + + */ + public function share(Request $request): array + { + return [ + ...parent::share($request), + 'ziggy' => fn () => [ + ...(new Ziggy)->toArray(), + 'location' => $request->url(), + ], + ]; + } +} diff --git a/app/Models/Channel.php b/app/Models/Channel.php new file mode 100644 index 0000000..93577fa --- /dev/null +++ b/app/Models/Channel.php @@ -0,0 +1,28 @@ +hasMany(Video::class); + } +} diff --git a/app/Models/Clip.php b/app/Models/Clip.php new file mode 100644 index 0000000..d9a59a6 --- /dev/null +++ b/app/Models/Clip.php @@ -0,0 +1,24 @@ +belongsTo(Video::class); + } +} diff --git a/app/Models/Membership.php b/app/Models/Membership.php new file mode 100644 index 0000000..f4ca843 --- /dev/null +++ b/app/Models/Membership.php @@ -0,0 +1,15 @@ + */ + use HasFactory; + + /** + * The attributes that are mass assignable. + * + * @var array + */ + protected $fillable = [ + 'name', + 'personal_team', + ]; + + /** + * The event map for the model. + * + * @var array + */ + protected $dispatchesEvents = [ + 'created' => TeamCreated::class, + 'updated' => TeamUpdated::class, + 'deleted' => TeamDeleted::class, + ]; + + /** + * Get the attributes that should be cast. + * + * @return array + */ + protected function casts(): array + { + return [ + 'personal_team' => 'boolean', + ]; + } +} diff --git a/app/Models/TeamInvitation.php b/app/Models/TeamInvitation.php new file mode 100644 index 0000000..a1d432e --- /dev/null +++ b/app/Models/TeamInvitation.php @@ -0,0 +1,28 @@ + + */ + protected $fillable = [ + 'email', + 'role', + ]; + + /** + * Get the team that the invitation belongs to. + */ + public function team(): BelongsTo + { + return $this->belongsTo(Jetstream::teamModel()); + } +} diff --git a/app/Models/Transcription.php b/app/Models/Transcription.php new file mode 100644 index 0000000..bc7b634 --- /dev/null +++ b/app/Models/Transcription.php @@ -0,0 +1,28 @@ +belongsTo(Video::class); + } +} diff --git a/app/Models/User.php b/app/Models/User.php new file mode 100644 index 0000000..62a3eb5 --- /dev/null +++ b/app/Models/User.php @@ -0,0 +1,69 @@ + */ + use HasFactory; + use HasProfilePhoto; + use HasTeams; + use Notifiable; + use TwoFactorAuthenticatable; + + /** + * The attributes that are mass assignable. + * + * @var array + */ + protected $fillable = [ + 'name', + 'email', + 'password', + ]; + + /** + * The attributes that should be hidden for serialization. + * + * @var array + */ + protected $hidden = [ + 'password', + 'remember_token', + 'two_factor_recovery_codes', + 'two_factor_secret', + ]; + + /** + * The accessors to append to the model's array form. + * + * @var array + */ + protected $appends = [ + 'profile_photo_url', + ]; + + /** + * Get the attributes that should be cast. + * + * @return array + */ + protected function casts(): array + { + return [ + 'email_verified_at' => 'datetime', + 'password' => 'hashed', + ]; + } +} diff --git a/app/Models/Video.php b/app/Models/Video.php new file mode 100644 index 0000000..6ed759c --- /dev/null +++ b/app/Models/Video.php @@ -0,0 +1,46 @@ +belongsTo(Channel::class); + } + + /** + * Get the transcriptions for the video. + */ + public function transcriptions() + { + return $this->hasMany(Transcription::class); + } + + /** + * Get the clips for the video. + */ + public function clips() + { + return $this->hasMany(Clip::class); + } +} diff --git a/app/Policies/TeamPolicy.php b/app/Policies/TeamPolicy.php new file mode 100644 index 0000000..0daf27f --- /dev/null +++ b/app/Policies/TeamPolicy.php @@ -0,0 +1,76 @@ +belongsToTeam($team); + } + + /** + * Determine whether the user can create models. + */ + public function create(User $user): bool + { + return true; + } + + /** + * Determine whether the user can update the model. + */ + public function update(User $user, Team $team): bool + { + return $user->ownsTeam($team); + } + + /** + * Determine whether the user can add team members. + */ + public function addTeamMember(User $user, Team $team): bool + { + return $user->ownsTeam($team); + } + + /** + * Determine whether the user can update team member permissions. + */ + public function updateTeamMember(User $user, Team $team): bool + { + return $user->ownsTeam($team); + } + + /** + * Determine whether the user can remove team members. + */ + public function removeTeamMember(User $user, Team $team): bool + { + return $user->ownsTeam($team); + } + + /** + * Determine whether the user can delete the model. + */ + public function delete(User $user, Team $team): bool + { + return $user->ownsTeam($team); + } +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php new file mode 100644 index 0000000..452e6b6 --- /dev/null +++ b/app/Providers/AppServiceProvider.php @@ -0,0 +1,24 @@ +input(Fortify::username())).'|'.$request->ip()); + + return Limit::perMinute(5)->by($throttleKey); + }); + + RateLimiter::for('two-factor', function (Request $request) { + return Limit::perMinute(5)->by($request->session()->get('login.id')); + }); + } +} diff --git a/app/Providers/JetstreamServiceProvider.php b/app/Providers/JetstreamServiceProvider.php new file mode 100644 index 0000000..ca8ce8e --- /dev/null +++ b/app/Providers/JetstreamServiceProvider.php @@ -0,0 +1,61 @@ +configurePermissions(); + + Jetstream::createTeamsUsing(CreateTeam::class); + Jetstream::updateTeamNamesUsing(UpdateTeamName::class); + Jetstream::addTeamMembersUsing(AddTeamMember::class); + Jetstream::inviteTeamMembersUsing(InviteTeamMember::class); + Jetstream::removeTeamMembersUsing(RemoveTeamMember::class); + Jetstream::deleteTeamsUsing(DeleteTeam::class); + Jetstream::deleteUsersUsing(DeleteUser::class); + } + + /** + * Configure the roles and permissions that are available within the application. + */ + protected function configurePermissions(): void + { + Jetstream::defaultApiTokenPermissions(['read']); + + Jetstream::role('admin', 'Administrator', [ + 'create', + 'read', + 'update', + 'delete', + ])->description('Administrator users can perform any action.'); + + Jetstream::role('editor', 'Editor', [ + 'read', + 'create', + 'update', + ])->description('Editor users have the ability to read, create, and update.'); + } +} diff --git a/artisan b/artisan new file mode 100755 index 0000000..c35e31d --- /dev/null +++ b/artisan @@ -0,0 +1,18 @@ +#!/usr/bin/env php +handleCommand(new ArgvInput); + +exit($status); diff --git a/bootstrap/app.php b/bootstrap/app.php new file mode 100644 index 0000000..461aafd --- /dev/null +++ b/bootstrap/app.php @@ -0,0 +1,24 @@ +withRouting( + web: __DIR__.'/../routes/web.php', + api: __DIR__.'/../routes/api.php', + commands: __DIR__.'/../routes/console.php', + health: '/up', + ) + ->withMiddleware(function (Middleware $middleware) { + $middleware->web(append: [ + \App\Http\Middleware\HandleInertiaRequests::class, + \Illuminate\Http\Middleware\AddLinkHeadersForPreloadedAssets::class, + ]); + + // + }) + ->withExceptions(function (Exceptions $exceptions) { + // + })->create(); diff --git a/bootstrap/cache/.gitignore b/bootstrap/cache/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/bootstrap/cache/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/bootstrap/providers.php b/bootstrap/providers.php new file mode 100644 index 0000000..55e8e15 --- /dev/null +++ b/bootstrap/providers.php @@ -0,0 +1,7 @@ + `${title} - ${appName}`, + progress: { + color: "#4B5563" + }, + resolve: (name) => resolvePageComponent( + `./Pages/${name}.tsx`, + /* @__PURE__ */ Object.assign({ "./Pages/API/Index.tsx": () => import("./assets/Index-CwIeEkIw.js"), "./Pages/API/Partials/APITokenManager.tsx": () => import("./assets/APITokenManager-iZxUx3eK.js"), "./Pages/Auth/ConfirmPassword.tsx": () => import("./assets/ConfirmPassword-ju6YtACP.js"), "./Pages/Auth/ForgotPassword.tsx": () => import("./assets/ForgotPassword-BhYnh0qc.js"), "./Pages/Auth/Login.tsx": () => import("./assets/Login-P_qEmbLO.js"), "./Pages/Auth/Register.tsx": () => import("./assets/Register-anJ95HWS.js"), "./Pages/Auth/ResetPassword.tsx": () => import("./assets/ResetPassword-DAOSACWm.js"), "./Pages/Auth/TwoFactorChallenge.tsx": () => import("./assets/TwoFactorChallenge-Tkr6HCx-.js"), "./Pages/Auth/VerifyEmail.tsx": () => import("./assets/VerifyEmail--hB-n-6S.js"), "./Pages/Dashboard.tsx": () => import("./assets/Dashboard-CkDsUhZk.js"), "./Pages/PrivacyPolicy.tsx": () => import("./assets/PrivacyPolicy-DYEevN3b.js"), "./Pages/Profile/Partials/DeleteUserForm.tsx": () => import("./assets/DeleteUserForm-Ptw0GKXr.js"), "./Pages/Profile/Partials/LogoutOtherBrowserSessionsForm.tsx": () => import("./assets/LogoutOtherBrowserSessionsForm-Bd8DyQdZ.js"), "./Pages/Profile/Partials/TwoFactorAuthenticationForm.tsx": () => import("./assets/TwoFactorAuthenticationForm-BLalZpWn.js"), "./Pages/Profile/Partials/UpdatePasswordForm.tsx": () => import("./assets/UpdatePasswordForm-B_100APE.js"), "./Pages/Profile/Partials/UpdateProfileInformationForm.tsx": () => import("./assets/UpdateProfileInformationForm-g6OOT46r.js"), "./Pages/Profile/Show.tsx": () => import("./assets/Show-DAwzGQF4.js"), "./Pages/Teams/Create.tsx": () => import("./assets/Create-Bq48ODsT.js"), "./Pages/Teams/Partials/CreateTeamForm.tsx": () => import("./assets/CreateTeamForm-CmUI_Zfp.js"), "./Pages/Teams/Partials/DeleteTeamForm.tsx": () => import("./assets/DeleteTeamForm-CDG-Mx5L.js"), "./Pages/Teams/Partials/TeamMemberManager.tsx": () => import("./assets/TeamMemberManager-vS8Og7eY.js"), "./Pages/Teams/Partials/UpdateTeamNameForm.tsx": () => import("./assets/UpdateTeamNameForm-CArH28KV.js"), "./Pages/Teams/Show.tsx": () => import("./assets/Show-C_aCmrEJ.js"), "./Pages/TermsOfService.tsx": () => import("./assets/TermsOfService-CfLQttvD.js"), "./Pages/Welcome.tsx": () => import("./assets/Welcome-Bnby2VG4.js") }) + ), + setup({ el, App, props }) { + const root = createRoot(el); + return root.render( + /* @__PURE__ */ jsx(RouteContext.Provider, { value: window.route, children: /* @__PURE__ */ jsx(App, { ...props }) }) + ); + } +}); +export { + useRoute as u +}; diff --git a/bootstrap/ssr/assets/APITokenManager-iZxUx3eK.js b/bootstrap/ssr/assets/APITokenManager-iZxUx3eK.js new file mode 100644 index 0000000..167d162 --- /dev/null +++ b/bootstrap/ssr/assets/APITokenManager-iZxUx3eK.js @@ -0,0 +1,306 @@ +import { jsxs, jsx, Fragment } from "react/jsx-runtime"; +import { useForm } from "@inertiajs/react"; +import classNames from "classnames"; +import { useState } from "react"; +import { u as useRoute } from "../app.js"; +import { A as ActionMessage } from "./ActionMessage-s_mcCJ3s.js"; +import { A as ActionSection } from "./Modal-D5yHmTM4.js"; +import { C as Checkbox } from "./Checkbox-XR8K_oHK.js"; +import { C as ConfirmationModal } from "./ConfirmationModal-BYr2Juy2.js"; +import { D as DangerButton } from "./DangerButton-BAZynYAq.js"; +import { D as DialogModal } from "./DialogModal-D0pyMzH2.js"; +import { F as FormSection } from "./FormSection-DI6t3wFC.js"; +import { T as TextInput, I as InputError } from "./TextInput-CMJy2hIv.js"; +import { I as InputLabel } from "./InputLabel-DhqxoV6M.js"; +import { P as PrimaryButton } from "./PrimaryButton-C2B8UWiv.js"; +import { S as SecondaryButton } from "./SecondaryButton-G68tKuYQ.js"; +import { S as SectionBorder } from "./SectionBorder-Dh4nHf2e.js"; +import { u as useTypedPage } from "./useTypedPage-Do3SqtsL.js"; +import "axios"; +import "lodash"; +import "react-dom/client"; +import "@headlessui/react"; +import "./SectionTitle-DnuUNpyS.js"; +import "react-dom"; +function APITokenManager({ + tokens, + availablePermissions, + defaultPermissions +}) { + var _a, _b, _c; + const route = useRoute(); + const createApiTokenForm = useForm({ + name: "", + permissions: defaultPermissions + }); + const updateApiTokenForm = useForm({ + permissions: [] + }); + const deleteApiTokenForm = useForm({}); + const [displayingToken, setDisplayingToken] = useState(false); + const [managingPermissionsFor, setManagingPermissionsFor] = useState(null); + const [apiTokenBeingDeleted, setApiTokenBeingDeleted] = useState(null); + const page = useTypedPage(); + function createApiToken() { + createApiTokenForm.post(route("api-tokens.store"), { + preserveScroll: true, + onSuccess: () => { + setDisplayingToken(true); + createApiTokenForm.reset(); + } + }); + } + function manageApiTokenPermissions(token) { + updateApiTokenForm.setData("permissions", token.abilities); + setManagingPermissionsFor(token); + } + function updateApiToken() { + if (!managingPermissionsFor) { + return; + } + updateApiTokenForm.put( + route("api-tokens.update", [managingPermissionsFor]), + { + preserveScroll: true, + preserveState: true, + onSuccess: () => setManagingPermissionsFor(null) + } + ); + } + function confirmApiTokenDeletion(token) { + setApiTokenBeingDeleted(token); + } + function deleteApiToken() { + if (!apiTokenBeingDeleted) { + return; + } + deleteApiTokenForm.delete( + route("api-tokens.destroy", [apiTokenBeingDeleted]), + { + preserveScroll: true, + preserveState: true, + onSuccess: () => setApiTokenBeingDeleted(null) + } + ); + } + return /* @__PURE__ */ jsxs("div", { children: [ + /* @__PURE__ */ jsxs( + FormSection, + { + onSubmit: createApiToken, + title: "Create API Token", + description: "API tokens allow third-party services to authenticate with our application on your behalf.", + renderActions: () => /* @__PURE__ */ jsxs(Fragment, { children: [ + /* @__PURE__ */ jsx( + ActionMessage, + { + on: createApiTokenForm.recentlySuccessful, + className: "mr-3", + children: "Created." + } + ), + /* @__PURE__ */ jsx( + PrimaryButton, + { + className: classNames({ + "opacity-25": createApiTokenForm.processing + }), + disabled: createApiTokenForm.processing, + children: "Create" + } + ) + ] }), + children: [ + /* @__PURE__ */ jsxs("div", { className: "col-span-6 sm:col-span-4", children: [ + /* @__PURE__ */ jsx(InputLabel, { htmlFor: "name", children: "Name" }), + /* @__PURE__ */ jsx( + TextInput, + { + id: "name", + type: "text", + className: "mt-1 block w-full", + value: createApiTokenForm.data.name, + onChange: (e) => createApiTokenForm.setData("name", e.currentTarget.value), + autoFocus: true + } + ), + /* @__PURE__ */ jsx( + InputError, + { + message: createApiTokenForm.errors.name, + className: "mt-2" + } + ) + ] }), + availablePermissions.length > 0 && /* @__PURE__ */ jsxs("div", { className: "col-span-6", children: [ + /* @__PURE__ */ jsx(InputLabel, { htmlFor: "permissions", children: "Permissions" }), + /* @__PURE__ */ jsx("div", { className: "mt-2 grid grid-cols-1 md:grid-cols-2 gap-4", children: availablePermissions.map((permission) => /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs("label", { className: "flex items-center", children: [ + /* @__PURE__ */ jsx( + Checkbox, + { + value: permission, + checked: createApiTokenForm.data.permissions.includes( + permission + ), + onChange: (e) => { + if (createApiTokenForm.data.permissions.includes( + e.currentTarget.value + )) { + createApiTokenForm.setData( + "permissions", + createApiTokenForm.data.permissions.filter( + (p) => p !== e.currentTarget.value + ) + ); + } else { + createApiTokenForm.setData("permissions", [ + e.currentTarget.value, + ...createApiTokenForm.data.permissions + ]); + } + } + } + ), + /* @__PURE__ */ jsx("span", { className: "ml-2 text-sm text-gray-600 dark:text-gray-400", children: permission }) + ] }) }, permission)) }) + ] }) + ] + } + ), + tokens.length > 0 ? /* @__PURE__ */ jsxs("div", { children: [ + /* @__PURE__ */ jsx(SectionBorder, {}), + /* @__PURE__ */ jsx("div", { className: "mt-10 sm:mt-0", children: /* @__PURE__ */ jsx( + ActionSection, + { + title: "Manage API Tokens", + description: "You may delete any of your existing tokens if they are no longer needed.", + children: /* @__PURE__ */ jsx("div", { className: "space-y-6", children: tokens.map((token) => /* @__PURE__ */ jsxs( + "div", + { + className: "flex items-center justify-between", + children: [ + /* @__PURE__ */ jsx("div", { className: "break-all dark:text-white", children: token.name }), + /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [ + token.last_used_ago && /* @__PURE__ */ jsxs("div", { className: "text-sm text-gray-400", children: [ + "Last used ", + token.last_used_ago + ] }), + availablePermissions.length > 0 ? /* @__PURE__ */ jsx( + PrimaryButton, + { + className: "cursor-pointer ml-6 text-sm text-gray-400 underline", + onClick: () => manageApiTokenPermissions(token), + children: "Permissions" + } + ) : null, + /* @__PURE__ */ jsx( + PrimaryButton, + { + className: "cursor-pointer ml-6 text-sm text-red-500", + onClick: () => confirmApiTokenDeletion(token), + children: "Delete" + } + ) + ] }) + ] + }, + token.id + )) }) + } + ) }) + ] }) : null, + /* @__PURE__ */ jsxs( + DialogModal, + { + isOpen: displayingToken, + onClose: () => setDisplayingToken(false), + children: [ + /* @__PURE__ */ jsxs(DialogModal.Content, { title: "API Token", children: [ + /* @__PURE__ */ jsx("div", { children: "Please copy your new API token. For your security, it won't be shown again." }), + /* @__PURE__ */ jsx("div", { className: "mt-4 bg-gray-100 dark:bg-gray-900 px-4 py-2 rounded-sm font-mono text-sm text-gray-500", children: (_c = (_b = (_a = page.props) == null ? void 0 : _a.jetstream) == null ? void 0 : _b.flash) == null ? void 0 : _c.token }) + ] }), + /* @__PURE__ */ jsx(DialogModal.Footer, { children: /* @__PURE__ */ jsx(SecondaryButton, { onClick: () => setDisplayingToken(false), children: "Close" }) }) + ] + } + ), + /* @__PURE__ */ jsxs( + DialogModal, + { + isOpen: !!managingPermissionsFor, + onClose: () => setManagingPermissionsFor(null), + children: [ + /* @__PURE__ */ jsx(DialogModal.Content, { title: "API Token Permissions", children: /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: availablePermissions.map((permission) => /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs("label", { className: "flex items-center", children: [ + /* @__PURE__ */ jsx( + Checkbox, + { + value: permission, + checked: updateApiTokenForm.data.permissions.includes( + permission + ), + onChange: (e) => { + if (updateApiTokenForm.data.permissions.includes( + e.currentTarget.value + )) { + updateApiTokenForm.setData( + "permissions", + updateApiTokenForm.data.permissions.filter( + (p) => p !== e.currentTarget.value + ) + ); + } else { + updateApiTokenForm.setData("permissions", [ + e.currentTarget.value, + ...updateApiTokenForm.data.permissions + ]); + } + } + } + ), + /* @__PURE__ */ jsx("span", { className: "ml-2 text-sm text-gray-600 dark:text-gray-400", children: permission }) + ] }) }, permission)) }) }), + /* @__PURE__ */ jsxs(DialogModal.Footer, { children: [ + /* @__PURE__ */ jsx(SecondaryButton, { onClick: () => setManagingPermissionsFor(null), children: "Cancel" }), + /* @__PURE__ */ jsx( + PrimaryButton, + { + onClick: updateApiToken, + className: classNames("ml-2", { + "opacity-25": updateApiTokenForm.processing + }), + disabled: updateApiTokenForm.processing, + children: "Save" + } + ) + ] }) + ] + } + ), + /* @__PURE__ */ jsxs( + ConfirmationModal, + { + isOpen: !!apiTokenBeingDeleted, + onClose: () => setApiTokenBeingDeleted(null), + children: [ + /* @__PURE__ */ jsx(ConfirmationModal.Content, { title: "Delete API Token", children: "Are you sure you would like to delete this API token?" }), + /* @__PURE__ */ jsxs(ConfirmationModal.Footer, { children: [ + /* @__PURE__ */ jsx(SecondaryButton, { onClick: () => setApiTokenBeingDeleted(null), children: "Cancel" }), + /* @__PURE__ */ jsx( + DangerButton, + { + onClick: deleteApiToken, + className: classNames("ml-2", { + "opacity-25": deleteApiTokenForm.processing + }), + disabled: deleteApiTokenForm.processing, + children: "Delete" + } + ) + ] }) + ] + } + ) + ] }); +} +export { + APITokenManager as default +}; diff --git a/bootstrap/ssr/assets/ActionMessage-s_mcCJ3s.js b/bootstrap/ssr/assets/ActionMessage-s_mcCJ3s.js new file mode 100644 index 0000000..4e0ab1e --- /dev/null +++ b/bootstrap/ssr/assets/ActionMessage-s_mcCJ3s.js @@ -0,0 +1,21 @@ +import { jsx } from "react/jsx-runtime"; +import { Transition } from "@headlessui/react"; +function ActionMessage({ + on, + className, + children +}) { + return /* @__PURE__ */ jsx("div", { className, children: /* @__PURE__ */ jsx( + Transition, + { + show: on, + leave: "transition ease-in duration-1000", + "leave-from-class": "opacity-100", + leaveTo: "opacity-0", + children: /* @__PURE__ */ jsx("div", { className: "text-sm text-gray-600 dark:text-gray-400", children }) + } + ) }); +} +export { + ActionMessage as A +}; diff --git a/bootstrap/ssr/assets/AppLayout-DitNPgwT.js b/bootstrap/ssr/assets/AppLayout-DitNPgwT.js new file mode 100644 index 0000000..c1723ad --- /dev/null +++ b/bootstrap/ssr/assets/AppLayout-DitNPgwT.js @@ -0,0 +1,591 @@ +import { jsxs, jsx, Fragment } from "react/jsx-runtime"; +import { router } from "@inertiajs/core"; +import { Link, Head } from "@inertiajs/react"; +import classNames from "classnames"; +import { useState } from "react"; +import { u as useRoute } from "../app.js"; +import { u as useTypedPage } from "./useTypedPage-Do3SqtsL.js"; +import { Transition } from "@headlessui/react"; +function ApplicationMark(props) { + return /* @__PURE__ */ jsxs( + "svg", + { + viewBox: "0 0 48 48", + fill: "none", + xmlns: "http://www.w3.org/2000/svg", + ...props, + children: [ + /* @__PURE__ */ jsx( + "path", + { + d: "M11.395 44.428C4.557 40.198 0 32.632 0 24 0 10.745 10.745 0 24 0a23.891 23.891 0 0113.997 4.502c-.2 17.907-11.097 33.245-26.602 39.926z", + fill: "#6875F5" + } + ), + /* @__PURE__ */ jsx( + "path", + { + d: "M14.134 45.885A23.914 23.914 0 0024 48c13.255 0 24-10.745 24-24 0-3.516-.756-6.856-2.115-9.866-4.659 15.143-16.608 27.092-31.75 31.751z", + fill: "#6875F5" + } + ) + ] + } + ); +} +function Banner() { + var _a, _b; + const [show, setShow] = useState(true); + const { props } = useTypedPage(); + const style = ((_a = props.jetstream.flash) == null ? void 0 : _a.bannerStyle) || "success"; + const message = ((_b = props.jetstream.flash) == null ? void 0 : _b.banner) || ""; + return /* @__PURE__ */ jsx("div", { children: show && message ? /* @__PURE__ */ jsx( + "div", + { + className: classNames({ + "bg-indigo-500": style == "success", + "bg-red-700": style == "danger" + }), + children: /* @__PURE__ */ jsx("div", { className: "max-w-(--breakpoint-xl) mx-auto py-2 px-3 sm:px-6 lg:px-8", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between flex-wrap", children: [ + /* @__PURE__ */ jsxs("div", { className: "w-0 flex-1 flex items-center min-w-0", children: [ + /* @__PURE__ */ jsx( + "span", + { + className: classNames("flex p-2 rounded-lg", { + "bg-indigo-600": style == "success", + "bg-red-600": style == "danger" + }), + children: (() => { + switch (style) { + case "success": + return /* @__PURE__ */ jsx( + "svg", + { + className: "h-5 w-5 text-white", + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + stroke: "currentColor", + children: /* @__PURE__ */ jsx( + "path", + { + strokeLinecap: "round", + strokeLinejoin: "round", + strokeWidth: "2", + d: "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" + } + ) + } + ); + case "danger": + return /* @__PURE__ */ jsx( + "svg", + { + className: "h-5 w-5 text-white", + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + stroke: "currentColor", + children: /* @__PURE__ */ jsx( + "path", + { + strokeLinecap: "round", + strokeLinejoin: "round", + strokeWidth: "2", + d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" + } + ) + } + ); + default: + return null; + } + })() + } + ), + /* @__PURE__ */ jsx("p", { className: "ml-3 font-medium text-sm text-white truncate", children: message }) + ] }), + /* @__PURE__ */ jsx("div", { className: "shrink-0 sm:ml-3", children: /* @__PURE__ */ jsx( + "button", + { + type: "button", + className: classNames( + "-mr-1 flex p-2 rounded-md focus:outline-hidden sm:-mr-2 transition", + { + "hover:bg-indigo-600 focus:bg-indigo-600": style == "success", + "hover:bg-red-600 focus:bg-red-600": style == "danger" + } + ), + "aria-label": "Dismiss", + onClick: (e) => { + e.preventDefault(); + setShow(false); + }, + children: /* @__PURE__ */ jsx( + "svg", + { + className: "h-5 w-5 text-white", + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + stroke: "currentColor", + children: /* @__PURE__ */ jsx( + "path", + { + strokeLinecap: "round", + strokeLinejoin: "round", + strokeWidth: "2", + d: "M6 18L18 6M6 6l12 12" + } + ) + } + ) + } + ) }) + ] }) }) + } + ) : null }); +} +function Dropdown({ + align = "right", + width = "48", + contentClasses = "py-1 bg-white dark:bg-gray-700", + renderTrigger, + children +}) { + const [open, setOpen] = useState(false); + const widthClass = { + "48": "w-48" + }[width.toString()]; + const alignmentClasses = (() => { + if (align === "left") { + return "origin-top-left left-0"; + } else if (align === "right") { + return "origin-top-right right-0"; + } else { + return "origin-top"; + } + })(); + return /* @__PURE__ */ jsxs("div", { className: "relative", children: [ + /* @__PURE__ */ jsx("div", { onClick: () => setOpen(!open), children: renderTrigger() }), + /* @__PURE__ */ jsx( + "div", + { + className: "fixed inset-0 z-40", + style: { display: open ? "block" : "none" }, + onClick: () => setOpen(false) + } + ), + /* @__PURE__ */ jsx( + Transition, + { + show: open, + enter: "transition ease-out duration-200", + enterFrom: "transform opacity-0 scale-95", + enterTo: "transform opacity-100 scale-100", + leave: "transition ease-in duration-75", + leaveFrom: "transform opacity-100 scale-100", + leaveTo: "transform opacity-0 scale-95", + children: /* @__PURE__ */ jsx("div", { className: "relative z-50", children: /* @__PURE__ */ jsx( + "div", + { + className: classNames( + "absolute mt-2 rounded-md shadow-lg", + widthClass, + alignmentClasses + ), + onClick: () => setOpen(false), + children: /* @__PURE__ */ jsx( + "div", + { + className: classNames( + "rounded-md ring-1 ring-black ring-opacity-5", + contentClasses + ), + children + } + ) + } + ) }) + } + ) + ] }); +} +function DropdownLink({ + as, + href, + children +}) { + return /* @__PURE__ */ jsx("div", { children: (() => { + switch (as) { + case "button": + return /* @__PURE__ */ jsx( + "button", + { + type: "submit", + className: "block w-full px-4 py-2 text-left text-sm leading-5 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 focus:outline-hidden focus:bg-gray-100 dark:focus:bg-gray-800 transition duration-150 ease-in-out", + children + } + ); + case "a": + return /* @__PURE__ */ jsx( + "a", + { + href, + className: "block px-4 py-2 text-sm leading-5 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 focus:outline-hidden focus:bg-gray-100 dark:focus:bg-gray-800 transition duration-150 ease-in-out", + children + } + ); + default: + return /* @__PURE__ */ jsx( + Link, + { + href: href || "", + className: "block px-4 py-2 text-sm leading-5 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 focus:outline-hidden focus:bg-gray-100 dark:focus:bg-gray-800 transition duration-150 ease-in-out", + children + } + ); + } + })() }); +} +function NavLink({ + active, + href, + children +}) { + const classes = active ? "inline-flex items-center px-1 pt-1 border-b-2 border-indigo-400 dark:border-indigo-600 text-sm font-medium leading-5 text-gray-900 dark:text-gray-100 focus:outline-hidden focus:border-indigo-700 transition duration-150 ease-in-out" : "inline-flex items-center px-1 pt-1 border-b-2 border-transparent text-sm font-medium leading-5 text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 hover:border-gray-300 dark:hover:border-gray-700 focus:outline-hidden focus:text-gray-700 dark:focus:text-gray-300 focus:border-gray-300 dark:focus:border-gray-700 transition duration-150 ease-in-out"; + return /* @__PURE__ */ jsx(Link, { href, className: classes, children }); +} +function ResponsiveNavLink({ + active, + href, + children, + ...props +}) { + const classes = active ? "block w-full pl-3 pr-4 py-2 border-l-4 border-indigo-400 dark:border-indigo-600 text-left text-base font-medium text-indigo-700 dark:text-indigo-300 bg-indigo-50 dark:bg-indigo-900/50 focus:outline-hidden focus:text-indigo-800 dark:focus:text-indigo-200 focus:bg-indigo-100 dark:focus:bg-indigo-900 focus:border-indigo-700 dark:focus:border-indigo-300 transition duration-150 ease-in-out" : "block w-full pl-3 pr-4 py-2 border-l-4 border-transparent text-left text-base font-medium text-gray-600 dark:text-gray-400 hover:text-gray-800 dark:hover:text-gray-200 hover:bg-gray-50 dark:hover:bg-gray-700 hover:border-gray-300 dark:hover:border-gray-600 focus:outline-hidden focus:text-gray-800 dark:focus:text-gray-200 focus:bg-gray-50 dark:focus:bg-gray-700 focus:border-gray-300 dark:focus:border-gray-600 transition duration-150 ease-in-out"; + return /* @__PURE__ */ jsx("div", { children: "as" in props && props.as === "button" ? /* @__PURE__ */ jsx("button", { className: classNames("w-full text-left", classes), children }) : /* @__PURE__ */ jsx(Link, { href: href || "", className: classes, children }) }); +} +function AppLayout({ + title, + renderHeader, + children +}) { + var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j; + const page = useTypedPage(); + const route = useRoute(); + const [showingNavigationDropdown, setShowingNavigationDropdown] = useState(false); + function switchToTeam(e, team) { + e.preventDefault(); + router.put( + route("current-team.update"), + { + team_id: team.id + }, + { + preserveState: false + } + ); + } + function logout(e) { + e.preventDefault(); + router.post(route("logout")); + } + return /* @__PURE__ */ jsxs("div", { children: [ + /* @__PURE__ */ jsx(Head, { title }), + /* @__PURE__ */ jsx(Banner, {}), + /* @__PURE__ */ jsxs("div", { className: "min-h-screen bg-gray-100 dark:bg-gray-900", children: [ + /* @__PURE__ */ jsxs("nav", { className: "bg-white dark:bg-gray-800 border-b border-gray-100 dark:border-gray-700", children: [ + /* @__PURE__ */ jsx("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: /* @__PURE__ */ jsxs("div", { className: "flex justify-between h-16", children: [ + /* @__PURE__ */ jsxs("div", { className: "flex", children: [ + /* @__PURE__ */ jsx("div", { className: "shrink-0 flex items-center", children: /* @__PURE__ */ jsx(Link, { href: route("dashboard"), children: /* @__PURE__ */ jsx(ApplicationMark, { className: "block h-9 w-auto" }) }) }), + /* @__PURE__ */ jsx("div", { className: "hidden space-x-8 sm:-my-px sm:ml-10 sm:flex", children: /* @__PURE__ */ jsx( + NavLink, + { + href: route("dashboard"), + active: route().current("dashboard"), + children: "Dashboard" + } + ) }) + ] }), + /* @__PURE__ */ jsxs("div", { className: "hidden sm:flex sm:items-center sm:ml-6", children: [ + /* @__PURE__ */ jsx("div", { className: "ml-3 relative", children: page.props.jetstream.hasTeamFeatures ? /* @__PURE__ */ jsx( + Dropdown, + { + align: "right", + width: "60", + renderTrigger: () => { + var _a2, _b2; + return /* @__PURE__ */ jsx("span", { className: "inline-flex rounded-md", children: /* @__PURE__ */ jsxs( + "button", + { + type: "button", + className: "inline-flex items-center px-3 py-2 border border-transparent text-sm leading-4 font-medium rounded-md text-gray-500 dark:text-gray-400 bg-white dark:bg-gray-800 hover:text-gray-700 dark:hover:text-gray-300 focus:outline-hidden focus:bg-gray-50 dark:focus:bg-gray-700 active:bg-gray-50 dark:active:bg-gray-700 transition ease-in-out duration-150", + children: [ + (_b2 = (_a2 = page.props.auth.user) == null ? void 0 : _a2.current_team) == null ? void 0 : _b2.name, + /* @__PURE__ */ jsx( + "svg", + { + className: "ml-2 -mr-0.5 h-4 w-4", + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 20 20", + fill: "currentColor", + children: /* @__PURE__ */ jsx( + "path", + { + fillRule: "evenodd", + d: "M10 3a1 1 0 01.707.293l3 3a1 1 0 01-1.414 1.414L10 5.414 7.707 7.707a1 1 0 01-1.414-1.414l3-3A1 1 0 0110 3zm-3.707 9.293a1 1 0 011.414 0L10 14.586l2.293-2.293a1 1 0 011.414 1.414l-3 3a1 1 0 01-1.414 0l-3-3a1 1 0 010-1.414z", + clipRule: "evenodd" + } + ) + } + ) + ] + } + ) }); + }, + children: /* @__PURE__ */ jsx("div", { className: "w-60", children: page.props.jetstream.hasTeamFeatures ? /* @__PURE__ */ jsxs(Fragment, { children: [ + /* @__PURE__ */ jsx("div", { className: "block px-4 py-2 text-xs text-gray-400", children: "Manage Team" }), + /* @__PURE__ */ jsx( + DropdownLink, + { + href: route("teams.show", [ + (_a = page.props.auth.user) == null ? void 0 : _a.current_team + ]), + children: "Team Settings" + } + ), + page.props.jetstream.canCreateTeams ? /* @__PURE__ */ jsx(DropdownLink, { href: route("teams.create"), children: "Create New Team" }) : null, + /* @__PURE__ */ jsx("div", { className: "border-t border-gray-200 dark:border-gray-600" }), + /* @__PURE__ */ jsx("div", { className: "block px-4 py-2 text-xs text-gray-400", children: "Switch Teams" }), + (_c = (_b = page.props.auth.user) == null ? void 0 : _b.all_teams) == null ? void 0 : _c.map((team) => { + var _a2; + return /* @__PURE__ */ jsx( + "form", + { + onSubmit: (e) => switchToTeam(e, team), + children: /* @__PURE__ */ jsx(DropdownLink, { as: "button", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [ + team.id == ((_a2 = page.props.auth.user) == null ? void 0 : _a2.current_team_id) && /* @__PURE__ */ jsx( + "svg", + { + className: "mr-2 h-5 w-5 text-green-400", + fill: "none", + strokeLinecap: "round", + strokeLinejoin: "round", + strokeWidth: "2", + stroke: "currentColor", + viewBox: "0 0 24 24", + children: /* @__PURE__ */ jsx("path", { d: "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" }) + } + ), + /* @__PURE__ */ jsx("div", { children: team.name }) + ] }) }) + }, + team.id + ); + }) + ] }) : null }) + } + ) : null }), + /* @__PURE__ */ jsx("div", { className: "ml-3 relative", children: /* @__PURE__ */ jsxs( + Dropdown, + { + align: "right", + width: "48", + renderTrigger: () => { + var _a2, _b2, _c2; + return page.props.jetstream.managesProfilePhotos ? /* @__PURE__ */ jsx("button", { className: "flex text-sm border-2 border-transparent rounded-full focus:outline-hidden focus:border-gray-300 transition", children: /* @__PURE__ */ jsx( + "img", + { + className: "h-8 w-8 rounded-full object-cover", + src: (_a2 = page.props.auth.user) == null ? void 0 : _a2.profile_photo_url, + alt: (_b2 = page.props.auth.user) == null ? void 0 : _b2.name + } + ) }) : /* @__PURE__ */ jsx("span", { className: "inline-flex rounded-md", children: /* @__PURE__ */ jsxs( + "button", + { + type: "button", + className: "inline-flex items-center px-3 py-2 border border-transparent text-sm leading-4 font-medium rounded-md text-gray-500 dark:text-gray-400 bg-white dark:bg-gray-800 hover:text-gray-700 dark:hover:text-gray-300 focus:outline-hidden focus:bg-gray-50 dark:focus:bg-gray-700 active:bg-gray-50 dark:active:bg-gray-700 transition ease-in-out duration-150", + children: [ + (_c2 = page.props.auth.user) == null ? void 0 : _c2.name, + /* @__PURE__ */ jsx( + "svg", + { + className: "ml-2 -mr-0.5 h-4 w-4", + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 20 20", + fill: "currentColor", + children: /* @__PURE__ */ jsx( + "path", + { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M19.5 8.25l-7.5 7.5-7.5-7.5" + } + ) + } + ) + ] + } + ) }); + }, + children: [ + /* @__PURE__ */ jsx("div", { className: "block px-4 py-2 text-xs text-gray-400", children: "Manage Account" }), + /* @__PURE__ */ jsx(DropdownLink, { href: route("profile.show"), children: "Profile" }), + page.props.jetstream.hasApiFeatures ? /* @__PURE__ */ jsx(DropdownLink, { href: route("api-tokens.index"), children: "API Tokens" }) : null, + /* @__PURE__ */ jsx("div", { className: "border-t border-gray-200 dark:border-gray-600" }), + /* @__PURE__ */ jsx("form", { onSubmit: logout, children: /* @__PURE__ */ jsx(DropdownLink, { as: "button", children: "Log Out" }) }) + ] + } + ) }) + ] }), + /* @__PURE__ */ jsx("div", { className: "-mr-2 flex items-center sm:hidden", children: /* @__PURE__ */ jsx( + "button", + { + onClick: () => setShowingNavigationDropdown(!showingNavigationDropdown), + className: "inline-flex items-center justify-center p-2 rounded-md text-gray-400 dark:text-gray-500 hover:text-gray-500 dark:hover:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-900 focus:outline-hidden focus:bg-gray-100 dark:focus:bg-gray-900 focus:text-gray-500 dark:focus:text-gray-400 transition duration-150 ease-in-out", + children: /* @__PURE__ */ jsxs( + "svg", + { + className: "h-6 w-6", + stroke: "currentColor", + fill: "none", + viewBox: "0 0 24 24", + children: [ + /* @__PURE__ */ jsx( + "path", + { + className: classNames({ + hidden: showingNavigationDropdown, + "inline-flex": !showingNavigationDropdown + }), + strokeLinecap: "round", + strokeLinejoin: "round", + strokeWidth: "2", + d: "M4 6h16M4 12h16M4 18h16" + } + ), + /* @__PURE__ */ jsx( + "path", + { + className: classNames({ + hidden: !showingNavigationDropdown, + "inline-flex": showingNavigationDropdown + }), + strokeLinecap: "round", + strokeLinejoin: "round", + strokeWidth: "2", + d: "M6 18L18 6M6 6l12 12" + } + ) + ] + } + ) + } + ) }) + ] }) }), + /* @__PURE__ */ jsxs( + "div", + { + className: classNames("sm:hidden", { + block: showingNavigationDropdown, + hidden: !showingNavigationDropdown + }), + children: [ + /* @__PURE__ */ jsx("div", { className: "pt-2 pb-3 space-y-1", children: /* @__PURE__ */ jsx( + ResponsiveNavLink, + { + href: route("dashboard"), + active: route().current("dashboard"), + children: "Dashboard" + } + ) }), + /* @__PURE__ */ jsxs("div", { className: "pt-4 pb-1 border-t border-gray-200 dark:border-gray-600", children: [ + /* @__PURE__ */ jsxs("div", { className: "flex items-center px-4", children: [ + page.props.jetstream.managesProfilePhotos ? /* @__PURE__ */ jsx("div", { className: "shrink-0 mr-3", children: /* @__PURE__ */ jsx( + "img", + { + className: "h-10 w-10 rounded-full object-cover", + src: (_d = page.props.auth.user) == null ? void 0 : _d.profile_photo_url, + alt: (_e = page.props.auth.user) == null ? void 0 : _e.name + } + ) }) : null, + /* @__PURE__ */ jsxs("div", { children: [ + /* @__PURE__ */ jsx("div", { className: "font-medium text-base text-gray-800 dark:text-gray-200", children: (_f = page.props.auth.user) == null ? void 0 : _f.name }), + /* @__PURE__ */ jsx("div", { className: "font-medium text-sm text-gray-500", children: (_g = page.props.auth.user) == null ? void 0 : _g.email }) + ] }) + ] }), + /* @__PURE__ */ jsxs("div", { className: "mt-3 space-y-1", children: [ + /* @__PURE__ */ jsx( + ResponsiveNavLink, + { + href: route("profile.show"), + active: route().current("profile.show"), + children: "Profile" + } + ), + page.props.jetstream.hasApiFeatures ? /* @__PURE__ */ jsx( + ResponsiveNavLink, + { + href: route("api-tokens.index"), + active: route().current("api-tokens.index"), + children: "API Tokens" + } + ) : null, + /* @__PURE__ */ jsx("form", { method: "POST", onSubmit: logout, children: /* @__PURE__ */ jsx(ResponsiveNavLink, { as: "button", children: "Log Out" }) }), + page.props.jetstream.hasTeamFeatures ? /* @__PURE__ */ jsxs(Fragment, { children: [ + /* @__PURE__ */ jsx("div", { className: "border-t border-gray-200 dark:border-gray-600" }), + /* @__PURE__ */ jsx("div", { className: "block px-4 py-2 text-xs text-gray-400", children: "Manage Team" }), + /* @__PURE__ */ jsx( + ResponsiveNavLink, + { + href: route("teams.show", [ + (_h = page.props.auth.user) == null ? void 0 : _h.current_team + ]), + active: route().current("teams.show"), + children: "Team Settings" + } + ), + page.props.jetstream.canCreateTeams ? /* @__PURE__ */ jsx( + ResponsiveNavLink, + { + href: route("teams.create"), + active: route().current("teams.create"), + children: "Create New Team" + } + ) : null, + /* @__PURE__ */ jsx("div", { className: "border-t border-gray-200 dark:border-gray-600" }), + /* @__PURE__ */ jsx("div", { className: "block px-4 py-2 text-xs text-gray-400", children: "Switch Teams" }), + (_j = (_i = page.props.auth.user) == null ? void 0 : _i.all_teams) == null ? void 0 : _j.map((team) => { + var _a2; + return /* @__PURE__ */ jsx("form", { onSubmit: (e) => switchToTeam(e, team), children: /* @__PURE__ */ jsx(ResponsiveNavLink, { as: "button", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [ + team.id == ((_a2 = page.props.auth.user) == null ? void 0 : _a2.current_team_id) && /* @__PURE__ */ jsx( + "svg", + { + className: "mr-2 h-5 w-5 text-green-400", + fill: "none", + strokeLinecap: "round", + strokeLinejoin: "round", + strokeWidth: "2", + stroke: "currentColor", + viewBox: "0 0 24 24", + children: /* @__PURE__ */ jsx("path", { d: "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" }) + } + ), + /* @__PURE__ */ jsx("div", { children: team.name }) + ] }) }) }, team.id); + }) + ] }) : null + ] }) + ] }) + ] + } + ) + ] }), + renderHeader ? /* @__PURE__ */ jsx("header", { className: "bg-white dark:bg-gray-800 shadow-sm", children: /* @__PURE__ */ jsx("div", { className: "max-w-7xl mx-auto py-6 px-4 sm:px-6 lg:px-8", children: renderHeader() }) }) : null, + /* @__PURE__ */ jsx("main", { children }) + ] }) + ] }); +} +export { + AppLayout as A +}; diff --git a/bootstrap/ssr/assets/AuthenticationCard--MCzdtHR.js b/bootstrap/ssr/assets/AuthenticationCard--MCzdtHR.js new file mode 100644 index 0000000..c98a012 --- /dev/null +++ b/bootstrap/ssr/assets/AuthenticationCard--MCzdtHR.js @@ -0,0 +1,13 @@ +import { jsxs, jsx } from "react/jsx-runtime"; +import { A as AuthenticationCardLogo } from "./AuthenticationCardLogo-CZgVhhfE.js"; +function AuthenticationCard({ + children +}) { + return /* @__PURE__ */ jsxs("div", { className: "min-h-screen flex flex-col sm:justify-center items-center pt-6 sm:pt-0 bg-gray-100 dark:bg-gray-900", children: [ + /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(AuthenticationCardLogo, {}) }), + /* @__PURE__ */ jsx("div", { className: "w-full sm:max-w-md mt-6 px-6 py-4 bg-white dark:bg-gray-800 shadow-md overflow-hidden sm:rounded-lg", children }) + ] }); +} +export { + AuthenticationCard as A +}; diff --git a/bootstrap/ssr/assets/AuthenticationCardLogo-CZgVhhfE.js b/bootstrap/ssr/assets/AuthenticationCardLogo-CZgVhhfE.js new file mode 100644 index 0000000..2ae2d8b --- /dev/null +++ b/bootstrap/ssr/assets/AuthenticationCardLogo-CZgVhhfE.js @@ -0,0 +1,32 @@ +import { jsx, jsxs } from "react/jsx-runtime"; +import { Link } from "@inertiajs/react"; +function AuthenticationCardLogo() { + return /* @__PURE__ */ jsx(Link, { href: "/", children: /* @__PURE__ */ jsxs( + "svg", + { + className: "w-16 h-16", + viewBox: "0 0 48 48", + fill: "none", + xmlns: "http://www.w3.org/2000/svg", + children: [ + /* @__PURE__ */ jsx( + "path", + { + d: "M11.395 44.428C4.557 40.198 0 32.632 0 24 0 10.745 10.745 0 24 0a23.891 23.891 0 0113.997 4.502c-.2 17.907-11.097 33.245-26.602 39.926z", + fill: "#6875F5" + } + ), + /* @__PURE__ */ jsx( + "path", + { + d: "M14.134 45.885A23.914 23.914 0 0024 48c13.255 0 24-10.745 24-24 0-3.516-.756-6.856-2.115-9.866-4.659 15.143-16.608 27.092-31.75 31.751z", + fill: "#6875F5" + } + ) + ] + } + ) }); +} +export { + AuthenticationCardLogo as A +}; diff --git a/bootstrap/ssr/assets/Checkbox-XR8K_oHK.js b/bootstrap/ssr/assets/Checkbox-XR8K_oHK.js new file mode 100644 index 0000000..fac9fd9 --- /dev/null +++ b/bootstrap/ssr/assets/Checkbox-XR8K_oHK.js @@ -0,0 +1,18 @@ +import { jsx } from "react/jsx-runtime"; +import classNames from "classnames"; +function Checkbox(props) { + return /* @__PURE__ */ jsx( + "input", + { + type: "checkbox", + ...props, + className: classNames( + "rounded-sm dark:bg-gray-900 border-gray-300 dark:border-gray-700 text-indigo-600 shadow-xs focus:ring-indigo-500 dark:focus:ring-indigo-600 dark:focus:ring-offset-gray-800", + props.className + ) + } + ); +} +export { + Checkbox as C +}; diff --git a/bootstrap/ssr/assets/ConfirmPassword-ju6YtACP.js b/bootstrap/ssr/assets/ConfirmPassword-ju6YtACP.js new file mode 100644 index 0000000..ff8aaa0 --- /dev/null +++ b/bootstrap/ssr/assets/ConfirmPassword-ju6YtACP.js @@ -0,0 +1,59 @@ +import { jsxs, jsx } from "react/jsx-runtime"; +import { useForm, Head } from "@inertiajs/react"; +import classNames from "classnames"; +import { u as useRoute } from "../app.js"; +import { A as AuthenticationCard } from "./AuthenticationCard--MCzdtHR.js"; +import { T as TextInput, I as InputError } from "./TextInput-CMJy2hIv.js"; +import { I as InputLabel } from "./InputLabel-DhqxoV6M.js"; +import { P as PrimaryButton } from "./PrimaryButton-C2B8UWiv.js"; +import "axios"; +import "lodash"; +import "react-dom/client"; +import "react"; +import "./AuthenticationCardLogo-CZgVhhfE.js"; +function ConfirmPassword() { + const route = useRoute(); + const form = useForm({ + password: "" + }); + function onSubmit(e) { + e.preventDefault(); + form.post(route("password.confirm"), { + onFinish: () => form.reset() + }); + } + return /* @__PURE__ */ jsxs(AuthenticationCard, { children: [ + /* @__PURE__ */ jsx(Head, { title: "Secure Area" }), + /* @__PURE__ */ jsx("div", { className: "mb-4 text-sm text-gray-600 dark:text-gray-400", children: "This is a secure area of the application. Please confirm your password before continuing." }), + /* @__PURE__ */ jsxs("form", { onSubmit, children: [ + /* @__PURE__ */ jsxs("div", { children: [ + /* @__PURE__ */ jsx(InputLabel, { htmlFor: "password", children: "Password" }), + /* @__PURE__ */ jsx( + TextInput, + { + id: "password", + type: "password", + className: "mt-1 block w-full", + value: form.data.password, + onChange: (e) => form.setData("password", e.currentTarget.value), + required: true, + autoComplete: "current-password", + autoFocus: true + } + ), + /* @__PURE__ */ jsx(InputError, { className: "mt-2", message: form.errors.password }) + ] }), + /* @__PURE__ */ jsx("div", { className: "flex justify-end mt-4", children: /* @__PURE__ */ jsx( + PrimaryButton, + { + className: classNames("ml-4", { "opacity-25": form.processing }), + disabled: form.processing, + children: "Confirm" + } + ) }) + ] }) + ] }); +} +export { + ConfirmPassword as default +}; diff --git a/bootstrap/ssr/assets/ConfirmationModal-BYr2Juy2.js b/bootstrap/ssr/assets/ConfirmationModal-BYr2Juy2.js new file mode 100644 index 0000000..8062e8b --- /dev/null +++ b/bootstrap/ssr/assets/ConfirmationModal-BYr2Juy2.js @@ -0,0 +1,45 @@ +import { jsx, jsxs } from "react/jsx-runtime"; +import { M as Modal } from "./Modal-D5yHmTM4.js"; +ConfirmationModal.Content = function ConfirmationModalContent({ + title, + children +}) { + return /* @__PURE__ */ jsx("div", { className: "bg-white dark:bg-gray-800 px-4 pt-5 pb-4 sm:p-6 sm:pb-4", children: /* @__PURE__ */ jsxs("div", { className: "sm:flex sm:items-start", children: [ + /* @__PURE__ */ jsx("div", { className: "mx-auto shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-red-100 sm:mx-0 sm:h-10 sm:w-10", children: /* @__PURE__ */ jsx( + "svg", + { + className: "h-6 w-6 text-red-600 dark:text-red-400", + stroke: "currentColor", + fill: "none", + viewBox: "0 0 24 24", + children: /* @__PURE__ */ jsx( + "path", + { + strokeLinecap: "round", + strokeLinejoin: "round", + strokeWidth: "2", + d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" + } + ) + } + ) }), + /* @__PURE__ */ jsxs("div", { className: "mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left", children: [ + /* @__PURE__ */ jsx("h3", { className: "text-lg font-medium text-gray-900 dark:text-gray-100", children: title }), + /* @__PURE__ */ jsx("div", { className: "mt-4 text-sm text-gray-600 dark:text-gray-400", children }) + ] }) + ] }) }); +}; +ConfirmationModal.Footer = function ConfirmationModalFooter({ + children +}) { + return /* @__PURE__ */ jsx("div", { className: "px-6 py-4 bg-gray-100 dark:bg-gray-800 text-right", children }); +}; +function ConfirmationModal({ + children, + ...props +}) { + return /* @__PURE__ */ jsx(Modal, { ...props, children }); +} +export { + ConfirmationModal as C +}; diff --git a/bootstrap/ssr/assets/Create-Bq48ODsT.js b/bootstrap/ssr/assets/Create-Bq48ODsT.js new file mode 100644 index 0000000..93a2a9c --- /dev/null +++ b/bootstrap/ssr/assets/Create-Bq48ODsT.js @@ -0,0 +1,32 @@ +import { jsx } from "react/jsx-runtime"; +import CreateTeamForm from "./CreateTeamForm-CmUI_Zfp.js"; +import { A as AppLayout } from "./AppLayout-DitNPgwT.js"; +import "@inertiajs/react"; +import "../app.js"; +import "axios"; +import "lodash"; +import "react-dom/client"; +import "react"; +import "./useTypedPage-Do3SqtsL.js"; +import "./ActionMessage-s_mcCJ3s.js"; +import "@headlessui/react"; +import "./FormSection-DI6t3wFC.js"; +import "classnames"; +import "./SectionTitle-DnuUNpyS.js"; +import "./TextInput-CMJy2hIv.js"; +import "./InputLabel-DhqxoV6M.js"; +import "./PrimaryButton-C2B8UWiv.js"; +import "@inertiajs/core"; +function Create() { + return /* @__PURE__ */ jsx( + AppLayout, + { + title: "Create Team", + renderHeader: () => /* @__PURE__ */ jsx("h2", { className: "font-semibold text-xl text-gray-800 dark:text-gray-200 leading-tight", children: "Create Team" }), + children: /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx("div", { className: "max-w-7xl mx-auto py-10 sm:px-6 lg:px-8", children: /* @__PURE__ */ jsx(CreateTeamForm, {}) }) }) + } + ); +} +export { + Create as default +}; diff --git a/bootstrap/ssr/assets/CreateTeamForm-CmUI_Zfp.js b/bootstrap/ssr/assets/CreateTeamForm-CmUI_Zfp.js new file mode 100644 index 0000000..12625cf --- /dev/null +++ b/bootstrap/ssr/assets/CreateTeamForm-CmUI_Zfp.js @@ -0,0 +1,86 @@ +import { jsxs, jsx, Fragment } from "react/jsx-runtime"; +import { useForm } from "@inertiajs/react"; +import { u as useRoute } from "../app.js"; +import { u as useTypedPage } from "./useTypedPage-Do3SqtsL.js"; +import { A as ActionMessage } from "./ActionMessage-s_mcCJ3s.js"; +import { F as FormSection } from "./FormSection-DI6t3wFC.js"; +import { T as TextInput, I as InputError } from "./TextInput-CMJy2hIv.js"; +import { I as InputLabel } from "./InputLabel-DhqxoV6M.js"; +import { P as PrimaryButton } from "./PrimaryButton-C2B8UWiv.js"; +import classNames from "classnames"; +import "axios"; +import "lodash"; +import "react-dom/client"; +import "react"; +import "@headlessui/react"; +import "./SectionTitle-DnuUNpyS.js"; +function CreateTeamForm() { + var _a, _b, _c, _d; + const route = useRoute(); + const page = useTypedPage(); + const form = useForm({ + name: "" + }); + function createTeam() { + form.post(route("teams.store"), { + errorBag: "createTeam", + preserveScroll: true + }); + } + return /* @__PURE__ */ jsxs( + FormSection, + { + onSubmit: createTeam, + title: "Team Details", + description: "Create a new team to collaborate with others on projects.", + renderActions: () => /* @__PURE__ */ jsxs(Fragment, { children: [ + /* @__PURE__ */ jsx(ActionMessage, { on: form.recentlySuccessful, className: "mr-3", children: "Saved." }), + /* @__PURE__ */ jsx( + PrimaryButton, + { + className: classNames({ "opacity-25": form.processing }), + disabled: form.processing, + children: "Save" + } + ) + ] }), + children: [ + /* @__PURE__ */ jsxs("div", { className: "col-span-6", children: [ + /* @__PURE__ */ jsx(InputLabel, { value: "Team Owner" }), + /* @__PURE__ */ jsxs("div", { className: "flex items-center mt-2", children: [ + /* @__PURE__ */ jsx( + "img", + { + className: "w-12 h-12 rounded-full object-cover", + src: (_a = page.props.auth.user) == null ? void 0 : _a.profile_photo_url, + alt: (_b = page.props.auth.user) == null ? void 0 : _b.name + } + ), + /* @__PURE__ */ jsxs("div", { className: "ml-4 leading-tight", children: [ + /* @__PURE__ */ jsx("div", { className: "text-gray-900 dark:text-white", children: (_c = page.props.auth.user) == null ? void 0 : _c.name }), + /* @__PURE__ */ jsx("div", { className: "text-gray-700 dark:text-gray-300 text-sm", children: (_d = page.props.auth.user) == null ? void 0 : _d.email }) + ] }) + ] }) + ] }), + /* @__PURE__ */ jsxs("div", { className: "col-span-6 sm:col-span-4", children: [ + /* @__PURE__ */ jsx(InputLabel, { htmlFor: "name", value: "Team Name" }), + /* @__PURE__ */ jsx( + TextInput, + { + id: "name", + type: "text", + className: "mt-1 block w-full", + value: form.data.name, + onChange: (e) => form.setData("name", e.currentTarget.value), + autoFocus: true + } + ), + /* @__PURE__ */ jsx(InputError, { message: form.errors.name, className: "mt-2" }) + ] }) + ] + } + ); +} +export { + CreateTeamForm as default +}; diff --git a/bootstrap/ssr/assets/DangerButton-BAZynYAq.js b/bootstrap/ssr/assets/DangerButton-BAZynYAq.js new file mode 100644 index 0000000..daa8a50 --- /dev/null +++ b/bootstrap/ssr/assets/DangerButton-BAZynYAq.js @@ -0,0 +1,21 @@ +import { jsx } from "react/jsx-runtime"; +import classNames from "classnames"; +function DangerButton({ + children, + ...props +}) { + return /* @__PURE__ */ jsx( + "button", + { + ...props, + className: classNames( + "inline-flex items-center justify-center px-4 py-2 bg-red-600 border border-transparent rounded-md font-semibold text-xs text-white uppercase tracking-widest hover:bg-red-500 active:bg-red-700 focus:outline-hidden focus:ring-2 focus:ring-red-500 focus:ring-offset-2 dark:focus:ring-offset-gray-800 transition ease-in-out duration-150", + props.className + ), + children + } + ); +} +export { + DangerButton as D +}; diff --git a/bootstrap/ssr/assets/Dashboard-CkDsUhZk.js b/bootstrap/ssr/assets/Dashboard-CkDsUhZk.js new file mode 100644 index 0000000..a0accec --- /dev/null +++ b/bootstrap/ssr/assets/Dashboard-CkDsUhZk.js @@ -0,0 +1,217 @@ +import { jsxs, jsx } from "react/jsx-runtime"; +import { A as AppLayout } from "./AppLayout-DitNPgwT.js"; +import "@inertiajs/core"; +import "@inertiajs/react"; +import "classnames"; +import "react"; +import "../app.js"; +import "axios"; +import "lodash"; +import "react-dom/client"; +import "./useTypedPage-Do3SqtsL.js"; +import "@headlessui/react"; +function ApplicationLogo({ className }) { + return /* @__PURE__ */ jsxs( + "svg", + { + viewBox: "0 0 317 48", + fill: "none", + xmlns: "http://www.w3.org/2000/svg", + className, + children: [ + /* @__PURE__ */ jsx( + "path", + { + d: "M74.09 30.04V13h-4.14v21H82.1v-3.96h-8.01zM95.379 19v1.77c-1.08-1.35-2.7-2.19-4.89-2.19-3.99 0-7.29 3.45-7.29 7.92s3.3 7.92 7.29 7.92c2.19 0 3.81-.84 4.89-2.19V34h3.87V19h-3.87zm-4.17 11.73c-2.37 0-4.14-1.71-4.14-4.23 0-2.52 1.77-4.23 4.14-4.23 2.4 0 4.17 1.71 4.17 4.23 0 2.52-1.77 4.23-4.17 4.23zM106.628 21.58V19h-3.87v15h3.87v-7.17c0-3.15 2.55-4.05 4.56-3.81V18.7c-1.89 0-3.78.84-4.56 2.88zM124.295 19v1.77c-1.08-1.35-2.7-2.19-4.89-2.19-3.99 0-7.29 3.45-7.29 7.92s3.3 7.92 7.29 7.92c2.19 0 3.81-.84 4.89-2.19V34h3.87V19h-3.87zm-4.17 11.73c-2.37 0-4.14-1.71-4.14-4.23 0-2.52 1.77-4.23 4.14-4.23 2.4 0 4.17 1.71 4.17 4.23 0 2.52-1.77 4.23-4.17 4.23zM141.544 19l-3.66 10.5-3.63-10.5h-4.26l5.7 15h4.41l5.7-15h-4.26zM150.354 28.09h11.31c.09-.51.15-1.02.15-1.59 0-4.41-3.15-7.92-7.59-7.92-4.71 0-7.92 3.45-7.92 7.92s3.18 7.92 8.22 7.92c2.88 0 5.13-1.17 6.54-3.21l-3.12-1.8c-.66.87-1.86 1.5-3.36 1.5-2.04 0-3.69-.84-4.23-2.82zm-.06-3c.45-1.92 1.86-3.03 3.93-3.03 1.62 0 3.24.87 3.72 3.03h-7.65zM164.516 34h3.87V12.1h-3.87V34zM185.248 34.36c3.69 0 6.9-2.01 6.9-6.3V13h-2.1v15.06c0 3.03-2.07 4.26-4.8 4.26-2.19 0-3.93-.78-4.62-2.61l-1.77 1.05c1.05 2.43 3.57 3.6 6.39 3.6zM203.124 18.64c-4.65 0-7.83 3.45-7.83 7.86 0 4.53 3.24 7.86 7.98 7.86 3.03 0 5.34-1.41 6.6-3.45l-1.74-1.02c-.81 1.44-2.46 2.55-4.83 2.55-3.18 0-5.55-1.89-5.97-4.95h13.17c.03-.3.06-.63.06-.93 0-4.11-2.85-7.92-7.44-7.92zm0 1.92c2.58 0 4.98 1.71 5.4 5.01h-11.19c.39-2.94 2.64-5.01 5.79-5.01zM221.224 20.92V19h-4.32v-4.2l-1.98.6V19h-3.15v1.92h3.15v9.09c0 3.6 2.25 4.59 6.3 3.99v-1.74c-2.91.12-4.32.33-4.32-2.25v-9.09h4.32zM225.176 22.93c0-1.62 1.59-2.37 3.15-2.37 1.44 0 2.97.57 3.6 2.1l1.65-.96c-.87-1.86-2.79-3.06-5.25-3.06-3 0-5.13 1.89-5.13 4.29 0 5.52 8.76 3.39 8.76 7.11 0 1.77-1.68 2.4-3.45 2.4-2.01 0-3.57-.99-4.11-2.52l-1.68.99c.75 1.92 2.79 3.45 5.79 3.45 3.21 0 5.43-1.77 5.43-4.32 0-5.52-8.76-3.39-8.76-7.11zM244.603 20.92V19h-4.32v-4.2l-1.98.6V19h-3.15v1.92h3.15v9.09c0 3.6 2.25 4.59 6.3 3.99v-1.74c-2.91.12-4.32.33-4.32-2.25v-9.09h4.32zM249.883 21.49V19h-1.98v15h1.98v-8.34c0-3.72 2.34-4.98 4.74-4.98v-1.92c-1.92 0-3.69.63-4.74 2.73zM263.358 18.64c-4.65 0-7.83 3.45-7.83 7.86 0 4.53 3.24 7.86 7.98 7.86 3.03 0 5.34-1.41 6.6-3.45l-1.74-1.02c-.81 1.44-2.46 2.55-4.83 2.55-3.18 0-5.55-1.89-5.97-4.95h13.17c.03-.3.06-.63.06-.93 0-4.11-2.85-7.92-7.44-7.92zm0 1.92c2.58 0 4.98 1.71 5.4 5.01h-11.19c.39-2.94 2.64-5.01 5.79-5.01zM286.848 19v2.94c-1.26-2.01-3.39-3.3-6.06-3.3-4.23 0-7.74 3.42-7.74 7.86s3.51 7.86 7.74 7.86c2.67 0 4.8-1.29 6.06-3.3V34h1.98V19h-1.98zm-5.91 13.44c-3.33 0-5.91-2.61-5.91-5.94 0-3.33 2.58-5.94 5.91-5.94s5.91 2.61 5.91 5.94c0 3.33-2.58 5.94-5.91 5.94zM309.01 18.64c-1.92 0-3.75.87-4.86 2.73-.84-1.74-2.46-2.73-4.56-2.73-1.8 0-3.42.72-4.59 2.55V19h-1.98v15H295v-8.31c0-3.72 2.16-5.13 4.32-5.13 2.13 0 3.51 1.41 3.51 4.08V34h1.98v-8.31c0-3.72 1.86-5.13 4.17-5.13 2.13 0 3.66 1.41 3.66 4.08V34h1.98v-9.36c0-3.75-2.31-6-5.61-6z", + fill: "fill-black dark:fill-white" + } + ), + /* @__PURE__ */ jsx( + "path", + { + d: "M11.395 44.428C4.557 40.198 0 32.632 0 24 0 10.745 10.745 0 24 0a23.891 23.891 0 0113.997 4.502c-.2 17.907-11.097 33.245-26.602 39.926z", + fill: "#6875F5" + } + ), + /* @__PURE__ */ jsx( + "path", + { + d: "M14.134 45.885A23.914 23.914 0 0024 48c13.255 0 24-10.745 24-24 0-3.516-.756-6.856-2.115-9.866-4.659 15.143-16.608 27.092-31.75 31.751z", + fill: "#6875F5" + } + ) + ] + } + ); +} +function Welcome() { + return /* @__PURE__ */ jsxs("div", { children: [ + /* @__PURE__ */ jsxs("div", { className: "p-6 lg:p-8 bg-white dark:bg-gray-800 dark:bg-linear-to-bl dark:from-gray-700/50 dark:via-transparent border-b border-gray-200 dark:border-gray-700", children: [ + /* @__PURE__ */ jsx(ApplicationLogo, { className: "block h-12 w-auto" }), + /* @__PURE__ */ jsx("h1", { className: "mt-8 text-2xl font-medium text-gray-900 dark:text-white", children: "Welcome to your Jetstream application!" }), + /* @__PURE__ */ jsx("p", { className: "mt-6 text-gray-500 dark:text-gray-400 leading-relaxed", children: "Laravel Jetstream provides a beautiful, robust starting point for your next Laravel application. Laravel is designed to help you build your application using a development environment that is simple, powerful, and enjoyable. We believe you should love expressing your creativity through programming, so we have spent time carefully crafting the Laravel ecosystem to be a breath of fresh air. We hope you love it." }) + ] }), + /* @__PURE__ */ jsxs("div", { className: "bg-gray-200 dark:bg-gray-800 bg-opacity-25 grid grid-cols-1 md:grid-cols-2 gap-6 lg:gap-8 p-6 lg:p-8", children: [ + /* @__PURE__ */ jsxs("div", { children: [ + /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [ + /* @__PURE__ */ jsx( + "svg", + { + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: "1.5", + className: "w-6 h-6 stroke-gray-400", + children: /* @__PURE__ */ jsx( + "path", + { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M12 6.042A8.967 8.967 0 006 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 016 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 016-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0018 18a8.967 8.967 0 00-6 2.292m0-14.25v14.25" + } + ) + } + ), + /* @__PURE__ */ jsx("h2", { className: "ml-3 text-xl font-semibold text-gray-900 dark:text-white", children: /* @__PURE__ */ jsx("a", { href: "https://laravel.com/docs", children: "Documentation" }) }) + ] }), + /* @__PURE__ */ jsx("p", { className: "mt-4 text-gray-500 dark:text-gray-400 text-sm leading-relaxed", children: "Laravel has wonderful documentation covering every aspect of the framework. Whether you're new to the framework or have previous experience, we recommend reading all of the documentation from beginning to end." }), + /* @__PURE__ */ jsx("p", { className: "mt-4 text-sm", children: /* @__PURE__ */ jsxs( + "a", + { + href: "https://laravel.com/docs", + className: "inline-flex items-center font-semibold text-indigo-700 dark:text-indigo-300", + children: [ + "Explore the documentation", + /* @__PURE__ */ jsx( + "svg", + { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 20 20", + className: "ml-1 w-5 h-5 fill-indigo-500 dark:fill-indigo-200", + children: /* @__PURE__ */ jsx( + "path", + { + fillRule: "evenodd", + d: "M5 10a.75.75 0 01.75-.75h6.638L10.23 7.29a.75.75 0 111.04-1.08l3.5 3.25a.75.75 0 010 1.08l-3.5 3.25a.75.75 0 11-1.04-1.08l2.158-1.96H5.75A.75.75 0 015 10z", + clipRule: "evenodd" + } + ) + } + ) + ] + } + ) }) + ] }), + /* @__PURE__ */ jsxs("div", { children: [ + /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [ + /* @__PURE__ */ jsx( + "svg", + { + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: "1.5", + className: "w-6 h-6 stroke-gray-400", + children: /* @__PURE__ */ jsx( + "path", + { + strokeLinecap: "round", + d: "M15.75 10.5l4.72-4.72a.75.75 0 011.28.53v11.38a.75.75 0 01-1.28.53l-4.72-4.72M4.5 18.75h9a2.25 2.25 0 002.25-2.25v-9a2.25 2.25 0 00-2.25-2.25h-9A2.25 2.25 0 002.25 7.5v9a2.25 2.25 0 002.25 2.25z" + } + ) + } + ), + /* @__PURE__ */ jsx("h2", { className: "ml-3 text-xl font-semibold text-gray-900 dark:text-white", children: /* @__PURE__ */ jsx("a", { href: "https://laracasts.com", children: "Laracasts" }) }) + ] }), + /* @__PURE__ */ jsx("p", { className: "mt-4 text-gray-500 dark:text-gray-400 text-sm leading-relaxed", children: "Laracasts offers thousands of video tutorials on Laravel, PHP, and JavaScript development. Check them out, see for yourself, and massively level up your development skills in the process." }), + /* @__PURE__ */ jsx("p", { className: "mt-4 text-sm", children: /* @__PURE__ */ jsxs( + "a", + { + href: "https://laracasts.com", + className: "inline-flex items-center font-semibold text-indigo-700 dark:text-indigo-300", + children: [ + "Start watching Laracasts", + /* @__PURE__ */ jsx( + "svg", + { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 20 20", + className: "ml-1 w-5 h-5 fill-indigo-500 dark:fill-indigo-200", + children: /* @__PURE__ */ jsx( + "path", + { + fillRule: "evenodd", + d: "M5 10a.75.75 0 01.75-.75h6.638L10.23 7.29a.75.75 0 111.04-1.08l3.5 3.25a.75.75 0 010 1.08l-3.5 3.25a.75.75 0 11-1.04-1.08l2.158-1.96H5.75A.75.75 0 015 10z", + clipRule: "evenodd" + } + ) + } + ) + ] + } + ) }) + ] }), + /* @__PURE__ */ jsxs("div", { children: [ + /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [ + /* @__PURE__ */ jsx( + "svg", + { + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: "1.5", + className: "w-6 h-6 stroke-gray-400", + children: /* @__PURE__ */ jsx( + "path", + { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M2.25 15.75l5.159-5.159a2.25 2.25 0 013.182 0l5.159 5.159m-1.5-1.5l1.409-1.409a2.25 2.25 0 013.182 0l2.909 2.909m-18 3.75h16.5a1.5 1.5 0 001.5-1.5V6a1.5 1.5 0 00-1.5-1.5H3.75A1.5 1.5 0 002.25 6v12a1.5 1.5 0 001.5 1.5zm10.5-11.25h.008v.008h-.008V8.25zm.375 0a.375.375 0 11-.75 0 .375.375 0 01.75 0z" + } + ) + } + ), + /* @__PURE__ */ jsx("h2", { className: "ml-3 text-xl font-semibold text-gray-900 dark:text-white", children: /* @__PURE__ */ jsx("a", { href: "https://tailwindcss.com/", children: "Tailwind" }) }) + ] }), + /* @__PURE__ */ jsx("p", { className: "mt-4 text-gray-500 dark:text-gray-400 text-sm leading-relaxed", children: "Laravel Jetstream is built with Tailwind, an amazing utility first CSS framework that doesn't get in your way. You'll be amazed how easily you can build and maintain fresh, modern designs with this wonderful framework at your fingertips." }) + ] }), + /* @__PURE__ */ jsxs("div", { children: [ + /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [ + /* @__PURE__ */ jsx( + "svg", + { + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: "1.5", + className: "w-6 h-6 stroke-gray-400", + children: /* @__PURE__ */ jsx( + "path", + { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M16.5 10.5V6.75a4.5 4.5 0 10-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 002.25-2.25v-6.75a2.25 2.25 0 00-2.25-2.25H6.75a2.25 2.25 0 00-2.25 2.25v6.75a2.25 2.25 0 002.25 2.25z" + } + ) + } + ), + /* @__PURE__ */ jsx("h2", { className: "ml-3 text-xl font-semibold text-gray-900 dark:text-white", children: "Authentication" }) + ] }), + /* @__PURE__ */ jsx("p", { className: "mt-4 text-gray-500 dark:text-gray-400 text-sm leading-relaxed", children: "Authentication and registration views are included with Laravel Jetstream, as well as support for user email verification and resetting forgotten passwords. So, you're free to get started with what matters most: building your application." }) + ] }) + ] }) + ] }); +} +function Dashboard() { + return /* @__PURE__ */ jsx( + AppLayout, + { + title: "Dashboard", + renderHeader: () => /* @__PURE__ */ jsx("h2", { className: "font-semibold text-xl text-gray-800 dark:text-gray-200 leading-tight", children: "Dashboard" }), + children: /* @__PURE__ */ jsx("div", { className: "py-12", children: /* @__PURE__ */ jsx("div", { className: "max-w-7xl mx-auto sm:px-6 lg:px-8", children: /* @__PURE__ */ jsx("div", { className: "bg-white dark:bg-gray-800 overflow-hidden shadow-xl sm:rounded-lg", children: /* @__PURE__ */ jsx(Welcome, {}) }) }) }) + } + ); +} +export { + Dashboard as default +}; diff --git a/bootstrap/ssr/assets/DeleteTeamForm-CDG-Mx5L.js b/bootstrap/ssr/assets/DeleteTeamForm-CDG-Mx5L.js new file mode 100644 index 0000000..44f7628 --- /dev/null +++ b/bootstrap/ssr/assets/DeleteTeamForm-CDG-Mx5L.js @@ -0,0 +1,64 @@ +import { jsxs, jsx } from "react/jsx-runtime"; +import { u as useRoute } from "../app.js"; +import { A as ActionSection } from "./Modal-D5yHmTM4.js"; +import { C as ConfirmationModal } from "./ConfirmationModal-BYr2Juy2.js"; +import { D as DangerButton } from "./DangerButton-BAZynYAq.js"; +import { S as SecondaryButton } from "./SecondaryButton-G68tKuYQ.js"; +import { useForm } from "@inertiajs/react"; +import classNames from "classnames"; +import { useState } from "react"; +import "axios"; +import "lodash"; +import "react-dom/client"; +import "./SectionTitle-DnuUNpyS.js"; +import "@headlessui/react"; +import "react-dom"; +function DeleteTeamForm({ team }) { + const route = useRoute(); + const [confirmingTeamDeletion, setConfirmingTeamDeletion] = useState(false); + const form = useForm({}); + function confirmTeamDeletion() { + setConfirmingTeamDeletion(true); + } + function deleteTeam() { + form.delete(route("teams.destroy", [team]), { + errorBag: "deleteTeam" + }); + } + return /* @__PURE__ */ jsxs( + ActionSection, + { + title: "Delete Team", + description: "Permanently delete this team.", + children: [ + /* @__PURE__ */ jsx("div", { className: "max-w-xl text-sm text-gray-600 dark:text-gray-400", children: "Once a team is deleted, all of its resources and data will be permanently deleted. Before deleting this team, please download any data or information regarding this team that you wish to retain." }), + /* @__PURE__ */ jsx("div", { className: "mt-5", children: /* @__PURE__ */ jsx(DangerButton, { onClick: confirmTeamDeletion, children: "Delete Team" }) }), + /* @__PURE__ */ jsxs( + ConfirmationModal, + { + isOpen: confirmingTeamDeletion, + onClose: () => setConfirmingTeamDeletion(false), + children: [ + /* @__PURE__ */ jsx(ConfirmationModal.Content, { title: "Delete Team", children: "Are you sure you want to delete this team? Once a team is deleted, all of its resources and data will be permanently deleted." }), + /* @__PURE__ */ jsxs(ConfirmationModal.Footer, { children: [ + /* @__PURE__ */ jsx(SecondaryButton, { onClick: () => setConfirmingTeamDeletion(false), children: "Cancel" }), + /* @__PURE__ */ jsx( + DangerButton, + { + onClick: deleteTeam, + className: classNames("ml-2", { "opacity-25": form.processing }), + disabled: form.processing, + children: "Delete Team" + } + ) + ] }) + ] + } + ) + ] + } + ); +} +export { + DeleteTeamForm as default +}; diff --git a/bootstrap/ssr/assets/DeleteUserForm-Ptw0GKXr.js b/bootstrap/ssr/assets/DeleteUserForm-Ptw0GKXr.js new file mode 100644 index 0000000..ad7222a --- /dev/null +++ b/bootstrap/ssr/assets/DeleteUserForm-Ptw0GKXr.js @@ -0,0 +1,90 @@ +import { jsxs, jsx } from "react/jsx-runtime"; +import { useForm } from "@inertiajs/react"; +import classNames from "classnames"; +import { useState, useRef } from "react"; +import { u as useRoute } from "../app.js"; +import { A as ActionSection } from "./Modal-D5yHmTM4.js"; +import { D as DangerButton } from "./DangerButton-BAZynYAq.js"; +import { D as DialogModal } from "./DialogModal-D0pyMzH2.js"; +import { T as TextInput, I as InputError } from "./TextInput-CMJy2hIv.js"; +import { S as SecondaryButton } from "./SecondaryButton-G68tKuYQ.js"; +import "axios"; +import "lodash"; +import "react-dom/client"; +import "./SectionTitle-DnuUNpyS.js"; +import "@headlessui/react"; +import "react-dom"; +function DeleteUserForm() { + const route = useRoute(); + const [confirmingUserDeletion, setConfirmingUserDeletion] = useState(false); + const form = useForm({ + password: "" + }); + const passwordRef = useRef(null); + function confirmUserDeletion() { + setConfirmingUserDeletion(true); + setTimeout(() => { + var _a; + return (_a = passwordRef.current) == null ? void 0 : _a.focus(); + }, 250); + } + function deleteUser() { + form.delete(route("current-user.destroy"), { + preserveScroll: true, + onSuccess: () => closeModal(), + onError: () => { + var _a; + return (_a = passwordRef.current) == null ? void 0 : _a.focus(); + }, + onFinish: () => form.reset() + }); + } + function closeModal() { + setConfirmingUserDeletion(false); + form.reset(); + } + return /* @__PURE__ */ jsxs( + ActionSection, + { + title: "Delete Account", + description: "Permanently delete your account.", + children: [ + /* @__PURE__ */ jsx("div", { className: "max-w-xl text-sm text-gray-600 dark:text-gray-400", children: "Once your account is deleted, all of its resources and data will be permanently deleted. Before deleting your account, please download any data or information that you wish to retain." }), + /* @__PURE__ */ jsx("div", { className: "mt-5", children: /* @__PURE__ */ jsx(DangerButton, { onClick: confirmUserDeletion, children: "Delete Account" }) }), + /* @__PURE__ */ jsxs(DialogModal, { isOpen: confirmingUserDeletion, onClose: closeModal, children: [ + /* @__PURE__ */ jsxs(DialogModal.Content, { title: "Delete Account", children: [ + "Are you sure you want to delete your account? Once your account is deleted, all of its resources and data will be permanently deleted. Please enter your password to confirm you would like to permanently delete your account.", + /* @__PURE__ */ jsxs("div", { className: "mt-4", children: [ + /* @__PURE__ */ jsx( + TextInput, + { + type: "password", + className: "mt-1 block w-3/4", + placeholder: "Password", + value: form.data.password, + onChange: (e) => form.setData("password", e.currentTarget.value) + } + ), + /* @__PURE__ */ jsx(InputError, { message: form.errors.password, className: "mt-2" }) + ] }) + ] }), + /* @__PURE__ */ jsxs(DialogModal.Footer, { children: [ + /* @__PURE__ */ jsx(SecondaryButton, { onClick: closeModal, children: "Cancel" }), + /* @__PURE__ */ jsx( + DangerButton, + { + onClick: deleteUser, + className: classNames("ml-2", { "opacity-25": form.processing }), + disabled: form.processing, + children: "Delete Account" + } + ) + ] }) + ] }) + ] + } + ); +} +export { + DeleteUserForm as default +}; diff --git a/bootstrap/ssr/assets/DialogModal-D0pyMzH2.js b/bootstrap/ssr/assets/DialogModal-D0pyMzH2.js new file mode 100644 index 0000000..cc8b9ca --- /dev/null +++ b/bootstrap/ssr/assets/DialogModal-D0pyMzH2.js @@ -0,0 +1,25 @@ +import { jsx, jsxs } from "react/jsx-runtime"; +import { M as Modal } from "./Modal-D5yHmTM4.js"; +DialogModal.Content = function DialogModalContent({ + title, + children +}) { + return /* @__PURE__ */ jsxs("div", { className: "px-6 py-4", children: [ + /* @__PURE__ */ jsx("div", { className: "text-lg font-medium text-gray-900 dark:text-gray-100", children: title }), + /* @__PURE__ */ jsx("div", { className: "mt-4 text-sm text-gray-600 dark:text-gray-400", children }) + ] }); +}; +DialogModal.Footer = function DialogModalFooter({ + children +}) { + return /* @__PURE__ */ jsx("div", { className: "px-6 py-4 bg-gray-100 dark:bg-gray-800 text-right", children }); +}; +function DialogModal({ + children, + ...modalProps +}) { + return /* @__PURE__ */ jsx(Modal, { ...modalProps, children }); +} +export { + DialogModal as D +}; diff --git a/bootstrap/ssr/assets/ForgotPassword-BhYnh0qc.js b/bootstrap/ssr/assets/ForgotPassword-BhYnh0qc.js new file mode 100644 index 0000000..1ed4f10 --- /dev/null +++ b/bootstrap/ssr/assets/ForgotPassword-BhYnh0qc.js @@ -0,0 +1,57 @@ +import { jsxs, jsx } from "react/jsx-runtime"; +import { useForm, Head } from "@inertiajs/react"; +import classNames from "classnames"; +import { u as useRoute } from "../app.js"; +import { A as AuthenticationCard } from "./AuthenticationCard--MCzdtHR.js"; +import { I as InputLabel } from "./InputLabel-DhqxoV6M.js"; +import { P as PrimaryButton } from "./PrimaryButton-C2B8UWiv.js"; +import { T as TextInput, I as InputError } from "./TextInput-CMJy2hIv.js"; +import "axios"; +import "lodash"; +import "react-dom/client"; +import "react"; +import "./AuthenticationCardLogo-CZgVhhfE.js"; +function ForgotPassword({ status }) { + const route = useRoute(); + const form = useForm({ + email: "" + }); + function onSubmit(e) { + e.preventDefault(); + form.post(route("password.email")); + } + return /* @__PURE__ */ jsxs(AuthenticationCard, { children: [ + /* @__PURE__ */ jsx(Head, { title: "Forgot Password" }), + /* @__PURE__ */ jsx("div", { className: "mb-4 text-sm text-gray-600 dark:text-gray-400", children: "Forgot your password? No problem. Just let us know your email address and we will email you a password reset link that will allow you to choose a new one." }), + status && /* @__PURE__ */ jsx("div", { className: "mb-4 font-medium text-sm text-green-600 dark:text-green-400", children: status }), + /* @__PURE__ */ jsxs("form", { onSubmit, children: [ + /* @__PURE__ */ jsxs("div", { children: [ + /* @__PURE__ */ jsx(InputLabel, { htmlFor: "email", children: "Email" }), + /* @__PURE__ */ jsx( + TextInput, + { + id: "email", + type: "email", + className: "mt-1 block w-full", + value: form.data.email, + onChange: (e) => form.setData("email", e.currentTarget.value), + required: true, + autoFocus: true + } + ), + /* @__PURE__ */ jsx(InputError, { className: "mt-2", message: form.errors.email }) + ] }), + /* @__PURE__ */ jsx("div", { className: "flex items-center justify-end mt-4", children: /* @__PURE__ */ jsx( + PrimaryButton, + { + className: classNames({ "opacity-25": form.processing }), + disabled: form.processing, + children: "Email Password Reset Link" + } + ) }) + ] }) + ] }); +} +export { + ForgotPassword as default +}; diff --git a/bootstrap/ssr/assets/FormSection-DI6t3wFC.js b/bootstrap/ssr/assets/FormSection-DI6t3wFC.js new file mode 100644 index 0000000..3f85a95 --- /dev/null +++ b/bootstrap/ssr/assets/FormSection-DI6t3wFC.js @@ -0,0 +1,40 @@ +import { jsxs, jsx } from "react/jsx-runtime"; +import classNames from "classnames"; +import { S as SectionTitle } from "./SectionTitle-DnuUNpyS.js"; +function FormSection({ + onSubmit, + renderActions, + title, + description, + children +}) { + const hasActions = !!renderActions; + return /* @__PURE__ */ jsxs("div", { className: "md:grid md:grid-cols-3 md:gap-6", children: [ + /* @__PURE__ */ jsx(SectionTitle, { title, description }), + /* @__PURE__ */ jsx("div", { className: "mt-5 md:mt-0 md:col-span-2", children: /* @__PURE__ */ jsxs( + "form", + { + onSubmit: (e) => { + e.preventDefault(); + onSubmit(); + }, + children: [ + /* @__PURE__ */ jsx( + "div", + { + className: classNames( + "px-4 py-5 bg-white dark:bg-gray-800 sm:p-6 shadow-sm", + hasActions ? "sm:rounded-tl-md sm:rounded-tr-md" : "sm:rounded-md" + ), + children: /* @__PURE__ */ jsx("div", { className: "grid grid-cols-6 gap-6", children }) + } + ), + hasActions && /* @__PURE__ */ jsx("div", { className: "flex items-center justify-end px-4 py-3 bg-gray-50 dark:bg-gray-800 text-right sm:px-6 shadow-sm sm:rounded-bl-md sm:rounded-br-md", children: renderActions == null ? void 0 : renderActions() }) + ] + } + ) }) + ] }); +} +export { + FormSection as F +}; diff --git a/bootstrap/ssr/assets/Index-CwIeEkIw.js b/bootstrap/ssr/assets/Index-CwIeEkIw.js new file mode 100644 index 0000000..e1dd39f --- /dev/null +++ b/bootstrap/ssr/assets/Index-CwIeEkIw.js @@ -0,0 +1,51 @@ +import { jsx } from "react/jsx-runtime"; +import APITokenManager from "./APITokenManager-iZxUx3eK.js"; +import { A as AppLayout } from "./AppLayout-DitNPgwT.js"; +import "@inertiajs/react"; +import "classnames"; +import "react"; +import "../app.js"; +import "axios"; +import "lodash"; +import "react-dom/client"; +import "./ActionMessage-s_mcCJ3s.js"; +import "@headlessui/react"; +import "./Modal-D5yHmTM4.js"; +import "./SectionTitle-DnuUNpyS.js"; +import "react-dom"; +import "./Checkbox-XR8K_oHK.js"; +import "./ConfirmationModal-BYr2Juy2.js"; +import "./DangerButton-BAZynYAq.js"; +import "./DialogModal-D0pyMzH2.js"; +import "./FormSection-DI6t3wFC.js"; +import "./TextInput-CMJy2hIv.js"; +import "./InputLabel-DhqxoV6M.js"; +import "./PrimaryButton-C2B8UWiv.js"; +import "./SecondaryButton-G68tKuYQ.js"; +import "./SectionBorder-Dh4nHf2e.js"; +import "./useTypedPage-Do3SqtsL.js"; +import "@inertiajs/core"; +function ApiTokenIndex({ + tokens, + availablePermissions, + defaultPermissions +}) { + return /* @__PURE__ */ jsx( + AppLayout, + { + title: "API Tokens", + renderHeader: () => /* @__PURE__ */ jsx("h2", { className: "font-semibold text-xl text-gray-800 dark:text-gray-200 leading-tight", children: "API Tokens" }), + children: /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx("div", { className: "max-w-7xl mx-auto py-10 sm:px-6 lg:px-8", children: /* @__PURE__ */ jsx( + APITokenManager, + { + tokens, + availablePermissions, + defaultPermissions + } + ) }) }) + } + ); +} +export { + ApiTokenIndex as default +}; diff --git a/bootstrap/ssr/assets/InputLabel-DhqxoV6M.js b/bootstrap/ssr/assets/InputLabel-DhqxoV6M.js new file mode 100644 index 0000000..0b25fea --- /dev/null +++ b/bootstrap/ssr/assets/InputLabel-DhqxoV6M.js @@ -0,0 +1,18 @@ +import { jsx } from "react/jsx-runtime"; +function InputLabel({ + value, + htmlFor, + children +}) { + return /* @__PURE__ */ jsx( + "label", + { + className: "block font-medium text-sm text-gray-700 dark:text-gray-300", + htmlFor, + children: value || children + } + ); +} +export { + InputLabel as I +}; diff --git a/bootstrap/ssr/assets/Login-P_qEmbLO.js b/bootstrap/ssr/assets/Login-P_qEmbLO.js new file mode 100644 index 0000000..0fc6398 --- /dev/null +++ b/bootstrap/ssr/assets/Login-P_qEmbLO.js @@ -0,0 +1,108 @@ +import { jsxs, jsx } from "react/jsx-runtime"; +import { useForm, Head, Link } from "@inertiajs/react"; +import classNames from "classnames"; +import { u as useRoute } from "../app.js"; +import { A as AuthenticationCard } from "./AuthenticationCard--MCzdtHR.js"; +import { C as Checkbox } from "./Checkbox-XR8K_oHK.js"; +import { I as InputLabel } from "./InputLabel-DhqxoV6M.js"; +import { P as PrimaryButton } from "./PrimaryButton-C2B8UWiv.js"; +import { T as TextInput, I as InputError } from "./TextInput-CMJy2hIv.js"; +import "axios"; +import "lodash"; +import "react-dom/client"; +import "react"; +import "./AuthenticationCardLogo-CZgVhhfE.js"; +function Login({ canResetPassword, status }) { + const route = useRoute(); + const form = useForm({ + email: "", + password: "", + remember: "" + }); + function onSubmit(e) { + e.preventDefault(); + form.post(route("login"), { + onFinish: () => form.reset("password") + }); + } + return /* @__PURE__ */ jsxs(AuthenticationCard, { children: [ + /* @__PURE__ */ jsx(Head, { title: "Login" }), + status && /* @__PURE__ */ jsx("div", { className: "mb-4 font-medium text-sm text-green-600 dark:text-green-400", children: status }), + /* @__PURE__ */ jsxs("form", { onSubmit, children: [ + /* @__PURE__ */ jsxs("div", { children: [ + /* @__PURE__ */ jsx(InputLabel, { htmlFor: "email", children: "Email" }), + /* @__PURE__ */ jsx( + TextInput, + { + id: "email", + type: "email", + className: "mt-1 block w-full", + value: form.data.email, + onChange: (e) => form.setData("email", e.currentTarget.value), + required: true, + autoFocus: true + } + ), + /* @__PURE__ */ jsx(InputError, { className: "mt-2", message: form.errors.email }) + ] }), + /* @__PURE__ */ jsxs("div", { className: "mt-4", children: [ + /* @__PURE__ */ jsx(InputLabel, { htmlFor: "password", children: "Password" }), + /* @__PURE__ */ jsx( + TextInput, + { + id: "password", + type: "password", + className: "mt-1 block w-full", + value: form.data.password, + onChange: (e) => form.setData("password", e.currentTarget.value), + required: true, + autoComplete: "current-password" + } + ), + /* @__PURE__ */ jsx(InputError, { className: "mt-2", message: form.errors.password }) + ] }), + /* @__PURE__ */ jsx("div", { className: "mt-4", children: /* @__PURE__ */ jsxs("label", { className: "flex items-center", children: [ + /* @__PURE__ */ jsx( + Checkbox, + { + name: "remember", + checked: form.data.remember === "on", + onChange: (e) => form.setData("remember", e.currentTarget.checked ? "on" : "") + } + ), + /* @__PURE__ */ jsx("span", { className: "ml-2 text-sm text-gray-600 dark:text-gray-400", children: "Remember me" }) + ] }) }), + /* @__PURE__ */ jsxs("div", { className: "flex flex-col space-y-2 md:flex-row md:items-center md:justify-between md:space-y-0 mt-4", children: [ + canResetPassword && /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx( + Link, + { + href: route("password.request"), + className: "underline text-sm text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 rounded-md focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 dark:focus:ring-offset-gray-800", + children: "Forgot your password?" + } + ) }), + /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-end", children: [ + /* @__PURE__ */ jsx( + Link, + { + href: route("register"), + className: "underline text-sm text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 rounded-md focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 dark:focus:ring-offset-gray-800", + children: "Need an account?" + } + ), + /* @__PURE__ */ jsx( + PrimaryButton, + { + className: classNames("ml-4", { "opacity-25": form.processing }), + disabled: form.processing, + children: "Log in" + } + ) + ] }) + ] }) + ] }) + ] }); +} +export { + Login as default +}; diff --git a/bootstrap/ssr/assets/LogoutOtherBrowserSessionsForm-Bd8DyQdZ.js b/bootstrap/ssr/assets/LogoutOtherBrowserSessionsForm-Bd8DyQdZ.js new file mode 100644 index 0000000..a9f8191 --- /dev/null +++ b/bootstrap/ssr/assets/LogoutOtherBrowserSessionsForm-Bd8DyQdZ.js @@ -0,0 +1,142 @@ +import { jsxs, jsx } from "react/jsx-runtime"; +import { useForm } from "@inertiajs/react"; +import classNames from "classnames"; +import { useState, useRef } from "react"; +import { u as useRoute } from "../app.js"; +import { A as ActionMessage } from "./ActionMessage-s_mcCJ3s.js"; +import { A as ActionSection } from "./Modal-D5yHmTM4.js"; +import { D as DialogModal } from "./DialogModal-D0pyMzH2.js"; +import { T as TextInput, I as InputError } from "./TextInput-CMJy2hIv.js"; +import { P as PrimaryButton } from "./PrimaryButton-C2B8UWiv.js"; +import { S as SecondaryButton } from "./SecondaryButton-G68tKuYQ.js"; +import "axios"; +import "lodash"; +import "react-dom/client"; +import "@headlessui/react"; +import "./SectionTitle-DnuUNpyS.js"; +import "react-dom"; +function LogoutOtherBrowserSessions({ sessions }) { + const [confirmingLogout, setConfirmingLogout] = useState(false); + const route = useRoute(); + const passwordRef = useRef(null); + const form = useForm({ + password: "" + }); + function confirmLogout() { + setConfirmingLogout(true); + setTimeout(() => { + var _a; + return (_a = passwordRef.current) == null ? void 0 : _a.focus(); + }, 250); + } + function logoutOtherBrowserSessions() { + form.delete(route("other-browser-sessions.destroy"), { + preserveScroll: true, + onSuccess: () => closeModal(), + onError: () => { + var _a; + return (_a = passwordRef.current) == null ? void 0 : _a.focus(); + }, + onFinish: () => form.reset() + }); + } + function closeModal() { + setConfirmingLogout(false); + form.reset(); + } + return /* @__PURE__ */ jsxs( + ActionSection, + { + title: "Browser Sessions", + description: "Manage and log out your active sessions on other browsers and devices.", + children: [ + /* @__PURE__ */ jsx("div", { className: "max-w-xl text-sm text-gray-600 dark:text-gray-400", children: "If necessary, you may log out of all of your other browser sessions across all of your devices. Some of your recent sessions are listed below; however, this list may not be exhaustive. If you feel your account has been compromised, you should also update your password." }), + sessions.length > 0 ? /* @__PURE__ */ jsx("div", { className: "mt-5 space-y-6", children: sessions.map((session, i) => /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [ + /* @__PURE__ */ jsx("div", { children: session.agent.is_desktop ? /* @__PURE__ */ jsx( + "svg", + { + fill: "none", + strokeLinecap: "round", + strokeLinejoin: "round", + strokeWidth: "2", + viewBox: "0 0 24 24", + stroke: "currentColor", + className: "w-8 h-8 text-gray-500", + children: /* @__PURE__ */ jsx("path", { d: "M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" }) + } + ) : /* @__PURE__ */ jsxs( + "svg", + { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 24 24", + strokeWidth: "2", + stroke: "currentColor", + fill: "none", + strokeLinecap: "round", + strokeLinejoin: "round", + className: "w-8 h-8 text-gray-500", + children: [ + /* @__PURE__ */ jsx("path", { d: "M0 0h24v24H0z", stroke: "none" }), + /* @__PURE__ */ jsx("rect", { x: "7", y: "4", width: "10", height: "16", rx: "1" }), + /* @__PURE__ */ jsx("path", { d: "M11 5h2M12 17v.01" }) + ] + } + ) }), + /* @__PURE__ */ jsxs("div", { className: "ml-3", children: [ + /* @__PURE__ */ jsxs("div", { className: "text-sm text-gray-600 dark:text-gray-400", children: [ + session.agent.platform, + " - ", + session.agent.browser + ] }), + /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs("div", { className: "text-xs text-gray-500", children: [ + session.ip_address, + ",", + session.is_current_device ? /* @__PURE__ */ jsx("span", { className: "text-green-500 font-semibold", children: "This device" }) : /* @__PURE__ */ jsxs("span", { children: [ + "Last active ", + session.last_active + ] }) + ] }) }) + ] }) + ] }, i)) }) : null, + /* @__PURE__ */ jsxs("div", { className: "flex items-center mt-5", children: [ + /* @__PURE__ */ jsx(PrimaryButton, { onClick: confirmLogout, children: "Log Out Other Browser Sessions" }), + /* @__PURE__ */ jsx(ActionMessage, { on: form.recentlySuccessful, className: "ml-3", children: "Done." }) + ] }), + /* @__PURE__ */ jsxs(DialogModal, { isOpen: confirmingLogout, onClose: closeModal, children: [ + /* @__PURE__ */ jsxs(DialogModal.Content, { title: "Log Out Other Browser Sessions", children: [ + "Please enter your password to confirm you would like to log out of your other browser sessions across all of your devices.", + /* @__PURE__ */ jsxs("div", { className: "mt-4", children: [ + /* @__PURE__ */ jsx( + TextInput, + { + type: "password", + className: "mt-1 block w-3/4", + placeholder: "Password", + ref: passwordRef, + value: form.data.password, + onChange: (e) => form.setData("password", e.currentTarget.value) + } + ), + /* @__PURE__ */ jsx(InputError, { message: form.errors.password, className: "mt-2" }) + ] }) + ] }), + /* @__PURE__ */ jsxs(DialogModal.Footer, { children: [ + /* @__PURE__ */ jsx(SecondaryButton, { onClick: closeModal, children: "Cancel" }), + /* @__PURE__ */ jsx( + PrimaryButton, + { + onClick: logoutOtherBrowserSessions, + className: classNames("ml-2", { "opacity-25": form.processing }), + disabled: form.processing, + children: "Log Out Other Browser Sessions" + } + ) + ] }) + ] }) + ] + } + ); +} +export { + LogoutOtherBrowserSessions as default +}; diff --git a/bootstrap/ssr/assets/Modal-D5yHmTM4.js b/bootstrap/ssr/assets/Modal-D5yHmTM4.js new file mode 100644 index 0000000..ae4942d --- /dev/null +++ b/bootstrap/ssr/assets/Modal-D5yHmTM4.js @@ -0,0 +1,95 @@ +import { jsxs, jsx } from "react/jsx-runtime"; +import { S as SectionTitle } from "./SectionTitle-DnuUNpyS.js"; +import { Transition, Dialog, TransitionChild } from "@headlessui/react"; +import classNames from "classnames"; +import React from "react"; +import ReactDOM from "react-dom"; +function ActionSection({ + title, + description, + children +}) { + return /* @__PURE__ */ jsxs("div", { className: "md:grid md:grid-cols-3 md:gap-6", children: [ + /* @__PURE__ */ jsx(SectionTitle, { title, description }), + /* @__PURE__ */ jsx("div", { className: "mt-5 md:mt-0 md:col-span-2", children: /* @__PURE__ */ jsx("div", { className: "px-4 py-5 sm:p-6 bg-white dark:bg-gray-800 shadow-sm sm:rounded-lg", children }) }) + ] }); +} +function Modal({ + isOpen, + onClose, + maxWidth = "2xl", + children +}) { + const maxWidthClass = { + sm: "sm:max-w-sm", + md: "sm:max-w-md", + lg: "sm:max-w-lg", + xl: "sm:max-w-xl", + "2xl": "sm:max-w-2xl" + }[maxWidth]; + if (typeof window === "undefined") { + return null; + } + return ReactDOM.createPortal( + /* @__PURE__ */ jsx(Transition, { show: isOpen, as: React.Fragment, children: /* @__PURE__ */ jsx( + Dialog, + { + as: "div", + static: true, + className: "fixed z-10 inset-0 overflow-y-auto", + open: isOpen, + onClose, + children: /* @__PURE__ */ jsxs("div", { className: "flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0", children: [ + /* @__PURE__ */ jsx( + TransitionChild, + { + as: React.Fragment, + enter: "ease-out duration-300", + enterFrom: "opacity-0", + enterTo: "opacity-100", + leave: "ease-in duration-200", + leaveFrom: "opacity-100", + leaveTo: "opacity-0", + children: /* @__PURE__ */ jsx("div", { className: "fixed inset-0 bg-gray-500 dark:bg-gray-900 bg-opacity-75 transition-opacity" }) + } + ), + /* @__PURE__ */ jsx( + "span", + { + className: "hidden sm:inline-block sm:align-middle sm:h-screen", + "aria-hidden": "true", + children: "​" + } + ), + /* @__PURE__ */ jsx( + TransitionChild, + { + as: React.Fragment, + enter: "ease-out duration-300", + enterFrom: "opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95", + enterTo: "opacity-100 translate-y-0 sm:scale-100", + leave: "ease-in duration-200", + leaveFrom: "opacity-100 translate-y-0 sm:scale-100", + leaveTo: "opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95", + children: /* @__PURE__ */ jsx( + "div", + { + className: classNames( + "inline-block align-bottom bg-white dark:bg-gray-800 rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:w-full", + maxWidthClass + ), + children + } + ) + } + ) + ] }) + } + ) }), + document.body + ); +} +export { + ActionSection as A, + Modal as M +}; diff --git a/bootstrap/ssr/assets/PrimaryButton-C2B8UWiv.js b/bootstrap/ssr/assets/PrimaryButton-C2B8UWiv.js new file mode 100644 index 0000000..93c8ef3 --- /dev/null +++ b/bootstrap/ssr/assets/PrimaryButton-C2B8UWiv.js @@ -0,0 +1,21 @@ +import { jsx } from "react/jsx-runtime"; +import classNames from "classnames"; +function PrimaryButton({ + children, + ...props +}) { + return /* @__PURE__ */ jsx( + "button", + { + ...props, + className: classNames( + "inline-flex items-center px-4 py-2 bg-gray-800 dark:bg-gray-200 border border-transparent rounded-md font-semibold text-xs text-white dark:text-gray-800 uppercase tracking-widest hover:bg-gray-700 dark:hover:bg-white focus:bg-gray-700 dark:focus:bg-white active:bg-gray-900 dark:active:bg-gray-300 focus:outline-hidden focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 dark:focus:ring-offset-gray-800 transition ease-in-out duration-150", + props.className + ), + children + } + ); +} +export { + PrimaryButton as P +}; diff --git a/bootstrap/ssr/assets/PrivacyPolicy-DYEevN3b.js b/bootstrap/ssr/assets/PrivacyPolicy-DYEevN3b.js new file mode 100644 index 0000000..5a77826 --- /dev/null +++ b/bootstrap/ssr/assets/PrivacyPolicy-DYEevN3b.js @@ -0,0 +1,21 @@ +import { jsxs, jsx } from "react/jsx-runtime"; +import { A as AuthenticationCardLogo } from "./AuthenticationCardLogo-CZgVhhfE.js"; +import { Head } from "@inertiajs/react"; +function PrivacyPolicy({ policy }) { + return /* @__PURE__ */ jsxs("div", { children: [ + /* @__PURE__ */ jsx(Head, { title: "Privacy Policy" }), + /* @__PURE__ */ jsx("div", { className: "font-sans text-gray-900 dark:text-gray-100 antialiased", children: /* @__PURE__ */ jsx("div", { className: "pt-4 bg-gray-100 dark:bg-gray-900", children: /* @__PURE__ */ jsxs("div", { className: "min-h-screen flex flex-col items-center pt-6 sm:pt-0", children: [ + /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(AuthenticationCardLogo, {}) }), + /* @__PURE__ */ jsx( + "div", + { + className: "w-full sm:max-w-2xl mt-6 p-6 bg-white dark:bg-gray-800 shadow-md overflow-hidden sm:rounded-lg prose dark:prose-invert", + dangerouslySetInnerHTML: { __html: policy } + } + ) + ] }) }) }) + ] }); +} +export { + PrivacyPolicy as default +}; diff --git a/bootstrap/ssr/assets/Register-anJ95HWS.js b/bootstrap/ssr/assets/Register-anJ95HWS.js new file mode 100644 index 0000000..f7ee319 --- /dev/null +++ b/bootstrap/ssr/assets/Register-anJ95HWS.js @@ -0,0 +1,165 @@ +import { jsxs, jsx } from "react/jsx-runtime"; +import { useForm, Head, Link } from "@inertiajs/react"; +import classNames from "classnames"; +import { u as useRoute } from "../app.js"; +import { u as useTypedPage } from "./useTypedPage-Do3SqtsL.js"; +import { A as AuthenticationCard } from "./AuthenticationCard--MCzdtHR.js"; +import { C as Checkbox } from "./Checkbox-XR8K_oHK.js"; +import { I as InputLabel } from "./InputLabel-DhqxoV6M.js"; +import { P as PrimaryButton } from "./PrimaryButton-C2B8UWiv.js"; +import { T as TextInput, I as InputError } from "./TextInput-CMJy2hIv.js"; +import "axios"; +import "lodash"; +import "react-dom/client"; +import "react"; +import "./AuthenticationCardLogo-CZgVhhfE.js"; +function Register() { + const page = useTypedPage(); + const route = useRoute(); + const form = useForm({ + name: "", + email: "", + password: "", + password_confirmation: "", + terms: false + }); + function onSubmit(e) { + e.preventDefault(); + form.post(route("register"), { + onFinish: () => form.reset("password", "password_confirmation") + }); + } + return /* @__PURE__ */ jsxs(AuthenticationCard, { children: [ + /* @__PURE__ */ jsx(Head, { title: "Register" }), + /* @__PURE__ */ jsxs("form", { onSubmit, children: [ + /* @__PURE__ */ jsxs("div", { children: [ + /* @__PURE__ */ jsx(InputLabel, { htmlFor: "name", children: "Name" }), + /* @__PURE__ */ jsx( + TextInput, + { + id: "name", + type: "text", + className: "mt-1 block w-full", + value: form.data.name, + onChange: (e) => form.setData("name", e.currentTarget.value), + required: true, + autoFocus: true, + autoComplete: "name" + } + ), + /* @__PURE__ */ jsx(InputError, { className: "mt-2", message: form.errors.name }) + ] }), + /* @__PURE__ */ jsxs("div", { className: "mt-4", children: [ + /* @__PURE__ */ jsx(InputLabel, { htmlFor: "email", children: "Email" }), + /* @__PURE__ */ jsx( + TextInput, + { + id: "email", + type: "email", + className: "mt-1 block w-full", + value: form.data.email, + onChange: (e) => form.setData("email", e.currentTarget.value), + required: true + } + ), + /* @__PURE__ */ jsx(InputError, { className: "mt-2", message: form.errors.email }) + ] }), + /* @__PURE__ */ jsxs("div", { className: "mt-4", children: [ + /* @__PURE__ */ jsx(InputLabel, { htmlFor: "password", children: "Password" }), + /* @__PURE__ */ jsx( + TextInput, + { + id: "password", + type: "password", + className: "mt-1 block w-full", + value: form.data.password, + onChange: (e) => form.setData("password", e.currentTarget.value), + required: true, + autoComplete: "new-password" + } + ), + /* @__PURE__ */ jsx(InputError, { className: "mt-2", message: form.errors.password }) + ] }), + /* @__PURE__ */ jsxs("div", { className: "mt-4", children: [ + /* @__PURE__ */ jsx(InputLabel, { htmlFor: "password_confirmation", children: "Confirm Password" }), + /* @__PURE__ */ jsx( + TextInput, + { + id: "password_confirmation", + type: "password", + className: "mt-1 block w-full", + value: form.data.password_confirmation, + onChange: (e) => form.setData("password_confirmation", e.currentTarget.value), + required: true, + autoComplete: "new-password" + } + ), + /* @__PURE__ */ jsx( + InputError, + { + className: "mt-2", + message: form.errors.password_confirmation + } + ) + ] }), + page.props.jetstream.hasTermsAndPrivacyPolicyFeature && /* @__PURE__ */ jsx("div", { className: "mt-4", children: /* @__PURE__ */ jsxs(InputLabel, { htmlFor: "terms", children: [ + /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [ + /* @__PURE__ */ jsx( + Checkbox, + { + name: "terms", + id: "terms", + checked: form.data.terms, + onChange: (e) => form.setData("terms", e.currentTarget.checked), + required: true + } + ), + /* @__PURE__ */ jsxs("div", { className: "ml-2", children: [ + "I agree to the", + /* @__PURE__ */ jsx( + "a", + { + target: "_blank", + href: route("terms.show"), + className: "underline text-sm text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 rounded-md focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 dark:focus:ring-offset-gray-800", + children: "Terms of Service" + } + ), + "and", + /* @__PURE__ */ jsx( + "a", + { + target: "_blank", + href: route("policy.show"), + className: "underline text-sm text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 rounded-md focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 dark:focus:ring-offset-gray-800", + children: "Privacy Policy" + } + ) + ] }) + ] }), + /* @__PURE__ */ jsx(InputError, { className: "mt-2", message: form.errors.terms }) + ] }) }), + /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-end mt-4", children: [ + /* @__PURE__ */ jsx( + Link, + { + href: route("login"), + className: "underline text-sm text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 rounded-md focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 dark:focus:ring-offset-gray-800", + children: "Already registered?" + } + ), + /* @__PURE__ */ jsx( + PrimaryButton, + { + className: classNames("ml-4", { "opacity-25": form.processing }), + disabled: form.processing, + children: "Register" + } + ) + ] }) + ] }) + ] }); +} +export { + Register as default +}; diff --git a/bootstrap/ssr/assets/ResetPassword-DAOSACWm.js b/bootstrap/ssr/assets/ResetPassword-DAOSACWm.js new file mode 100644 index 0000000..b14bb97 --- /dev/null +++ b/bootstrap/ssr/assets/ResetPassword-DAOSACWm.js @@ -0,0 +1,98 @@ +import { jsxs, jsx } from "react/jsx-runtime"; +import { useForm, Head } from "@inertiajs/react"; +import classNames from "classnames"; +import { u as useRoute } from "../app.js"; +import { A as AuthenticationCard } from "./AuthenticationCard--MCzdtHR.js"; +import { I as InputLabel } from "./InputLabel-DhqxoV6M.js"; +import { P as PrimaryButton } from "./PrimaryButton-C2B8UWiv.js"; +import { T as TextInput, I as InputError } from "./TextInput-CMJy2hIv.js"; +import "axios"; +import "lodash"; +import "react-dom/client"; +import "react"; +import "./AuthenticationCardLogo-CZgVhhfE.js"; +function ResetPassword({ token, email }) { + const route = useRoute(); + const form = useForm({ + token, + email, + password: "", + password_confirmation: "" + }); + function onSubmit(e) { + e.preventDefault(); + form.post(route("password.update"), { + onFinish: () => form.reset("password", "password_confirmation") + }); + } + return /* @__PURE__ */ jsxs(AuthenticationCard, { children: [ + /* @__PURE__ */ jsx(Head, { title: "Reset Password" }), + /* @__PURE__ */ jsxs("form", { onSubmit, children: [ + /* @__PURE__ */ jsxs("div", { children: [ + /* @__PURE__ */ jsx(InputLabel, { htmlFor: "email", children: "Email" }), + /* @__PURE__ */ jsx( + TextInput, + { + id: "email", + type: "email", + className: "mt-1 block w-full", + value: form.data.email, + onChange: (e) => form.setData("email", e.currentTarget.value), + required: true, + autoFocus: true + } + ), + /* @__PURE__ */ jsx(InputError, { className: "mt-2", message: form.errors.email }) + ] }), + /* @__PURE__ */ jsxs("div", { className: "mt-4", children: [ + /* @__PURE__ */ jsx(InputLabel, { htmlFor: "password", children: "Password" }), + /* @__PURE__ */ jsx( + TextInput, + { + id: "password", + type: "password", + className: "mt-1 block w-full", + value: form.data.password, + onChange: (e) => form.setData("password", e.currentTarget.value), + required: true, + autoComplete: "new-password" + } + ), + /* @__PURE__ */ jsx(InputError, { className: "mt-2", message: form.errors.password }) + ] }), + /* @__PURE__ */ jsxs("div", { className: "mt-4", children: [ + /* @__PURE__ */ jsx(InputLabel, { htmlFor: "password_confirmation", children: "Confirm Password" }), + /* @__PURE__ */ jsx( + TextInput, + { + id: "password_confirmation", + type: "password", + className: "mt-1 block w-full", + value: form.data.password_confirmation, + onChange: (e) => form.setData("password_confirmation", e.currentTarget.value), + required: true, + autoComplete: "new-password" + } + ), + /* @__PURE__ */ jsx( + InputError, + { + className: "mt-2", + message: form.errors.password_confirmation + } + ) + ] }), + /* @__PURE__ */ jsx("div", { className: "flex items-center justify-end mt-4", children: /* @__PURE__ */ jsx( + PrimaryButton, + { + className: classNames({ "opacity-25": form.processing }), + disabled: form.processing, + children: "Reset Password" + } + ) }) + ] }) + ] }); +} +export { + ResetPassword as default +}; diff --git a/bootstrap/ssr/assets/SecondaryButton-G68tKuYQ.js b/bootstrap/ssr/assets/SecondaryButton-G68tKuYQ.js new file mode 100644 index 0000000..301f9b9 --- /dev/null +++ b/bootstrap/ssr/assets/SecondaryButton-G68tKuYQ.js @@ -0,0 +1,21 @@ +import { jsx } from "react/jsx-runtime"; +import classNames from "classnames"; +function SecondaryButton({ + children, + ...props +}) { + return /* @__PURE__ */ jsx( + "button", + { + ...props, + className: classNames( + "inline-flex items-center px-4 py-2 bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-500 rounded-md font-semibold text-xs text-gray-700 dark:text-gray-300 uppercase tracking-widest shadow-xs hover:bg-gray-50 dark:hover:bg-gray-700 focus:outline-hidden focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 dark:focus:ring-offset-gray-800 disabled:opacity-25 transition ease-in-out duration-150", + props.className + ), + children + } + ); +} +export { + SecondaryButton as S +}; diff --git a/bootstrap/ssr/assets/SectionBorder-Dh4nHf2e.js b/bootstrap/ssr/assets/SectionBorder-Dh4nHf2e.js new file mode 100644 index 0000000..b1f3b69 --- /dev/null +++ b/bootstrap/ssr/assets/SectionBorder-Dh4nHf2e.js @@ -0,0 +1,7 @@ +import { jsx } from "react/jsx-runtime"; +function SectionBorder() { + return /* @__PURE__ */ jsx("div", { className: "hidden sm:block", children: /* @__PURE__ */ jsx("div", { className: "py-8", children: /* @__PURE__ */ jsx("div", { className: "border-t border-gray-200 dark:border-gray-700" }) }) }); +} +export { + SectionBorder as S +}; diff --git a/bootstrap/ssr/assets/SectionTitle-DnuUNpyS.js b/bootstrap/ssr/assets/SectionTitle-DnuUNpyS.js new file mode 100644 index 0000000..2146761 --- /dev/null +++ b/bootstrap/ssr/assets/SectionTitle-DnuUNpyS.js @@ -0,0 +1,10 @@ +import { jsx, jsxs } from "react/jsx-runtime"; +function SectionTitle({ title, description }) { + return /* @__PURE__ */ jsx("div", { className: "md:col-span-1", children: /* @__PURE__ */ jsxs("div", { className: "px-4 sm:px-0", children: [ + /* @__PURE__ */ jsx("h3", { className: "text-lg font-medium text-gray-900 dark:text-gray-100", children: title }), + /* @__PURE__ */ jsx("p", { className: "mt-1 text-sm text-gray-600 dark:text-gray-400", children: description }) + ] }) }); +} +export { + SectionTitle as S +}; diff --git a/bootstrap/ssr/assets/Show-C_aCmrEJ.js b/bootstrap/ssr/assets/Show-C_aCmrEJ.js new file mode 100644 index 0000000..988a127 --- /dev/null +++ b/bootstrap/ssr/assets/Show-C_aCmrEJ.js @@ -0,0 +1,55 @@ +import { jsx, jsxs, Fragment } from "react/jsx-runtime"; +import DeleteTeamForm from "./DeleteTeamForm-CDG-Mx5L.js"; +import TeamMemberManager from "./TeamMemberManager-vS8Og7eY.js"; +import UpdateTeamNameForm from "./UpdateTeamNameForm-CArH28KV.js"; +import { S as SectionBorder } from "./SectionBorder-Dh4nHf2e.js"; +import { A as AppLayout } from "./AppLayout-DitNPgwT.js"; +import "../app.js"; +import "axios"; +import "lodash"; +import "react-dom/client"; +import "@inertiajs/react"; +import "react"; +import "./Modal-D5yHmTM4.js"; +import "./SectionTitle-DnuUNpyS.js"; +import "@headlessui/react"; +import "classnames"; +import "react-dom"; +import "./ConfirmationModal-BYr2Juy2.js"; +import "./DangerButton-BAZynYAq.js"; +import "./SecondaryButton-G68tKuYQ.js"; +import "./useTypedPage-Do3SqtsL.js"; +import "./ActionMessage-s_mcCJ3s.js"; +import "./DialogModal-D0pyMzH2.js"; +import "./FormSection-DI6t3wFC.js"; +import "./TextInput-CMJy2hIv.js"; +import "./InputLabel-DhqxoV6M.js"; +import "./PrimaryButton-C2B8UWiv.js"; +import "@inertiajs/core"; +function Show({ team, availableRoles, permissions }) { + return /* @__PURE__ */ jsx( + AppLayout, + { + title: "Team Settings", + renderHeader: () => /* @__PURE__ */ jsx("h2", { className: "font-semibold text-xl text-gray-800 dark:text-gray-200 leading-tight", children: "Team Settings" }), + children: /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs("div", { className: "max-w-7xl mx-auto py-10 sm:px-6 lg:px-8", children: [ + /* @__PURE__ */ jsx(UpdateTeamNameForm, { team, permissions }), + /* @__PURE__ */ jsx("div", { className: "mt-10 sm:mt-0", children: /* @__PURE__ */ jsx( + TeamMemberManager, + { + team, + availableRoles, + userPermissions: permissions + } + ) }), + permissions.canDeleteTeam && !team.personal_team ? /* @__PURE__ */ jsxs(Fragment, { children: [ + /* @__PURE__ */ jsx(SectionBorder, {}), + /* @__PURE__ */ jsx("div", { className: "mt-10 sm:mt-0", children: /* @__PURE__ */ jsx(DeleteTeamForm, { team }) }) + ] }) : null + ] }) }) + } + ); +} +export { + Show as default +}; diff --git a/bootstrap/ssr/assets/Show-DAwzGQF4.js b/bootstrap/ssr/assets/Show-DAwzGQF4.js new file mode 100644 index 0000000..9cc20f5 --- /dev/null +++ b/bootstrap/ssr/assets/Show-DAwzGQF4.js @@ -0,0 +1,69 @@ +import { jsx, jsxs, Fragment } from "react/jsx-runtime"; +import DeleteUserForm from "./DeleteUserForm-Ptw0GKXr.js"; +import LogoutOtherBrowserSessions from "./LogoutOtherBrowserSessionsForm-Bd8DyQdZ.js"; +import TwoFactorAuthenticationForm from "./TwoFactorAuthenticationForm-BLalZpWn.js"; +import UpdatePasswordForm from "./UpdatePasswordForm-B_100APE.js"; +import UpdateProfileInformationForm from "./UpdateProfileInformationForm-g6OOT46r.js"; +import { u as useTypedPage } from "./useTypedPage-Do3SqtsL.js"; +import { S as SectionBorder } from "./SectionBorder-Dh4nHf2e.js"; +import { A as AppLayout } from "./AppLayout-DitNPgwT.js"; +import "@inertiajs/react"; +import "classnames"; +import "react"; +import "../app.js"; +import "axios"; +import "lodash"; +import "react-dom/client"; +import "./Modal-D5yHmTM4.js"; +import "./SectionTitle-DnuUNpyS.js"; +import "@headlessui/react"; +import "react-dom"; +import "./DangerButton-BAZynYAq.js"; +import "./DialogModal-D0pyMzH2.js"; +import "./TextInput-CMJy2hIv.js"; +import "./SecondaryButton-G68tKuYQ.js"; +import "./ActionMessage-s_mcCJ3s.js"; +import "./PrimaryButton-C2B8UWiv.js"; +import "@inertiajs/core"; +import "./InputLabel-DhqxoV6M.js"; +import "./FormSection-DI6t3wFC.js"; +function Show({ + sessions, + confirmsTwoFactorAuthentication +}) { + const page = useTypedPage(); + return /* @__PURE__ */ jsx( + AppLayout, + { + title: "Profile", + renderHeader: () => /* @__PURE__ */ jsx("h2", { className: "font-semibold text-xl text-gray-800 dark:text-gray-200 leading-tight", children: "Profile" }), + children: /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs("div", { className: "max-w-7xl mx-auto py-10 sm:px-6 lg:px-8", children: [ + page.props.jetstream.canUpdateProfileInformation ? /* @__PURE__ */ jsxs("div", { children: [ + /* @__PURE__ */ jsx(UpdateProfileInformationForm, { user: page.props.auth.user }), + /* @__PURE__ */ jsx(SectionBorder, {}) + ] }) : null, + page.props.jetstream.canUpdatePassword ? /* @__PURE__ */ jsxs("div", { className: "mt-10 sm:mt-0", children: [ + /* @__PURE__ */ jsx(UpdatePasswordForm, {}), + /* @__PURE__ */ jsx(SectionBorder, {}) + ] }) : null, + page.props.jetstream.canManageTwoFactorAuthentication ? /* @__PURE__ */ jsxs("div", { className: "mt-10 sm:mt-0", children: [ + /* @__PURE__ */ jsx( + TwoFactorAuthenticationForm, + { + requiresConfirmation: confirmsTwoFactorAuthentication + } + ), + /* @__PURE__ */ jsx(SectionBorder, {}) + ] }) : null, + /* @__PURE__ */ jsx("div", { className: "mt-10 sm:mt-0", children: /* @__PURE__ */ jsx(LogoutOtherBrowserSessions, { sessions }) }), + page.props.jetstream.hasAccountDeletionFeatures ? /* @__PURE__ */ jsxs(Fragment, { children: [ + /* @__PURE__ */ jsx(SectionBorder, {}), + /* @__PURE__ */ jsx("div", { className: "mt-10 sm:mt-0", children: /* @__PURE__ */ jsx(DeleteUserForm, {}) }) + ] }) : null + ] }) }) + } + ); +} +export { + Show as default +}; diff --git a/bootstrap/ssr/assets/TeamMemberManager-vS8Og7eY.js b/bootstrap/ssr/assets/TeamMemberManager-vS8Og7eY.js new file mode 100644 index 0000000..ac7f388 --- /dev/null +++ b/bootstrap/ssr/assets/TeamMemberManager-vS8Og7eY.js @@ -0,0 +1,436 @@ +import { jsxs, jsx, Fragment } from "react/jsx-runtime"; +import { u as useRoute } from "../app.js"; +import { u as useTypedPage } from "./useTypedPage-Do3SqtsL.js"; +import { A as ActionMessage } from "./ActionMessage-s_mcCJ3s.js"; +import { A as ActionSection } from "./Modal-D5yHmTM4.js"; +import { C as ConfirmationModal } from "./ConfirmationModal-BYr2Juy2.js"; +import { D as DangerButton } from "./DangerButton-BAZynYAq.js"; +import { D as DialogModal } from "./DialogModal-D0pyMzH2.js"; +import { F as FormSection } from "./FormSection-DI6t3wFC.js"; +import { T as TextInput, I as InputError } from "./TextInput-CMJy2hIv.js"; +import { I as InputLabel } from "./InputLabel-DhqxoV6M.js"; +import { P as PrimaryButton } from "./PrimaryButton-C2B8UWiv.js"; +import { S as SecondaryButton } from "./SecondaryButton-G68tKuYQ.js"; +import { S as SectionBorder } from "./SectionBorder-Dh4nHf2e.js"; +import { router } from "@inertiajs/core"; +import { useForm } from "@inertiajs/react"; +import classNames from "classnames"; +import { useState } from "react"; +import "axios"; +import "lodash"; +import "react-dom/client"; +import "@headlessui/react"; +import "./SectionTitle-DnuUNpyS.js"; +import "react-dom"; +function TeamMemberManager({ + team, + availableRoles, + userPermissions +}) { + const route = useRoute(); + const addTeamMemberForm = useForm({ + email: "", + role: null + }); + const updateRoleForm = useForm({ + role: null + }); + const leaveTeamForm = useForm({}); + const removeTeamMemberForm = useForm({}); + const [currentlyManagingRole, setCurrentlyManagingRole] = useState(false); + const [managingRoleFor, setManagingRoleFor] = useState(null); + const [confirmingLeavingTeam, setConfirmingLeavingTeam] = useState(false); + const [teamMemberBeingRemoved, setTeamMemberBeingRemoved] = useState(null); + const page = useTypedPage(); + function addTeamMember() { + addTeamMemberForm.post(route("team-members.store", [team]), { + errorBag: "addTeamMember", + preserveScroll: true, + onSuccess: () => addTeamMemberForm.reset() + }); + } + function cancelTeamInvitation(invitation) { + router.delete(route("team-invitations.destroy", [invitation]), { + preserveScroll: true + }); + } + function manageRole(teamMember) { + setManagingRoleFor(teamMember); + updateRoleForm.setData("role", teamMember.membership.role); + setCurrentlyManagingRole(true); + } + function updateRole() { + if (!managingRoleFor) { + return; + } + updateRoleForm.put(route("team-members.update", [team, managingRoleFor]), { + preserveScroll: true, + onSuccess: () => setCurrentlyManagingRole(false) + }); + } + function confirmLeavingTeam() { + setConfirmingLeavingTeam(true); + } + function leaveTeam() { + leaveTeamForm.delete( + route("team-members.destroy", [team, page.props.auth.user]) + ); + } + function confirmTeamMemberRemoval(teamMember) { + setTeamMemberBeingRemoved(teamMember); + } + function removeTeamMember() { + if (!teamMemberBeingRemoved) { + return; + } + removeTeamMemberForm.delete( + route("team-members.destroy", [team, teamMemberBeingRemoved]), + { + errorBag: "removeTeamMember", + preserveScroll: true, + preserveState: true, + onSuccess: () => setTeamMemberBeingRemoved(null) + } + ); + } + function displayableRole(role) { + var _a; + return (_a = availableRoles.find((r) => r.key === role)) == null ? void 0 : _a.name; + } + return /* @__PURE__ */ jsxs("div", { children: [ + userPermissions.canAddTeamMembers ? /* @__PURE__ */ jsxs("div", { children: [ + /* @__PURE__ */ jsx(SectionBorder, {}), + /* @__PURE__ */ jsxs( + FormSection, + { + onSubmit: addTeamMember, + title: "Add Team Member", + description: "Add a new team member to your team, allowing them to collaborate with you.", + renderActions: () => /* @__PURE__ */ jsxs(Fragment, { children: [ + /* @__PURE__ */ jsx( + ActionMessage, + { + on: addTeamMemberForm.recentlySuccessful, + className: "mr-3", + children: "Added." + } + ), + /* @__PURE__ */ jsx( + PrimaryButton, + { + className: classNames({ + "opacity-25": addTeamMemberForm.processing + }), + disabled: addTeamMemberForm.processing, + children: "Add" + } + ) + ] }), + children: [ + /* @__PURE__ */ jsx("div", { className: "col-span-6", children: /* @__PURE__ */ jsx("div", { className: "max-w-xl text-sm text-gray-600 dark:text-gray-400", children: "Please provide the email address of the person you would like to add to this team." }) }), + /* @__PURE__ */ jsxs("div", { className: "col-span-6 sm:col-span-4", children: [ + /* @__PURE__ */ jsx(InputLabel, { htmlFor: "email", value: "Email" }), + /* @__PURE__ */ jsx( + TextInput, + { + id: "email", + type: "email", + className: "mt-1 block w-full", + value: addTeamMemberForm.data.email, + onChange: (e) => addTeamMemberForm.setData("email", e.currentTarget.value) + } + ), + /* @__PURE__ */ jsx( + InputError, + { + message: addTeamMemberForm.errors.email, + className: "mt-2" + } + ) + ] }), + availableRoles.length > 0 ? /* @__PURE__ */ jsxs("div", { className: "col-span-6 lg:col-span-4", children: [ + /* @__PURE__ */ jsx(InputLabel, { htmlFor: "roles", value: "Role" }), + /* @__PURE__ */ jsx( + InputError, + { + message: addTeamMemberForm.errors.role, + className: "mt-2" + } + ), + /* @__PURE__ */ jsx("div", { className: "relative z-0 mt-1 border border-gray-200 dark:border-gray-700 rounded-lg cursor-pointer", children: availableRoles.map((role, i) => /* @__PURE__ */ jsx( + "button", + { + type: "button", + className: classNames( + "relative px-4 py-3 inline-flex w-full rounded-lg focus:z-10 focus:outline-hidden focus:border-indigo-500 dark:focus:border-indigo-600 focus:ring-2 focus:ring-indigo-500 dark:focus:ring-indigo-600", + { + "border-t border-gray-200 dark:border-gray-700 focus:border-none rounded-t-none": i > 0, + "rounded-b-none": i != Object.keys(availableRoles).length - 1 + } + ), + onClick: () => addTeamMemberForm.setData("role", role.key), + children: /* @__PURE__ */ jsxs( + "div", + { + className: classNames({ + "opacity-50": addTeamMemberForm.data.role && addTeamMemberForm.data.role != role.key + }), + children: [ + /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [ + /* @__PURE__ */ jsx( + "div", + { + className: classNames( + "text-sm text-gray-600 dark:text-gray-400", + { + "font-semibold": addTeamMemberForm.data.role == role.key + } + ), + children: role.name + } + ), + addTeamMemberForm.data.role == role.key ? /* @__PURE__ */ jsx( + "svg", + { + className: "ml-2 h-5 w-5 text-green-400", + fill: "none", + strokeLinecap: "round", + strokeLinejoin: "round", + strokeWidth: "2", + stroke: "currentColor", + viewBox: "0 0 24 24", + children: /* @__PURE__ */ jsx("path", { d: "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" }) + } + ) : null + ] }), + /* @__PURE__ */ jsx("div", { className: "mt-2 text-xs text-gray-600 dark:text-gray-400", children: role.description }) + ] + } + ) + }, + role.key + )) }) + ] }) : null + ] + } + ) + ] }) : null, + team.team_invitations.length > 0 && userPermissions.canAddTeamMembers ? /* @__PURE__ */ jsxs("div", { children: [ + /* @__PURE__ */ jsx(SectionBorder, {}), + /* @__PURE__ */ jsx("div", { className: "mt-10 sm:mt-0" }), + /* @__PURE__ */ jsx( + ActionSection, + { + title: "Pending Team Invitations", + description: "These people have been invited to your team and have been sent an invitation email. They may join the team by accepting the email invitation.", + children: /* @__PURE__ */ jsx("div", { className: "space-y-6", children: team.team_invitations.map((invitation) => /* @__PURE__ */ jsxs( + "div", + { + className: "flex items-center justify-between", + children: [ + /* @__PURE__ */ jsx("div", { className: "text-gray-600 dark:text-gray-400", children: invitation.email }), + /* @__PURE__ */ jsx("div", { className: "flex items-center", children: userPermissions.canRemoveTeamMembers ? /* @__PURE__ */ jsx( + "button", + { + className: "cursor-pointer ml-6 text-sm text-red-500 focus:outline-hidden", + onClick: () => cancelTeamInvitation(invitation), + children: "Cancel" + } + ) : null }) + ] + }, + invitation.id + )) }) + } + ) + ] }) : null, + team.users.length > 0 ? /* @__PURE__ */ jsxs("div", { children: [ + /* @__PURE__ */ jsx(SectionBorder, {}), + /* @__PURE__ */ jsx("div", { className: "mt-10 sm:mt-0" }), + /* @__PURE__ */ jsx( + ActionSection, + { + title: "Team Members", + description: "All of the people that are part of this team.", + children: /* @__PURE__ */ jsx("div", { className: "space-y-6", children: team.users.map((user) => { + var _a; + return /* @__PURE__ */ jsxs( + "div", + { + className: "flex items-center justify-between", + children: [ + /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [ + /* @__PURE__ */ jsx( + "img", + { + className: "w-8 h-8 rounded-full", + src: user.profile_photo_url, + alt: user.name + } + ), + /* @__PURE__ */ jsx("div", { className: "ml-4 dark:text-white", children: user.name }) + ] }), + /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [ + userPermissions.canAddTeamMembers && availableRoles.length ? /* @__PURE__ */ jsx( + "button", + { + className: "ml-2 text-sm text-gray-400 underline", + onClick: () => manageRole(user), + children: displayableRole(user.membership.role) + } + ) : availableRoles.length ? /* @__PURE__ */ jsx("div", { className: "ml-2 text-sm text-gray-400", children: displayableRole(user.membership.role) }) : null, + ((_a = page.props.auth.user) == null ? void 0 : _a.id) === user.id ? /* @__PURE__ */ jsx( + "button", + { + className: "cursor-pointer ml-6 text-sm text-red-500", + onClick: confirmLeavingTeam, + children: "Leave" + } + ) : null, + userPermissions.canRemoveTeamMembers ? /* @__PURE__ */ jsx( + "button", + { + className: "cursor-pointer ml-6 text-sm text-red-500", + onClick: () => confirmTeamMemberRemoval(user), + children: "Remove" + } + ) : null + ] }) + ] + }, + user.id + ); + }) }) + } + ) + ] }) : null, + /* @__PURE__ */ jsxs( + DialogModal, + { + isOpen: currentlyManagingRole, + onClose: () => setCurrentlyManagingRole(false), + children: [ + /* @__PURE__ */ jsx(DialogModal.Content, { title: "Manage Role" }), + managingRoleFor ? /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx("div", { className: "relative z-0 mt-1 border border-gray-200 dark:border-gray-700 rounded-lg cursor-pointer", children: availableRoles.map((role, i) => /* @__PURE__ */ jsx( + "button", + { + type: "button", + className: classNames( + "relative px-4 py-3 inline-flex w-full rounded-lg focus:z-10 focus:outline-hidden focus:border-indigo-500 dark:focus:border-indigo-600 focus:ring-2 focus:ring-indigo-500 dark:focus:ring-indigo-600", + { + "border-t border-gray-200 dark:border-gray-700 focus:border-none rounded-t-none": i > 0, + "rounded-b-none": i !== Object.keys(availableRoles).length - 1 + } + ), + onClick: () => updateRoleForm.setData("role", role.key), + children: /* @__PURE__ */ jsxs( + "div", + { + className: classNames({ + "opacity-50": updateRoleForm.data.role && updateRoleForm.data.role !== role.key + }), + children: [ + /* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [ + /* @__PURE__ */ jsx( + "div", + { + className: classNames( + "text-sm text-gray-600 dark:text-gray-400", + { + "font-semibold": updateRoleForm.data.role === role.key + } + ), + children: role.name + } + ), + updateRoleForm.data.role === role.key ? /* @__PURE__ */ jsx( + "svg", + { + className: "ml-2 h-5 w-5 text-green-400", + fill: "none", + strokeLinecap: "round", + strokeLinejoin: "round", + strokeWidth: "2", + stroke: "currentColor", + viewBox: "0 0 24 24", + children: /* @__PURE__ */ jsx("path", { d: "M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" }) + } + ) : null + ] }), + /* @__PURE__ */ jsx("div", { className: "mt-2 text-xs text-gray-600 dark:text-gray-400", children: role.description }) + ] + } + ) + }, + role.key + )) }) }) : null, + /* @__PURE__ */ jsxs(DialogModal.Footer, { children: [ + /* @__PURE__ */ jsx(SecondaryButton, { onClick: () => setCurrentlyManagingRole(false), children: "Cancel" }), + /* @__PURE__ */ jsx( + PrimaryButton, + { + onClick: updateRole, + className: classNames("ml-2", { + "opacity-25": updateRoleForm.processing + }), + disabled: updateRoleForm.processing, + children: "Save" + } + ) + ] }) + ] + } + ), + /* @__PURE__ */ jsxs( + ConfirmationModal, + { + isOpen: confirmingLeavingTeam, + onClose: () => setConfirmingLeavingTeam(false), + children: [ + /* @__PURE__ */ jsx(ConfirmationModal.Content, { title: "Leave Team", children: "Are you sure you would like to leave this team?" }), + /* @__PURE__ */ jsxs(ConfirmationModal.Footer, { children: [ + /* @__PURE__ */ jsx(SecondaryButton, { onClick: () => setConfirmingLeavingTeam(false), children: "Cancel" }), + /* @__PURE__ */ jsx( + DangerButton, + { + onClick: leaveTeam, + className: classNames("ml-2", { + "opacity-25": leaveTeamForm.processing + }), + disabled: leaveTeamForm.processing, + children: "Leave" + } + ) + ] }) + ] + } + ), + /* @__PURE__ */ jsxs( + ConfirmationModal, + { + isOpen: !!teamMemberBeingRemoved, + onClose: () => setTeamMemberBeingRemoved(null), + children: [ + /* @__PURE__ */ jsx(ConfirmationModal.Content, { title: "Remove Team Member", children: "Are you sure you would like to remove this person from the team?" }), + /* @__PURE__ */ jsxs(ConfirmationModal.Footer, { children: [ + /* @__PURE__ */ jsx(SecondaryButton, { onClick: () => setTeamMemberBeingRemoved(null), children: "Cancel" }), + /* @__PURE__ */ jsx( + DangerButton, + { + onClick: removeTeamMember, + className: classNames("ml-2", { + "opacity-25": removeTeamMemberForm.processing + }), + disabled: removeTeamMemberForm.processing, + children: "Remove" + } + ) + ] }) + ] + } + ) + ] }); +} +export { + TeamMemberManager as default +}; diff --git a/bootstrap/ssr/assets/TermsOfService-CfLQttvD.js b/bootstrap/ssr/assets/TermsOfService-CfLQttvD.js new file mode 100644 index 0000000..c656721 --- /dev/null +++ b/bootstrap/ssr/assets/TermsOfService-CfLQttvD.js @@ -0,0 +1,21 @@ +import { jsxs, jsx } from "react/jsx-runtime"; +import { A as AuthenticationCardLogo } from "./AuthenticationCardLogo-CZgVhhfE.js"; +import { Head } from "@inertiajs/react"; +function TermsOfService({ terms }) { + return /* @__PURE__ */ jsxs("div", { className: "font-sans text-gray-900 dark:text-gray-100 antialiased", children: [ + /* @__PURE__ */ jsx(Head, { title: "Terms of Service" }), + /* @__PURE__ */ jsx("div", { className: "pt-4 bg-gray-100 dark:bg-gray-900", children: /* @__PURE__ */ jsxs("div", { className: "min-h-screen flex flex-col items-center pt-6 sm:pt-0", children: [ + /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(AuthenticationCardLogo, {}) }), + /* @__PURE__ */ jsx( + "div", + { + className: "w-full sm:max-w-2xl mt-6 p-6 bg-white dark:bg-gray-800 shadow-md overflow-hidden sm:rounded-lg prose dark:prose-invert", + dangerouslySetInnerHTML: { __html: terms } + } + ) + ] }) }) + ] }); +} +export { + TermsOfService as default +}; diff --git a/bootstrap/ssr/assets/TextInput-CMJy2hIv.js b/bootstrap/ssr/assets/TextInput-CMJy2hIv.js new file mode 100644 index 0000000..d68151a --- /dev/null +++ b/bootstrap/ssr/assets/TextInput-CMJy2hIv.js @@ -0,0 +1,28 @@ +import { jsx } from "react/jsx-runtime"; +import classNames from "classnames"; +import { forwardRef } from "react"; +function InputError({ + message, + className, + children +}) { + if (!message && !children) { + return null; + } + return /* @__PURE__ */ jsx("div", { className, children: /* @__PURE__ */ jsx("p", { className: "text-sm text-red-600 dark:text-red-400", children: message || children }) }); +} +const TextInput = forwardRef((props, ref) => /* @__PURE__ */ jsx( + "input", + { + ...props, + ref, + className: classNames( + "border-gray-300 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-300 focus:border-indigo-500 dark:focus:border-indigo-600 focus:ring-indigo-500 dark:focus:ring-indigo-600 rounded-md shadow-xs", + props.className + ) + } +)); +export { + InputError as I, + TextInput as T +}; diff --git a/bootstrap/ssr/assets/TwoFactorAuthenticationForm-BLalZpWn.js b/bootstrap/ssr/assets/TwoFactorAuthenticationForm-BLalZpWn.js new file mode 100644 index 0000000..e1618a8 --- /dev/null +++ b/bootstrap/ssr/assets/TwoFactorAuthenticationForm-BLalZpWn.js @@ -0,0 +1,290 @@ +import { jsxs, jsx } from "react/jsx-runtime"; +import { router } from "@inertiajs/core"; +import { useForm } from "@inertiajs/react"; +import axios from "axios"; +import classNames from "classnames"; +import { useState, useRef } from "react"; +import { A as ActionSection } from "./Modal-D5yHmTM4.js"; +import { u as useRoute } from "../app.js"; +import { D as DialogModal } from "./DialogModal-D0pyMzH2.js"; +import { T as TextInput, I as InputError } from "./TextInput-CMJy2hIv.js"; +import { P as PrimaryButton } from "./PrimaryButton-C2B8UWiv.js"; +import { S as SecondaryButton } from "./SecondaryButton-G68tKuYQ.js"; +import { D as DangerButton } from "./DangerButton-BAZynYAq.js"; +import { I as InputLabel } from "./InputLabel-DhqxoV6M.js"; +import { u as useTypedPage } from "./useTypedPage-Do3SqtsL.js"; +import "./SectionTitle-DnuUNpyS.js"; +import "@headlessui/react"; +import "react-dom"; +import "lodash"; +import "react-dom/client"; +function ConfirmsPassword({ + title = "Confirm Password", + content = "For your security, please confirm your password to continue.", + button = "Confirm", + onConfirm, + children +}) { + const route = useRoute(); + const [confirmingPassword, setConfirmingPassword] = useState(false); + const [form, setForm] = useState({ + password: "", + error: "", + processing: false + }); + const passwordRef = useRef(null); + function startConfirmingPassword() { + axios.get(route("password.confirmation")).then((response) => { + if (response.data.confirmed) { + onConfirm(); + } else { + setConfirmingPassword(true); + setTimeout(() => { + var _a; + return (_a = passwordRef.current) == null ? void 0 : _a.focus(); + }, 250); + } + }); + } + function confirmPassword() { + setForm({ ...form, processing: true }); + axios.post(route("password.confirm"), { + password: form.password + }).then(() => { + closeModal(); + setTimeout(() => onConfirm(), 250); + }).catch((error) => { + var _a; + setForm({ + ...form, + processing: false, + error: error.response.data.errors.password[0] + }); + (_a = passwordRef.current) == null ? void 0 : _a.focus(); + }); + } + function closeModal() { + setConfirmingPassword(false); + setForm({ processing: false, password: "", error: "" }); + } + return /* @__PURE__ */ jsxs("span", { children: [ + /* @__PURE__ */ jsx("span", { onClick: startConfirmingPassword, children }), + /* @__PURE__ */ jsxs(DialogModal, { isOpen: confirmingPassword, onClose: closeModal, children: [ + /* @__PURE__ */ jsxs(DialogModal.Content, { title, children: [ + content, + /* @__PURE__ */ jsxs("div", { className: "mt-4", children: [ + /* @__PURE__ */ jsx( + TextInput, + { + ref: passwordRef, + type: "password", + className: "mt-1 block w-3/4", + placeholder: "Password", + value: form.password, + onChange: (e) => setForm({ ...form, password: e.currentTarget.value }) + } + ), + /* @__PURE__ */ jsx(InputError, { message: form.error, className: "mt-2" }) + ] }) + ] }), + /* @__PURE__ */ jsxs(DialogModal.Footer, { children: [ + /* @__PURE__ */ jsx(SecondaryButton, { onClick: closeModal, children: "Cancel" }), + /* @__PURE__ */ jsx( + PrimaryButton, + { + className: classNames("ml-2", { "opacity-25": form.processing }), + onClick: confirmPassword, + disabled: form.processing, + children: button + } + ) + ] }) + ] }) + ] }); +} +function TwoFactorAuthenticationForm({ + requiresConfirmation +}) { + var _a, _b, _c; + const page = useTypedPage(); + const [enabling, setEnabling] = useState(false); + const [disabling, setDisabling] = useState(false); + const [qrCode, setQrCode] = useState(null); + const [recoveryCodes, setRecoveryCodes] = useState([]); + const [confirming, setConfirming] = useState(false); + const [setupKey, setSetupKey] = useState(null); + const confirmationForm = useForm({ + code: "" + }); + const twoFactorEnabled = !enabling && ((_c = (_b = (_a = page.props) == null ? void 0 : _a.auth) == null ? void 0 : _b.user) == null ? void 0 : _c.two_factor_enabled); + function enableTwoFactorAuthentication() { + setEnabling(true); + router.post( + "/user/two-factor-authentication", + {}, + { + preserveScroll: true, + onSuccess() { + return Promise.all([ + showQrCode(), + showSetupKey(), + showRecoveryCodes() + ]); + }, + onFinish() { + setEnabling(false); + setConfirming(requiresConfirmation); + } + } + ); + } + function showSetupKey() { + return axios.get("/user/two-factor-secret-key").then((response) => { + setSetupKey(response.data.secretKey); + }); + } + function confirmTwoFactorAuthentication() { + confirmationForm.post("/user/confirmed-two-factor-authentication", { + preserveScroll: true, + preserveState: true, + errorBag: "confirmTwoFactorAuthentication", + onSuccess: () => { + setConfirming(false); + setQrCode(null); + setSetupKey(null); + } + }); + } + function showQrCode() { + return axios.get("/user/two-factor-qr-code").then((response) => { + setQrCode(response.data.svg); + }); + } + function showRecoveryCodes() { + return axios.get("/user/two-factor-recovery-codes").then((response) => { + setRecoveryCodes(response.data); + }); + } + function regenerateRecoveryCodes() { + axios.post("/user/two-factor-recovery-codes").then(() => { + showRecoveryCodes(); + }); + } + function disableTwoFactorAuthentication() { + setDisabling(true); + router.delete("/user/two-factor-authentication", { + preserveScroll: true, + onSuccess() { + setDisabling(false); + setConfirming(false); + } + }); + } + return /* @__PURE__ */ jsxs( + ActionSection, + { + title: "Two Factor Authentication", + description: "Add additional security to your account using two factor authentication.", + children: [ + (() => { + if (twoFactorEnabled && !confirming) { + return /* @__PURE__ */ jsx("h3", { className: "text-lg font-medium text-gray-900 dark:text-gray-100", children: "You have enabled two factor authentication." }); + } + if (confirming) { + return /* @__PURE__ */ jsx("h3", { className: "text-lg font-medium text-gray-900 dark:text-gray-100", children: "Finish enabling two factor authentication." }); + } + return /* @__PURE__ */ jsx("h3", { className: "text-lg font-medium text-gray-900 dark:text-gray-100", children: "You have not enabled two factor authentication." }); + })(), + /* @__PURE__ */ jsx("div", { className: "mt-3 max-w-xl text-sm text-gray-600 dark:text-gray-400", children: /* @__PURE__ */ jsx("p", { children: "When two factor authentication is enabled, you will be prompted for a secure, random token during authentication. You may retrieve this token from your phone's Google Authenticator application." }) }), + twoFactorEnabled || confirming ? /* @__PURE__ */ jsxs("div", { children: [ + qrCode ? /* @__PURE__ */ jsxs("div", { children: [ + /* @__PURE__ */ jsx("div", { className: "mt-4 max-w-xl text-sm text-gray-600 dark:text-gray-400", children: confirming ? /* @__PURE__ */ jsx("p", { className: "font-semibold", children: "To finish enabling two factor authentication, scan the following QR code using your phone's authenticator application or enter the setup key and provide the generated OTP code." }) : /* @__PURE__ */ jsx("p", { children: "Two factor authentication is now enabled. Scan the following QR code using your phone's authenticator application or enter the setup key." }) }), + /* @__PURE__ */ jsx( + "div", + { + className: "mt-4", + dangerouslySetInnerHTML: { __html: qrCode || "" } + } + ), + setupKey && /* @__PURE__ */ jsx("div", { className: "mt-4 max-w-xl text-sm text-gray-600 dark:text-gray-400", children: /* @__PURE__ */ jsxs("p", { className: "font-semibold", children: [ + "Setup Key:", + " ", + /* @__PURE__ */ jsx( + "span", + { + dangerouslySetInnerHTML: { __html: setupKey || "" } + } + ) + ] }) }), + confirming && /* @__PURE__ */ jsxs("div", { className: "mt-4", children: [ + /* @__PURE__ */ jsx(InputLabel, { htmlFor: "code", value: "Code" }), + /* @__PURE__ */ jsx( + TextInput, + { + id: "code", + type: "text", + name: "code", + className: "block mt-1 w-1/2", + inputMode: "numeric", + autoFocus: true, + autoComplete: "one-time-code", + value: confirmationForm.data.code, + onChange: (e) => confirmationForm.setData("code", e.currentTarget.value) + } + ), + /* @__PURE__ */ jsx( + InputError, + { + message: confirmationForm.errors.code, + className: "mt-2" + } + ) + ] }) + ] }) : null, + recoveryCodes.length > 0 && !confirming ? /* @__PURE__ */ jsxs("div", { children: [ + /* @__PURE__ */ jsx("div", { className: "mt-4 max-w-xl text-sm text-gray-600 dark:text-gray-400", children: /* @__PURE__ */ jsx("p", { className: "font-semibold", children: "Store these recovery codes in a secure password manager. They can be used to recover access to your account if your two factor authentication device is lost." }) }), + /* @__PURE__ */ jsx("div", { className: "grid gap-1 max-w-xl mt-4 px-4 py-4 font-mono text-sm bg-gray-100 dark:bg-gray-900 rounded-lg", children: recoveryCodes.map((code) => /* @__PURE__ */ jsx("div", { children: code }, code)) }) + ] }) : null + ] }) : null, + /* @__PURE__ */ jsx("div", { className: "mt-5", children: twoFactorEnabled || confirming ? /* @__PURE__ */ jsxs("div", { children: [ + confirming ? /* @__PURE__ */ jsx(ConfirmsPassword, { onConfirm: confirmTwoFactorAuthentication, children: /* @__PURE__ */ jsx( + PrimaryButton, + { + className: classNames("mr-3", { "opacity-25": enabling }), + disabled: enabling, + children: "Confirm" + } + ) }) : null, + recoveryCodes.length > 0 && !confirming ? /* @__PURE__ */ jsx(ConfirmsPassword, { onConfirm: regenerateRecoveryCodes, children: /* @__PURE__ */ jsx(SecondaryButton, { className: "mr-3", children: "Regenerate Recovery Codes" }) }) : null, + recoveryCodes.length === 0 && !confirming ? /* @__PURE__ */ jsx(ConfirmsPassword, { onConfirm: showRecoveryCodes, children: /* @__PURE__ */ jsx(SecondaryButton, { className: "mr-3", children: "Show Recovery Codes" }) }) : null, + confirming ? /* @__PURE__ */ jsx(ConfirmsPassword, { onConfirm: disableTwoFactorAuthentication, children: /* @__PURE__ */ jsx( + SecondaryButton, + { + className: classNames("mr-3", { "opacity-25": disabling }), + disabled: disabling, + children: "Cancel" + } + ) }) : /* @__PURE__ */ jsx(ConfirmsPassword, { onConfirm: disableTwoFactorAuthentication, children: /* @__PURE__ */ jsx( + DangerButton, + { + className: classNames({ "opacity-25": disabling }), + disabled: disabling, + children: "Disable" + } + ) }) + ] }) : /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(ConfirmsPassword, { onConfirm: enableTwoFactorAuthentication, children: /* @__PURE__ */ jsx( + PrimaryButton, + { + type: "button", + className: classNames({ "opacity-25": enabling }), + disabled: enabling, + children: "Enable" + } + ) }) }) }) + ] + } + ); +} +export { + TwoFactorAuthenticationForm as default +}; diff --git a/bootstrap/ssr/assets/TwoFactorChallenge-Tkr6HCx-.js b/bootstrap/ssr/assets/TwoFactorChallenge-Tkr6HCx-.js new file mode 100644 index 0000000..7f0aef1 --- /dev/null +++ b/bootstrap/ssr/assets/TwoFactorChallenge-Tkr6HCx-.js @@ -0,0 +1,103 @@ +import { jsxs, jsx } from "react/jsx-runtime"; +import { useForm, Head } from "@inertiajs/react"; +import classNames from "classnames"; +import { useState, useRef } from "react"; +import { u as useRoute } from "../app.js"; +import { A as AuthenticationCard } from "./AuthenticationCard--MCzdtHR.js"; +import { I as InputLabel } from "./InputLabel-DhqxoV6M.js"; +import { P as PrimaryButton } from "./PrimaryButton-C2B8UWiv.js"; +import { T as TextInput, I as InputError } from "./TextInput-CMJy2hIv.js"; +import "axios"; +import "lodash"; +import "react-dom/client"; +import "./AuthenticationCardLogo-CZgVhhfE.js"; +function TwoFactorChallenge() { + const route = useRoute(); + const [recovery, setRecovery] = useState(false); + const form = useForm({ + code: "", + recovery_code: "" + }); + const recoveryCodeRef = useRef(null); + const codeRef = useRef(null); + function toggleRecovery(e) { + e.preventDefault(); + const isRecovery = !recovery; + setRecovery(isRecovery); + setTimeout(() => { + var _a, _b; + if (isRecovery) { + (_a = recoveryCodeRef.current) == null ? void 0 : _a.focus(); + form.setData("code", ""); + } else { + (_b = codeRef.current) == null ? void 0 : _b.focus(); + form.setData("recovery_code", ""); + } + }, 100); + } + function onSubmit(e) { + e.preventDefault(); + form.post(route("two-factor.login")); + } + return /* @__PURE__ */ jsxs(AuthenticationCard, { children: [ + /* @__PURE__ */ jsx(Head, { title: "Two-Factor Confirmation" }), + /* @__PURE__ */ jsx("div", { className: "mb-4 text-sm text-gray-600 dark:text-gray-400", children: recovery ? "Please confirm access to your account by entering one of your emergency recovery codes." : "Please confirm access to your account by entering the authentication code provided by your authenticator application." }), + /* @__PURE__ */ jsxs("form", { onSubmit, children: [ + recovery ? /* @__PURE__ */ jsxs("div", { children: [ + /* @__PURE__ */ jsx(InputLabel, { htmlFor: "recovery_code", children: "Recovery Code" }), + /* @__PURE__ */ jsx( + TextInput, + { + id: "recovery_code", + type: "text", + className: "mt-1 block w-full", + value: form.data.recovery_code, + onChange: (e) => form.setData("recovery_code", e.currentTarget.value), + ref: recoveryCodeRef, + autoComplete: "one-time-code" + } + ), + /* @__PURE__ */ jsx(InputError, { className: "mt-2", message: form.errors.recovery_code }) + ] }) : /* @__PURE__ */ jsxs("div", { children: [ + /* @__PURE__ */ jsx(InputLabel, { htmlFor: "code", children: "Code" }), + /* @__PURE__ */ jsx( + TextInput, + { + id: "code", + type: "text", + inputMode: "numeric", + className: "mt-1 block w-full", + value: form.data.code, + onChange: (e) => form.setData("code", e.currentTarget.value), + autoFocus: true, + autoComplete: "one-time-code", + ref: codeRef + } + ), + /* @__PURE__ */ jsx(InputError, { className: "mt-2", message: form.errors.code }) + ] }), + /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-end mt-4", children: [ + /* @__PURE__ */ jsx( + "button", + { + type: "button", + className: "text-sm text-gray-600 dark:text-gray-400 hover:text-gray-900 underline cursor-pointer", + onClick: toggleRecovery, + children: recovery ? "Use an authentication code" : "Use a recovery code" + } + ), + /* @__PURE__ */ jsx( + PrimaryButton, + { + className: classNames("ml-4", { "opacity-25": form.processing }), + disabled: form.processing, + children: "Log in" + } + ) + ] }) + ] }) + ] }); +} +export { + TwoFactorChallenge as default +}; diff --git a/bootstrap/ssr/assets/UpdatePasswordForm-B_100APE.js b/bootstrap/ssr/assets/UpdatePasswordForm-B_100APE.js new file mode 100644 index 0000000..e5568e4 --- /dev/null +++ b/bootstrap/ssr/assets/UpdatePasswordForm-B_100APE.js @@ -0,0 +1,120 @@ +import { jsxs, jsx, Fragment } from "react/jsx-runtime"; +import { useForm } from "@inertiajs/react"; +import classNames from "classnames"; +import { useRef } from "react"; +import { u as useRoute } from "../app.js"; +import { A as ActionMessage } from "./ActionMessage-s_mcCJ3s.js"; +import { F as FormSection } from "./FormSection-DI6t3wFC.js"; +import { T as TextInput, I as InputError } from "./TextInput-CMJy2hIv.js"; +import { I as InputLabel } from "./InputLabel-DhqxoV6M.js"; +import { P as PrimaryButton } from "./PrimaryButton-C2B8UWiv.js"; +import "axios"; +import "lodash"; +import "react-dom/client"; +import "@headlessui/react"; +import "./SectionTitle-DnuUNpyS.js"; +function UpdatePasswordForm() { + const route = useRoute(); + const form = useForm({ + current_password: "", + password: "", + password_confirmation: "" + }); + const passwordRef = useRef(null); + const currentPasswordRef = useRef(null); + function updatePassword() { + form.put(route("user-password.update"), { + errorBag: "updatePassword", + preserveScroll: true, + onSuccess: () => form.reset(), + onError: () => { + var _a, _b; + if (form.errors.password) { + form.reset("password", "password_confirmation"); + (_a = passwordRef.current) == null ? void 0 : _a.focus(); + } + if (form.errors.current_password) { + form.reset("current_password"); + (_b = currentPasswordRef.current) == null ? void 0 : _b.focus(); + } + } + }); + } + return /* @__PURE__ */ jsxs( + FormSection, + { + onSubmit: updatePassword, + title: "Update Password", + description: "Ensure your account is using a long, random password to stay secure.", + renderActions: () => /* @__PURE__ */ jsxs(Fragment, { children: [ + /* @__PURE__ */ jsx(ActionMessage, { on: form.recentlySuccessful, className: "mr-3", children: "Saved." }), + /* @__PURE__ */ jsx( + PrimaryButton, + { + className: classNames({ "opacity-25": form.processing }), + disabled: form.processing, + children: "Save" + } + ) + ] }), + children: [ + /* @__PURE__ */ jsxs("div", { className: "col-span-6 sm:col-span-4", children: [ + /* @__PURE__ */ jsx(InputLabel, { htmlFor: "current_password", children: "Current Password" }), + /* @__PURE__ */ jsx( + TextInput, + { + id: "current_password", + type: "password", + className: "mt-1 block w-full", + ref: currentPasswordRef, + value: form.data.current_password, + onChange: (e) => form.setData("current_password", e.currentTarget.value), + autoComplete: "current-password" + } + ), + /* @__PURE__ */ jsx(InputError, { message: form.errors.current_password, className: "mt-2" }) + ] }), + /* @__PURE__ */ jsxs("div", { className: "col-span-6 sm:col-span-4", children: [ + /* @__PURE__ */ jsx(InputLabel, { htmlFor: "password", children: "New Password" }), + /* @__PURE__ */ jsx( + TextInput, + { + id: "password", + type: "password", + className: "mt-1 block w-full", + value: form.data.password, + onChange: (e) => form.setData("password", e.currentTarget.value), + autoComplete: "new-password", + ref: passwordRef + } + ), + /* @__PURE__ */ jsx(InputError, { message: form.errors.password, className: "mt-2" }) + ] }), + /* @__PURE__ */ jsxs("div", { className: "col-span-6 sm:col-span-4", children: [ + /* @__PURE__ */ jsx(InputLabel, { htmlFor: "password_confirmation", children: "Confirm Password" }), + /* @__PURE__ */ jsx( + TextInput, + { + id: "password_confirmation", + type: "password", + className: "mt-1 block w-full", + value: form.data.password_confirmation, + onChange: (e) => form.setData("password_confirmation", e.currentTarget.value), + autoComplete: "new-password" + } + ), + /* @__PURE__ */ jsx( + InputError, + { + message: form.errors.password_confirmation, + className: "mt-2" + } + ) + ] }) + ] + } + ); +} +export { + UpdatePasswordForm as default +}; diff --git a/bootstrap/ssr/assets/UpdateProfileInformationForm-g6OOT46r.js b/bootstrap/ssr/assets/UpdateProfileInformationForm-g6OOT46r.js new file mode 100644 index 0000000..aa53a2c --- /dev/null +++ b/bootstrap/ssr/assets/UpdateProfileInformationForm-g6OOT46r.js @@ -0,0 +1,201 @@ +import { jsxs, jsx, Fragment } from "react/jsx-runtime"; +import { router } from "@inertiajs/core"; +import { useForm, Link } from "@inertiajs/react"; +import classNames from "classnames"; +import { useState, useRef } from "react"; +import { u as useRoute } from "../app.js"; +import { A as ActionMessage } from "./ActionMessage-s_mcCJ3s.js"; +import { F as FormSection } from "./FormSection-DI6t3wFC.js"; +import { I as InputError, T as TextInput } from "./TextInput-CMJy2hIv.js"; +import { I as InputLabel } from "./InputLabel-DhqxoV6M.js"; +import { P as PrimaryButton } from "./PrimaryButton-C2B8UWiv.js"; +import { S as SecondaryButton } from "./SecondaryButton-G68tKuYQ.js"; +import { u as useTypedPage } from "./useTypedPage-Do3SqtsL.js"; +import "axios"; +import "lodash"; +import "react-dom/client"; +import "@headlessui/react"; +import "./SectionTitle-DnuUNpyS.js"; +function UpdateProfileInformationForm({ user }) { + const form = useForm({ + _method: "PUT", + name: user.name, + email: user.email, + photo: null + }); + const route = useRoute(); + const [photoPreview, setPhotoPreview] = useState(null); + const photoRef = useRef(null); + const page = useTypedPage(); + const [verificationLinkSent, setVerificationLinkSent] = useState(false); + function updateProfileInformation() { + form.post(route("user-profile-information.update"), { + errorBag: "updateProfileInformation", + preserveScroll: true, + onSuccess: () => clearPhotoFileInput() + }); + } + function selectNewPhoto() { + var _a; + (_a = photoRef.current) == null ? void 0 : _a.click(); + } + function updatePhotoPreview() { + var _a, _b; + const photo = (_b = (_a = photoRef.current) == null ? void 0 : _a.files) == null ? void 0 : _b[0]; + if (!photo) { + return; + } + form.setData("photo", photo); + const reader = new FileReader(); + reader.onload = (e) => { + var _a2; + setPhotoPreview((_a2 = e.target) == null ? void 0 : _a2.result); + }; + reader.readAsDataURL(photo); + } + function deletePhoto() { + router.delete(route("current-user-photo.destroy"), { + preserveScroll: true, + onSuccess: () => { + setPhotoPreview(null); + clearPhotoFileInput(); + } + }); + } + function clearPhotoFileInput() { + var _a; + if ((_a = photoRef.current) == null ? void 0 : _a.value) { + photoRef.current.value = ""; + form.setData("photo", null); + } + } + return /* @__PURE__ */ jsxs( + FormSection, + { + onSubmit: updateProfileInformation, + title: "Profile Information", + description: `Update your account's profile information and email address.`, + renderActions: () => /* @__PURE__ */ jsxs(Fragment, { children: [ + /* @__PURE__ */ jsx(ActionMessage, { on: form.recentlySuccessful, className: "mr-3", children: "Saved." }), + /* @__PURE__ */ jsx( + PrimaryButton, + { + className: classNames({ "opacity-25": form.processing }), + disabled: form.processing, + children: "Save" + } + ) + ] }), + children: [ + page.props.jetstream.managesProfilePhotos ? /* @__PURE__ */ jsxs("div", { className: "col-span-6 sm:col-span-4", children: [ + /* @__PURE__ */ jsx( + "input", + { + type: "file", + className: "hidden", + ref: photoRef, + onChange: updatePhotoPreview + } + ), + /* @__PURE__ */ jsx(InputLabel, { htmlFor: "photo", value: "Photo" }), + photoPreview ? ( + // + /* @__PURE__ */ jsx("div", { className: "mt-2", children: /* @__PURE__ */ jsx( + "span", + { + className: "block rounded-full w-20 h-20", + style: { + backgroundSize: "cover", + backgroundRepeat: "no-repeat", + backgroundPosition: "center center", + backgroundImage: `url('${photoPreview}')` + } + } + ) }) + ) : ( + // + /* @__PURE__ */ jsx("div", { className: "mt-2", children: /* @__PURE__ */ jsx( + "img", + { + src: user.profile_photo_url, + alt: user.name, + className: "rounded-full h-20 w-20 object-cover" + } + ) }) + ), + /* @__PURE__ */ jsx( + SecondaryButton, + { + className: "mt-2 mr-2", + type: "button", + onClick: selectNewPhoto, + children: "Select A New Photo" + } + ), + user.profile_photo_path ? /* @__PURE__ */ jsx( + SecondaryButton, + { + type: "button", + className: "mt-2", + onClick: deletePhoto, + children: "Remove Photo" + } + ) : null, + /* @__PURE__ */ jsx(InputError, { message: form.errors.photo, className: "mt-2" }) + ] }) : null, + /* @__PURE__ */ jsxs("div", { className: "col-span-6 sm:col-span-4", children: [ + /* @__PURE__ */ jsx(InputLabel, { htmlFor: "name", value: "Name" }), + /* @__PURE__ */ jsx( + TextInput, + { + id: "name", + type: "text", + className: "mt-1 block w-full", + value: form.data.name, + onChange: (e) => form.setData("name", e.currentTarget.value), + autoComplete: "name" + } + ), + /* @__PURE__ */ jsx(InputError, { message: form.errors.name, className: "mt-2" }) + ] }), + /* @__PURE__ */ jsxs("div", { className: "col-span-6 sm:col-span-4", children: [ + /* @__PURE__ */ jsx(InputLabel, { htmlFor: "email", value: "Email" }), + /* @__PURE__ */ jsx( + TextInput, + { + id: "email", + type: "email", + className: "mt-1 block w-full", + value: form.data.email, + onChange: (e) => form.setData("email", e.currentTarget.value) + } + ), + /* @__PURE__ */ jsx(InputError, { message: form.errors.email, className: "mt-2" }), + page.props.jetstream.hasEmailVerification && user.email_verified_at === null ? /* @__PURE__ */ jsxs("div", { children: [ + /* @__PURE__ */ jsxs("p", { className: "text-sm mt-2 dark:text-white", children: [ + "Your email address is unverified.", + /* @__PURE__ */ jsx( + Link, + { + href: route("verification.send"), + method: "post", + as: "button", + className: "underline text-sm text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 rounded-md focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 dark:focus:ring-offset-gray-800", + onClick: (e) => { + e.preventDefault(); + setVerificationLinkSent(true); + }, + children: "Click here to re-send the verification email." + } + ) + ] }), + verificationLinkSent && /* @__PURE__ */ jsx("div", { className: "mt-2 font-medium text-sm text-green-600 dark:text-green-400", children: "A new verification link has been sent to your email address." }) + ] }) : null + ] }) + ] + } + ); +} +export { + UpdateProfileInformationForm as default +}; diff --git a/bootstrap/ssr/assets/UpdateTeamNameForm-CArH28KV.js b/bootstrap/ssr/assets/UpdateTeamNameForm-CArH28KV.js new file mode 100644 index 0000000..5764ecc --- /dev/null +++ b/bootstrap/ssr/assets/UpdateTeamNameForm-CArH28KV.js @@ -0,0 +1,83 @@ +import { jsxs, jsx, Fragment } from "react/jsx-runtime"; +import { u as useRoute } from "../app.js"; +import { A as ActionMessage } from "./ActionMessage-s_mcCJ3s.js"; +import { F as FormSection } from "./FormSection-DI6t3wFC.js"; +import { T as TextInput, I as InputError } from "./TextInput-CMJy2hIv.js"; +import { I as InputLabel } from "./InputLabel-DhqxoV6M.js"; +import { P as PrimaryButton } from "./PrimaryButton-C2B8UWiv.js"; +import { useForm } from "@inertiajs/react"; +import classNames from "classnames"; +import "axios"; +import "lodash"; +import "react-dom/client"; +import "react"; +import "@headlessui/react"; +import "./SectionTitle-DnuUNpyS.js"; +function UpdateTeamNameForm({ team, permissions }) { + const route = useRoute(); + const form = useForm({ + name: team.name + }); + function updateTeamName() { + form.put(route("teams.update", [team]), { + errorBag: "updateTeamName", + preserveScroll: true + }); + } + return /* @__PURE__ */ jsxs( + FormSection, + { + onSubmit: updateTeamName, + title: "Team Name", + description: `The team's name and owner information.`, + renderActions: permissions.canUpdateTeam ? () => /* @__PURE__ */ jsxs(Fragment, { children: [ + /* @__PURE__ */ jsx(ActionMessage, { on: form.recentlySuccessful, className: "mr-3", children: "Saved." }), + /* @__PURE__ */ jsx( + PrimaryButton, + { + className: classNames({ "opacity-25": form.processing }), + disabled: form.processing, + children: "Save" + } + ) + ] }) : void 0, + children: [ + /* @__PURE__ */ jsxs("div", { className: "col-span-6", children: [ + /* @__PURE__ */ jsx(InputLabel, { value: "Team Owner" }), + /* @__PURE__ */ jsxs("div", { className: "flex items-center mt-2", children: [ + /* @__PURE__ */ jsx( + "img", + { + className: "w-12 h-12 rounded-full object-cover", + src: team.owner.profile_photo_url, + alt: team.owner.name + } + ), + /* @__PURE__ */ jsxs("div", { className: "ml-4 leading-tight", children: [ + /* @__PURE__ */ jsx("div", { className: "text-gray-900 dark:text-white", children: team.owner.name }), + /* @__PURE__ */ jsx("div", { className: "text-gray-700 dark:text-gray-300 text-sm", children: team.owner.email }) + ] }) + ] }) + ] }), + /* @__PURE__ */ jsxs("div", { className: "col-span-6 sm:col-span-4", children: [ + /* @__PURE__ */ jsx(InputLabel, { htmlFor: "name", value: "Team Name" }), + /* @__PURE__ */ jsx( + TextInput, + { + id: "name", + type: "text", + className: "mt-1 block w-full", + value: form.data.name, + onChange: (e) => form.setData("name", e.currentTarget.value), + disabled: !permissions.canUpdateTeam + } + ), + /* @__PURE__ */ jsx(InputError, { message: form.errors.name, className: "mt-2" }) + ] }) + ] + } + ); +} +export { + UpdateTeamNameForm as default +}; diff --git a/bootstrap/ssr/assets/VerifyEmail--hB-n-6S.js b/bootstrap/ssr/assets/VerifyEmail--hB-n-6S.js new file mode 100644 index 0000000..d8e809b --- /dev/null +++ b/bootstrap/ssr/assets/VerifyEmail--hB-n-6S.js @@ -0,0 +1,56 @@ +import { jsxs, jsx } from "react/jsx-runtime"; +import { useForm, Head, Link } from "@inertiajs/react"; +import classNames from "classnames"; +import { u as useRoute } from "../app.js"; +import { A as AuthenticationCard } from "./AuthenticationCard--MCzdtHR.js"; +import { P as PrimaryButton } from "./PrimaryButton-C2B8UWiv.js"; +import "axios"; +import "lodash"; +import "react-dom/client"; +import "react"; +import "./AuthenticationCardLogo-CZgVhhfE.js"; +function VerifyEmail({ status }) { + const route = useRoute(); + const form = useForm({}); + const verificationLinkSent = status === "verification-link-sent"; + function onSubmit(e) { + e.preventDefault(); + form.post(route("verification.send")); + } + return /* @__PURE__ */ jsxs(AuthenticationCard, { children: [ + /* @__PURE__ */ jsx(Head, { title: "Email Verification" }), + /* @__PURE__ */ jsx("div", { className: "mb-4 text-sm text-gray-600 dark:text-gray-400", children: "Before continuing, could you verify your email address by clicking on the link we just emailed to you? If you didn't receive the email, we will gladly send you another." }), + verificationLinkSent && /* @__PURE__ */ jsx("div", { className: "mb-4 font-medium text-sm text-green-600 dark:text-green-400", children: "A new verification link has been sent to the email address you provided during registration." }), + /* @__PURE__ */ jsx("form", { onSubmit, children: /* @__PURE__ */ jsxs("div", { className: "mt-4 flex items-center justify-between", children: [ + /* @__PURE__ */ jsx( + PrimaryButton, + { + className: classNames({ "opacity-25": form.processing }), + disabled: form.processing, + children: "Resend Verification Email" + } + ), + /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx( + Link, + { + href: route("profile.show"), + className: "underline text-sm text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 rounded-md focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 dark:focus:ring-offset-gray-800", + children: "Edit Profile" + } + ) }), + /* @__PURE__ */ jsx( + Link, + { + href: route("logout"), + method: "post", + as: "button", + className: "underline text-sm text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 rounded-md focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 dark:focus:ring-offset-gray-800 ml-2", + children: "Log Out" + } + ) + ] }) }) + ] }); +} +export { + VerifyEmail as default +}; diff --git a/bootstrap/ssr/assets/Welcome-Bnby2VG4.js b/bootstrap/ssr/assets/Welcome-Bnby2VG4.js new file mode 100644 index 0000000..3da56e8 --- /dev/null +++ b/bootstrap/ssr/assets/Welcome-Bnby2VG4.js @@ -0,0 +1,378 @@ +import { jsxs, Fragment, jsx } from "react/jsx-runtime"; +import { Head, Link } from "@inertiajs/react"; +import { u as useRoute } from "../app.js"; +import { u as useTypedPage } from "./useTypedPage-Do3SqtsL.js"; +import "axios"; +import "lodash"; +import "react-dom/client"; +import "react"; +function Welcome({ + canLogin, + canRegister, + laravelVersion, + phpVersion +}) { + const route = useRoute(); + const page = useTypedPage(); + return /* @__PURE__ */ jsxs(Fragment, { children: [ + /* @__PURE__ */ jsx(Head, { title: "Welcome" }), + /* @__PURE__ */ jsxs("div", { className: "relative sm:flex sm:justify-center sm:items-center min-h-screen bg-dots-darker bg-center bg-gray-100 dark:bg-dots-lighter dark:bg-gray-900 selection:bg-red-500 selection:text-white", children: [ + canLogin ? /* @__PURE__ */ jsx("div", { className: "sm:fixed sm:top-0 sm:right-0 p-6 text-right", children: page.props.auth.user ? /* @__PURE__ */ jsx( + Link, + { + href: route("dashboard"), + className: "font-semibold text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-xs focus:outline-red-500", + children: "Dashboard" + } + ) : /* @__PURE__ */ jsxs(Fragment, { children: [ + /* @__PURE__ */ jsx( + Link, + { + href: route("login"), + className: "font-semibold text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-xs focus:outline-red-500", + children: "Log in" + } + ), + canRegister ? /* @__PURE__ */ jsx( + Link, + { + href: route("register"), + className: "ml-4 font-semibold text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-xs focus:outline-red-500", + children: "Register" + } + ) : null + ] }) }) : null, + /* @__PURE__ */ jsxs("div", { className: "max-w-7xl mx-auto p-6 lg:p-8", children: [ + /* @__PURE__ */ jsx("div", { className: "flex justify-center", children: /* @__PURE__ */ jsx( + "svg", + { + viewBox: "0 0 62 65", + fill: "none", + xmlns: "http://www.w3.org/2000/svg", + className: "h-16 w-auto bg-gray-100 dark:bg-gray-900", + children: /* @__PURE__ */ jsx( + "path", + { + d: "M61.8548 14.6253C61.8778 14.7102 61.8895 14.7978 61.8897 14.8858V28.5615C61.8898 28.737 61.8434 28.9095 61.7554 29.0614C61.6675 29.2132 61.5409 29.3392 61.3887 29.4265L49.9104 36.0351V49.1337C49.9104 49.4902 49.7209 49.8192 49.4118 49.9987L25.4519 63.7916C25.3971 63.8227 25.3372 63.8427 25.2774 63.8639C25.255 63.8714 25.2338 63.8851 25.2101 63.8913C25.0426 63.9354 24.8666 63.9354 24.6991 63.8913C24.6716 63.8838 24.6467 63.8689 24.6205 63.8589C24.5657 63.8389 24.5084 63.8215 24.456 63.7916L0.501061 49.9987C0.348882 49.9113 0.222437 49.7853 0.134469 49.6334C0.0465019 49.4816 0.000120578 49.3092 0 49.1337L0 8.10652C0 8.01678 0.0124642 7.92953 0.0348998 7.84477C0.0423783 7.8161 0.0598282 7.78993 0.0697995 7.76126C0.0884958 7.70891 0.105946 7.65531 0.133367 7.6067C0.152063 7.5743 0.179485 7.54812 0.20192 7.51821C0.230588 7.47832 0.256763 7.43719 0.290416 7.40229C0.319084 7.37362 0.356476 7.35243 0.388883 7.32751C0.425029 7.29759 0.457436 7.26518 0.498568 7.2415L12.4779 0.345059C12.6296 0.257786 12.8015 0.211853 12.9765 0.211853C13.1515 0.211853 13.3234 0.257786 13.475 0.345059L25.4531 7.2415H25.4556C25.4955 7.26643 25.5292 7.29759 25.5653 7.32626C25.5977 7.35119 25.6339 7.37362 25.6625 7.40104C25.6974 7.43719 25.7224 7.47832 25.7523 7.51821C25.7735 7.54812 25.8021 7.5743 25.8196 7.6067C25.8483 7.65656 25.8645 7.70891 25.8844 7.76126C25.8944 7.78993 25.9118 7.8161 25.9193 7.84602C25.9423 7.93096 25.954 8.01853 25.9542 8.10652V33.7317L35.9355 27.9844V14.8846C35.9355 14.7973 35.948 14.7088 35.9704 14.6253C35.9792 14.5954 35.9954 14.5692 36.0053 14.5405C36.0253 14.4882 36.0427 14.4346 36.0702 14.386C36.0888 14.3536 36.1163 14.3274 36.1375 14.2975C36.1674 14.2576 36.1923 14.2165 36.2272 14.1816C36.2559 14.1529 36.292 14.1317 36.3244 14.1068C36.3618 14.0769 36.3942 14.0445 36.4341 14.0208L48.4147 7.12434C48.5663 7.03694 48.7383 6.99094 48.9133 6.99094C49.0883 6.99094 49.2602 7.03694 49.4118 7.12434L61.3899 14.0208C61.4323 14.0457 61.4647 14.0769 61.5021 14.1055C61.5333 14.1305 61.5694 14.1529 61.5981 14.1803C61.633 14.2165 61.6579 14.2576 61.6878 14.2975C61.7103 14.3274 61.7377 14.3536 61.7551 14.386C61.7838 14.4346 61.8 14.4882 61.8199 14.5405C61.8312 14.5692 61.8474 14.5954 61.8548 14.6253ZM59.893 27.9844V16.6121L55.7013 19.0252L49.9104 22.3593V33.7317L59.8942 27.9844H59.893ZM47.9149 48.5566V37.1768L42.2187 40.4299L25.953 49.7133V61.2003L47.9149 48.5566ZM1.99677 9.83281V48.5566L23.9562 61.199V49.7145L12.4841 43.2219L12.4804 43.2194L12.4754 43.2169C12.4368 43.1945 12.4044 43.1621 12.3682 43.1347C12.3371 43.1097 12.3009 43.0898 12.2735 43.0624L12.271 43.0586C12.2386 43.0275 12.2162 42.9888 12.1887 42.9539C12.1638 42.9203 12.1339 42.8916 12.114 42.8567L12.1127 42.853C12.0903 42.8156 12.0766 42.7707 12.0604 42.7283C12.0442 42.6909 12.023 42.656 12.013 42.6161C12.0005 42.5688 11.998 42.5177 11.9931 42.4691C11.9881 42.4317 11.9781 42.3943 11.9781 42.3569V15.5801L6.18848 12.2446L1.99677 9.83281ZM12.9777 2.36177L2.99764 8.10652L12.9752 13.8513L22.9541 8.10527L12.9752 2.36177H12.9777ZM18.1678 38.2138L23.9574 34.8809V9.83281L19.7657 12.2459L13.9749 15.5801V40.6281L18.1678 38.2138ZM48.9133 9.14105L38.9344 14.8858L48.9133 20.6305L58.8909 14.8846L48.9133 9.14105ZM47.9149 22.3593L42.124 19.0252L37.9323 16.6121V27.9844L43.7219 31.3174L47.9149 33.7317V22.3593ZM24.9533 47.987L39.59 39.631L46.9065 35.4555L36.9352 29.7145L25.4544 36.3242L14.9907 42.3482L24.9533 47.987Z", + fill: "#FF2D20" + } + ) + } + ) }), + /* @__PURE__ */ jsx("div", { className: "mt-16", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6 lg:gap-8", children: [ + /* @__PURE__ */ jsxs( + "a", + { + href: "https://laravel.com/docs", + className: "scale-100 p-6 bg-white dark:bg-gray-800/50 dark:bg-linear-to-bl from-gray-700/50 via-transparent dark:ring-1 dark:ring-inset dark:ring-white/5 rounded-lg shadow-2xl shadow-gray-500/20 dark:shadow-none flex motion-safe:hover:scale-[1.01] transition-all duration-250 focus:outline focus:outline-2 focus:outline-red-500", + children: [ + /* @__PURE__ */ jsxs("div", { children: [ + /* @__PURE__ */ jsx("div", { className: "h-16 w-16 bg-red-50 dark:bg-red-800/20 flex items-center justify-center rounded-full", children: /* @__PURE__ */ jsx( + "svg", + { + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: "1.5", + className: "w-7 h-7 stroke-red-500", + children: /* @__PURE__ */ jsx( + "path", + { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M12 6.042A8.967 8.967 0 006 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 016 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 016-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0018 18a8.967 8.967 0 00-6 2.292m0-14.25v14.25" + } + ) + } + ) }), + /* @__PURE__ */ jsx("h2", { className: "mt-6 text-xl font-semibold text-gray-900 dark:text-white", children: "Documentation" }), + /* @__PURE__ */ jsx("p", { className: "mt-4 text-gray-500 dark:text-gray-400 text-sm leading-relaxed", children: "Laravel has wonderful documentation covering every aspect of the framework. Whether you are a newcomer or have prior experience with Laravel, we recommend reading our documentation from beginning to end." }) + ] }), + /* @__PURE__ */ jsx( + "svg", + { + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: "1.5", + className: "self-center shrink-0 stroke-red-500 w-6 h-6 mx-6", + children: /* @__PURE__ */ jsx( + "path", + { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M4.5 12h15m0 0l-6.75-6.75M19.5 12l-6.75 6.75" + } + ) + } + ) + ] + } + ), + /* @__PURE__ */ jsxs( + "a", + { + href: "https://laracasts.com", + className: "scale-100 p-6 bg-white dark:bg-gray-800/50 dark:bg-linear-to-bl from-gray-700/50 via-transparent dark:ring-1 dark:ring-inset dark:ring-white/5 rounded-lg shadow-2xl shadow-gray-500/20 dark:shadow-none flex motion-safe:hover:scale-[1.01] transition-all duration-250 focus:outline focus:outline-2 focus:outline-red-500", + children: [ + /* @__PURE__ */ jsxs("div", { children: [ + /* @__PURE__ */ jsx("div", { className: "h-16 w-16 bg-red-50 dark:bg-red-800/20 flex items-center justify-center rounded-full", children: /* @__PURE__ */ jsx( + "svg", + { + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: "1.5", + className: "w-7 h-7 stroke-red-500", + children: /* @__PURE__ */ jsx( + "path", + { + strokeLinecap: "round", + d: "M15.75 10.5l4.72-4.72a.75.75 0 011.28.53v11.38a.75.75 0 01-1.28.53l-4.72-4.72M4.5 18.75h9a2.25 2.25 0 002.25-2.25v-9a2.25 2.25 0 00-2.25-2.25h-9A2.25 2.25 0 002.25 7.5v9a2.25 2.25 0 002.25 2.25z" + } + ) + } + ) }), + /* @__PURE__ */ jsx("h2", { className: "mt-6 text-xl font-semibold text-gray-900 dark:text-white", children: "Laracasts" }), + /* @__PURE__ */ jsx("p", { className: "mt-4 text-gray-500 dark:text-gray-400 text-sm leading-relaxed", children: "Laracasts offers thousands of video tutorials on Laravel, PHP, and JavaScript development. Check them out, see for yourself, and massively level up your development skills in the process." }) + ] }), + /* @__PURE__ */ jsx( + "svg", + { + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: "1.5", + className: "self-center shrink-0 stroke-red-500 w-6 h-6 mx-6", + children: /* @__PURE__ */ jsx( + "path", + { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M4.5 12h15m0 0l-6.75-6.75M19.5 12l-6.75 6.75" + } + ) + } + ) + ] + } + ), + /* @__PURE__ */ jsxs( + "a", + { + href: "https://laravel-news.com", + className: "scale-100 p-6 bg-white dark:bg-gray-800/50 dark:bg-linear-to-bl from-gray-700/50 via-transparent dark:ring-1 dark:ring-inset dark:ring-white/5 rounded-lg shadow-2xl shadow-gray-500/20 dark:shadow-none flex motion-safe:hover:scale-[1.01] transition-all duration-250 focus:outline focus:outline-2 focus:outline-red-500", + children: [ + /* @__PURE__ */ jsxs("div", { children: [ + /* @__PURE__ */ jsx("div", { className: "h-16 w-16 bg-red-50 dark:bg-red-800/20 flex items-center justify-center rounded-full", children: /* @__PURE__ */ jsx( + "svg", + { + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: "1.5", + className: "w-7 h-7 stroke-red-500", + children: /* @__PURE__ */ jsx( + "path", + { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M12 7.5h1.5m-1.5 3h1.5m-7.5 3h7.5m-7.5 3h7.5m3-9h3.375c.621 0 1.125.504 1.125 1.125V18a2.25 2.25 0 01-2.25 2.25M16.5 7.5V18a2.25 2.25 0 002.25 2.25M16.5 7.5V4.875c0-.621-.504-1.125-1.125-1.125H4.125C3.504 3.75 3 4.254 3 4.875V18a2.25 2.25 0 002.25 2.25h13.5M6 7.5h3v3H6v-3z" + } + ) + } + ) }), + /* @__PURE__ */ jsx("h2", { className: "mt-6 text-xl font-semibold text-gray-900 dark:text-white", children: "Laravel News" }), + /* @__PURE__ */ jsx("p", { className: "mt-4 text-gray-500 dark:text-gray-400 text-sm leading-relaxed", children: "Laravel News is a community driven portal and newsletter aggregating all of the latest and most important news in the Laravel ecosystem, including new package releases and tutorials." }) + ] }), + /* @__PURE__ */ jsx( + "svg", + { + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: "1.5", + className: "self-center shrink-0 stroke-red-500 w-6 h-6 mx-6", + children: /* @__PURE__ */ jsx( + "path", + { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M4.5 12h15m0 0l-6.75-6.75M19.5 12l-6.75 6.75" + } + ) + } + ) + ] + } + ), + /* @__PURE__ */ jsx("div", { className: "scale-100 p-6 bg-white dark:bg-gray-800/50 dark:bg-linear-to-bl from-gray-700/50 via-transparent dark:ring-1 dark:ring-inset dark:ring-white/5 rounded-lg shadow-2xl shadow-gray-500/20 dark:shadow-none flex motion-safe:hover:scale-[1.01] transition-all duration-250 focus:outline focus:outline-2 focus:outline-red-500", children: /* @__PURE__ */ jsxs("div", { children: [ + /* @__PURE__ */ jsx("div", { className: "h-16 w-16 bg-red-50 dark:bg-red-800/20 flex items-center justify-center rounded-full", children: /* @__PURE__ */ jsx( + "svg", + { + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: "1.5", + className: "w-7 h-7 stroke-red-500", + children: /* @__PURE__ */ jsx( + "path", + { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M6.115 5.19l.319 1.913A6 6 0 008.11 10.36L9.75 12l-.387.775c-.217.433-.132.956.21 1.298l1.348 1.348c.21.21.329.497.329.795v1.089c0 .426.24.815.622 1.006l.153.076c.433.217.956.132 1.298-.21l.723-.723a8.7 8.7 0 002.288-4.042 1.087 1.087 0 00-.358-1.099l-1.33-1.108c-.251-.21-.582-.299-.905-.245l-1.17.195a1.125 1.125 0 01-.98-.314l-.295-.295a1.125 1.125 0 010-1.591l.13-.132a1.125 1.125 0 011.3-.21l.603.302a.809.809 0 001.086-1.086L14.25 7.5l1.256-.837a4.5 4.5 0 001.528-1.732l.146-.292M6.115 5.19A9 9 0 1017.18 4.64M6.115 5.19A8.965 8.965 0 0112 3c1.929 0 3.716.607 5.18 1.64" + } + ) + } + ) }), + /* @__PURE__ */ jsx("h2", { className: "mt-6 text-xl font-semibold text-gray-900 dark:text-white", children: "Vibrant Ecosystem" }), + /* @__PURE__ */ jsxs("p", { className: "mt-4 text-gray-500 dark:text-gray-400 text-sm leading-relaxed", children: [ + "Laravel's robust library of first-party tools and libraries, such as", + " ", + /* @__PURE__ */ jsx( + "a", + { + href: "https://forge.laravel.com", + className: "underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-xs focus:outline-red-500", + children: "Forge" + } + ), + ",", + " ", + /* @__PURE__ */ jsx( + "a", + { + href: "https://vapor.laravel.com", + className: "underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-xs focus:outline-red-500", + children: "Vapor" + } + ), + ",", + " ", + /* @__PURE__ */ jsx( + "a", + { + href: "https://nova.laravel.com", + className: "underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-xs focus:outline-red-500", + children: "Nova" + } + ), + ", and", + " ", + /* @__PURE__ */ jsx( + "a", + { + href: "https://envoyer.io", + className: "underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-xs focus:outline-red-500", + children: "Envoyer" + } + ), + " ", + "help you take your projects to the next level. Pair them with powerful open source libraries like", + " ", + /* @__PURE__ */ jsx( + "a", + { + href: "https://laravel.com/docs/billing", + className: "underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-xs focus:outline-red-500", + children: "Cashier" + } + ), + ",", + " ", + /* @__PURE__ */ jsx( + "a", + { + href: "https://laravel.com/docs/dusk", + className: "underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-xs focus:outline-red-500", + children: "Dusk" + } + ), + ",", + " ", + /* @__PURE__ */ jsx( + "a", + { + href: "https://laravel.com/docs/broadcasting", + className: "underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-xs focus:outline-red-500", + children: "Echo" + } + ), + ",", + " ", + /* @__PURE__ */ jsx( + "a", + { + href: "https://laravel.com/docs/horizon", + className: "underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-xs focus:outline-red-500", + children: "Horizon" + } + ), + ",", + " ", + /* @__PURE__ */ jsx( + "a", + { + href: "https://laravel.com/docs/sanctum", + className: "underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-xs focus:outline-red-500", + children: "Sanctum" + } + ), + ",", + " ", + /* @__PURE__ */ jsx( + "a", + { + href: "https://laravel.com/docs/telescope", + className: "underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-xs focus:outline-red-500", + children: "Telescope" + } + ), + ", and more." + ] }) + ] }) }) + ] }) }), + /* @__PURE__ */ jsxs("div", { className: "flex justify-center mt-16 px-6 sm:items-center sm:justify-between", children: [ + /* @__PURE__ */ jsx("div", { className: "text-center text-sm text-gray-500 dark:text-gray-400 sm:text-left", children: /* @__PURE__ */ jsx("div", { className: "flex items-center gap-4", children: /* @__PURE__ */ jsxs( + "a", + { + href: "https://github.com/sponsors/taylorotwell", + className: "group inline-flex items-center hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-xs focus:outline-red-500", + children: [ + /* @__PURE__ */ jsx( + "svg", + { + xmlns: "http://www.w3.org/2000/svg", + fill: "none", + viewBox: "0 0 24 24", + strokeWidth: "1.5", + className: "-mt-px mr-1 w-5 h-5 stroke-gray-400 dark:stroke-gray-600 group-hover:stroke-gray-600 dark:group-hover:stroke-gray-400", + children: /* @__PURE__ */ jsx( + "path", + { + strokeLinecap: "round", + strokeLinejoin: "round", + d: "M21 8.25c0-2.485-2.099-4.5-4.688-4.5-1.935 0-3.597 1.126-4.312 2.733-.715-1.607-2.377-2.733-4.313-2.733C5.1 3.75 3 5.765 3 8.25c0 7.22 9 12 9 12s9-4.78 9-12z" + } + ) + } + ), + "Sponsor" + ] + } + ) }) }), + /* @__PURE__ */ jsxs("div", { className: "ml-4 text-center text-sm text-gray-500 dark:text-gray-400 sm:text-right sm:ml-0", children: [ + "Laravel v", + laravelVersion, + " (PHP v", + phpVersion, + ")" + ] }) + ] }) + ] }) + ] }) + ] }); +} +export { + Welcome as default +}; diff --git a/bootstrap/ssr/assets/useTypedPage-Do3SqtsL.js b/bootstrap/ssr/assets/useTypedPage-Do3SqtsL.js new file mode 100644 index 0000000..abeb4da --- /dev/null +++ b/bootstrap/ssr/assets/useTypedPage-Do3SqtsL.js @@ -0,0 +1,7 @@ +import { usePage } from "@inertiajs/react"; +function useTypedPage() { + return usePage(); +} +export { + useTypedPage as u +}; diff --git a/bootstrap/ssr/ssr-manifest.json b/bootstrap/ssr/ssr-manifest.json new file mode 100644 index 0000000..f36bdc2 --- /dev/null +++ b/bootstrap/ssr/ssr-manifest.json @@ -0,0 +1,166 @@ +{ + "node_modules/laravel-vite-plugin/inertia-helpers/index.js": [], + "resources/css/app.css": [], + "resources/js/Components/ActionMessage.tsx": [ + "/build/assets/ActionMessage-s_mcCJ3s.js" + ], + "resources/js/Components/ActionSection.tsx": [ + "/build/assets/Modal-D5yHmTM4.js" + ], + "resources/js/Components/ApplicationLogo.tsx": [ + "/build/assets/Dashboard-CkDsUhZk.js" + ], + "resources/js/Components/ApplicationMark.tsx": [ + "/build/assets/AppLayout-DitNPgwT.js" + ], + "resources/js/Components/AuthenticationCard.tsx": [ + "/build/assets/AuthenticationCard--MCzdtHR.js" + ], + "resources/js/Components/AuthenticationCardLogo.tsx": [ + "/build/assets/AuthenticationCardLogo-CZgVhhfE.js" + ], + "resources/js/Components/Banner.tsx": [ + "/build/assets/AppLayout-DitNPgwT.js" + ], + "resources/js/Components/Checkbox.tsx": [ + "/build/assets/Checkbox-XR8K_oHK.js" + ], + "resources/js/Components/ConfirmationModal.tsx": [ + "/build/assets/ConfirmationModal-BYr2Juy2.js" + ], + "resources/js/Components/ConfirmsPassword.tsx": [ + "/build/assets/TwoFactorAuthenticationForm-BLalZpWn.js" + ], + "resources/js/Components/DangerButton.tsx": [ + "/build/assets/DangerButton-BAZynYAq.js" + ], + "resources/js/Components/DialogModal.tsx": [ + "/build/assets/DialogModal-D0pyMzH2.js" + ], + "resources/js/Components/Dropdown.tsx": [ + "/build/assets/AppLayout-DitNPgwT.js" + ], + "resources/js/Components/DropdownLink.tsx": [ + "/build/assets/AppLayout-DitNPgwT.js" + ], + "resources/js/Components/FormSection.tsx": [ + "/build/assets/FormSection-DI6t3wFC.js" + ], + "resources/js/Components/InputError.tsx": [ + "/build/assets/TextInput-CMJy2hIv.js" + ], + "resources/js/Components/InputLabel.tsx": [ + "/build/assets/InputLabel-DhqxoV6M.js" + ], + "resources/js/Components/Modal.tsx": [ + "/build/assets/Modal-D5yHmTM4.js" + ], + "resources/js/Components/NavLink.tsx": [ + "/build/assets/AppLayout-DitNPgwT.js" + ], + "resources/js/Components/PrimaryButton.tsx": [ + "/build/assets/PrimaryButton-C2B8UWiv.js" + ], + "resources/js/Components/ResponsiveNavLink.tsx": [ + "/build/assets/AppLayout-DitNPgwT.js" + ], + "resources/js/Components/SecondaryButton.tsx": [ + "/build/assets/SecondaryButton-G68tKuYQ.js" + ], + "resources/js/Components/SectionBorder.tsx": [ + "/build/assets/SectionBorder-Dh4nHf2e.js" + ], + "resources/js/Components/SectionTitle.tsx": [ + "/build/assets/SectionTitle-DnuUNpyS.js" + ], + "resources/js/Components/TextInput.tsx": [ + "/build/assets/TextInput-CMJy2hIv.js" + ], + "resources/js/Components/Welcome.tsx": [ + "/build/assets/Dashboard-CkDsUhZk.js" + ], + "resources/js/Hooks/useRoute.ts": [], + "resources/js/Hooks/useTypedPage.ts": [ + "/build/assets/useTypedPage-Do3SqtsL.js" + ], + "resources/js/Layouts/AppLayout.tsx": [ + "/build/assets/AppLayout-DitNPgwT.js" + ], + "resources/js/Pages/API/Index.tsx": [ + "/build/assets/Index-CwIeEkIw.js" + ], + "resources/js/Pages/API/Partials/APITokenManager.tsx": [ + "/build/assets/APITokenManager-iZxUx3eK.js" + ], + "resources/js/Pages/Auth/ConfirmPassword.tsx": [ + "/build/assets/ConfirmPassword-ju6YtACP.js" + ], + "resources/js/Pages/Auth/ForgotPassword.tsx": [ + "/build/assets/ForgotPassword-BhYnh0qc.js" + ], + "resources/js/Pages/Auth/Login.tsx": [ + "/build/assets/Login-P_qEmbLO.js" + ], + "resources/js/Pages/Auth/Register.tsx": [ + "/build/assets/Register-anJ95HWS.js" + ], + "resources/js/Pages/Auth/ResetPassword.tsx": [ + "/build/assets/ResetPassword-DAOSACWm.js" + ], + "resources/js/Pages/Auth/TwoFactorChallenge.tsx": [ + "/build/assets/TwoFactorChallenge-Tkr6HCx-.js" + ], + "resources/js/Pages/Auth/VerifyEmail.tsx": [ + "/build/assets/VerifyEmail--hB-n-6S.js" + ], + "resources/js/Pages/Dashboard.tsx": [ + "/build/assets/Dashboard-CkDsUhZk.js" + ], + "resources/js/Pages/PrivacyPolicy.tsx": [ + "/build/assets/PrivacyPolicy-DYEevN3b.js" + ], + "resources/js/Pages/Profile/Partials/DeleteUserForm.tsx": [ + "/build/assets/DeleteUserForm-Ptw0GKXr.js" + ], + "resources/js/Pages/Profile/Partials/LogoutOtherBrowserSessionsForm.tsx": [ + "/build/assets/LogoutOtherBrowserSessionsForm-Bd8DyQdZ.js" + ], + "resources/js/Pages/Profile/Partials/TwoFactorAuthenticationForm.tsx": [ + "/build/assets/TwoFactorAuthenticationForm-BLalZpWn.js" + ], + "resources/js/Pages/Profile/Partials/UpdatePasswordForm.tsx": [ + "/build/assets/UpdatePasswordForm-B_100APE.js" + ], + "resources/js/Pages/Profile/Partials/UpdateProfileInformationForm.tsx": [ + "/build/assets/UpdateProfileInformationForm-g6OOT46r.js" + ], + "resources/js/Pages/Profile/Show.tsx": [ + "/build/assets/Show-DAwzGQF4.js" + ], + "resources/js/Pages/Teams/Create.tsx": [ + "/build/assets/Create-Bq48ODsT.js" + ], + "resources/js/Pages/Teams/Partials/CreateTeamForm.tsx": [ + "/build/assets/CreateTeamForm-CmUI_Zfp.js" + ], + "resources/js/Pages/Teams/Partials/DeleteTeamForm.tsx": [ + "/build/assets/DeleteTeamForm-CDG-Mx5L.js" + ], + "resources/js/Pages/Teams/Partials/TeamMemberManager.tsx": [ + "/build/assets/TeamMemberManager-vS8Og7eY.js" + ], + "resources/js/Pages/Teams/Partials/UpdateTeamNameForm.tsx": [ + "/build/assets/UpdateTeamNameForm-CArH28KV.js" + ], + "resources/js/Pages/Teams/Show.tsx": [ + "/build/assets/Show-C_aCmrEJ.js" + ], + "resources/js/Pages/TermsOfService.tsx": [ + "/build/assets/TermsOfService-CfLQttvD.js" + ], + "resources/js/Pages/Welcome.tsx": [ + "/build/assets/Welcome-Bnby2VG4.js" + ], + "resources/js/app.tsx": [], + "resources/js/bootstrap.ts": [] +} \ No newline at end of file diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..9fabb8b --- /dev/null +++ b/composer.json @@ -0,0 +1,78 @@ +{ + "$schema": "https://getcomposer.org/schema.json", + "name": "adrum/laravel-jetstream-react-typescript", + "type": "project", + "description": "A starter kit for the Laravel framework using Jetstream, Inertia.js, React (TS), and HeadlessUI.", + "keywords": [ + "laravel", + "framework" + ], + "license": "MIT", + "require": { + "php": "^8.2", + "inertiajs/inertia-laravel": "^2.0", + "laravel/framework": "^12.0", + "laravel/jetstream": "^5.3", + "laravel/sanctum": "^4.0", + "laravel/tinker": "^2.10.1", + "tightenco/ziggy": "^2.0" + }, + "require-dev": { + "fakerphp/faker": "^1.23", + "laravel/pail": "^1.2.2", + "laravel/pint": "^1.13", + "laravel/sail": "^1.41", + "mockery/mockery": "^1.6", + "nunomaduro/collision": "^8.6", + "phpunit/phpunit": "^11.5.3" + }, + "autoload": { + "psr-4": { + "App\\": "app/", + "Database\\Factories\\": "database/factories/", + "Database\\Seeders\\": "database/seeders/" + } + }, + "autoload-dev": { + "psr-4": { + "Tests\\": "tests/" + } + }, + "scripts": { + "post-autoload-dump": [ + "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", + "@php artisan package:discover --ansi" + ], + "post-update-cmd": [ + "@php artisan vendor:publish --tag=laravel-assets --ansi --force" + ], + "post-root-package-install": [ + "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" + ], + "post-create-project-cmd": [ + "@php artisan key:generate --ansi", + "@php -r \"file_exists('database/database.sqlite') || touch('database/database.sqlite');\"", + "@php artisan migrate --graceful --ansi" + ], + "dev": [ + "Composer\\Config::disableProcessTimeout", + "npx concurrently -c \"#93c5fd,#c4b5fd,#fb7185,#fdba74\" \"php artisan serve\" \"php artisan queue:listen --tries=1\" \"php artisan pail --timeout=0\" \"npm run dev\" --names=server,queue,logs,vite" + ] + }, + "extra": { + "laravel": { + "dont-discover": [] + } + }, + "config": { + "optimize-autoloader": true, + "preferred-install": "dist", + "sort-packages": true, + "allow-plugins": { + "pestphp/pest-plugin": true, + "php-http/discovery": true + } + }, + "minimum-stability": "stable", + "prefer-stable": true +} \ No newline at end of file diff --git a/config/app.php b/config/app.php new file mode 100644 index 0000000..324b513 --- /dev/null +++ b/config/app.php @@ -0,0 +1,126 @@ + env('APP_NAME', 'Laravel'), + + /* + |-------------------------------------------------------------------------- + | Application Environment + |-------------------------------------------------------------------------- + | + | This value determines the "environment" your application is currently + | running in. This may determine how you prefer to configure various + | services the application utilizes. Set this in your ".env" file. + | + */ + + 'env' => env('APP_ENV', 'production'), + + /* + |-------------------------------------------------------------------------- + | Application Debug Mode + |-------------------------------------------------------------------------- + | + | When your application is in debug mode, detailed error messages with + | stack traces will be shown on every error that occurs within your + | application. If disabled, a simple generic error page is shown. + | + */ + + 'debug' => (bool) env('APP_DEBUG', false), + + /* + |-------------------------------------------------------------------------- + | Application URL + |-------------------------------------------------------------------------- + | + | This URL is used by the console to properly generate URLs when using + | the Artisan command line tool. You should set this to the root of + | the application so that it's available within Artisan commands. + | + */ + + 'url' => env('APP_URL', 'http://localhost'), + + /* + |-------------------------------------------------------------------------- + | Application Timezone + |-------------------------------------------------------------------------- + | + | Here you may specify the default timezone for your application, which + | will be used by the PHP date and date-time functions. The timezone + | is set to "UTC" by default as it is suitable for most use cases. + | + */ + + 'timezone' => 'UTC', + + /* + |-------------------------------------------------------------------------- + | Application Locale Configuration + |-------------------------------------------------------------------------- + | + | The application locale determines the default locale that will be used + | by Laravel's translation / localization methods. This option can be + | set to any locale for which you plan to have translation strings. + | + */ + + 'locale' => env('APP_LOCALE', 'en'), + + 'fallback_locale' => env('APP_FALLBACK_LOCALE', 'en'), + + 'faker_locale' => env('APP_FAKER_LOCALE', 'en_US'), + + /* + |-------------------------------------------------------------------------- + | Encryption Key + |-------------------------------------------------------------------------- + | + | This key is utilized by Laravel's encryption services and should be set + | to a random, 32 character string to ensure that all encrypted values + | are secure. You should do this prior to deploying the application. + | + */ + + 'cipher' => 'AES-256-CBC', + + 'key' => env('APP_KEY'), + + 'previous_keys' => [ + ...array_filter( + explode(',', env('APP_PREVIOUS_KEYS', '')) + ), + ], + + /* + |-------------------------------------------------------------------------- + | Maintenance Mode Driver + |-------------------------------------------------------------------------- + | + | These configuration options determine the driver used to determine and + | manage Laravel's "maintenance mode" status. The "cache" driver will + | allow maintenance mode to be controlled across multiple machines. + | + | Supported drivers: "file", "cache" + | + */ + + 'maintenance' => [ + 'driver' => env('APP_MAINTENANCE_DRIVER', 'file'), + 'store' => env('APP_MAINTENANCE_STORE', 'database'), + ], + +]; diff --git a/config/auth.php b/config/auth.php new file mode 100644 index 0000000..0ba5d5d --- /dev/null +++ b/config/auth.php @@ -0,0 +1,115 @@ + [ + 'guard' => env('AUTH_GUARD', 'web'), + 'passwords' => env('AUTH_PASSWORD_BROKER', 'users'), + ], + + /* + |-------------------------------------------------------------------------- + | Authentication Guards + |-------------------------------------------------------------------------- + | + | Next, you may define every authentication guard for your application. + | Of course, a great default configuration has been defined for you + | which utilizes session storage plus the Eloquent user provider. + | + | All authentication guards have a user provider, which defines how the + | users are actually retrieved out of your database or other storage + | system used by the application. Typically, Eloquent is utilized. + | + | Supported: "session" + | + */ + + 'guards' => [ + 'web' => [ + 'driver' => 'session', + 'provider' => 'users', + ], + ], + + /* + |-------------------------------------------------------------------------- + | User Providers + |-------------------------------------------------------------------------- + | + | All authentication guards have a user provider, which defines how the + | users are actually retrieved out of your database or other storage + | system used by the application. Typically, Eloquent is utilized. + | + | If you have multiple user tables or models you may configure multiple + | providers to represent the model / table. These providers may then + | be assigned to any extra authentication guards you have defined. + | + | Supported: "database", "eloquent" + | + */ + + 'providers' => [ + 'users' => [ + 'driver' => 'eloquent', + 'model' => env('AUTH_MODEL', App\Models\User::class), + ], + + // 'users' => [ + // 'driver' => 'database', + // 'table' => 'users', + // ], + ], + + /* + |-------------------------------------------------------------------------- + | Resetting Passwords + |-------------------------------------------------------------------------- + | + | These configuration options specify the behavior of Laravel's password + | reset functionality, including the table utilized for token storage + | and the user provider that is invoked to actually retrieve users. + | + | The expiry time is the number of minutes that each reset token will be + | considered valid. This security feature keeps tokens short-lived so + | they have less time to be guessed. You may change this as needed. + | + | The throttle setting is the number of seconds a user must wait before + | generating more password reset tokens. This prevents the user from + | quickly generating a very large amount of password reset tokens. + | + */ + + 'passwords' => [ + 'users' => [ + 'provider' => 'users', + 'table' => env('AUTH_PASSWORD_RESET_TOKEN_TABLE', 'password_reset_tokens'), + 'expire' => 60, + 'throttle' => 60, + ], + ], + + /* + |-------------------------------------------------------------------------- + | Password Confirmation Timeout + |-------------------------------------------------------------------------- + | + | Here you may define the amount of seconds before a password confirmation + | window expires and users are asked to re-enter their password via the + | confirmation screen. By default, the timeout lasts for three hours. + | + */ + + 'password_timeout' => env('AUTH_PASSWORD_TIMEOUT', 10800), + +]; diff --git a/config/cache.php b/config/cache.php new file mode 100644 index 0000000..925f7d2 --- /dev/null +++ b/config/cache.php @@ -0,0 +1,108 @@ + env('CACHE_STORE', 'database'), + + /* + |-------------------------------------------------------------------------- + | Cache Stores + |-------------------------------------------------------------------------- + | + | Here you may define all of the cache "stores" for your application as + | well as their drivers. You may even define multiple stores for the + | same cache driver to group types of items stored in your caches. + | + | Supported drivers: "array", "database", "file", "memcached", + | "redis", "dynamodb", "octane", "null" + | + */ + + 'stores' => [ + + 'array' => [ + 'driver' => 'array', + 'serialize' => false, + ], + + 'database' => [ + 'driver' => 'database', + 'connection' => env('DB_CACHE_CONNECTION'), + 'table' => env('DB_CACHE_TABLE', 'cache'), + 'lock_connection' => env('DB_CACHE_LOCK_CONNECTION'), + 'lock_table' => env('DB_CACHE_LOCK_TABLE'), + ], + + 'file' => [ + 'driver' => 'file', + 'path' => storage_path('framework/cache/data'), + 'lock_path' => storage_path('framework/cache/data'), + ], + + 'memcached' => [ + 'driver' => 'memcached', + 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), + 'sasl' => [ + env('MEMCACHED_USERNAME'), + env('MEMCACHED_PASSWORD'), + ], + 'options' => [ + // Memcached::OPT_CONNECT_TIMEOUT => 2000, + ], + 'servers' => [ + [ + 'host' => env('MEMCACHED_HOST', '127.0.0.1'), + 'port' => env('MEMCACHED_PORT', 11211), + 'weight' => 100, + ], + ], + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => env('REDIS_CACHE_CONNECTION', 'cache'), + 'lock_connection' => env('REDIS_CACHE_LOCK_CONNECTION', 'default'), + ], + + 'dynamodb' => [ + 'driver' => 'dynamodb', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'table' => env('DYNAMODB_CACHE_TABLE', 'cache'), + 'endpoint' => env('DYNAMODB_ENDPOINT'), + ], + + 'octane' => [ + 'driver' => 'octane', + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Cache Key Prefix + |-------------------------------------------------------------------------- + | + | When utilizing the APC, database, memcached, Redis, and DynamoDB cache + | stores, there might be other applications using the same cache. For + | that reason, you may prefix every cache key to avoid collisions. + | + */ + + 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache_'), + +]; diff --git a/config/database.php b/config/database.php new file mode 100644 index 0000000..8910562 --- /dev/null +++ b/config/database.php @@ -0,0 +1,174 @@ + env('DB_CONNECTION', 'sqlite'), + + /* + |-------------------------------------------------------------------------- + | Database Connections + |-------------------------------------------------------------------------- + | + | Below are all of the database connections defined for your application. + | An example configuration is provided for each database system which + | is supported by Laravel. You're free to add / remove connections. + | + */ + + 'connections' => [ + + 'sqlite' => [ + 'driver' => 'sqlite', + 'url' => env('DB_URL'), + 'database' => env('DB_DATABASE', database_path('database.sqlite')), + 'prefix' => '', + 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), + 'busy_timeout' => null, + 'journal_mode' => null, + 'synchronous' => null, + ], + + 'mysql' => [ + 'driver' => 'mysql', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => env('DB_CHARSET', 'utf8mb4'), + 'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'), + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'mariadb' => [ + 'driver' => 'mariadb', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => env('DB_CHARSET', 'utf8mb4'), + 'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'), + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'pgsql' => [ + 'driver' => 'pgsql', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '5432'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => env('DB_CHARSET', 'utf8'), + 'prefix' => '', + 'prefix_indexes' => true, + 'search_path' => 'public', + 'sslmode' => 'prefer', + ], + + 'sqlsrv' => [ + 'driver' => 'sqlsrv', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', 'localhost'), + 'port' => env('DB_PORT', '1433'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => env('DB_CHARSET', 'utf8'), + 'prefix' => '', + 'prefix_indexes' => true, + // 'encrypt' => env('DB_ENCRYPT', 'yes'), + // 'trust_server_certificate' => env('DB_TRUST_SERVER_CERTIFICATE', 'false'), + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Migration Repository Table + |-------------------------------------------------------------------------- + | + | This table keeps track of all the migrations that have already run for + | your application. Using this information, we can determine which of + | the migrations on disk haven't actually been run on the database. + | + */ + + 'migrations' => [ + 'table' => 'migrations', + 'update_date_on_publish' => true, + ], + + /* + |-------------------------------------------------------------------------- + | Redis Databases + |-------------------------------------------------------------------------- + | + | Redis is an open source, fast, and advanced key-value store that also + | provides a richer body of commands than a typical key-value system + | such as Memcached. You may define your connection settings here. + | + */ + + 'redis' => [ + + 'client' => env('REDIS_CLIENT', 'phpredis'), + + 'options' => [ + 'cluster' => env('REDIS_CLUSTER', 'redis'), + 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'), + 'persistent' => env('REDIS_PERSISTENT', false), + ], + + 'default' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'username' => env('REDIS_USERNAME'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_DB', '0'), + ], + + 'cache' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'username' => env('REDIS_USERNAME'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_CACHE_DB', '1'), + ], + + ], + +]; diff --git a/config/filesystems.php b/config/filesystems.php new file mode 100644 index 0000000..3d671bd --- /dev/null +++ b/config/filesystems.php @@ -0,0 +1,80 @@ + env('FILESYSTEM_DISK', 'local'), + + /* + |-------------------------------------------------------------------------- + | Filesystem Disks + |-------------------------------------------------------------------------- + | + | Below you may configure as many filesystem disks as necessary, and you + | may even configure multiple disks for the same driver. Examples for + | most supported storage drivers are configured here for reference. + | + | Supported drivers: "local", "ftp", "sftp", "s3" + | + */ + + 'disks' => [ + + 'local' => [ + 'driver' => 'local', + 'root' => storage_path('app/private'), + 'serve' => true, + 'throw' => false, + 'report' => false, + ], + + 'public' => [ + 'driver' => 'local', + 'root' => storage_path('app/public'), + 'url' => env('APP_URL').'/storage', + 'visibility' => 'public', + 'throw' => false, + 'report' => false, + ], + + 's3' => [ + 'driver' => 's3', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION'), + 'bucket' => env('AWS_BUCKET'), + 'url' => env('AWS_URL'), + 'endpoint' => env('AWS_ENDPOINT'), + 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false), + 'throw' => false, + 'report' => false, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Symbolic Links + |-------------------------------------------------------------------------- + | + | Here you may configure the symbolic links that will be created when the + | `storage:link` Artisan command is executed. The array keys should be + | the locations of the links and the values should be their targets. + | + */ + + 'links' => [ + public_path('storage') => storage_path('app/public'), + ], + +]; diff --git a/config/fortify.php b/config/fortify.php new file mode 100644 index 0000000..726d83b --- /dev/null +++ b/config/fortify.php @@ -0,0 +1,159 @@ + 'web', + + /* + |-------------------------------------------------------------------------- + | Fortify Password Broker + |-------------------------------------------------------------------------- + | + | Here you may specify which password broker Fortify can use when a user + | is resetting their password. This configured value should match one + | of your password brokers setup in your "auth" configuration file. + | + */ + + 'passwords' => 'users', + + /* + |-------------------------------------------------------------------------- + | Username / Email + |-------------------------------------------------------------------------- + | + | This value defines which model attribute should be considered as your + | application's "username" field. Typically, this might be the email + | address of the users but you are free to change this value here. + | + | Out of the box, Fortify expects forgot password and reset password + | requests to have a field named 'email'. If the application uses + | another name for the field you may define it below as needed. + | + */ + + 'username' => 'email', + + 'email' => 'email', + + /* + |-------------------------------------------------------------------------- + | Lowercase Usernames + |-------------------------------------------------------------------------- + | + | This value defines whether usernames should be lowercased before saving + | them in the database, as some database system string fields are case + | sensitive. You may disable this for your application if necessary. + | + */ + + 'lowercase_usernames' => true, + + /* + |-------------------------------------------------------------------------- + | Home Path + |-------------------------------------------------------------------------- + | + | Here you may configure the path where users will get redirected during + | authentication or password reset when the operations are successful + | and the user is authenticated. You are free to change this value. + | + */ + + 'home' => '/dashboard', + + /* + |-------------------------------------------------------------------------- + | Fortify Routes Prefix / Subdomain + |-------------------------------------------------------------------------- + | + | Here you may specify which prefix Fortify will assign to all the routes + | that it registers with the application. If necessary, you may change + | subdomain under which all of the Fortify routes will be available. + | + */ + + 'prefix' => '', + + 'domain' => null, + + /* + |-------------------------------------------------------------------------- + | Fortify Routes Middleware + |-------------------------------------------------------------------------- + | + | Here you may specify which middleware Fortify will assign to the routes + | that it registers with the application. If necessary, you may change + | these middleware but typically this provided default is preferred. + | + */ + + 'middleware' => ['web'], + + /* + |-------------------------------------------------------------------------- + | Rate Limiting + |-------------------------------------------------------------------------- + | + | By default, Fortify will throttle logins to five requests per minute for + | every email and IP address combination. However, if you would like to + | specify a custom rate limiter to call then you may specify it here. + | + */ + + 'limiters' => [ + 'login' => 'login', + 'two-factor' => 'two-factor', + ], + + /* + |-------------------------------------------------------------------------- + | Register View Routes + |-------------------------------------------------------------------------- + | + | Here you may specify if the routes returning views should be disabled as + | you may not need them when building your own application. This may be + | especially true if you're writing a custom single-page application. + | + */ + + 'views' => true, + + /* + |-------------------------------------------------------------------------- + | Features + |-------------------------------------------------------------------------- + | + | Some of the Fortify features are optional. You may disable the features + | by removing them from this array. You're free to only remove some of + | these features or you can even remove all of these if you need to. + | + */ + + 'features' => [ + Features::registration(), + Features::resetPasswords(), + // Features::emailVerification(), + Features::updateProfileInformation(), + Features::updatePasswords(), + Features::twoFactorAuthentication([ + 'confirm' => true, + 'confirmPassword' => true, + // 'window' => 0, + ]), + ], + +]; diff --git a/config/jetstream.php b/config/jetstream.php new file mode 100644 index 0000000..08d5ce4 --- /dev/null +++ b/config/jetstream.php @@ -0,0 +1,81 @@ + 'inertia', + + /* + |-------------------------------------------------------------------------- + | Jetstream Route Middleware + |-------------------------------------------------------------------------- + | + | Here you may specify which middleware Jetstream will assign to the routes + | that it registers with the application. When necessary, you may modify + | these middleware; however, this default value is usually sufficient. + | + */ + + 'middleware' => ['web'], + + 'auth_session' => AuthenticateSession::class, + + /* + |-------------------------------------------------------------------------- + | Jetstream Guard + |-------------------------------------------------------------------------- + | + | Here you may specify the authentication guard Jetstream will use while + | authenticating users. This value should correspond with one of your + | guards that is already present in your "auth" configuration file. + | + */ + + 'guard' => 'sanctum', + + /* + |-------------------------------------------------------------------------- + | Features + |-------------------------------------------------------------------------- + | + | Some of Jetstream's features are optional. You may disable the features + | by removing them from this array. You're free to only remove some of + | these features or you can even remove all of these if you need to. + | + */ + + 'features' => [ + // Features::termsAndPrivacyPolicy(), + // Features::profilePhotos(), + // Features::api(), + Features::teams(['invitations' => true]), + Features::accountDeletion(), + ], + + /* + |-------------------------------------------------------------------------- + | Profile Photo Disk + |-------------------------------------------------------------------------- + | + | This configuration value determines the default disk that will be used + | when storing profile photos for your application's users. Typically + | this will be the "public" disk but you may adjust this if needed. + | + */ + + 'profile_photo_disk' => 'public', + +]; diff --git a/config/logging.php b/config/logging.php new file mode 100644 index 0000000..1345f6f --- /dev/null +++ b/config/logging.php @@ -0,0 +1,132 @@ + env('LOG_CHANNEL', 'stack'), + + /* + |-------------------------------------------------------------------------- + | Deprecations Log Channel + |-------------------------------------------------------------------------- + | + | This option controls the log channel that should be used to log warnings + | regarding deprecated PHP and library features. This allows you to get + | your application ready for upcoming major versions of dependencies. + | + */ + + 'deprecations' => [ + 'channel' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), + 'trace' => env('LOG_DEPRECATIONS_TRACE', false), + ], + + /* + |-------------------------------------------------------------------------- + | Log Channels + |-------------------------------------------------------------------------- + | + | Here you may configure the log channels for your application. Laravel + | utilizes the Monolog PHP logging library, which includes a variety + | of powerful log handlers and formatters that you're free to use. + | + | Available drivers: "single", "daily", "slack", "syslog", + | "errorlog", "monolog", "custom", "stack" + | + */ + + 'channels' => [ + + 'stack' => [ + 'driver' => 'stack', + 'channels' => explode(',', env('LOG_STACK', 'single')), + 'ignore_exceptions' => false, + ], + + 'single' => [ + 'driver' => 'single', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + 'replace_placeholders' => true, + ], + + 'daily' => [ + 'driver' => 'daily', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + 'days' => env('LOG_DAILY_DAYS', 14), + 'replace_placeholders' => true, + ], + + 'slack' => [ + 'driver' => 'slack', + 'url' => env('LOG_SLACK_WEBHOOK_URL'), + 'username' => env('LOG_SLACK_USERNAME', 'Laravel Log'), + 'emoji' => env('LOG_SLACK_EMOJI', ':boom:'), + 'level' => env('LOG_LEVEL', 'critical'), + 'replace_placeholders' => true, + ], + + 'papertrail' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => env('LOG_PAPERTRAIL_HANDLER', SyslogUdpHandler::class), + 'handler_with' => [ + 'host' => env('PAPERTRAIL_URL'), + 'port' => env('PAPERTRAIL_PORT'), + 'connectionString' => 'tls://'.env('PAPERTRAIL_URL').':'.env('PAPERTRAIL_PORT'), + ], + 'processors' => [PsrLogMessageProcessor::class], + ], + + 'stderr' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => StreamHandler::class, + 'handler_with' => [ + 'stream' => 'php://stderr', + ], + 'formatter' => env('LOG_STDERR_FORMATTER'), + 'processors' => [PsrLogMessageProcessor::class], + ], + + 'syslog' => [ + 'driver' => 'syslog', + 'level' => env('LOG_LEVEL', 'debug'), + 'facility' => env('LOG_SYSLOG_FACILITY', LOG_USER), + 'replace_placeholders' => true, + ], + + 'errorlog' => [ + 'driver' => 'errorlog', + 'level' => env('LOG_LEVEL', 'debug'), + 'replace_placeholders' => true, + ], + + 'null' => [ + 'driver' => 'monolog', + 'handler' => NullHandler::class, + ], + + 'emergency' => [ + 'path' => storage_path('logs/laravel.log'), + ], + + ], + +]; diff --git a/config/mail.php b/config/mail.php new file mode 100644 index 0000000..756305b --- /dev/null +++ b/config/mail.php @@ -0,0 +1,116 @@ + env('MAIL_MAILER', 'log'), + + /* + |-------------------------------------------------------------------------- + | Mailer Configurations + |-------------------------------------------------------------------------- + | + | Here you may configure all of the mailers used by your application plus + | their respective settings. Several examples have been configured for + | you and you are free to add your own as your application requires. + | + | Laravel supports a variety of mail "transport" drivers that can be used + | when delivering an email. You may specify which one you're using for + | your mailers below. You may also add additional mailers if needed. + | + | Supported: "smtp", "sendmail", "mailgun", "ses", "ses-v2", + | "postmark", "resend", "log", "array", + | "failover", "roundrobin" + | + */ + + 'mailers' => [ + + 'smtp' => [ + 'transport' => 'smtp', + 'scheme' => env('MAIL_SCHEME'), + 'url' => env('MAIL_URL'), + 'host' => env('MAIL_HOST', '127.0.0.1'), + 'port' => env('MAIL_PORT', 2525), + 'username' => env('MAIL_USERNAME'), + 'password' => env('MAIL_PASSWORD'), + 'timeout' => null, + 'local_domain' => env('MAIL_EHLO_DOMAIN', parse_url(env('APP_URL', 'http://localhost'), PHP_URL_HOST)), + ], + + 'ses' => [ + 'transport' => 'ses', + ], + + 'postmark' => [ + 'transport' => 'postmark', + // 'message_stream_id' => env('POSTMARK_MESSAGE_STREAM_ID'), + // 'client' => [ + // 'timeout' => 5, + // ], + ], + + 'resend' => [ + 'transport' => 'resend', + ], + + 'sendmail' => [ + 'transport' => 'sendmail', + 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i'), + ], + + 'log' => [ + 'transport' => 'log', + 'channel' => env('MAIL_LOG_CHANNEL'), + ], + + 'array' => [ + 'transport' => 'array', + ], + + 'failover' => [ + 'transport' => 'failover', + 'mailers' => [ + 'smtp', + 'log', + ], + ], + + 'roundrobin' => [ + 'transport' => 'roundrobin', + 'mailers' => [ + 'ses', + 'postmark', + ], + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Global "From" Address + |-------------------------------------------------------------------------- + | + | You may wish for all emails sent by your application to be sent from + | the same address. Here you may specify a name and address that is + | used globally for all emails that are sent by your application. + | + */ + + 'from' => [ + 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), + 'name' => env('MAIL_FROM_NAME', 'Example'), + ], + +]; diff --git a/config/queue.php b/config/queue.php new file mode 100644 index 0000000..116bd8d --- /dev/null +++ b/config/queue.php @@ -0,0 +1,112 @@ + env('QUEUE_CONNECTION', 'database'), + + /* + |-------------------------------------------------------------------------- + | Queue Connections + |-------------------------------------------------------------------------- + | + | Here you may configure the connection options for every queue backend + | used by your application. An example configuration is provided for + | each backend supported by Laravel. You're also free to add more. + | + | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null" + | + */ + + 'connections' => [ + + 'sync' => [ + 'driver' => 'sync', + ], + + 'database' => [ + 'driver' => 'database', + 'connection' => env('DB_QUEUE_CONNECTION'), + 'table' => env('DB_QUEUE_TABLE', 'jobs'), + 'queue' => env('DB_QUEUE', 'default'), + 'retry_after' => (int) env('DB_QUEUE_RETRY_AFTER', 90), + 'after_commit' => false, + ], + + 'beanstalkd' => [ + 'driver' => 'beanstalkd', + 'host' => env('BEANSTALKD_QUEUE_HOST', 'localhost'), + 'queue' => env('BEANSTALKD_QUEUE', 'default'), + 'retry_after' => (int) env('BEANSTALKD_QUEUE_RETRY_AFTER', 90), + 'block_for' => 0, + 'after_commit' => false, + ], + + 'sqs' => [ + 'driver' => 'sqs', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), + 'queue' => env('SQS_QUEUE', 'default'), + 'suffix' => env('SQS_SUFFIX'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'after_commit' => false, + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => env('REDIS_QUEUE_CONNECTION', 'default'), + 'queue' => env('REDIS_QUEUE', 'default'), + 'retry_after' => (int) env('REDIS_QUEUE_RETRY_AFTER', 90), + 'block_for' => null, + 'after_commit' => false, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Job Batching + |-------------------------------------------------------------------------- + | + | The following options configure the database and table that store job + | batching information. These options can be updated to any database + | connection and table which has been defined by your application. + | + */ + + 'batching' => [ + 'database' => env('DB_CONNECTION', 'sqlite'), + 'table' => 'job_batches', + ], + + /* + |-------------------------------------------------------------------------- + | Failed Queue Jobs + |-------------------------------------------------------------------------- + | + | These options configure the behavior of failed queue job logging so you + | can control how and where failed jobs are stored. Laravel ships with + | support for storing failed jobs in a simple file or in a database. + | + | Supported drivers: "database-uuids", "dynamodb", "file", "null" + | + */ + + 'failed' => [ + 'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'), + 'database' => env('DB_CONNECTION', 'sqlite'), + 'table' => 'failed_jobs', + ], + +]; diff --git a/config/sanctum.php b/config/sanctum.php new file mode 100644 index 0000000..764a82f --- /dev/null +++ b/config/sanctum.php @@ -0,0 +1,83 @@ + explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( + '%s%s', + 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', + Sanctum::currentApplicationUrlWithPort() + ))), + + /* + |-------------------------------------------------------------------------- + | Sanctum Guards + |-------------------------------------------------------------------------- + | + | This array contains the authentication guards that will be checked when + | Sanctum is trying to authenticate a request. If none of these guards + | are able to authenticate the request, Sanctum will use the bearer + | token that's present on an incoming request for authentication. + | + */ + + 'guard' => ['web'], + + /* + |-------------------------------------------------------------------------- + | Expiration Minutes + |-------------------------------------------------------------------------- + | + | This value controls the number of minutes until an issued token will be + | considered expired. This will override any values set in the token's + | "expires_at" attribute, but first-party sessions are not affected. + | + */ + + 'expiration' => null, + + /* + |-------------------------------------------------------------------------- + | Token Prefix + |-------------------------------------------------------------------------- + | + | Sanctum can prefix new tokens in order to take advantage of numerous + | security scanning initiatives maintained by open source platforms + | that notify developers if they commit tokens into repositories. + | + | See: https://docs.github.com/en/code-security/secret-scanning/about-secret-scanning + | + */ + + 'token_prefix' => env('SANCTUM_TOKEN_PREFIX', ''), + + /* + |-------------------------------------------------------------------------- + | Sanctum Middleware + |-------------------------------------------------------------------------- + | + | When authenticating your first-party SPA with Sanctum you may need to + | customize some of the middleware Sanctum uses while processing the + | request. You may change the middleware listed below as required. + | + */ + + 'middleware' => [ + 'authenticate_session' => Laravel\Sanctum\Http\Middleware\AuthenticateSession::class, + 'encrypt_cookies' => Illuminate\Cookie\Middleware\EncryptCookies::class, + 'validate_csrf_token' => Illuminate\Foundation\Http\Middleware\ValidateCsrfToken::class, + ], + +]; diff --git a/config/services.php b/config/services.php new file mode 100644 index 0000000..27a3617 --- /dev/null +++ b/config/services.php @@ -0,0 +1,38 @@ + [ + 'token' => env('POSTMARK_TOKEN'), + ], + + 'ses' => [ + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + ], + + 'resend' => [ + 'key' => env('RESEND_KEY'), + ], + + 'slack' => [ + 'notifications' => [ + 'bot_user_oauth_token' => env('SLACK_BOT_USER_OAUTH_TOKEN'), + 'channel' => env('SLACK_BOT_USER_DEFAULT_CHANNEL'), + ], + ], + +]; diff --git a/config/session.php b/config/session.php new file mode 100644 index 0000000..ba0aa60 --- /dev/null +++ b/config/session.php @@ -0,0 +1,217 @@ + env('SESSION_DRIVER', 'database'), + + /* + |-------------------------------------------------------------------------- + | Session Lifetime + |-------------------------------------------------------------------------- + | + | Here you may specify the number of minutes that you wish the session + | to be allowed to remain idle before it expires. If you want them + | to expire immediately when the browser is closed then you may + | indicate that via the expire_on_close configuration option. + | + */ + + 'lifetime' => (int) env('SESSION_LIFETIME', 120), + + 'expire_on_close' => env('SESSION_EXPIRE_ON_CLOSE', false), + + /* + |-------------------------------------------------------------------------- + | Session Encryption + |-------------------------------------------------------------------------- + | + | This option allows you to easily specify that all of your session data + | should be encrypted before it's stored. All encryption is performed + | automatically by Laravel and you may use the session like normal. + | + */ + + 'encrypt' => env('SESSION_ENCRYPT', false), + + /* + |-------------------------------------------------------------------------- + | Session File Location + |-------------------------------------------------------------------------- + | + | When utilizing the "file" session driver, the session files are placed + | on disk. The default storage location is defined here; however, you + | are free to provide another location where they should be stored. + | + */ + + 'files' => storage_path('framework/sessions'), + + /* + |-------------------------------------------------------------------------- + | Session Database Connection + |-------------------------------------------------------------------------- + | + | When using the "database" or "redis" session drivers, you may specify a + | connection that should be used to manage these sessions. This should + | correspond to a connection in your database configuration options. + | + */ + + 'connection' => env('SESSION_CONNECTION'), + + /* + |-------------------------------------------------------------------------- + | Session Database Table + |-------------------------------------------------------------------------- + | + | When using the "database" session driver, you may specify the table to + | be used to store sessions. Of course, a sensible default is defined + | for you; however, you're welcome to change this to another table. + | + */ + + 'table' => env('SESSION_TABLE', 'sessions'), + + /* + |-------------------------------------------------------------------------- + | Session Cache Store + |-------------------------------------------------------------------------- + | + | When using one of the framework's cache driven session backends, you may + | define the cache store which should be used to store the session data + | between requests. This must match one of your defined cache stores. + | + | Affects: "apc", "dynamodb", "memcached", "redis" + | + */ + + 'store' => env('SESSION_STORE'), + + /* + |-------------------------------------------------------------------------- + | Session Sweeping Lottery + |-------------------------------------------------------------------------- + | + | Some session drivers must manually sweep their storage location to get + | rid of old sessions from storage. Here are the chances that it will + | happen on a given request. By default, the odds are 2 out of 100. + | + */ + + 'lottery' => [2, 100], + + /* + |-------------------------------------------------------------------------- + | Session Cookie Name + |-------------------------------------------------------------------------- + | + | Here you may change the name of the session cookie that is created by + | the framework. Typically, you should not need to change this value + | since doing so does not grant a meaningful security improvement. + | + */ + + 'cookie' => env( + 'SESSION_COOKIE', + Str::slug(env('APP_NAME', 'laravel'), '_').'_session' + ), + + /* + |-------------------------------------------------------------------------- + | Session Cookie Path + |-------------------------------------------------------------------------- + | + | The session cookie path determines the path for which the cookie will + | be regarded as available. Typically, this will be the root path of + | your application, but you're free to change this when necessary. + | + */ + + 'path' => env('SESSION_PATH', '/'), + + /* + |-------------------------------------------------------------------------- + | Session Cookie Domain + |-------------------------------------------------------------------------- + | + | This value determines the domain and subdomains the session cookie is + | available to. By default, the cookie will be available to the root + | domain and all subdomains. Typically, this shouldn't be changed. + | + */ + + 'domain' => env('SESSION_DOMAIN'), + + /* + |-------------------------------------------------------------------------- + | HTTPS Only Cookies + |-------------------------------------------------------------------------- + | + | By setting this option to true, session cookies will only be sent back + | to the server if the browser has a HTTPS connection. This will keep + | the cookie from being sent to you when it can't be done securely. + | + */ + + 'secure' => env('SESSION_SECURE_COOKIE'), + + /* + |-------------------------------------------------------------------------- + | HTTP Access Only + |-------------------------------------------------------------------------- + | + | Setting this value to true will prevent JavaScript from accessing the + | value of the cookie and the cookie will only be accessible through + | the HTTP protocol. It's unlikely you should disable this option. + | + */ + + 'http_only' => env('SESSION_HTTP_ONLY', true), + + /* + |-------------------------------------------------------------------------- + | Same-Site Cookies + |-------------------------------------------------------------------------- + | + | This option determines how your cookies behave when cross-site requests + | take place, and can be used to mitigate CSRF attacks. By default, we + | will set this value to "lax" to permit secure cross-site requests. + | + | See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#samesitesamesite-value + | + | Supported: "lax", "strict", "none", null + | + */ + + 'same_site' => env('SESSION_SAME_SITE', 'lax'), + + /* + |-------------------------------------------------------------------------- + | Partitioned Cookies + |-------------------------------------------------------------------------- + | + | Setting this value to true will tie the cookie to the top-level site for + | a cross-site context. Partitioned cookies are accepted by the browser + | when flagged "secure" and the Same-Site attribute is set to "none". + | + */ + + 'partitioned' => env('SESSION_PARTITIONED_COOKIE', false), + +]; diff --git a/database/.gitignore b/database/.gitignore new file mode 100644 index 0000000..9b19b93 --- /dev/null +++ b/database/.gitignore @@ -0,0 +1 @@ +*.sqlite* diff --git a/database/factories/TeamFactory.php b/database/factories/TeamFactory.php new file mode 100644 index 0000000..1305204 --- /dev/null +++ b/database/factories/TeamFactory.php @@ -0,0 +1,26 @@ + + */ +class TeamFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'name' => $this->faker->unique()->company(), + 'user_id' => User::factory(), + 'personal_team' => true, + ]; + } +} diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php new file mode 100644 index 0000000..ea955ad --- /dev/null +++ b/database/factories/UserFactory.php @@ -0,0 +1,72 @@ + + */ +class UserFactory extends Factory +{ + /** + * The current password being used by the factory. + */ + protected static ?string $password; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'name' => fake()->name(), + 'email' => fake()->unique()->safeEmail(), + 'email_verified_at' => now(), + 'password' => static::$password ??= Hash::make('password'), + 'two_factor_secret' => null, + 'two_factor_recovery_codes' => null, + 'remember_token' => Str::random(10), + 'profile_photo_path' => null, + 'current_team_id' => null, + ]; + } + + /** + * Indicate that the model's email address should be unverified. + */ + public function unverified(): static + { + return $this->state(fn (array $attributes) => [ + 'email_verified_at' => null, + ]); + } + + /** + * Indicate that the user should have a personal team. + */ + public function withPersonalTeam(?callable $callback = null): static + { + if (! Features::hasTeamFeatures()) { + return $this->state([]); + } + + return $this->has( + Team::factory() + ->state(fn (array $attributes, User $user) => [ + 'name' => $user->name.'\'s Team', + 'user_id' => $user->id, + 'personal_team' => true, + ]) + ->when(is_callable($callback), $callback), + 'ownedTeams' + ); + } +} diff --git a/database/migrations/0001_01_01_000000_create_users_table.php b/database/migrations/0001_01_01_000000_create_users_table.php new file mode 100644 index 0000000..31d7807 --- /dev/null +++ b/database/migrations/0001_01_01_000000_create_users_table.php @@ -0,0 +1,51 @@ +id(); + $table->string('name'); + $table->string('email')->unique(); + $table->timestamp('email_verified_at')->nullable(); + $table->string('password'); + $table->rememberToken(); + $table->foreignId('current_team_id')->nullable(); + $table->string('profile_photo_path', 2048)->nullable(); + $table->timestamps(); + }); + + Schema::create('password_reset_tokens', function (Blueprint $table) { + $table->string('email')->primary(); + $table->string('token'); + $table->timestamp('created_at')->nullable(); + }); + + Schema::create('sessions', function (Blueprint $table) { + $table->string('id')->primary(); + $table->foreignId('user_id')->nullable()->index(); + $table->string('ip_address', 45)->nullable(); + $table->text('user_agent')->nullable(); + $table->longText('payload'); + $table->integer('last_activity')->index(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('users'); + Schema::dropIfExists('password_reset_tokens'); + Schema::dropIfExists('sessions'); + } +}; diff --git a/database/migrations/0001_01_01_000001_create_cache_table.php b/database/migrations/0001_01_01_000001_create_cache_table.php new file mode 100644 index 0000000..b9c106b --- /dev/null +++ b/database/migrations/0001_01_01_000001_create_cache_table.php @@ -0,0 +1,35 @@ +string('key')->primary(); + $table->mediumText('value'); + $table->integer('expiration'); + }); + + Schema::create('cache_locks', function (Blueprint $table) { + $table->string('key')->primary(); + $table->string('owner'); + $table->integer('expiration'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('cache'); + Schema::dropIfExists('cache_locks'); + } +}; diff --git a/database/migrations/0001_01_01_000002_create_jobs_table.php b/database/migrations/0001_01_01_000002_create_jobs_table.php new file mode 100644 index 0000000..425e705 --- /dev/null +++ b/database/migrations/0001_01_01_000002_create_jobs_table.php @@ -0,0 +1,57 @@ +id(); + $table->string('queue')->index(); + $table->longText('payload'); + $table->unsignedTinyInteger('attempts'); + $table->unsignedInteger('reserved_at')->nullable(); + $table->unsignedInteger('available_at'); + $table->unsignedInteger('created_at'); + }); + + Schema::create('job_batches', function (Blueprint $table) { + $table->string('id')->primary(); + $table->string('name'); + $table->integer('total_jobs'); + $table->integer('pending_jobs'); + $table->integer('failed_jobs'); + $table->longText('failed_job_ids'); + $table->mediumText('options')->nullable(); + $table->integer('cancelled_at')->nullable(); + $table->integer('created_at'); + $table->integer('finished_at')->nullable(); + }); + + Schema::create('failed_jobs', function (Blueprint $table) { + $table->id(); + $table->string('uuid')->unique(); + $table->text('connection'); + $table->text('queue'); + $table->longText('payload'); + $table->longText('exception'); + $table->timestamp('failed_at')->useCurrent(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('jobs'); + Schema::dropIfExists('job_batches'); + Schema::dropIfExists('failed_jobs'); + } +}; diff --git a/database/migrations/2025_03_21_025423_add_two_factor_columns_to_users_table.php b/database/migrations/2025_03_21_025423_add_two_factor_columns_to_users_table.php new file mode 100644 index 0000000..45739ef --- /dev/null +++ b/database/migrations/2025_03_21_025423_add_two_factor_columns_to_users_table.php @@ -0,0 +1,42 @@ +text('two_factor_secret') + ->after('password') + ->nullable(); + + $table->text('two_factor_recovery_codes') + ->after('two_factor_secret') + ->nullable(); + + $table->timestamp('two_factor_confirmed_at') + ->after('two_factor_recovery_codes') + ->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn([ + 'two_factor_secret', + 'two_factor_recovery_codes', + 'two_factor_confirmed_at', + ]); + }); + } +}; diff --git a/database/migrations/2025_03_21_025431_create_personal_access_tokens_table.php b/database/migrations/2025_03_21_025431_create_personal_access_tokens_table.php new file mode 100644 index 0000000..e828ad8 --- /dev/null +++ b/database/migrations/2025_03_21_025431_create_personal_access_tokens_table.php @@ -0,0 +1,33 @@ +id(); + $table->morphs('tokenable'); + $table->string('name'); + $table->string('token', 64)->unique(); + $table->text('abilities')->nullable(); + $table->timestamp('last_used_at')->nullable(); + $table->timestamp('expires_at')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('personal_access_tokens'); + } +}; diff --git a/database/migrations/2025_03_21_025431_create_teams_table.php b/database/migrations/2025_03_21_025431_create_teams_table.php new file mode 100644 index 0000000..3e1b8ba --- /dev/null +++ b/database/migrations/2025_03_21_025431_create_teams_table.php @@ -0,0 +1,30 @@ +id(); + $table->foreignId('user_id')->index(); + $table->string('name'); + $table->boolean('personal_team'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('teams'); + } +}; diff --git a/database/migrations/2025_03_21_025432_create_team_user_table.php b/database/migrations/2025_03_21_025432_create_team_user_table.php new file mode 100644 index 0000000..3e27876 --- /dev/null +++ b/database/migrations/2025_03_21_025432_create_team_user_table.php @@ -0,0 +1,32 @@ +id(); + $table->foreignId('team_id'); + $table->foreignId('user_id'); + $table->string('role')->nullable(); + $table->timestamps(); + + $table->unique(['team_id', 'user_id']); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('team_user'); + } +}; diff --git a/database/migrations/2025_03_21_025433_create_team_invitations_table.php b/database/migrations/2025_03_21_025433_create_team_invitations_table.php new file mode 100644 index 0000000..d59cd11 --- /dev/null +++ b/database/migrations/2025_03_21_025433_create_team_invitations_table.php @@ -0,0 +1,32 @@ +id(); + $table->foreignId('team_id')->constrained()->cascadeOnDelete(); + $table->string('email'); + $table->string('role')->nullable(); + $table->timestamps(); + + $table->unique(['team_id', 'email']); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('team_invitations'); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php new file mode 100644 index 0000000..ae436a0 --- /dev/null +++ b/database/seeders/DatabaseSeeder.php @@ -0,0 +1,23 @@ +withPersonalTeam()->create(); + + User::factory()->withPersonalTeam()->create([ + 'name' => 'Test User', + 'email' => 'test@example.com', + ]); + } +} diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 0000000..97921a9 --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/*": ["resources/js/*"] + } + }, + "exclude": ["node_modules", "public"] +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..6b054cf --- /dev/null +++ b/package.json @@ -0,0 +1,55 @@ +{ + "private": true, + "type": "module", + "scripts": { + "build": "vite build && vite build --ssr", + "dev": "vite" + }, + "devDependencies": { + "@prettier/plugin-php": "^0.22.4", + "@tailwindcss/forms": "^0.5.10", + "@tailwindcss/postcss": "^4.0.15", + "@tailwindcss/typography": "^0.5.16", + "@tailwindcss/vite": "^4.0.0", + "@types/lodash": "^4.17.16", + "@types/react": "^18.3.19", + "@types/react-dom": "^18.3.5", + "@vitejs/plugin-react": "^4.3.4", + "autoprefixer": "^10.4.21", + "axios": "^1.8.4", + "concurrently": "^9.0.1", + "daisyui": "^5.0.9", + "laravel-vite-plugin": "^1.2.0", + "postcss": "^8.5.3", + "prettier": "^3.5.3", + "tailwindcss": "^4.0.0", + "typescript": "^5.8.2", + "vite": "^6.0.0" + }, + "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.7.2", + "@fortawesome/free-regular-svg-icons": "^6.7.2", + "@fortawesome/free-solid-svg-icons": "^6.7.2", + "@fortawesome/react-fontawesome": "^0.2.2", + "@headlessui/react": "^2.2.0", + "@heroicons/react": "^2.2.0", + "@inertiajs/react": "^2.0.0", + "@inertiajs/server": "^0.1.0", + "@material-tailwind/react": "^2.1.10", + "classnames": "^2.5.1", + "date-fns": "^4.1.0", + "lodash": "^4.17.21", + "react": "^18.3.1", + "react-dom": "^18.3.1", + "ziggy-js": "^2.5.2" + }, + "prettier": { + "semi": true, + "singleQuote": true, + "useTabs": false, + "tabWidth": 2, + "trailingComma": "all", + "printWidth": 80, + "arrowParens": "avoid" + } +} diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 0000000..506b9a3 --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,33 @@ + + + + + tests/Unit + + + tests/Feature + + + + + app + + + + + + + + + + + + + + + + diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..8dc11a1 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,5 @@ +export default { + plugins: { + '@tailwindcss/postcss': {}, + }, +}; diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 0000000..b574a59 --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,25 @@ + + + Options -MultiViews -Indexes + + + RewriteEngine On + + # Handle Authorization Header + RewriteCond %{HTTP:Authorization} . + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + # Handle X-XSRF-Token Header + RewriteCond %{HTTP:x-xsrf-token} . + RewriteRule .* - [E=HTTP_X_XSRF_TOKEN:%{HTTP:X-XSRF-Token}] + + # Redirect Trailing Slashes If Not A Folder... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} (.+)/$ + RewriteRule ^ %1 [L,R=301] + + # Send Requests To Front Controller... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.php [L] + diff --git a/public/build/assets/APITokenManager-DJxa8V1W.js b/public/build/assets/APITokenManager-DJxa8V1W.js new file mode 100644 index 0000000..30ce96b --- /dev/null +++ b/public/build/assets/APITokenManager-DJxa8V1W.js @@ -0,0 +1 @@ +import{u as _,m as g,r as j,j as e}from"./app-43FwoUKv.js";import{c as f}from"./index-C3aXnQRR.js";import{A as E}from"./ActionMessage-BR0zIw5R.js";import{A as O}from"./Modal-Dl0HSC4q.js";import{C as A}from"./Checkbox-DRbLuUpm.js";import{C as k}from"./ConfirmationModal-A-4mK9mU.js";import{D as L}from"./DangerButton--OsE_WB2.js";import{D as a}from"./DialogModal-CM2pkQ7Q.js";import{F as R}from"./FormSection-fM5DX8Wc.js";import{T as Y,I as q}from"./TextInput-CdoY_jBz.js";import{I as S}from"./InputLabel-Cl3yDvOx.js";import{P as c}from"./PrimaryButton-Gixff4KF.js";import{S as y}from"./SecondaryButton-CKdOzt0Y.js";import{S as z}from"./SectionBorder-DsOSyNBH.js";import{u as G}from"./useTypedPage-_EZ6P4Xz.js";import"./transition-aKza8ZE9.js";import"./SectionTitle-CmR6E75W.js";function oe({tokens:v,availablePermissions:i,defaultPermissions:D}){var T,C,N;const m=_(),t=g({name:"",permissions:D}),r=g({permissions:[]}),d=g({}),[P,u]=j.useState(!1),[p,o]=j.useState(null),[x,l]=j.useState(null),F=G();function I(){t.post(m("api-tokens.store"),{preserveScroll:!0,onSuccess:()=>{u(!0),t.reset()}})}function b(s){r.setData("permissions",s.abilities),o(s)}function w(){p&&r.put(m("api-tokens.update",[p]),{preserveScroll:!0,preserveState:!0,onSuccess:()=>o(null)})}function B(s){l(s)}function M(){x&&d.delete(m("api-tokens.destroy",[x]),{preserveScroll:!0,preserveState:!0,onSuccess:()=>l(null)})}return e.jsxs("div",{children:[e.jsxs(R,{onSubmit:I,title:"Create API Token",description:"API tokens allow third-party services to authenticate with our application on your behalf.",renderActions:()=>e.jsxs(e.Fragment,{children:[e.jsx(E,{on:t.recentlySuccessful,className:"mr-3",children:"Created."}),e.jsx(c,{className:f({"opacity-25":t.processing}),disabled:t.processing,children:"Create"})]}),children:[e.jsxs("div",{className:"col-span-6 sm:col-span-4",children:[e.jsx(S,{htmlFor:"name",children:"Name"}),e.jsx(Y,{id:"name",type:"text",className:"mt-1 block w-full",value:t.data.name,onChange:s=>t.setData("name",s.currentTarget.value),autoFocus:!0}),e.jsx(q,{message:t.errors.name,className:"mt-2"})]}),i.length>0&&e.jsxs("div",{className:"col-span-6",children:[e.jsx(S,{htmlFor:"permissions",children:"Permissions"}),e.jsx("div",{className:"mt-2 grid grid-cols-1 md:grid-cols-2 gap-4",children:i.map(s=>e.jsx("div",{children:e.jsxs("label",{className:"flex items-center",children:[e.jsx(A,{value:s,checked:t.data.permissions.includes(s),onChange:n=>{t.data.permissions.includes(n.currentTarget.value)?t.setData("permissions",t.data.permissions.filter(h=>h!==n.currentTarget.value)):t.setData("permissions",[n.currentTarget.value,...t.data.permissions])}}),e.jsx("span",{className:"ml-2 text-sm text-gray-600 dark:text-gray-400",children:s})]})},s))})]})]}),v.length>0?e.jsxs("div",{children:[e.jsx(z,{}),e.jsx("div",{className:"mt-10 sm:mt-0",children:e.jsx(O,{title:"Manage API Tokens",description:"You may delete any of your existing tokens if they are no longer needed.",children:e.jsx("div",{className:"space-y-6",children:v.map(s=>e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("div",{className:"break-all dark:text-white",children:s.name}),e.jsxs("div",{className:"flex items-center",children:[s.last_used_ago&&e.jsxs("div",{className:"text-sm text-gray-400",children:["Last used ",s.last_used_ago]}),i.length>0?e.jsx(c,{className:"cursor-pointer ml-6 text-sm text-gray-400 underline",onClick:()=>b(s),children:"Permissions"}):null,e.jsx(c,{className:"cursor-pointer ml-6 text-sm text-red-500",onClick:()=>B(s),children:"Delete"})]})]},s.id))})})})]}):null,e.jsxs(a,{isOpen:P,onClose:()=>u(!1),children:[e.jsxs(a.Content,{title:"API Token",children:[e.jsx("div",{children:"Please copy your new API token. For your security, it won't be shown again."}),e.jsx("div",{className:"mt-4 bg-gray-100 dark:bg-gray-900 px-4 py-2 rounded-sm font-mono text-sm text-gray-500",children:(N=(C=(T=F.props)==null?void 0:T.jetstream)==null?void 0:C.flash)==null?void 0:N.token})]}),e.jsx(a.Footer,{children:e.jsx(y,{onClick:()=>u(!1),children:"Close"})})]}),e.jsxs(a,{isOpen:!!p,onClose:()=>o(null),children:[e.jsx(a.Content,{title:"API Token Permissions",children:e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:i.map(s=>e.jsx("div",{children:e.jsxs("label",{className:"flex items-center",children:[e.jsx(A,{value:s,checked:r.data.permissions.includes(s),onChange:n=>{r.data.permissions.includes(n.currentTarget.value)?r.setData("permissions",r.data.permissions.filter(h=>h!==n.currentTarget.value)):r.setData("permissions",[n.currentTarget.value,...r.data.permissions])}}),e.jsx("span",{className:"ml-2 text-sm text-gray-600 dark:text-gray-400",children:s})]})},s))})}),e.jsxs(a.Footer,{children:[e.jsx(y,{onClick:()=>o(null),children:"Cancel"}),e.jsx(c,{onClick:w,className:f("ml-2",{"opacity-25":r.processing}),disabled:r.processing,children:"Save"})]})]}),e.jsxs(k,{isOpen:!!x,onClose:()=>l(null),children:[e.jsx(k.Content,{title:"Delete API Token",children:"Are you sure you would like to delete this API token?"}),e.jsxs(k.Footer,{children:[e.jsx(y,{onClick:()=>l(null),children:"Cancel"}),e.jsx(L,{onClick:M,className:f("ml-2",{"opacity-25":d.processing}),disabled:d.processing,children:"Delete"})]})]})]})}export{oe as default}; diff --git a/public/build/assets/ActionMessage-BR0zIw5R.js b/public/build/assets/ActionMessage-BR0zIw5R.js new file mode 100644 index 0000000..0587944 --- /dev/null +++ b/public/build/assets/ActionMessage-BR0zIw5R.js @@ -0,0 +1 @@ +import{j as e}from"./app-43FwoUKv.js";import{z as r}from"./transition-aKza8ZE9.js";function n({on:t,className:a,children:s}){return e.jsx("div",{className:a,children:e.jsx(r,{show:t,leave:"transition ease-in duration-1000","leave-from-class":"opacity-100",leaveTo:"opacity-0",children:e.jsx("div",{className:"text-sm text-gray-600 dark:text-gray-400",children:s})})})}export{n as A}; diff --git a/public/build/assets/AppLayout-ZM0oZ-BJ.js b/public/build/assets/AppLayout-ZM0oZ-BJ.js new file mode 100644 index 0000000..e9588a1 --- /dev/null +++ b/public/build/assets/AppLayout-ZM0oZ-BJ.js @@ -0,0 +1 @@ +import{j as e,r as f,$ as p,u as z,L as F,W as M}from"./app-43FwoUKv.js";import{c as l}from"./index-C3aXnQRR.js";import{u as _}from"./useTypedPage-_EZ6P4Xz.js";import{z as A}from"./transition-aKza8ZE9.js";function B(n){return e.jsxs("svg",{viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg",...n,children:[e.jsx("path",{d:"M11.395 44.428C4.557 40.198 0 32.632 0 24 0 10.745 10.745 0 24 0a23.891 23.891 0 0113.997 4.502c-.2 17.907-11.097 33.245-26.602 39.926z",fill:"#6875F5"}),e.jsx("path",{d:"M14.134 45.885A23.914 23.914 0 0024 48c13.255 0 24-10.745 24-24 0-3.516-.756-6.856-2.115-9.866-4.659 15.143-16.608 27.092-31.75 31.751z",fill:"#6875F5"})]})}function D(){var o,c;const[n,i]=f.useState(!0),{props:a}=_(),r=((o=a.jetstream.flash)==null?void 0:o.bannerStyle)||"success",s=((c=a.jetstream.flash)==null?void 0:c.banner)||"";return e.jsx("div",{children:n&&s?e.jsx("div",{className:l({"bg-indigo-500":r=="success","bg-red-700":r=="danger"}),children:e.jsx("div",{className:"max-w-(--breakpoint-xl) mx-auto py-2 px-3 sm:px-6 lg:px-8",children:e.jsxs("div",{className:"flex items-center justify-between flex-wrap",children:[e.jsxs("div",{className:"w-0 flex-1 flex items-center min-w-0",children:[e.jsx("span",{className:l("flex p-2 rounded-lg",{"bg-indigo-600":r=="success","bg-red-600":r=="danger"}),children:(()=>{switch(r){case"success":return e.jsx("svg",{className:"h-5 w-5 text-white",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})});case"danger":return e.jsx("svg",{className:"h-5 w-5 text-white",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"})});default:return null}})()}),e.jsx("p",{className:"ml-3 font-medium text-sm text-white truncate",children:s})]}),e.jsx("div",{className:"shrink-0 sm:ml-3",children:e.jsx("button",{type:"button",className:l("-mr-1 flex p-2 rounded-md focus:outline-hidden sm:-mr-2 transition",{"hover:bg-indigo-600 focus:bg-indigo-600":r=="success","hover:bg-red-600 focus:bg-red-600":r=="danger"}),"aria-label":"Dismiss",onClick:x=>{x.preventDefault(),i(!1)},children:e.jsx("svg",{className:"h-5 w-5 text-white",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M6 18L18 6M6 6l12 12"})})})})]})})}):null})}function S({align:n="right",width:i="48",contentClasses:a="py-1 bg-white dark:bg-gray-700",renderTrigger:r,children:s}){const[o,c]=f.useState(!1),x={48:"w-48"}[i.toString()],g=n==="left"?"origin-top-left left-0":n==="right"?"origin-top-right right-0":"origin-top";return e.jsxs("div",{className:"relative",children:[e.jsx("div",{onClick:()=>c(!o),children:r()}),e.jsx("div",{className:"fixed inset-0 z-40",style:{display:o?"block":"none"},onClick:()=>c(!1)}),e.jsx(A,{show:o,enter:"transition ease-out duration-200",enterFrom:"transform opacity-0 scale-95",enterTo:"transform opacity-100 scale-100",leave:"transition ease-in duration-75",leaveFrom:"transform opacity-100 scale-100",leaveTo:"transform opacity-0 scale-95",children:e.jsx("div",{className:"relative z-50",children:e.jsx("div",{className:l("absolute mt-2 rounded-md shadow-lg",x,g),onClick:()=>c(!1),children:e.jsx("div",{className:l("rounded-md ring-1 ring-black ring-opacity-5",a),children:s})})})})]})}function m({as:n,href:i,children:a}){return e.jsx("div",{children:(()=>{switch(n){case"button":return e.jsx("button",{type:"submit",className:"block w-full px-4 py-2 text-left text-sm leading-5 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 focus:outline-hidden focus:bg-gray-100 dark:focus:bg-gray-800 transition duration-150 ease-in-out",children:a});case"a":return e.jsx("a",{href:i,className:"block px-4 py-2 text-sm leading-5 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 focus:outline-hidden focus:bg-gray-100 dark:focus:bg-gray-800 transition duration-150 ease-in-out",children:a});default:return e.jsx(p,{href:i||"",className:"block px-4 py-2 text-sm leading-5 text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 focus:outline-hidden focus:bg-gray-100 dark:focus:bg-gray-800 transition duration-150 ease-in-out",children:a})}})()})}function P({active:n,href:i,children:a}){const r=n?"inline-flex items-center px-1 pt-1 border-b-2 border-indigo-400 dark:border-indigo-600 text-sm font-medium leading-5 text-gray-900 dark:text-gray-100 focus:outline-hidden focus:border-indigo-700 transition duration-150 ease-in-out":"inline-flex items-center px-1 pt-1 border-b-2 border-transparent text-sm font-medium leading-5 text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 hover:border-gray-300 dark:hover:border-gray-700 focus:outline-hidden focus:text-gray-700 dark:focus:text-gray-300 focus:border-gray-300 dark:focus:border-gray-700 transition duration-150 ease-in-out";return e.jsx(p,{href:i,className:r,children:a})}function u({active:n,href:i,children:a,...r}){const s=n?"block w-full pl-3 pr-4 py-2 border-l-4 border-indigo-400 dark:border-indigo-600 text-left text-base font-medium text-indigo-700 dark:text-indigo-300 bg-indigo-50 dark:bg-indigo-900/50 focus:outline-hidden focus:text-indigo-800 dark:focus:text-indigo-200 focus:bg-indigo-100 dark:focus:bg-indigo-900 focus:border-indigo-700 dark:focus:border-indigo-300 transition duration-150 ease-in-out":"block w-full pl-3 pr-4 py-2 border-l-4 border-transparent text-left text-base font-medium text-gray-600 dark:text-gray-400 hover:text-gray-800 dark:hover:text-gray-200 hover:bg-gray-50 dark:hover:bg-gray-700 hover:border-gray-300 dark:hover:border-gray-600 focus:outline-hidden focus:text-gray-800 dark:focus:text-gray-200 focus:bg-gray-50 dark:focus:bg-gray-700 focus:border-gray-300 dark:focus:border-gray-600 transition duration-150 ease-in-out";return e.jsx("div",{children:"as"in r&&r.as==="button"?e.jsx("button",{className:l("w-full text-left",s),children:a}):e.jsx(p,{href:i||"",className:s,children:a})})}function I({title:n,renderHeader:i,children:a}){var b,j,y,v,k,w,N,L,T,C;const r=_(),s=z(),[o,c]=f.useState(!1);function x(t,d){t.preventDefault(),M.put(s("current-team.update"),{team_id:d.id},{preserveState:!1})}function g(t){t.preventDefault(),M.post(s("logout"))}return e.jsxs("div",{children:[e.jsx(F,{title:n}),e.jsx(D,{}),e.jsxs("div",{className:"min-h-screen bg-gray-100 dark:bg-gray-900",children:[e.jsxs("nav",{className:"bg-white dark:bg-gray-800 border-b border-gray-100 dark:border-gray-700",children:[e.jsx("div",{className:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8",children:e.jsxs("div",{className:"flex justify-between h-16",children:[e.jsxs("div",{className:"flex",children:[e.jsx("div",{className:"shrink-0 flex items-center",children:e.jsx(p,{href:s("dashboard"),children:e.jsx(B,{className:"block h-9 w-auto"})})}),e.jsx("div",{className:"hidden space-x-8 sm:-my-px sm:ml-10 sm:flex",children:e.jsx(P,{href:s("dashboard"),active:s().current("dashboard"),children:"Dashboard"})})]}),e.jsxs("div",{className:"hidden sm:flex sm:items-center sm:ml-6",children:[e.jsx("div",{className:"ml-3 relative",children:r.props.jetstream.hasTeamFeatures?e.jsx(S,{align:"right",width:"60",renderTrigger:()=>{var t,d;return e.jsx("span",{className:"inline-flex rounded-md",children:e.jsxs("button",{type:"button",className:"inline-flex items-center px-3 py-2 border border-transparent text-sm leading-4 font-medium rounded-md text-gray-500 dark:text-gray-400 bg-white dark:bg-gray-800 hover:text-gray-700 dark:hover:text-gray-300 focus:outline-hidden focus:bg-gray-50 dark:focus:bg-gray-700 active:bg-gray-50 dark:active:bg-gray-700 transition ease-in-out duration-150",children:[(d=(t=r.props.auth.user)==null?void 0:t.current_team)==null?void 0:d.name,e.jsx("svg",{className:"ml-2 -mr-0.5 h-4 w-4",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{fillRule:"evenodd",d:"M10 3a1 1 0 01.707.293l3 3a1 1 0 01-1.414 1.414L10 5.414 7.707 7.707a1 1 0 01-1.414-1.414l3-3A1 1 0 0110 3zm-3.707 9.293a1 1 0 011.414 0L10 14.586l2.293-2.293a1 1 0 011.414 1.414l-3 3a1 1 0 01-1.414 0l-3-3a1 1 0 010-1.414z",clipRule:"evenodd"})})]})})},children:e.jsx("div",{className:"w-60",children:r.props.jetstream.hasTeamFeatures?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"block px-4 py-2 text-xs text-gray-400",children:"Manage Team"}),e.jsx(m,{href:s("teams.show",[(b=r.props.auth.user)==null?void 0:b.current_team]),children:"Team Settings"}),r.props.jetstream.canCreateTeams?e.jsx(m,{href:s("teams.create"),children:"Create New Team"}):null,e.jsx("div",{className:"border-t border-gray-200 dark:border-gray-600"}),e.jsx("div",{className:"block px-4 py-2 text-xs text-gray-400",children:"Switch Teams"}),(y=(j=r.props.auth.user)==null?void 0:j.all_teams)==null?void 0:y.map(t=>{var d;return e.jsx("form",{onSubmit:h=>x(h,t),children:e.jsx(m,{as:"button",children:e.jsxs("div",{className:"flex items-center",children:[t.id==((d=r.props.auth.user)==null?void 0:d.current_team_id)&&e.jsx("svg",{className:"mr-2 h-5 w-5 text-green-400",fill:"none",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",stroke:"currentColor",viewBox:"0 0 24 24",children:e.jsx("path",{d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})}),e.jsx("div",{children:t.name})]})})},t.id)})]}):null})}):null}),e.jsx("div",{className:"ml-3 relative",children:e.jsxs(S,{align:"right",width:"48",renderTrigger:()=>{var t,d,h;return r.props.jetstream.managesProfilePhotos?e.jsx("button",{className:"flex text-sm border-2 border-transparent rounded-full focus:outline-hidden focus:border-gray-300 transition",children:e.jsx("img",{className:"h-8 w-8 rounded-full object-cover",src:(t=r.props.auth.user)==null?void 0:t.profile_photo_url,alt:(d=r.props.auth.user)==null?void 0:d.name})}):e.jsx("span",{className:"inline-flex rounded-md",children:e.jsxs("button",{type:"button",className:"inline-flex items-center px-3 py-2 border border-transparent text-sm leading-4 font-medium rounded-md text-gray-500 dark:text-gray-400 bg-white dark:bg-gray-800 hover:text-gray-700 dark:hover:text-gray-300 focus:outline-hidden focus:bg-gray-50 dark:focus:bg-gray-700 active:bg-gray-50 dark:active:bg-gray-700 transition ease-in-out duration-150",children:[(h=r.props.auth.user)==null?void 0:h.name,e.jsx("svg",{className:"ml-2 -mr-0.5 h-4 w-4",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19.5 8.25l-7.5 7.5-7.5-7.5"})})]})})},children:[e.jsx("div",{className:"block px-4 py-2 text-xs text-gray-400",children:"Manage Account"}),e.jsx(m,{href:s("profile.show"),children:"Profile"}),r.props.jetstream.hasApiFeatures?e.jsx(m,{href:s("api-tokens.index"),children:"API Tokens"}):null,e.jsx("div",{className:"border-t border-gray-200 dark:border-gray-600"}),e.jsx("form",{onSubmit:g,children:e.jsx(m,{as:"button",children:"Log Out"})})]})})]}),e.jsx("div",{className:"-mr-2 flex items-center sm:hidden",children:e.jsx("button",{onClick:()=>c(!o),className:"inline-flex items-center justify-center p-2 rounded-md text-gray-400 dark:text-gray-500 hover:text-gray-500 dark:hover:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-900 focus:outline-hidden focus:bg-gray-100 dark:focus:bg-gray-900 focus:text-gray-500 dark:focus:text-gray-400 transition duration-150 ease-in-out",children:e.jsxs("svg",{className:"h-6 w-6",stroke:"currentColor",fill:"none",viewBox:"0 0 24 24",children:[e.jsx("path",{className:l({hidden:o,"inline-flex":!o}),strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M4 6h16M4 12h16M4 18h16"}),e.jsx("path",{className:l({hidden:!o,"inline-flex":o}),strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M6 18L18 6M6 6l12 12"})]})})})]})}),e.jsxs("div",{className:l("sm:hidden",{block:o,hidden:!o}),children:[e.jsx("div",{className:"pt-2 pb-3 space-y-1",children:e.jsx(u,{href:s("dashboard"),active:s().current("dashboard"),children:"Dashboard"})}),e.jsxs("div",{className:"pt-4 pb-1 border-t border-gray-200 dark:border-gray-600",children:[e.jsxs("div",{className:"flex items-center px-4",children:[r.props.jetstream.managesProfilePhotos?e.jsx("div",{className:"shrink-0 mr-3",children:e.jsx("img",{className:"h-10 w-10 rounded-full object-cover",src:(v=r.props.auth.user)==null?void 0:v.profile_photo_url,alt:(k=r.props.auth.user)==null?void 0:k.name})}):null,e.jsxs("div",{children:[e.jsx("div",{className:"font-medium text-base text-gray-800 dark:text-gray-200",children:(w=r.props.auth.user)==null?void 0:w.name}),e.jsx("div",{className:"font-medium text-sm text-gray-500",children:(N=r.props.auth.user)==null?void 0:N.email})]})]}),e.jsxs("div",{className:"mt-3 space-y-1",children:[e.jsx(u,{href:s("profile.show"),active:s().current("profile.show"),children:"Profile"}),r.props.jetstream.hasApiFeatures?e.jsx(u,{href:s("api-tokens.index"),active:s().current("api-tokens.index"),children:"API Tokens"}):null,e.jsx("form",{method:"POST",onSubmit:g,children:e.jsx(u,{as:"button",children:"Log Out"})}),r.props.jetstream.hasTeamFeatures?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"border-t border-gray-200 dark:border-gray-600"}),e.jsx("div",{className:"block px-4 py-2 text-xs text-gray-400",children:"Manage Team"}),e.jsx(u,{href:s("teams.show",[(L=r.props.auth.user)==null?void 0:L.current_team]),active:s().current("teams.show"),children:"Team Settings"}),r.props.jetstream.canCreateTeams?e.jsx(u,{href:s("teams.create"),active:s().current("teams.create"),children:"Create New Team"}):null,e.jsx("div",{className:"border-t border-gray-200 dark:border-gray-600"}),e.jsx("div",{className:"block px-4 py-2 text-xs text-gray-400",children:"Switch Teams"}),(C=(T=r.props.auth.user)==null?void 0:T.all_teams)==null?void 0:C.map(t=>{var d;return e.jsx("form",{onSubmit:h=>x(h,t),children:e.jsx(u,{as:"button",children:e.jsxs("div",{className:"flex items-center",children:[t.id==((d=r.props.auth.user)==null?void 0:d.current_team_id)&&e.jsx("svg",{className:"mr-2 h-5 w-5 text-green-400",fill:"none",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",stroke:"currentColor",viewBox:"0 0 24 24",children:e.jsx("path",{d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})}),e.jsx("div",{children:t.name})]})})},t.id)})]}):null]})]})]})]}),i?e.jsx("header",{className:"bg-white dark:bg-gray-800 shadow-sm",children:e.jsx("div",{className:"max-w-7xl mx-auto py-6 px-4 sm:px-6 lg:px-8",children:i()})}):null,e.jsx("main",{children:a})]})]})}export{I as A}; diff --git a/public/build/assets/AuthenticationCard-CH5UMK9r.js b/public/build/assets/AuthenticationCard-CH5UMK9r.js new file mode 100644 index 0000000..83cbabc --- /dev/null +++ b/public/build/assets/AuthenticationCard-CH5UMK9r.js @@ -0,0 +1 @@ +import{j as e}from"./app-43FwoUKv.js";import{A as s}from"./AuthenticationCardLogo-DxGGqaxw.js";function i({children:r}){return e.jsxs("div",{className:"min-h-screen flex flex-col sm:justify-center items-center pt-6 sm:pt-0 bg-gray-100 dark:bg-gray-900",children:[e.jsx("div",{children:e.jsx(s,{})}),e.jsx("div",{className:"w-full sm:max-w-md mt-6 px-6 py-4 bg-white dark:bg-gray-800 shadow-md overflow-hidden sm:rounded-lg",children:r})]})}export{i as A}; diff --git a/public/build/assets/AuthenticationCardLogo-DxGGqaxw.js b/public/build/assets/AuthenticationCardLogo-DxGGqaxw.js new file mode 100644 index 0000000..e58404b --- /dev/null +++ b/public/build/assets/AuthenticationCardLogo-DxGGqaxw.js @@ -0,0 +1 @@ +import{j as s,$ as t}from"./app-43FwoUKv.js";function i(){return s.jsx(t,{href:"/",children:s.jsxs("svg",{className:"w-16 h-16",viewBox:"0 0 48 48",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[s.jsx("path",{d:"M11.395 44.428C4.557 40.198 0 32.632 0 24 0 10.745 10.745 0 24 0a23.891 23.891 0 0113.997 4.502c-.2 17.907-11.097 33.245-26.602 39.926z",fill:"#6875F5"}),s.jsx("path",{d:"M14.134 45.885A23.914 23.914 0 0024 48c13.255 0 24-10.745 24-24 0-3.516-.756-6.856-2.115-9.866-4.659 15.143-16.608 27.092-31.75 31.751z",fill:"#6875F5"})]})})}export{i as A}; diff --git a/public/build/assets/Checkbox-DRbLuUpm.js b/public/build/assets/Checkbox-DRbLuUpm.js new file mode 100644 index 0000000..3f74a15 --- /dev/null +++ b/public/build/assets/Checkbox-DRbLuUpm.js @@ -0,0 +1 @@ +import{j as o}from"./app-43FwoUKv.js";import{c as s}from"./index-C3aXnQRR.js";function i(r){return o.jsx("input",{type:"checkbox",...r,className:s("rounded-sm dark:bg-gray-900 border-gray-300 dark:border-gray-700 text-indigo-600 shadow-xs focus:ring-indigo-500 dark:focus:ring-indigo-600 dark:focus:ring-offset-gray-800",r.className)})}export{i as C}; diff --git a/public/build/assets/ConfirmPassword-Cf-6lS2z.js b/public/build/assets/ConfirmPassword-Cf-6lS2z.js new file mode 100644 index 0000000..3cfa49a --- /dev/null +++ b/public/build/assets/ConfirmPassword-Cf-6lS2z.js @@ -0,0 +1 @@ +import{u as t,m as i,j as s,L as n}from"./app-43FwoUKv.js";import{c as m}from"./index-C3aXnQRR.js";import{A as c}from"./AuthenticationCard-CH5UMK9r.js";import{T as u,I as d}from"./TextInput-CdoY_jBz.js";import{I as p}from"./InputLabel-Cl3yDvOx.js";import{P as l}from"./PrimaryButton-Gixff4KF.js";import"./AuthenticationCardLogo-DxGGqaxw.js";function b(){const a=t(),r=i({password:""});function o(e){e.preventDefault(),r.post(a("password.confirm"),{onFinish:()=>r.reset()})}return s.jsxs(c,{children:[s.jsx(n,{title:"Secure Area"}),s.jsx("div",{className:"mb-4 text-sm text-gray-600 dark:text-gray-400",children:"This is a secure area of the application. Please confirm your password before continuing."}),s.jsxs("form",{onSubmit:o,children:[s.jsxs("div",{children:[s.jsx(p,{htmlFor:"password",children:"Password"}),s.jsx(u,{id:"password",type:"password",className:"mt-1 block w-full",value:r.data.password,onChange:e=>r.setData("password",e.currentTarget.value),required:!0,autoComplete:"current-password",autoFocus:!0}),s.jsx(d,{className:"mt-2",message:r.errors.password})]}),s.jsx("div",{className:"flex justify-end mt-4",children:s.jsx(l,{className:m("ml-4",{"opacity-25":r.processing}),disabled:r.processing,children:"Confirm"})})]})]})}export{b as default}; diff --git a/public/build/assets/ConfirmationModal-A-4mK9mU.js b/public/build/assets/ConfirmationModal-A-4mK9mU.js new file mode 100644 index 0000000..dc5a1c9 --- /dev/null +++ b/public/build/assets/ConfirmationModal-A-4mK9mU.js @@ -0,0 +1 @@ +import{j as t}from"./app-43FwoUKv.js";import{M as n}from"./Modal-Dl0HSC4q.js";s.Content=function({title:e,children:a}){return t.jsx("div",{className:"bg-white dark:bg-gray-800 px-4 pt-5 pb-4 sm:p-6 sm:pb-4",children:t.jsxs("div",{className:"sm:flex sm:items-start",children:[t.jsx("div",{className:"mx-auto shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-red-100 sm:mx-0 sm:h-10 sm:w-10",children:t.jsx("svg",{className:"h-6 w-6 text-red-600 dark:text-red-400",stroke:"currentColor",fill:"none",viewBox:"0 0 24 24",children:t.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"})})}),t.jsxs("div",{className:"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left",children:[t.jsx("h3",{className:"text-lg font-medium text-gray-900 dark:text-gray-100",children:e}),t.jsx("div",{className:"mt-4 text-sm text-gray-600 dark:text-gray-400",children:a})]})]})})};s.Footer=function({children:e}){return t.jsx("div",{className:"px-6 py-4 bg-gray-100 dark:bg-gray-800 text-right",children:e})};function s({children:r,...e}){return t.jsx(n,{...e,children:r})}export{s as C}; diff --git a/public/build/assets/Create-CC2vQbdY.js b/public/build/assets/Create-CC2vQbdY.js new file mode 100644 index 0000000..bdd8d53 --- /dev/null +++ b/public/build/assets/Create-CC2vQbdY.js @@ -0,0 +1 @@ +import{j as t}from"./app-43FwoUKv.js";import r from"./CreateTeamForm-B2bh2Oa6.js";import{A as e}from"./AppLayout-ZM0oZ-BJ.js";import"./useTypedPage-_EZ6P4Xz.js";import"./ActionMessage-BR0zIw5R.js";import"./transition-aKza8ZE9.js";import"./FormSection-fM5DX8Wc.js";import"./index-C3aXnQRR.js";import"./SectionTitle-CmR6E75W.js";import"./TextInput-CdoY_jBz.js";import"./InputLabel-Cl3yDvOx.js";import"./PrimaryButton-Gixff4KF.js";function f(){return t.jsx(e,{title:"Create Team",renderHeader:()=>t.jsx("h2",{className:"font-semibold text-xl text-gray-800 dark:text-gray-200 leading-tight",children:"Create Team"}),children:t.jsx("div",{children:t.jsx("div",{className:"max-w-7xl mx-auto py-10 sm:px-6 lg:px-8",children:t.jsx(r,{})})})})}export{f as default}; diff --git a/public/build/assets/CreateTeamForm-B2bh2Oa6.js b/public/build/assets/CreateTeamForm-B2bh2Oa6.js new file mode 100644 index 0000000..559e12b --- /dev/null +++ b/public/build/assets/CreateTeamForm-B2bh2Oa6.js @@ -0,0 +1 @@ +import{u,m as p,j as e}from"./app-43FwoUKv.js";import{u as d}from"./useTypedPage-_EZ6P4Xz.js";import{A as x}from"./ActionMessage-BR0zIw5R.js";import{F as h}from"./FormSection-fM5DX8Wc.js";import{T as j,I as f}from"./TextInput-CdoY_jBz.js";import{I as n}from"./InputLabel-Cl3yDvOx.js";import{P as g}from"./PrimaryButton-Gixff4KF.js";import{c as v}from"./index-C3aXnQRR.js";import"./transition-aKza8ZE9.js";import"./SectionTitle-CmR6E75W.js";function C(){var r,t,o,m;const c=u(),a=d(),s=p({name:""});function l(){s.post(c("teams.store"),{errorBag:"createTeam",preserveScroll:!0})}return e.jsxs(h,{onSubmit:l,title:"Team Details",description:"Create a new team to collaborate with others on projects.",renderActions:()=>e.jsxs(e.Fragment,{children:[e.jsx(x,{on:s.recentlySuccessful,className:"mr-3",children:"Saved."}),e.jsx(g,{className:v({"opacity-25":s.processing}),disabled:s.processing,children:"Save"})]}),children:[e.jsxs("div",{className:"col-span-6",children:[e.jsx(n,{value:"Team Owner"}),e.jsxs("div",{className:"flex items-center mt-2",children:[e.jsx("img",{className:"w-12 h-12 rounded-full object-cover",src:(r=a.props.auth.user)==null?void 0:r.profile_photo_url,alt:(t=a.props.auth.user)==null?void 0:t.name}),e.jsxs("div",{className:"ml-4 leading-tight",children:[e.jsx("div",{className:"text-gray-900 dark:text-white",children:(o=a.props.auth.user)==null?void 0:o.name}),e.jsx("div",{className:"text-gray-700 dark:text-gray-300 text-sm",children:(m=a.props.auth.user)==null?void 0:m.email})]})]})]}),e.jsxs("div",{className:"col-span-6 sm:col-span-4",children:[e.jsx(n,{htmlFor:"name",value:"Team Name"}),e.jsx(j,{id:"name",type:"text",className:"mt-1 block w-full",value:s.data.name,onChange:i=>s.setData("name",i.currentTarget.value),autoFocus:!0}),e.jsx(f,{message:s.errors.name,className:"mt-2"})]})]})}export{C as default}; diff --git a/public/build/assets/DangerButton--OsE_WB2.js b/public/build/assets/DangerButton--OsE_WB2.js new file mode 100644 index 0000000..1784a89 --- /dev/null +++ b/public/build/assets/DangerButton--OsE_WB2.js @@ -0,0 +1 @@ +import{j as r}from"./app-43FwoUKv.js";import{c as s}from"./index-C3aXnQRR.js";function i({children:t,...e}){return r.jsx("button",{...e,className:s("inline-flex items-center justify-center px-4 py-2 bg-red-600 border border-transparent rounded-md font-semibold text-xs text-white uppercase tracking-widest hover:bg-red-500 active:bg-red-700 focus:outline-hidden focus:ring-2 focus:ring-red-500 focus:ring-offset-2 dark:focus:ring-offset-gray-800 transition ease-in-out duration-150",e.className),children:t})}export{i as D}; diff --git a/public/build/assets/Dashboard-BxXaChya.js b/public/build/assets/Dashboard-BxXaChya.js new file mode 100644 index 0000000..a563b69 --- /dev/null +++ b/public/build/assets/Dashboard-BxXaChya.js @@ -0,0 +1 @@ +import{j as e}from"./app-43FwoUKv.js";import{A as t}from"./AppLayout-ZM0oZ-BJ.js";import"./index-C3aXnQRR.js";import"./useTypedPage-_EZ6P4Xz.js";import"./transition-aKza8ZE9.js";function s({className:a}){return e.jsxs("svg",{viewBox:"0 0 317 48",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:a,children:[e.jsx("path",{d:"M74.09 30.04V13h-4.14v21H82.1v-3.96h-8.01zM95.379 19v1.77c-1.08-1.35-2.7-2.19-4.89-2.19-3.99 0-7.29 3.45-7.29 7.92s3.3 7.92 7.29 7.92c2.19 0 3.81-.84 4.89-2.19V34h3.87V19h-3.87zm-4.17 11.73c-2.37 0-4.14-1.71-4.14-4.23 0-2.52 1.77-4.23 4.14-4.23 2.4 0 4.17 1.71 4.17 4.23 0 2.52-1.77 4.23-4.17 4.23zM106.628 21.58V19h-3.87v15h3.87v-7.17c0-3.15 2.55-4.05 4.56-3.81V18.7c-1.89 0-3.78.84-4.56 2.88zM124.295 19v1.77c-1.08-1.35-2.7-2.19-4.89-2.19-3.99 0-7.29 3.45-7.29 7.92s3.3 7.92 7.29 7.92c2.19 0 3.81-.84 4.89-2.19V34h3.87V19h-3.87zm-4.17 11.73c-2.37 0-4.14-1.71-4.14-4.23 0-2.52 1.77-4.23 4.14-4.23 2.4 0 4.17 1.71 4.17 4.23 0 2.52-1.77 4.23-4.17 4.23zM141.544 19l-3.66 10.5-3.63-10.5h-4.26l5.7 15h4.41l5.7-15h-4.26zM150.354 28.09h11.31c.09-.51.15-1.02.15-1.59 0-4.41-3.15-7.92-7.59-7.92-4.71 0-7.92 3.45-7.92 7.92s3.18 7.92 8.22 7.92c2.88 0 5.13-1.17 6.54-3.21l-3.12-1.8c-.66.87-1.86 1.5-3.36 1.5-2.04 0-3.69-.84-4.23-2.82zm-.06-3c.45-1.92 1.86-3.03 3.93-3.03 1.62 0 3.24.87 3.72 3.03h-7.65zM164.516 34h3.87V12.1h-3.87V34zM185.248 34.36c3.69 0 6.9-2.01 6.9-6.3V13h-2.1v15.06c0 3.03-2.07 4.26-4.8 4.26-2.19 0-3.93-.78-4.62-2.61l-1.77 1.05c1.05 2.43 3.57 3.6 6.39 3.6zM203.124 18.64c-4.65 0-7.83 3.45-7.83 7.86 0 4.53 3.24 7.86 7.98 7.86 3.03 0 5.34-1.41 6.6-3.45l-1.74-1.02c-.81 1.44-2.46 2.55-4.83 2.55-3.18 0-5.55-1.89-5.97-4.95h13.17c.03-.3.06-.63.06-.93 0-4.11-2.85-7.92-7.44-7.92zm0 1.92c2.58 0 4.98 1.71 5.4 5.01h-11.19c.39-2.94 2.64-5.01 5.79-5.01zM221.224 20.92V19h-4.32v-4.2l-1.98.6V19h-3.15v1.92h3.15v9.09c0 3.6 2.25 4.59 6.3 3.99v-1.74c-2.91.12-4.32.33-4.32-2.25v-9.09h4.32zM225.176 22.93c0-1.62 1.59-2.37 3.15-2.37 1.44 0 2.97.57 3.6 2.1l1.65-.96c-.87-1.86-2.79-3.06-5.25-3.06-3 0-5.13 1.89-5.13 4.29 0 5.52 8.76 3.39 8.76 7.11 0 1.77-1.68 2.4-3.45 2.4-2.01 0-3.57-.99-4.11-2.52l-1.68.99c.75 1.92 2.79 3.45 5.79 3.45 3.21 0 5.43-1.77 5.43-4.32 0-5.52-8.76-3.39-8.76-7.11zM244.603 20.92V19h-4.32v-4.2l-1.98.6V19h-3.15v1.92h3.15v9.09c0 3.6 2.25 4.59 6.3 3.99v-1.74c-2.91.12-4.32.33-4.32-2.25v-9.09h4.32zM249.883 21.49V19h-1.98v15h1.98v-8.34c0-3.72 2.34-4.98 4.74-4.98v-1.92c-1.92 0-3.69.63-4.74 2.73zM263.358 18.64c-4.65 0-7.83 3.45-7.83 7.86 0 4.53 3.24 7.86 7.98 7.86 3.03 0 5.34-1.41 6.6-3.45l-1.74-1.02c-.81 1.44-2.46 2.55-4.83 2.55-3.18 0-5.55-1.89-5.97-4.95h13.17c.03-.3.06-.63.06-.93 0-4.11-2.85-7.92-7.44-7.92zm0 1.92c2.58 0 4.98 1.71 5.4 5.01h-11.19c.39-2.94 2.64-5.01 5.79-5.01zM286.848 19v2.94c-1.26-2.01-3.39-3.3-6.06-3.3-4.23 0-7.74 3.42-7.74 7.86s3.51 7.86 7.74 7.86c2.67 0 4.8-1.29 6.06-3.3V34h1.98V19h-1.98zm-5.91 13.44c-3.33 0-5.91-2.61-5.91-5.94 0-3.33 2.58-5.94 5.91-5.94s5.91 2.61 5.91 5.94c0 3.33-2.58 5.94-5.91 5.94zM309.01 18.64c-1.92 0-3.75.87-4.86 2.73-.84-1.74-2.46-2.73-4.56-2.73-1.8 0-3.42.72-4.59 2.55V19h-1.98v15H295v-8.31c0-3.72 2.16-5.13 4.32-5.13 2.13 0 3.51 1.41 3.51 4.08V34h1.98v-8.31c0-3.72 1.86-5.13 4.17-5.13 2.13 0 3.66 1.41 3.66 4.08V34h1.98v-9.36c0-3.75-2.31-6-5.61-6z",fill:"fill-black dark:fill-white"}),e.jsx("path",{d:"M11.395 44.428C4.557 40.198 0 32.632 0 24 0 10.745 10.745 0 24 0a23.891 23.891 0 0113.997 4.502c-.2 17.907-11.097 33.245-26.602 39.926z",fill:"#6875F5"}),e.jsx("path",{d:"M14.134 45.885A23.914 23.914 0 0024 48c13.255 0 24-10.745 24-24 0-3.516-.756-6.856-2.115-9.866-4.659 15.143-16.608 27.092-31.75 31.751z",fill:"#6875F5"})]})}function r(){return e.jsxs("div",{children:[e.jsxs("div",{className:"p-6 lg:p-8 bg-white dark:bg-gray-800 dark:bg-linear-to-bl dark:from-gray-700/50 dark:via-transparent border-b border-gray-200 dark:border-gray-700",children:[e.jsx(s,{className:"block h-12 w-auto"}),e.jsx("h1",{className:"mt-8 text-2xl font-medium text-gray-900 dark:text-white",children:"Welcome to your Jetstream application!"}),e.jsx("p",{className:"mt-6 text-gray-500 dark:text-gray-400 leading-relaxed",children:"Laravel Jetstream provides a beautiful, robust starting point for your next Laravel application. Laravel is designed to help you build your application using a development environment that is simple, powerful, and enjoyable. We believe you should love expressing your creativity through programming, so we have spent time carefully crafting the Laravel ecosystem to be a breath of fresh air. We hope you love it."})]}),e.jsxs("div",{className:"bg-gray-200 dark:bg-gray-800 bg-opacity-25 grid grid-cols-1 md:grid-cols-2 gap-6 lg:gap-8 p-6 lg:p-8",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center",children:[e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",className:"w-6 h-6 stroke-gray-400",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 6.042A8.967 8.967 0 006 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 016 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 016-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0018 18a8.967 8.967 0 00-6 2.292m0-14.25v14.25"})}),e.jsx("h2",{className:"ml-3 text-xl font-semibold text-gray-900 dark:text-white",children:e.jsx("a",{href:"https://laravel.com/docs",children:"Documentation"})})]}),e.jsx("p",{className:"mt-4 text-gray-500 dark:text-gray-400 text-sm leading-relaxed",children:"Laravel has wonderful documentation covering every aspect of the framework. Whether you're new to the framework or have previous experience, we recommend reading all of the documentation from beginning to end."}),e.jsx("p",{className:"mt-4 text-sm",children:e.jsxs("a",{href:"https://laravel.com/docs",className:"inline-flex items-center font-semibold text-indigo-700 dark:text-indigo-300",children:["Explore the documentation",e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",className:"ml-1 w-5 h-5 fill-indigo-500 dark:fill-indigo-200",children:e.jsx("path",{fillRule:"evenodd",d:"M5 10a.75.75 0 01.75-.75h6.638L10.23 7.29a.75.75 0 111.04-1.08l3.5 3.25a.75.75 0 010 1.08l-3.5 3.25a.75.75 0 11-1.04-1.08l2.158-1.96H5.75A.75.75 0 015 10z",clipRule:"evenodd"})})]})})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center",children:[e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",className:"w-6 h-6 stroke-gray-400",children:e.jsx("path",{strokeLinecap:"round",d:"M15.75 10.5l4.72-4.72a.75.75 0 011.28.53v11.38a.75.75 0 01-1.28.53l-4.72-4.72M4.5 18.75h9a2.25 2.25 0 002.25-2.25v-9a2.25 2.25 0 00-2.25-2.25h-9A2.25 2.25 0 002.25 7.5v9a2.25 2.25 0 002.25 2.25z"})}),e.jsx("h2",{className:"ml-3 text-xl font-semibold text-gray-900 dark:text-white",children:e.jsx("a",{href:"https://laracasts.com",children:"Laracasts"})})]}),e.jsx("p",{className:"mt-4 text-gray-500 dark:text-gray-400 text-sm leading-relaxed",children:"Laracasts offers thousands of video tutorials on Laravel, PHP, and JavaScript development. Check them out, see for yourself, and massively level up your development skills in the process."}),e.jsx("p",{className:"mt-4 text-sm",children:e.jsxs("a",{href:"https://laracasts.com",className:"inline-flex items-center font-semibold text-indigo-700 dark:text-indigo-300",children:["Start watching Laracasts",e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",className:"ml-1 w-5 h-5 fill-indigo-500 dark:fill-indigo-200",children:e.jsx("path",{fillRule:"evenodd",d:"M5 10a.75.75 0 01.75-.75h6.638L10.23 7.29a.75.75 0 111.04-1.08l3.5 3.25a.75.75 0 010 1.08l-3.5 3.25a.75.75 0 11-1.04-1.08l2.158-1.96H5.75A.75.75 0 015 10z",clipRule:"evenodd"})})]})})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center",children:[e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",className:"w-6 h-6 stroke-gray-400",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M2.25 15.75l5.159-5.159a2.25 2.25 0 013.182 0l5.159 5.159m-1.5-1.5l1.409-1.409a2.25 2.25 0 013.182 0l2.909 2.909m-18 3.75h16.5a1.5 1.5 0 001.5-1.5V6a1.5 1.5 0 00-1.5-1.5H3.75A1.5 1.5 0 002.25 6v12a1.5 1.5 0 001.5 1.5zm10.5-11.25h.008v.008h-.008V8.25zm.375 0a.375.375 0 11-.75 0 .375.375 0 01.75 0z"})}),e.jsx("h2",{className:"ml-3 text-xl font-semibold text-gray-900 dark:text-white",children:e.jsx("a",{href:"https://tailwindcss.com/",children:"Tailwind"})})]}),e.jsx("p",{className:"mt-4 text-gray-500 dark:text-gray-400 text-sm leading-relaxed",children:"Laravel Jetstream is built with Tailwind, an amazing utility first CSS framework that doesn't get in your way. You'll be amazed how easily you can build and maintain fresh, modern designs with this wonderful framework at your fingertips."})]}),e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center",children:[e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",className:"w-6 h-6 stroke-gray-400",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M16.5 10.5V6.75a4.5 4.5 0 10-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 002.25-2.25v-6.75a2.25 2.25 0 00-2.25-2.25H6.75a2.25 2.25 0 00-2.25 2.25v6.75a2.25 2.25 0 002.25 2.25z"})}),e.jsx("h2",{className:"ml-3 text-xl font-semibold text-gray-900 dark:text-white",children:"Authentication"})]}),e.jsx("p",{className:"mt-4 text-gray-500 dark:text-gray-400 text-sm leading-relaxed",children:"Authentication and registration views are included with Laravel Jetstream, as well as support for user email verification and resetting forgotten passwords. So, you're free to get started with what matters most: building your application."})]})]})]})}function c(){return e.jsx(t,{title:"Dashboard",renderHeader:()=>e.jsx("h2",{className:"font-semibold text-xl text-gray-800 dark:text-gray-200 leading-tight",children:"Dashboard"}),children:e.jsx("div",{className:"py-12",children:e.jsx("div",{className:"max-w-7xl mx-auto sm:px-6 lg:px-8",children:e.jsx("div",{className:"bg-white dark:bg-gray-800 overflow-hidden shadow-xl sm:rounded-lg",children:e.jsx(r,{})})})})})}export{c as default}; diff --git a/public/build/assets/DeleteTeamForm-CGH7MRmP.js b/public/build/assets/DeleteTeamForm-CGH7MRmP.js new file mode 100644 index 0000000..50be2ba --- /dev/null +++ b/public/build/assets/DeleteTeamForm-CGH7MRmP.js @@ -0,0 +1 @@ +import{u as d,r as c,m as f,j as e}from"./app-43FwoUKv.js";import{A as u}from"./Modal-Dl0HSC4q.js";import{C as o}from"./ConfirmationModal-A-4mK9mU.js";import{D as s}from"./DangerButton--OsE_WB2.js";import{S as p}from"./SecondaryButton-CKdOzt0Y.js";import{c as x}from"./index-C3aXnQRR.js";import"./SectionTitle-CmR6E75W.js";import"./transition-aKza8ZE9.js";function k({team:r}){const n=d(),[i,t]=c.useState(!1),a=f({});function l(){t(!0)}function m(){a.delete(n("teams.destroy",[r]),{errorBag:"deleteTeam"})}return e.jsxs(u,{title:"Delete Team",description:"Permanently delete this team.",children:[e.jsx("div",{className:"max-w-xl text-sm text-gray-600 dark:text-gray-400",children:"Once a team is deleted, all of its resources and data will be permanently deleted. Before deleting this team, please download any data or information regarding this team that you wish to retain."}),e.jsx("div",{className:"mt-5",children:e.jsx(s,{onClick:l,children:"Delete Team"})}),e.jsxs(o,{isOpen:i,onClose:()=>t(!1),children:[e.jsx(o.Content,{title:"Delete Team",children:"Are you sure you want to delete this team? Once a team is deleted, all of its resources and data will be permanently deleted."}),e.jsxs(o.Footer,{children:[e.jsx(p,{onClick:()=>t(!1),children:"Cancel"}),e.jsx(s,{onClick:m,className:x("ml-2",{"opacity-25":a.processing}),disabled:a.processing,children:"Delete Team"})]})]})]})}export{k as default}; diff --git a/public/build/assets/DeleteUserForm-PfxYNbC_.js b/public/build/assets/DeleteUserForm-PfxYNbC_.js new file mode 100644 index 0000000..3c63c3c --- /dev/null +++ b/public/build/assets/DeleteUserForm-PfxYNbC_.js @@ -0,0 +1 @@ +import{u as p,r as l,m as f,j as e}from"./app-43FwoUKv.js";import{c as x}from"./index-C3aXnQRR.js";import{A as y}from"./Modal-Dl0HSC4q.js";import{D as c}from"./DangerButton--OsE_WB2.js";import{D as r}from"./DialogModal-CM2pkQ7Q.js";import{T as w,I as h}from"./TextInput-CdoY_jBz.js";import{S as j}from"./SecondaryButton-CKdOzt0Y.js";import"./SectionTitle-CmR6E75W.js";import"./transition-aKza8ZE9.js";function b(){const i=p(),[u,n]=l.useState(!1),t=f({password:""}),a=l.useRef(null);function d(){n(!0),setTimeout(()=>{var o;return(o=a.current)==null?void 0:o.focus()},250)}function m(){t.delete(i("current-user.destroy"),{preserveScroll:!0,onSuccess:()=>s(),onError:()=>{var o;return(o=a.current)==null?void 0:o.focus()},onFinish:()=>t.reset()})}function s(){n(!1),t.reset()}return e.jsxs(y,{title:"Delete Account",description:"Permanently delete your account.",children:[e.jsx("div",{className:"max-w-xl text-sm text-gray-600 dark:text-gray-400",children:"Once your account is deleted, all of its resources and data will be permanently deleted. Before deleting your account, please download any data or information that you wish to retain."}),e.jsx("div",{className:"mt-5",children:e.jsx(c,{onClick:d,children:"Delete Account"})}),e.jsxs(r,{isOpen:u,onClose:s,children:[e.jsxs(r.Content,{title:"Delete Account",children:["Are you sure you want to delete your account? Once your account is deleted, all of its resources and data will be permanently deleted. Please enter your password to confirm you would like to permanently delete your account.",e.jsxs("div",{className:"mt-4",children:[e.jsx(w,{type:"password",className:"mt-1 block w-3/4",placeholder:"Password",value:t.data.password,onChange:o=>t.setData("password",o.currentTarget.value)}),e.jsx(h,{message:t.errors.password,className:"mt-2"})]})]}),e.jsxs(r.Footer,{children:[e.jsx(j,{onClick:s,children:"Cancel"}),e.jsx(c,{onClick:m,className:x("ml-2",{"opacity-25":t.processing}),disabled:t.processing,children:"Delete Account"})]})]})]})}export{b as default}; diff --git a/public/build/assets/DialogModal-CM2pkQ7Q.js b/public/build/assets/DialogModal-CM2pkQ7Q.js new file mode 100644 index 0000000..0649a47 --- /dev/null +++ b/public/build/assets/DialogModal-CM2pkQ7Q.js @@ -0,0 +1 @@ +import{j as a}from"./app-43FwoUKv.js";import{M as s}from"./Modal-Dl0HSC4q.js";e.Content=function({title:t,children:o}){return a.jsxs("div",{className:"px-6 py-4",children:[a.jsx("div",{className:"text-lg font-medium text-gray-900 dark:text-gray-100",children:t}),a.jsx("div",{className:"mt-4 text-sm text-gray-600 dark:text-gray-400",children:o})]})};e.Footer=function({children:t}){return a.jsx("div",{className:"px-6 py-4 bg-gray-100 dark:bg-gray-800 text-right",children:t})};function e({children:r,...t}){return a.jsx(s,{...t,children:r})}export{e as D}; diff --git a/public/build/assets/ForgotPassword-D6Y0jXzy.js b/public/build/assets/ForgotPassword-D6Y0jXzy.js new file mode 100644 index 0000000..ecb390f --- /dev/null +++ b/public/build/assets/ForgotPassword-D6Y0jXzy.js @@ -0,0 +1 @@ +import{u as i,m,j as e,L as l}from"./app-43FwoUKv.js";import{c as n}from"./index-C3aXnQRR.js";import{A as d}from"./AuthenticationCard-CH5UMK9r.js";import{I as u}from"./InputLabel-Cl3yDvOx.js";import{P as c}from"./PrimaryButton-Gixff4KF.js";import{T as p,I as x}from"./TextInput-CdoY_jBz.js";import"./AuthenticationCardLogo-DxGGqaxw.js";function b({status:a}){const r=i(),s=m({email:""});function o(t){t.preventDefault(),s.post(r("password.email"))}return e.jsxs(d,{children:[e.jsx(l,{title:"Forgot Password"}),e.jsx("div",{className:"mb-4 text-sm text-gray-600 dark:text-gray-400",children:"Forgot your password? No problem. Just let us know your email address and we will email you a password reset link that will allow you to choose a new one."}),a&&e.jsx("div",{className:"mb-4 font-medium text-sm text-green-600 dark:text-green-400",children:a}),e.jsxs("form",{onSubmit:o,children:[e.jsxs("div",{children:[e.jsx(u,{htmlFor:"email",children:"Email"}),e.jsx(p,{id:"email",type:"email",className:"mt-1 block w-full",value:s.data.email,onChange:t=>s.setData("email",t.currentTarget.value),required:!0,autoFocus:!0}),e.jsx(x,{className:"mt-2",message:s.errors.email})]}),e.jsx("div",{className:"flex items-center justify-end mt-4",children:e.jsx(c,{className:n({"opacity-25":s.processing}),disabled:s.processing,children:"Email Password Reset Link"})})]})]})}export{b as default}; diff --git a/public/build/assets/FormSection-fM5DX8Wc.js b/public/build/assets/FormSection-fM5DX8Wc.js new file mode 100644 index 0000000..9993fce --- /dev/null +++ b/public/build/assets/FormSection-fM5DX8Wc.js @@ -0,0 +1 @@ +import{j as s}from"./app-43FwoUKv.js";import{c as o}from"./index-C3aXnQRR.js";import{S as l}from"./SectionTitle-CmR6E75W.js";function g({onSubmit:a,renderActions:m,title:r,description:i,children:e}){const d=!!m;return s.jsxs("div",{className:"md:grid md:grid-cols-3 md:gap-6",children:[s.jsx(l,{title:r,description:i}),s.jsx("div",{className:"mt-5 md:mt-0 md:col-span-2",children:s.jsxs("form",{onSubmit:t=>{t.preventDefault(),a()},children:[s.jsx("div",{className:o("px-4 py-5 bg-white dark:bg-gray-800 sm:p-6 shadow-sm",d?"sm:rounded-tl-md sm:rounded-tr-md":"sm:rounded-md"),children:s.jsx("div",{className:"grid grid-cols-6 gap-6",children:e})}),d&&s.jsx("div",{className:"flex items-center justify-end px-4 py-3 bg-gray-50 dark:bg-gray-800 text-right sm:px-6 shadow-sm sm:rounded-bl-md sm:rounded-br-md",children:m==null?void 0:m()})]})})]})}export{g as F}; diff --git a/public/build/assets/Index-DJE2XEsV.js b/public/build/assets/Index-DJE2XEsV.js new file mode 100644 index 0000000..c47d8e0 --- /dev/null +++ b/public/build/assets/Index-DJE2XEsV.js @@ -0,0 +1 @@ +import{j as t}from"./app-43FwoUKv.js";import m from"./APITokenManager-DJxa8V1W.js";import{A as p}from"./AppLayout-ZM0oZ-BJ.js";import"./index-C3aXnQRR.js";import"./ActionMessage-BR0zIw5R.js";import"./transition-aKza8ZE9.js";import"./Modal-Dl0HSC4q.js";import"./SectionTitle-CmR6E75W.js";import"./Checkbox-DRbLuUpm.js";import"./ConfirmationModal-A-4mK9mU.js";import"./DangerButton--OsE_WB2.js";import"./DialogModal-CM2pkQ7Q.js";import"./FormSection-fM5DX8Wc.js";import"./TextInput-CdoY_jBz.js";import"./InputLabel-Cl3yDvOx.js";import"./PrimaryButton-Gixff4KF.js";import"./SecondaryButton-CKdOzt0Y.js";import"./SectionBorder-DsOSyNBH.js";import"./useTypedPage-_EZ6P4Xz.js";function v({tokens:r,availablePermissions:o,defaultPermissions:i}){return t.jsx(p,{title:"API Tokens",renderHeader:()=>t.jsx("h2",{className:"font-semibold text-xl text-gray-800 dark:text-gray-200 leading-tight",children:"API Tokens"}),children:t.jsx("div",{children:t.jsx("div",{className:"max-w-7xl mx-auto py-10 sm:px-6 lg:px-8",children:t.jsx(m,{tokens:r,availablePermissions:o,defaultPermissions:i})})})})}export{v as default}; diff --git a/public/build/assets/InputLabel-Cl3yDvOx.js b/public/build/assets/InputLabel-Cl3yDvOx.js new file mode 100644 index 0000000..e341b38 --- /dev/null +++ b/public/build/assets/InputLabel-Cl3yDvOx.js @@ -0,0 +1 @@ +import{j as a}from"./app-43FwoUKv.js";function m({value:t,htmlFor:e,children:r}){return a.jsx("label",{className:"block font-medium text-sm text-gray-700 dark:text-gray-300",htmlFor:e,children:t||r})}export{m as I}; diff --git a/public/build/assets/Login-DXsbRqWh.js b/public/build/assets/Login-DXsbRqWh.js new file mode 100644 index 0000000..1d0430b --- /dev/null +++ b/public/build/assets/Login-DXsbRqWh.js @@ -0,0 +1 @@ +import{u as c,m as u,j as e,L as x,$ as o}from"./app-43FwoUKv.js";import{c as f}from"./index-C3aXnQRR.js";import{A as g}from"./AuthenticationCard-CH5UMK9r.js";import{C as p}from"./Checkbox-DRbLuUpm.js";import{I as m}from"./InputLabel-Cl3yDvOx.js";import{P as h}from"./PrimaryButton-Gixff4KF.js";import{T as i,I as n}from"./TextInput-CdoY_jBz.js";import"./AuthenticationCardLogo-DxGGqaxw.js";function L({canResetPassword:d,status:t}){const a=c(),s=u({email:"",password:"",remember:""});function l(r){r.preventDefault(),s.post(a("login"),{onFinish:()=>s.reset("password")})}return e.jsxs(g,{children:[e.jsx(x,{title:"Login"}),t&&e.jsx("div",{className:"mb-4 font-medium text-sm text-green-600 dark:text-green-400",children:t}),e.jsxs("form",{onSubmit:l,children:[e.jsxs("div",{children:[e.jsx(m,{htmlFor:"email",children:"Email"}),e.jsx(i,{id:"email",type:"email",className:"mt-1 block w-full",value:s.data.email,onChange:r=>s.setData("email",r.currentTarget.value),required:!0,autoFocus:!0}),e.jsx(n,{className:"mt-2",message:s.errors.email})]}),e.jsxs("div",{className:"mt-4",children:[e.jsx(m,{htmlFor:"password",children:"Password"}),e.jsx(i,{id:"password",type:"password",className:"mt-1 block w-full",value:s.data.password,onChange:r=>s.setData("password",r.currentTarget.value),required:!0,autoComplete:"current-password"}),e.jsx(n,{className:"mt-2",message:s.errors.password})]}),e.jsx("div",{className:"mt-4",children:e.jsxs("label",{className:"flex items-center",children:[e.jsx(p,{name:"remember",checked:s.data.remember==="on",onChange:r=>s.setData("remember",r.currentTarget.checked?"on":"")}),e.jsx("span",{className:"ml-2 text-sm text-gray-600 dark:text-gray-400",children:"Remember me"})]})}),e.jsxs("div",{className:"flex flex-col space-y-2 md:flex-row md:items-center md:justify-between md:space-y-0 mt-4",children:[d&&e.jsx("div",{children:e.jsx(o,{href:a("password.request"),className:"underline text-sm text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 rounded-md focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 dark:focus:ring-offset-gray-800",children:"Forgot your password?"})}),e.jsxs("div",{className:"flex items-center justify-end",children:[e.jsx(o,{href:a("register"),className:"underline text-sm text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 rounded-md focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 dark:focus:ring-offset-gray-800",children:"Need an account?"}),e.jsx(h,{className:f("ml-4",{"opacity-25":s.processing}),disabled:s.processing,children:"Log in"})]})]})]})]})}export{L as default}; diff --git a/public/build/assets/LogoutOtherBrowserSessionsForm-BMipD7tw.js b/public/build/assets/LogoutOtherBrowserSessionsForm-BMipD7tw.js new file mode 100644 index 0000000..a5dfb9a --- /dev/null +++ b/public/build/assets/LogoutOtherBrowserSessionsForm-BMipD7tw.js @@ -0,0 +1 @@ +import{r as l,u as p,m as f,j as s}from"./app-43FwoUKv.js";import{c as g}from"./index-C3aXnQRR.js";import{A as w}from"./ActionMessage-BR0zIw5R.js";import{A as j}from"./Modal-Dl0HSC4q.js";import{D as a}from"./DialogModal-CM2pkQ7Q.js";import{T as v,I as y}from"./TextInput-CdoY_jBz.js";import{P as c}from"./PrimaryButton-Gixff4KF.js";import{S as k}from"./SecondaryButton-CKdOzt0Y.js";import"./transition-aKza8ZE9.js";import"./SectionTitle-CmR6E75W.js";function _({sessions:n}){const[d,i]=l.useState(!1),u=p(),r=l.useRef(null),o=f({password:""});function m(){i(!0),setTimeout(()=>{var e;return(e=r.current)==null?void 0:e.focus()},250)}function h(){o.delete(u("other-browser-sessions.destroy"),{preserveScroll:!0,onSuccess:()=>t(),onError:()=>{var e;return(e=r.current)==null?void 0:e.focus()},onFinish:()=>o.reset()})}function t(){i(!1),o.reset()}return s.jsxs(j,{title:"Browser Sessions",description:"Manage and log out your active sessions on other browsers and devices.",children:[s.jsx("div",{className:"max-w-xl text-sm text-gray-600 dark:text-gray-400",children:"If necessary, you may log out of all of your other browser sessions across all of your devices. Some of your recent sessions are listed below; however, this list may not be exhaustive. If you feel your account has been compromised, you should also update your password."}),n.length>0?s.jsx("div",{className:"mt-5 space-y-6",children:n.map((e,x)=>s.jsxs("div",{className:"flex items-center",children:[s.jsx("div",{children:e.agent.is_desktop?s.jsx("svg",{fill:"none",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",viewBox:"0 0 24 24",stroke:"currentColor",className:"w-8 h-8 text-gray-500",children:s.jsx("path",{d:"M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})}):s.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",strokeWidth:"2",stroke:"currentColor",fill:"none",strokeLinecap:"round",strokeLinejoin:"round",className:"w-8 h-8 text-gray-500",children:[s.jsx("path",{d:"M0 0h24v24H0z",stroke:"none"}),s.jsx("rect",{x:"7",y:"4",width:"10",height:"16",rx:"1"}),s.jsx("path",{d:"M11 5h2M12 17v.01"})]})}),s.jsxs("div",{className:"ml-3",children:[s.jsxs("div",{className:"text-sm text-gray-600 dark:text-gray-400",children:[e.agent.platform," - ",e.agent.browser]}),s.jsx("div",{children:s.jsxs("div",{className:"text-xs text-gray-500",children:[e.ip_address,",",e.is_current_device?s.jsx("span",{className:"text-green-500 font-semibold",children:"This device"}):s.jsxs("span",{children:["Last active ",e.last_active]})]})})]})]},x))}):null,s.jsxs("div",{className:"flex items-center mt-5",children:[s.jsx(c,{onClick:m,children:"Log Out Other Browser Sessions"}),s.jsx(w,{on:o.recentlySuccessful,className:"ml-3",children:"Done."})]}),s.jsxs(a,{isOpen:d,onClose:t,children:[s.jsxs(a.Content,{title:"Log Out Other Browser Sessions",children:["Please enter your password to confirm you would like to log out of your other browser sessions across all of your devices.",s.jsxs("div",{className:"mt-4",children:[s.jsx(v,{type:"password",className:"mt-1 block w-3/4",placeholder:"Password",ref:r,value:o.data.password,onChange:e=>o.setData("password",e.currentTarget.value)}),s.jsx(y,{message:o.errors.password,className:"mt-2"})]})]}),s.jsxs(a.Footer,{children:[s.jsx(k,{onClick:t,children:"Cancel"}),s.jsx(c,{onClick:h,className:g("ml-2",{"opacity-25":o.processing}),disabled:o.processing,children:"Log Out Other Browser Sessions"})]})]})]})}export{_ as default}; diff --git a/public/build/assets/Modal-Dl0HSC4q.js b/public/build/assets/Modal-Dl0HSC4q.js new file mode 100644 index 0000000..93a87e8 --- /dev/null +++ b/public/build/assets/Modal-Dl0HSC4q.js @@ -0,0 +1 @@ +import{g as Ze,b as Je,r as s,R as f,j as y}from"./app-43FwoUKv.js";import{S as Qe}from"./SectionTitle-CmR6E75W.js";import{c as et}from"./index-C3aXnQRR.js";import{s as oe,K as x,L as $,y as M,n as R,o as w,a as X,b as B,u as Y,t as le,T as tt,l as ae,p as nt,f as ye,c as xe,z as $e,F as G,i as V,d as rt,O as pe}from"./transition-aKza8ZE9.js";var Fe=Je();const ot=Ze(Fe);function z(e){return oe.isServer?null:e instanceof Node?e.ownerDocument:e!=null&&e.hasOwnProperty("current")&&e.current instanceof Node?e.current.ownerDocument:document}let lt=s.createContext(void 0);function at(){return s.useContext(lt)}let ut="span";var q=(e=>(e[e.None=1]="None",e[e.Focusable=2]="Focusable",e[e.Hidden=4]="Hidden",e))(q||{});function it(e,t){var n;let{features:r=1,...o}=e,l={ref:t,"aria-hidden":(r&2)===2?!0:(n=o["aria-hidden"])!=null?n:void 0,hidden:(r&4)===4?!0:void 0,style:{position:"fixed",top:1,left:1,width:1,height:0,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0",...(r&4)===4&&(r&2)!==2&&{display:"none"}}};return $()({ourProps:l,theirProps:o,slot:{},defaultTag:ut,name:"Hidden"})}let ee=x(it),ue=s.createContext(null);ue.displayName="DescriptionContext";function Te(){let e=s.useContext(ue);if(e===null){let t=new Error("You used a component, but it is not inside a relevant parent.");throw Error.captureStackTrace&&Error.captureStackTrace(t,Te),t}return e}function st(){let[e,t]=s.useState([]);return[e.length>0?e.join(" "):void 0,s.useMemo(()=>function(n){let r=w(l=>(t(u=>[...u,l]),()=>t(u=>{let i=u.slice(),a=i.indexOf(l);return a!==-1&&i.splice(a,1),i}))),o=s.useMemo(()=>({register:r,slot:n.slot,name:n.name,props:n.props,value:n.value}),[r,n.slot,n.name,n.props,n.value]);return f.createElement(ue.Provider,{value:o},n.children)},[t])]}let ct="p";function dt(e,t){let n=s.useId(),r=at(),{id:o=`headlessui-description-${n}`,...l}=e,u=Te(),i=M(t);R(()=>u.register(o),[o,u.register]);let a=r||!1,d=s.useMemo(()=>({...u.slot,disabled:a}),[u.slot,a]),c={ref:i,...u.props,id:o};return $()({ourProps:c,theirProps:l,slot:d,defaultTag:ct,name:u.name||"Description"})}let ft=x(dt),mt=Object.assign(ft,{});var Pe=(e=>(e.Space=" ",e.Enter="Enter",e.Escape="Escape",e.Backspace="Backspace",e.Delete="Delete",e.ArrowLeft="ArrowLeft",e.ArrowUp="ArrowUp",e.ArrowRight="ArrowRight",e.ArrowDown="ArrowDown",e.Home="Home",e.End="End",e.PageUp="PageUp",e.PageDown="PageDown",e.Tab="Tab",e))(Pe||{});let pt=s.createContext(()=>{});function vt({value:e,children:t}){return f.createElement(pt.Provider,{value:e},t)}let ht=class extends Map{constructor(t){super(),this.factory=t}get(t){let n=super.get(t);return n===void 0&&(n=this.factory(t),this.set(t,n)),n}};function Le(e,t){let n=e(),r=new Set;return{getSnapshot(){return n},subscribe(o){return r.add(o),()=>r.delete(o)},dispatch(o,...l){let u=t[o].call(n,...l);u&&(n=u,r.forEach(i=>i()))}}}function Se(e){return s.useSyncExternalStore(e.subscribe,e.getSnapshot,e.getSnapshot)}let gt=new ht(()=>Le(()=>[],{ADD(e){return this.includes(e)?this:[...this,e]},REMOVE(e){let t=this.indexOf(e);if(t===-1)return this;let n=this.slice();return n.splice(t,1),n}}));function k(e,t){let n=gt.get(t),r=s.useId(),o=Se(n);if(R(()=>{if(e)return n.dispatch("ADD",r),()=>n.dispatch("REMOVE",r)},[n,e]),!e)return!1;let l=o.indexOf(r),u=o.length;return l===-1&&(l=u,u+=1),l===u-1}let te=new Map,_=new Map;function ve(e){var t;let n=(t=_.get(e))!=null?t:0;return _.set(e,n+1),n!==0?()=>he(e):(te.set(e,{"aria-hidden":e.getAttribute("aria-hidden"),inert:e.inert}),e.setAttribute("aria-hidden","true"),e.inert=!0,()=>he(e))}function he(e){var t;let n=(t=_.get(e))!=null?t:1;if(n===1?_.delete(e):_.set(e,n-1),n!==1)return;let r=te.get(e);r&&(r["aria-hidden"]===null?e.removeAttribute("aria-hidden"):e.setAttribute("aria-hidden",r["aria-hidden"]),e.inert=r.inert,te.delete(e))}function Et(e,{allowed:t,disallowed:n}={}){let r=k(e,"inert-others");R(()=>{var o,l;if(!r)return;let u=X();for(let a of(o=n==null?void 0:n())!=null?o:[])a&&u.add(ve(a));let i=(l=t==null?void 0:t())!=null?l:[];for(let a of i){if(!a)continue;let d=z(a);if(!d)continue;let c=a.parentElement;for(;c&&c!==d.body;){for(let m of c.children)i.some(v=>m.contains(v))||u.add(ve(m));c=c.parentElement}}return u.dispose},[r,t,n])}function wt(e,t,n){let r=B(o=>{let l=o.getBoundingClientRect();l.x===0&&l.y===0&&l.width===0&&l.height===0&&n()});s.useEffect(()=>{if(!e)return;let o=t===null?null:t instanceof HTMLElement?t:t.current;if(!o)return;let l=X();if(typeof ResizeObserver<"u"){let u=new ResizeObserver(()=>r.current(o));u.observe(o),l.add(()=>u.disconnect())}if(typeof IntersectionObserver<"u"){let u=new IntersectionObserver(()=>r.current(o));u.observe(o),l.add(()=>u.disconnect())}return()=>l.dispose()},[t,r,e])}let K=["[contentEditable=true]","[tabindex]","a[href]","area[href]","button:not([disabled])","iframe","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].map(e=>`${e}:not([tabindex='-1'])`).join(","),bt=["[data-autofocus]"].map(e=>`${e}:not([tabindex='-1'])`).join(",");var T=(e=>(e[e.First=1]="First",e[e.Previous=2]="Previous",e[e.Next=4]="Next",e[e.Last=8]="Last",e[e.WrapAround=16]="WrapAround",e[e.NoScroll=32]="NoScroll",e[e.AutoFocus=64]="AutoFocus",e))(T||{}),ne=(e=>(e[e.Error=0]="Error",e[e.Overflow=1]="Overflow",e[e.Success=2]="Success",e[e.Underflow=3]="Underflow",e))(ne||{}),yt=(e=>(e[e.Previous=-1]="Previous",e[e.Next=1]="Next",e))(yt||{});function xt(e=document.body){return e==null?[]:Array.from(e.querySelectorAll(K)).sort((t,n)=>Math.sign((t.tabIndex||Number.MAX_SAFE_INTEGER)-(n.tabIndex||Number.MAX_SAFE_INTEGER)))}function $t(e=document.body){return e==null?[]:Array.from(e.querySelectorAll(bt)).sort((t,n)=>Math.sign((t.tabIndex||Number.MAX_SAFE_INTEGER)-(n.tabIndex||Number.MAX_SAFE_INTEGER)))}var Me=(e=>(e[e.Strict=0]="Strict",e[e.Loose=1]="Loose",e))(Me||{});function Ft(e,t=0){var n;return e===((n=z(e))==null?void 0:n.body)?!1:Y(t,{0(){return e.matches(K)},1(){let r=e;for(;r!==null;){if(r.matches(K))return!0;r=r.parentElement}return!1}})}var Tt=(e=>(e[e.Keyboard=0]="Keyboard",e[e.Mouse=1]="Mouse",e))(Tt||{});typeof window<"u"&&typeof document<"u"&&(document.addEventListener("keydown",e=>{e.metaKey||e.altKey||e.ctrlKey||(document.documentElement.dataset.headlessuiFocusVisible="")},!0),document.addEventListener("click",e=>{e.detail===1?delete document.documentElement.dataset.headlessuiFocusVisible:e.detail===0&&(document.documentElement.dataset.headlessuiFocusVisible="")},!0));function P(e){e==null||e.focus({preventScroll:!0})}let Pt=["textarea","input"].join(",");function Lt(e){var t,n;return(n=(t=e==null?void 0:e.matches)==null?void 0:t.call(e,Pt))!=null?n:!1}function St(e,t=n=>n){return e.slice().sort((n,r)=>{let o=t(n),l=t(r);if(o===null||l===null)return 0;let u=o.compareDocumentPosition(l);return u&Node.DOCUMENT_POSITION_FOLLOWING?-1:u&Node.DOCUMENT_POSITION_PRECEDING?1:0})}function W(e,t,{sorted:n=!0,relativeTo:r=null,skipElements:o=[]}={}){let l=Array.isArray(e)?e.length>0?e[0].ownerDocument:document:e.ownerDocument,u=Array.isArray(e)?n?St(e):e:t&64?$t(e):xt(e);o.length>0&&u.length>1&&(u=u.filter(p=>!o.some(h=>h!=null&&"current"in h?(h==null?void 0:h.current)===p:h===p))),r=r??l.activeElement;let i=(()=>{if(t&5)return 1;if(t&10)return-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),a=(()=>{if(t&1)return 0;if(t&2)return Math.max(0,u.indexOf(r))-1;if(t&4)return Math.max(0,u.indexOf(r))+1;if(t&8)return u.length-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),d=t&32?{preventScroll:!0}:{},c=0,m=u.length,v;do{if(c>=m||c+m<=0)return 0;let p=a+c;if(t&16)p=(p+m)%m;else{if(p<0)return 3;if(p>=m)return 1}v=u[p],v==null||v.focus(d),c+=i}while(v!==l.activeElement);return t&6&&Lt(v)&&v.select(),2}function De(){return/iPhone/gi.test(window.navigator.platform)||/Mac/gi.test(window.navigator.platform)&&window.navigator.maxTouchPoints>0}function Mt(){return/Android/gi.test(window.navigator.userAgent)}function Dt(){return De()||Mt()}function H(e,t,n,r){let o=B(n);s.useEffect(()=>{if(!e)return;function l(u){o.current(u)}return document.addEventListener(t,l,r),()=>document.removeEventListener(t,l,r)},[e,t,r])}function Ce(e,t,n,r){let o=B(n);s.useEffect(()=>{if(!e)return;function l(u){o.current(u)}return window.addEventListener(t,l,r),()=>window.removeEventListener(t,l,r)},[e,t,r])}const ge=30;function Ct(e,t,n){let r=k(e,"outside-click"),o=B(n),l=s.useCallback(function(a,d){if(a.defaultPrevented)return;let c=d(a);if(c===null||!c.getRootNode().contains(c)||!c.isConnected)return;let m=function v(p){return typeof p=="function"?v(p()):Array.isArray(p)||p instanceof Set?p:[p]}(t);for(let v of m)if(v!==null&&(v.contains(c)||a.composed&&a.composedPath().includes(v)))return;return!Ft(c,Me.Loose)&&c.tabIndex!==-1&&a.preventDefault(),o.current(a,c)},[o,t]),u=s.useRef(null);H(r,"pointerdown",a=>{var d,c;u.current=((c=(d=a.composedPath)==null?void 0:d.call(a))==null?void 0:c[0])||a.target},!0),H(r,"mousedown",a=>{var d,c;u.current=((c=(d=a.composedPath)==null?void 0:d.call(a))==null?void 0:c[0])||a.target},!0),H(r,"click",a=>{Dt()||u.current&&(l(a,()=>u.current),u.current=null)},!0);let i=s.useRef({x:0,y:0});H(r,"touchstart",a=>{i.current.x=a.touches[0].clientX,i.current.y=a.touches[0].clientY},!0),H(r,"touchend",a=>{let d={x:a.changedTouches[0].clientX,y:a.changedTouches[0].clientY};if(!(Math.abs(d.x-i.current.x)>=ge||Math.abs(d.y-i.current.y)>=ge))return l(a,()=>a.target instanceof HTMLElement?a.target:null)},!0),Ce(r,"blur",a=>l(a,()=>window.document.activeElement instanceof HTMLIFrameElement?window.document.activeElement:null),!0)}function U(...e){return s.useMemo(()=>z(...e),[...e])}function Ae(e,t,n,r){let o=B(n);s.useEffect(()=>{e=e??window;function l(u){o.current(u)}return e.addEventListener(t,l,r),()=>e.removeEventListener(t,l,r)},[e,t,r])}function At(){let e;return{before({doc:t}){var n;let r=t.documentElement,o=(n=t.defaultView)!=null?n:window;e=Math.max(0,o.innerWidth-r.clientWidth)},after({doc:t,d:n}){let r=t.documentElement,o=Math.max(0,r.clientWidth-r.offsetWidth),l=Math.max(0,e-o);n.style(r,"paddingRight",`${l}px`)}}}function Nt(){return De()?{before({doc:e,d:t,meta:n}){function r(o){return n.containers.flatMap(l=>l()).some(l=>l.contains(o))}t.microTask(()=>{var o;if(window.getComputedStyle(e.documentElement).scrollBehavior!=="auto"){let i=X();i.style(e.documentElement,"scrollBehavior","auto"),t.add(()=>t.microTask(()=>i.dispose()))}let l=(o=window.scrollY)!=null?o:window.pageYOffset,u=null;t.addEventListener(e,"click",i=>{if(i.target instanceof HTMLElement)try{let a=i.target.closest("a");if(!a)return;let{hash:d}=new URL(a.href),c=e.querySelector(d);c&&!r(c)&&(u=c)}catch{}},!0),t.addEventListener(e,"touchstart",i=>{if(i.target instanceof HTMLElement)if(r(i.target)){let a=i.target;for(;a.parentElement&&r(a.parentElement);)a=a.parentElement;t.style(a,"overscrollBehavior","contain")}else t.style(i.target,"touchAction","none")}),t.addEventListener(e,"touchmove",i=>{if(i.target instanceof HTMLElement){if(i.target.tagName==="INPUT")return;if(r(i.target)){let a=i.target;for(;a.parentElement&&a.dataset.headlessuiPortal!==""&&!(a.scrollHeight>a.clientHeight||a.scrollWidth>a.clientWidth);)a=a.parentElement;a.dataset.headlessuiPortal===""&&i.preventDefault()}else i.preventDefault()}},{passive:!1}),t.add(()=>{var i;let a=(i=window.scrollY)!=null?i:window.pageYOffset;l!==a&&window.scrollTo(0,l),u&&u.isConnected&&(u.scrollIntoView({block:"nearest"}),u=null)})})}}:{}}function Rt(){return{before({doc:e,d:t}){t.style(e.documentElement,"overflow","hidden")}}}function Ot(e){let t={};for(let n of e)Object.assign(t,n(t));return t}let N=Le(()=>new Map,{PUSH(e,t){var n;let r=(n=this.get(e))!=null?n:{doc:e,count:0,d:X(),meta:new Set};return r.count++,r.meta.add(t),this.set(e,r),this},POP(e,t){let n=this.get(e);return n&&(n.count--,n.meta.delete(t)),this},SCROLL_PREVENT({doc:e,d:t,meta:n}){let r={doc:e,d:t,meta:Ot(n)},o=[Nt(),At(),Rt()];o.forEach(({before:l})=>l==null?void 0:l(r)),o.forEach(({after:l})=>l==null?void 0:l(r))},SCROLL_ALLOW({d:e}){e.dispose()},TEARDOWN({doc:e}){this.delete(e)}});N.subscribe(()=>{let e=N.getSnapshot(),t=new Map;for(let[n]of e)t.set(n,n.documentElement.style.overflow);for(let n of e.values()){let r=t.get(n.doc)==="hidden",o=n.count!==0;(o&&!r||!o&&r)&&N.dispatch(n.count>0?"SCROLL_PREVENT":"SCROLL_ALLOW",n),n.count===0&&N.dispatch("TEARDOWN",n)}});function kt(e,t,n=()=>({containers:[]})){let r=Se(N),o=t?r.get(t):void 0,l=o?o.count>0:!1;return R(()=>{if(!(!t||!e))return N.dispatch("PUSH",t,n),()=>N.dispatch("POP",t,n)},[e,t]),l}function It(e,t,n=()=>[document.body]){let r=k(e,"scroll-lock");kt(r,t,o=>{var l;return{containers:[...(l=o.containers)!=null?l:[],n]}})}function ie(e,t){let n=s.useRef([]),r=w(e);s.useEffect(()=>{let o=[...n.current];for(let[l,u]of t.entries())if(n.current[l]!==u){let i=r(t,o);return n.current=t,i}},[r,...t])}function Ht(e){function t(){document.readyState!=="loading"&&(e(),document.removeEventListener("DOMContentLoaded",t))}typeof window<"u"&&typeof document<"u"&&(document.addEventListener("DOMContentLoaded",t),t())}let S=[];Ht(()=>{function e(t){if(!(t.target instanceof HTMLElement)||t.target===document.body||S[0]===t.target)return;let n=t.target;n=n.closest(K),S.unshift(n??t.target),S=S.filter(r=>r!=null&&r.isConnected),S.splice(10)}window.addEventListener("click",e,{capture:!0}),window.addEventListener("mousedown",e,{capture:!0}),window.addEventListener("focus",e,{capture:!0}),document.body.addEventListener("click",e,{capture:!0}),document.body.addEventListener("mousedown",e,{capture:!0}),document.body.addEventListener("focus",e,{capture:!0})});function Ne(e){let t=w(e),n=s.useRef(!1);s.useEffect(()=>(n.current=!1,()=>{n.current=!0,le(()=>{n.current&&t()})}),[t])}let Re=s.createContext(!1);function jt(){return s.useContext(Re)}function Ee(e){return f.createElement(Re.Provider,{value:e.force},e.children)}function _t(e){let t=jt(),n=s.useContext(ke),r=U(e),[o,l]=s.useState(()=>{var u;if(!t&&n!==null)return(u=n.current)!=null?u:null;if(oe.isServer)return null;let i=r==null?void 0:r.getElementById("headlessui-portal-root");if(i)return i;if(r===null)return null;let a=r.createElement("div");return a.setAttribute("id","headlessui-portal-root"),r.body.appendChild(a)});return s.useEffect(()=>{o!==null&&(r!=null&&r.body.contains(o)||r==null||r.body.appendChild(o))},[o,r]),s.useEffect(()=>{t||n!==null&&l(n.current)},[n,l,t]),o}let Oe=s.Fragment,Wt=x(function(e,t){let n=e,r=s.useRef(null),o=M(tt(m=>{r.current=m}),t),l=U(r),u=_t(r),[i]=s.useState(()=>{var m;return oe.isServer?null:(m=l==null?void 0:l.createElement("div"))!=null?m:null}),a=s.useContext(re),d=ae();R(()=>{!u||!i||u.contains(i)||(i.setAttribute("data-headlessui-portal",""),u.appendChild(i))},[u,i]),R(()=>{if(i&&a)return a.register(i)},[a,i]),Ne(()=>{var m;!u||!i||(i instanceof Node&&u.contains(i)&&u.removeChild(i),u.childNodes.length<=0&&((m=u.parentElement)==null||m.removeChild(u)))});let c=$();return d?!u||!i?null:Fe.createPortal(c({ourProps:{ref:o},theirProps:n,slot:{},defaultTag:Oe,name:"Portal"}),i):null});function Bt(e,t){let n=M(t),{enabled:r=!0,...o}=e,l=$();return r?f.createElement(Wt,{...o,ref:n}):l({ourProps:{ref:n},theirProps:o,slot:{},defaultTag:Oe,name:"Portal"})}let Ut=s.Fragment,ke=s.createContext(null);function Vt(e,t){let{target:n,...r}=e,o={ref:M(t)},l=$();return f.createElement(ke.Provider,{value:n},l({ourProps:o,theirProps:r,defaultTag:Ut,name:"Popover.Group"}))}let re=s.createContext(null);function Yt(){let e=s.useContext(re),t=s.useRef([]),n=w(l=>(t.current.push(l),e&&e.register(l),()=>r(l))),r=w(l=>{let u=t.current.indexOf(l);u!==-1&&t.current.splice(u,1),e&&e.unregister(l)}),o=s.useMemo(()=>({register:n,unregister:r,portals:t}),[n,r,t]);return[t,s.useMemo(()=>function({children:l}){return f.createElement(re.Provider,{value:o},l)},[o])]}let Gt=x(Bt),Ie=x(Vt),qt=Object.assign(Gt,{Group:Ie});function Kt(e,t=typeof document<"u"?document.defaultView:null,n){let r=k(e,"escape");Ae(t,"keydown",o=>{r&&(o.defaultPrevented||o.key===Pe.Escape&&n(o))})}function Xt(){var e;let[t]=s.useState(()=>typeof window<"u"&&typeof window.matchMedia=="function"?window.matchMedia("(pointer: coarse)"):null),[n,r]=s.useState((e=t==null?void 0:t.matches)!=null?e:!1);return R(()=>{if(!t)return;function o(l){r(l.matches)}return t.addEventListener("change",o),()=>t.removeEventListener("change",o)},[t]),n}function zt({defaultContainers:e=[],portals:t,mainTreeNode:n}={}){let r=U(n),o=w(()=>{var l,u;let i=[];for(let a of e)a!==null&&(a instanceof HTMLElement?i.push(a):"current"in a&&a.current instanceof HTMLElement&&i.push(a.current));if(t!=null&&t.current)for(let a of t.current)i.push(a);for(let a of(l=r==null?void 0:r.querySelectorAll("html > *, body > *"))!=null?l:[])a!==document.body&&a!==document.head&&a instanceof HTMLElement&&a.id!=="headlessui-portal-root"&&(n&&(a.contains(n)||a.contains((u=n==null?void 0:n.getRootNode())==null?void 0:u.host))||i.some(d=>a.contains(d))||i.push(a));return i});return{resolveContainers:o,contains:w(l=>o().some(u=>u.contains(l)))}}let He=s.createContext(null);function we({children:e,node:t}){let[n,r]=s.useState(null),o=je(t??n);return f.createElement(He.Provider,{value:o},e,o===null&&f.createElement(ee,{features:q.Hidden,ref:l=>{var u,i;if(l){for(let a of(i=(u=z(l))==null?void 0:u.querySelectorAll("html > *, body > *"))!=null?i:[])if(a!==document.body&&a!==document.head&&a instanceof HTMLElement&&a!=null&&a.contains(l)){r(a);break}}}}))}function je(e=null){var t;return(t=s.useContext(He))!=null?t:e}var j=(e=>(e[e.Forwards=0]="Forwards",e[e.Backwards=1]="Backwards",e))(j||{});function Zt(){let e=s.useRef(0);return Ce(!0,"keydown",t=>{t.key==="Tab"&&(e.current=t.shiftKey?1:0)},!0),e}function _e(e){if(!e)return new Set;if(typeof e=="function")return new Set(e());let t=new Set;for(let n of e.current)n.current instanceof HTMLElement&&t.add(n.current);return t}let Jt="div";var A=(e=>(e[e.None=0]="None",e[e.InitialFocus=1]="InitialFocus",e[e.TabLock=2]="TabLock",e[e.FocusLock=4]="FocusLock",e[e.RestoreFocus=8]="RestoreFocus",e[e.AutoFocus=16]="AutoFocus",e))(A||{});function Qt(e,t){let n=s.useRef(null),r=M(n,t),{initialFocus:o,initialFocusFallback:l,containers:u,features:i=15,...a}=e;ae()||(i=0);let d=U(n);rn(i,{ownerDocument:d});let c=on(i,{ownerDocument:d,container:n,initialFocus:o,initialFocusFallback:l});ln(i,{ownerDocument:d,container:n,containers:u,previousActiveElement:c});let m=Zt(),v=w(E=>{let L=n.current;L&&(b=>b())(()=>{Y(m.current,{[j.Forwards]:()=>{W(L,T.First,{skipElements:[E.relatedTarget,l]})},[j.Backwards]:()=>{W(L,T.Last,{skipElements:[E.relatedTarget,l]})}})})}),p=k(!!(i&2),"focus-trap#tab-lock"),h=nt(),D=s.useRef(!1),C={ref:r,onKeyDown(E){E.key=="Tab"&&(D.current=!0,h.requestAnimationFrame(()=>{D.current=!1}))},onBlur(E){if(!(i&4))return;let L=_e(u);n.current instanceof HTMLElement&&L.add(n.current);let b=E.relatedTarget;b instanceof HTMLElement&&b.dataset.headlessuiFocusGuard!=="true"&&(We(L,b)||(D.current?W(n.current,Y(m.current,{[j.Forwards]:()=>T.Next,[j.Backwards]:()=>T.Previous})|T.WrapAround,{relativeTo:E.target}):E.target instanceof HTMLElement&&P(E.target)))}},F=$();return f.createElement(f.Fragment,null,p&&f.createElement(ee,{as:"button",type:"button","data-headlessui-focus-guard":!0,onFocus:v,features:q.Focusable}),F({ourProps:C,theirProps:a,defaultTag:Jt,name:"FocusTrap"}),p&&f.createElement(ee,{as:"button",type:"button","data-headlessui-focus-guard":!0,onFocus:v,features:q.Focusable}))}let en=x(Qt),tn=Object.assign(en,{features:A});function nn(e=!0){let t=s.useRef(S.slice());return ie(([n],[r])=>{r===!0&&n===!1&&le(()=>{t.current.splice(0)}),r===!1&&n===!0&&(t.current=S.slice())},[e,S,t]),w(()=>{var n;return(n=t.current.find(r=>r!=null&&r.isConnected))!=null?n:null})}function rn(e,{ownerDocument:t}){let n=!!(e&8),r=nn(n);ie(()=>{n||(t==null?void 0:t.activeElement)===(t==null?void 0:t.body)&&P(r())},[n]),Ne(()=>{n&&P(r())})}function on(e,{ownerDocument:t,container:n,initialFocus:r,initialFocusFallback:o}){let l=s.useRef(null),u=k(!!(e&1),"focus-trap#initial-focus"),i=ye();return ie(()=>{if(e===0)return;if(!u){o!=null&&o.current&&P(o.current);return}let a=n.current;a&&le(()=>{if(!i.current)return;let d=t==null?void 0:t.activeElement;if(r!=null&&r.current){if((r==null?void 0:r.current)===d){l.current=d;return}}else if(a.contains(d)){l.current=d;return}if(r!=null&&r.current)P(r.current);else{if(e&16){if(W(a,T.First|T.AutoFocus)!==ne.Error)return}else if(W(a,T.First)!==ne.Error)return;if(o!=null&&o.current&&(P(o.current),(t==null?void 0:t.activeElement)===o.current))return;console.warn("There are no focusable elements inside the ")}l.current=t==null?void 0:t.activeElement})},[o,u,e]),l}function ln(e,{ownerDocument:t,container:n,containers:r,previousActiveElement:o}){let l=ye(),u=!!(e&4);Ae(t==null?void 0:t.defaultView,"focus",i=>{if(!u||!l.current)return;let a=_e(r);n.current instanceof HTMLElement&&a.add(n.current);let d=o.current;if(!d)return;let c=i.target;c&&c instanceof HTMLElement?We(a,c)?(o.current=c,P(c)):(i.preventDefault(),i.stopPropagation(),P(d)):P(o.current)},!0)}function We(e,t){for(let n of e)if(n.contains(t))return!0;return!1}var an=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(an||{}),un=(e=>(e[e.SetTitleId=0]="SetTitleId",e))(un||{});let sn={0(e,t){return e.titleId===t.id?e:{...e,titleId:t.id}}},se=s.createContext(null);se.displayName="DialogContext";function Z(e){let t=s.useContext(se);if(t===null){let n=new Error(`<${e} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(n,Z),n}return t}function cn(e,t){return Y(t.type,sn,e,t)}let be=x(function(e,t){let n=s.useId(),{id:r=`headlessui-dialog-${n}`,open:o,onClose:l,initialFocus:u,role:i="dialog",autoFocus:a=!0,__demoMode:d=!1,unmount:c=!1,...m}=e,v=s.useRef(!1);i=function(){return i==="dialog"||i==="alertdialog"?i:(v.current||(v.current=!0,console.warn(`Invalid role [${i}] passed to . Only \`dialog\` and and \`alertdialog\` are supported. Using \`dialog\` instead.`)),"dialog")}();let p=xe();o===void 0&&p!==null&&(o=(p&V.Open)===V.Open);let h=s.useRef(null),D=M(h,t),C=U(h),F=o?0:1,[E,L]=s.useReducer(cn,{titleId:null,descriptionId:null,panelRef:s.createRef()}),b=w(()=>l(!1)),ce=w(g=>L({type:0,id:g})),O=ae()?F===0:!1,[Be,Ue]=Yt(),Ve={get current(){var g;return(g=E.panelRef.current)!=null?g:h.current}},J=je(),{resolveContainers:Q}=zt({mainTreeNode:J,portals:Be,defaultContainers:[Ve]}),de=p!==null?(p&V.Closing)===V.Closing:!1;Et(d||de?!1:O,{allowed:w(()=>{var g,me;return[(me=(g=h.current)==null?void 0:g.closest("[data-headlessui-portal]"))!=null?me:null]}),disallowed:w(()=>{var g;return[(g=J==null?void 0:J.closest("body > *:not(#headlessui-portal-root)"))!=null?g:null]})}),Ct(O,Q,g=>{g.preventDefault(),b()}),Kt(O,C==null?void 0:C.defaultView,g=>{g.preventDefault(),g.stopPropagation(),document.activeElement&&"blur"in document.activeElement&&typeof document.activeElement.blur=="function"&&document.activeElement.blur(),b()}),It(d||de?!1:O,C,Q),wt(O,h,b);let[Ye,Ge]=st(),qe=s.useMemo(()=>[{dialogState:F,close:b,setTitleId:ce,unmount:c},E],[F,E,b,ce,c]),fe=s.useMemo(()=>({open:F===0}),[F]),Ke={ref:D,id:r,role:i,tabIndex:-1,"aria-modal":d?void 0:F===0?!0:void 0,"aria-labelledby":E.titleId,"aria-describedby":Ye,unmount:c},Xe=!Xt(),I=A.None;O&&!d&&(I|=A.RestoreFocus,I|=A.TabLock,a&&(I|=A.AutoFocus),Xe&&(I|=A.InitialFocus));let ze=$();return f.createElement(rt,null,f.createElement(Ee,{force:!0},f.createElement(qt,null,f.createElement(se.Provider,{value:qe},f.createElement(Ie,{target:h},f.createElement(Ee,{force:!1},f.createElement(Ge,{slot:fe},f.createElement(Ue,null,f.createElement(tn,{initialFocus:u,initialFocusFallback:h,containers:Q,features:I},f.createElement(vt,{value:b},ze({ourProps:Ke,theirProps:m,slot:fe,defaultTag:dn,features:fn,visible:F===0,name:"Dialog"})))))))))))}),dn="div",fn=pe.RenderStrategy|pe.Static;function mn(e,t){let{transition:n=!1,open:r,...o}=e,l=xe(),u=e.hasOwnProperty("open")||l!==null,i=e.hasOwnProperty("onClose");if(!u&&!i)throw new Error("You have to provide an `open` and an `onClose` prop to the `Dialog` component.");if(!u)throw new Error("You provided an `onClose` prop to the `Dialog`, but forgot an `open` prop.");if(!i)throw new Error("You provided an `open` prop to the `Dialog`, but forgot an `onClose` prop.");if(!l&&typeof e.open!="boolean")throw new Error(`You provided an \`open\` prop to the \`Dialog\`, but the value is not a boolean. Received: ${e.open}`);if(typeof e.onClose!="function")throw new Error(`You provided an \`onClose\` prop to the \`Dialog\`, but the value is not a function. Received: ${e.onClose}`);return(r!==void 0||n)&&!o.static?f.createElement(we,null,f.createElement($e,{show:r,transition:n,unmount:o.unmount},f.createElement(be,{ref:t,...o}))):f.createElement(we,null,f.createElement(be,{ref:t,open:r,...o}))}let pn="div";function vn(e,t){let n=s.useId(),{id:r=`headlessui-dialog-panel-${n}`,transition:o=!1,...l}=e,[{dialogState:u,unmount:i},a]=Z("Dialog.Panel"),d=M(t,a.panelRef),c=s.useMemo(()=>({open:u===0}),[u]),m=w(C=>{C.stopPropagation()}),v={ref:d,id:r,onClick:m},p=o?G:s.Fragment,h=o?{unmount:i}:{},D=$();return f.createElement(p,{...h},D({ourProps:v,theirProps:l,slot:c,defaultTag:pn,name:"Dialog.Panel"}))}let hn="div";function gn(e,t){let{transition:n=!1,...r}=e,[{dialogState:o,unmount:l}]=Z("Dialog.Backdrop"),u=s.useMemo(()=>({open:o===0}),[o]),i={ref:t,"aria-hidden":!0},a=n?G:s.Fragment,d=n?{unmount:l}:{},c=$();return f.createElement(a,{...d},c({ourProps:i,theirProps:r,slot:u,defaultTag:hn,name:"Dialog.Backdrop"}))}let En="h2";function wn(e,t){let n=s.useId(),{id:r=`headlessui-dialog-title-${n}`,...o}=e,[{dialogState:l,setTitleId:u}]=Z("Dialog.Title"),i=M(t);s.useEffect(()=>(u(r),()=>u(null)),[r,u]);let a=s.useMemo(()=>({open:l===0}),[l]),d={ref:i,id:r};return $()({ourProps:d,theirProps:o,slot:a,defaultTag:En,name:"Dialog.Title"})}let bn=x(mn),yn=x(vn);x(gn);let xn=x(wn),$n=Object.assign(bn,{Panel:yn,Title:xn,Description:mt});function Mn({title:e,description:t,children:n}){return y.jsxs("div",{className:"md:grid md:grid-cols-3 md:gap-6",children:[y.jsx(Qe,{title:e,description:t}),y.jsx("div",{className:"mt-5 md:mt-0 md:col-span-2",children:y.jsx("div",{className:"px-4 py-5 sm:p-6 bg-white dark:bg-gray-800 shadow-sm sm:rounded-lg",children:n})})]})}function Dn({isOpen:e,onClose:t,maxWidth:n="2xl",children:r}){const o={sm:"sm:max-w-sm",md:"sm:max-w-md",lg:"sm:max-w-lg",xl:"sm:max-w-xl","2xl":"sm:max-w-2xl"}[n];return typeof window>"u"?null:ot.createPortal(y.jsx($e,{show:e,as:f.Fragment,children:y.jsx($n,{as:"div",static:!0,className:"fixed z-10 inset-0 overflow-y-auto",open:e,onClose:t,children:y.jsxs("div",{className:"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0",children:[y.jsx(G,{as:f.Fragment,enter:"ease-out duration-300",enterFrom:"opacity-0",enterTo:"opacity-100",leave:"ease-in duration-200",leaveFrom:"opacity-100",leaveTo:"opacity-0",children:y.jsx("div",{className:"fixed inset-0 bg-gray-500 dark:bg-gray-900 bg-opacity-75 transition-opacity"})}),y.jsx("span",{className:"hidden sm:inline-block sm:align-middle sm:h-screen","aria-hidden":"true",children:"​"}),y.jsx(G,{as:f.Fragment,enter:"ease-out duration-300",enterFrom:"opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95",enterTo:"opacity-100 translate-y-0 sm:scale-100",leave:"ease-in duration-200",leaveFrom:"opacity-100 translate-y-0 sm:scale-100",leaveTo:"opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95",children:y.jsx("div",{className:et("inline-block align-bottom bg-white dark:bg-gray-800 rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:w-full",o),children:r})})]})})}),document.body)}export{Mn as A,Dn as M}; diff --git a/public/build/assets/PrimaryButton-Gixff4KF.js b/public/build/assets/PrimaryButton-Gixff4KF.js new file mode 100644 index 0000000..c961b51 --- /dev/null +++ b/public/build/assets/PrimaryButton-Gixff4KF.js @@ -0,0 +1 @@ +import{j as e}from"./app-43FwoUKv.js";import{c as a}from"./index-C3aXnQRR.js";function i({children:t,...r}){return e.jsx("button",{...r,className:a("inline-flex items-center px-4 py-2 bg-gray-800 dark:bg-gray-200 border border-transparent rounded-md font-semibold text-xs text-white dark:text-gray-800 uppercase tracking-widest hover:bg-gray-700 dark:hover:bg-white focus:bg-gray-700 dark:focus:bg-white active:bg-gray-900 dark:active:bg-gray-300 focus:outline-hidden focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 dark:focus:ring-offset-gray-800 transition ease-in-out duration-150",r.className),children:t})}export{i as P}; diff --git a/public/build/assets/PrivacyPolicy-wz23YJr7.js b/public/build/assets/PrivacyPolicy-wz23YJr7.js new file mode 100644 index 0000000..cb6b4ed --- /dev/null +++ b/public/build/assets/PrivacyPolicy-wz23YJr7.js @@ -0,0 +1 @@ +import{j as e,L as r}from"./app-43FwoUKv.js";import{A as a}from"./AuthenticationCardLogo-DxGGqaxw.js";function d({policy:s}){return e.jsxs("div",{children:[e.jsx(r,{title:"Privacy Policy"}),e.jsx("div",{className:"font-sans text-gray-900 dark:text-gray-100 antialiased",children:e.jsx("div",{className:"pt-4 bg-gray-100 dark:bg-gray-900",children:e.jsxs("div",{className:"min-h-screen flex flex-col items-center pt-6 sm:pt-0",children:[e.jsx("div",{children:e.jsx(a,{})}),e.jsx("div",{className:"w-full sm:max-w-2xl mt-6 p-6 bg-white dark:bg-gray-800 shadow-md overflow-hidden sm:rounded-lg prose dark:prose-invert",dangerouslySetInnerHTML:{__html:s}})]})})})]})}export{d as default}; diff --git a/public/build/assets/Register-Bcw9Ay4s.js b/public/build/assets/Register-Bcw9Ay4s.js new file mode 100644 index 0000000..931d492 --- /dev/null +++ b/public/build/assets/Register-Bcw9Ay4s.js @@ -0,0 +1 @@ +import{u as d,m as l,j as e,L as c,$ as u}from"./app-43FwoUKv.js";import{c as f}from"./index-C3aXnQRR.js";import{u as g}from"./useTypedPage-_EZ6P4Xz.js";import{A as x}from"./AuthenticationCard-CH5UMK9r.js";import{C as h}from"./Checkbox-DRbLuUpm.js";import{I as a}from"./InputLabel-Cl3yDvOx.js";import{P as p}from"./PrimaryButton-Gixff4KF.js";import{T as i,I as t}from"./TextInput-CdoY_jBz.js";import"./AuthenticationCardLogo-DxGGqaxw.js";function P(){const m=g(),o=d(),s=l({name:"",email:"",password:"",password_confirmation:"",terms:!1});function n(r){r.preventDefault(),s.post(o("register"),{onFinish:()=>s.reset("password","password_confirmation")})}return e.jsxs(x,{children:[e.jsx(c,{title:"Register"}),e.jsxs("form",{onSubmit:n,children:[e.jsxs("div",{children:[e.jsx(a,{htmlFor:"name",children:"Name"}),e.jsx(i,{id:"name",type:"text",className:"mt-1 block w-full",value:s.data.name,onChange:r=>s.setData("name",r.currentTarget.value),required:!0,autoFocus:!0,autoComplete:"name"}),e.jsx(t,{className:"mt-2",message:s.errors.name})]}),e.jsxs("div",{className:"mt-4",children:[e.jsx(a,{htmlFor:"email",children:"Email"}),e.jsx(i,{id:"email",type:"email",className:"mt-1 block w-full",value:s.data.email,onChange:r=>s.setData("email",r.currentTarget.value),required:!0}),e.jsx(t,{className:"mt-2",message:s.errors.email})]}),e.jsxs("div",{className:"mt-4",children:[e.jsx(a,{htmlFor:"password",children:"Password"}),e.jsx(i,{id:"password",type:"password",className:"mt-1 block w-full",value:s.data.password,onChange:r=>s.setData("password",r.currentTarget.value),required:!0,autoComplete:"new-password"}),e.jsx(t,{className:"mt-2",message:s.errors.password})]}),e.jsxs("div",{className:"mt-4",children:[e.jsx(a,{htmlFor:"password_confirmation",children:"Confirm Password"}),e.jsx(i,{id:"password_confirmation",type:"password",className:"mt-1 block w-full",value:s.data.password_confirmation,onChange:r=>s.setData("password_confirmation",r.currentTarget.value),required:!0,autoComplete:"new-password"}),e.jsx(t,{className:"mt-2",message:s.errors.password_confirmation})]}),m.props.jetstream.hasTermsAndPrivacyPolicyFeature&&e.jsx("div",{className:"mt-4",children:e.jsxs(a,{htmlFor:"terms",children:[e.jsxs("div",{className:"flex items-center",children:[e.jsx(h,{name:"terms",id:"terms",checked:s.data.terms,onChange:r=>s.setData("terms",r.currentTarget.checked),required:!0}),e.jsxs("div",{className:"ml-2",children:["I agree to the",e.jsx("a",{target:"_blank",href:o("terms.show"),className:"underline text-sm text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 rounded-md focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 dark:focus:ring-offset-gray-800",children:"Terms of Service"}),"and",e.jsx("a",{target:"_blank",href:o("policy.show"),className:"underline text-sm text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 rounded-md focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 dark:focus:ring-offset-gray-800",children:"Privacy Policy"})]})]}),e.jsx(t,{className:"mt-2",message:s.errors.terms})]})}),e.jsxs("div",{className:"flex items-center justify-end mt-4",children:[e.jsx(u,{href:o("login"),className:"underline text-sm text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 rounded-md focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 dark:focus:ring-offset-gray-800",children:"Already registered?"}),e.jsx(p,{className:f("ml-4",{"opacity-25":s.processing}),disabled:s.processing,children:"Register"})]})]})]})}export{P as default}; diff --git a/public/build/assets/ResetPassword--VP9wqb4.js b/public/build/assets/ResetPassword--VP9wqb4.js new file mode 100644 index 0000000..3059faf --- /dev/null +++ b/public/build/assets/ResetPassword--VP9wqb4.js @@ -0,0 +1 @@ +import{u as d,m as c,j as s,L as p}from"./app-43FwoUKv.js";import{c as u}from"./index-C3aXnQRR.js";import{A as w}from"./AuthenticationCard-CH5UMK9r.js";import{I as r}from"./InputLabel-Cl3yDvOx.js";import{P as f}from"./PrimaryButton-Gixff4KF.js";import{T as o,I as t}from"./TextInput-CdoY_jBz.js";import"./AuthenticationCardLogo-DxGGqaxw.js";function P({token:i,email:m}){const n=d(),a=c({token:i,email:m,password:"",password_confirmation:""});function l(e){e.preventDefault(),a.post(n("password.update"),{onFinish:()=>a.reset("password","password_confirmation")})}return s.jsxs(w,{children:[s.jsx(p,{title:"Reset Password"}),s.jsxs("form",{onSubmit:l,children:[s.jsxs("div",{children:[s.jsx(r,{htmlFor:"email",children:"Email"}),s.jsx(o,{id:"email",type:"email",className:"mt-1 block w-full",value:a.data.email,onChange:e=>a.setData("email",e.currentTarget.value),required:!0,autoFocus:!0}),s.jsx(t,{className:"mt-2",message:a.errors.email})]}),s.jsxs("div",{className:"mt-4",children:[s.jsx(r,{htmlFor:"password",children:"Password"}),s.jsx(o,{id:"password",type:"password",className:"mt-1 block w-full",value:a.data.password,onChange:e=>a.setData("password",e.currentTarget.value),required:!0,autoComplete:"new-password"}),s.jsx(t,{className:"mt-2",message:a.errors.password})]}),s.jsxs("div",{className:"mt-4",children:[s.jsx(r,{htmlFor:"password_confirmation",children:"Confirm Password"}),s.jsx(o,{id:"password_confirmation",type:"password",className:"mt-1 block w-full",value:a.data.password_confirmation,onChange:e=>a.setData("password_confirmation",e.currentTarget.value),required:!0,autoComplete:"new-password"}),s.jsx(t,{className:"mt-2",message:a.errors.password_confirmation})]}),s.jsx("div",{className:"flex items-center justify-end mt-4",children:s.jsx(f,{className:u({"opacity-25":a.processing}),disabled:a.processing,children:"Reset Password"})})]})]})}export{P as default}; diff --git a/public/build/assets/SecondaryButton-CKdOzt0Y.js b/public/build/assets/SecondaryButton-CKdOzt0Y.js new file mode 100644 index 0000000..af46c76 --- /dev/null +++ b/public/build/assets/SecondaryButton-CKdOzt0Y.js @@ -0,0 +1 @@ +import{j as a}from"./app-43FwoUKv.js";import{c as o}from"./index-C3aXnQRR.js";function i({children:e,...r}){return a.jsx("button",{...r,className:o("inline-flex items-center px-4 py-2 bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-500 rounded-md font-semibold text-xs text-gray-700 dark:text-gray-300 uppercase tracking-widest shadow-xs hover:bg-gray-50 dark:hover:bg-gray-700 focus:outline-hidden focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 dark:focus:ring-offset-gray-800 disabled:opacity-25 transition ease-in-out duration-150",r.className),children:e})}export{i as S}; diff --git a/public/build/assets/SectionBorder-DsOSyNBH.js b/public/build/assets/SectionBorder-DsOSyNBH.js new file mode 100644 index 0000000..d334834 --- /dev/null +++ b/public/build/assets/SectionBorder-DsOSyNBH.js @@ -0,0 +1 @@ +import{j as r}from"./app-43FwoUKv.js";function s(){return r.jsx("div",{className:"hidden sm:block",children:r.jsx("div",{className:"py-8",children:r.jsx("div",{className:"border-t border-gray-200 dark:border-gray-700"})})})}export{s as S}; diff --git a/public/build/assets/SectionTitle-CmR6E75W.js b/public/build/assets/SectionTitle-CmR6E75W.js new file mode 100644 index 0000000..b2c3725 --- /dev/null +++ b/public/build/assets/SectionTitle-CmR6E75W.js @@ -0,0 +1 @@ +import{j as t}from"./app-43FwoUKv.js";function r({title:e,description:s}){return t.jsx("div",{className:"md:col-span-1",children:t.jsxs("div",{className:"px-4 sm:px-0",children:[t.jsx("h3",{className:"text-lg font-medium text-gray-900 dark:text-gray-100",children:e}),t.jsx("p",{className:"mt-1 text-sm text-gray-600 dark:text-gray-400",children:s})]})})}export{r as S}; diff --git a/public/build/assets/Show-BA148_LA.js b/public/build/assets/Show-BA148_LA.js new file mode 100644 index 0000000..04a5ac0 --- /dev/null +++ b/public/build/assets/Show-BA148_LA.js @@ -0,0 +1 @@ +import{j as r}from"./app-43FwoUKv.js";import m from"./DeleteUserForm-PfxYNbC_.js";import i from"./LogoutOtherBrowserSessionsForm-BMipD7tw.js";import a from"./TwoFactorAuthenticationForm-DzHJ9Wxl.js";import p from"./UpdatePasswordForm-DVugAY5_.js";import n from"./UpdateProfileInformationForm-DZ00vhI3.js";import{u as l}from"./useTypedPage-_EZ6P4Xz.js";import{S as o}from"./SectionBorder-DsOSyNBH.js";import{A as d}from"./AppLayout-ZM0oZ-BJ.js";import"./index-C3aXnQRR.js";import"./Modal-Dl0HSC4q.js";import"./SectionTitle-CmR6E75W.js";import"./transition-aKza8ZE9.js";import"./DangerButton--OsE_WB2.js";import"./DialogModal-CM2pkQ7Q.js";import"./TextInput-CdoY_jBz.js";import"./SecondaryButton-CKdOzt0Y.js";import"./ActionMessage-BR0zIw5R.js";import"./PrimaryButton-Gixff4KF.js";import"./InputLabel-Cl3yDvOx.js";import"./FormSection-fM5DX8Wc.js";function b({sessions:s,confirmsTwoFactorAuthentication:e}){const t=l();return r.jsx(d,{title:"Profile",renderHeader:()=>r.jsx("h2",{className:"font-semibold text-xl text-gray-800 dark:text-gray-200 leading-tight",children:"Profile"}),children:r.jsx("div",{children:r.jsxs("div",{className:"max-w-7xl mx-auto py-10 sm:px-6 lg:px-8",children:[t.props.jetstream.canUpdateProfileInformation?r.jsxs("div",{children:[r.jsx(n,{user:t.props.auth.user}),r.jsx(o,{})]}):null,t.props.jetstream.canUpdatePassword?r.jsxs("div",{className:"mt-10 sm:mt-0",children:[r.jsx(p,{}),r.jsx(o,{})]}):null,t.props.jetstream.canManageTwoFactorAuthentication?r.jsxs("div",{className:"mt-10 sm:mt-0",children:[r.jsx(a,{requiresConfirmation:e}),r.jsx(o,{})]}):null,r.jsx("div",{className:"mt-10 sm:mt-0",children:r.jsx(i,{sessions:s})}),t.props.jetstream.hasAccountDeletionFeatures?r.jsxs(r.Fragment,{children:[r.jsx(o,{}),r.jsx("div",{className:"mt-10 sm:mt-0",children:r.jsx(m,{})})]}):null]})})})}export{b as default}; diff --git a/public/build/assets/Show-C33iaoUd.js b/public/build/assets/Show-C33iaoUd.js new file mode 100644 index 0000000..011142d --- /dev/null +++ b/public/build/assets/Show-C33iaoUd.js @@ -0,0 +1 @@ +import{j as r}from"./app-43FwoUKv.js";import i from"./DeleteTeamForm-CGH7MRmP.js";import o from"./TeamMemberManager-BrsMsdPA.js";import a from"./UpdateTeamNameForm-DroFqiCd.js";import{S as s}from"./SectionBorder-DsOSyNBH.js";import{A as p}from"./AppLayout-ZM0oZ-BJ.js";import"./Modal-Dl0HSC4q.js";import"./SectionTitle-CmR6E75W.js";import"./index-C3aXnQRR.js";import"./transition-aKza8ZE9.js";import"./ConfirmationModal-A-4mK9mU.js";import"./DangerButton--OsE_WB2.js";import"./SecondaryButton-CKdOzt0Y.js";import"./useTypedPage-_EZ6P4Xz.js";import"./ActionMessage-BR0zIw5R.js";import"./DialogModal-CM2pkQ7Q.js";import"./FormSection-fM5DX8Wc.js";import"./TextInput-CdoY_jBz.js";import"./InputLabel-Cl3yDvOx.js";import"./PrimaryButton-Gixff4KF.js";function M({team:t,availableRoles:e,permissions:m}){return r.jsx(p,{title:"Team Settings",renderHeader:()=>r.jsx("h2",{className:"font-semibold text-xl text-gray-800 dark:text-gray-200 leading-tight",children:"Team Settings"}),children:r.jsx("div",{children:r.jsxs("div",{className:"max-w-7xl mx-auto py-10 sm:px-6 lg:px-8",children:[r.jsx(a,{team:t,permissions:m}),r.jsx("div",{className:"mt-10 sm:mt-0",children:r.jsx(o,{team:t,availableRoles:e,userPermissions:m})}),m.canDeleteTeam&&!t.personal_team?r.jsxs(r.Fragment,{children:[r.jsx(s,{}),r.jsx("div",{className:"mt-10 sm:mt-0",children:r.jsx(i,{team:t})})]}):null]})})})}export{M as default}; diff --git a/public/build/assets/TeamMemberManager-BrsMsdPA.js b/public/build/assets/TeamMemberManager-BrsMsdPA.js new file mode 100644 index 0000000..445f7d8 --- /dev/null +++ b/public/build/assets/TeamMemberManager-BrsMsdPA.js @@ -0,0 +1 @@ +import{u as q,m as x,r as p,j as e,W as G}from"./app-43FwoUKv.js";import{u as H}from"./useTypedPage-_EZ6P4Xz.js";import{A as J}from"./ActionMessage-BR0zIw5R.js";import{A as C}from"./Modal-Dl0HSC4q.js";import{C as i}from"./ConfirmationModal-A-4mK9mU.js";import{D as M}from"./DangerButton--OsE_WB2.js";import{D as y}from"./DialogModal-CM2pkQ7Q.js";import{F as K}from"./FormSection-fM5DX8Wc.js";import{T as Q,I as S}from"./TextInput-CdoY_jBz.js";import{I as w}from"./InputLabel-Cl3yDvOx.js";import{P as A}from"./PrimaryButton-Gixff4KF.js";import{S as b}from"./SecondaryButton-CKdOzt0Y.js";import{S as k}from"./SectionBorder-DsOSyNBH.js";import{c as a}from"./index-C3aXnQRR.js";import"./transition-aKza8ZE9.js";import"./SectionTitle-CmR6E75W.js";function me({team:o,availableRoles:l,userPermissions:d}){const m=q(),s=x({email:"",role:null}),n=x({role:null}),h=x({}),g=x({}),[F,c]=p.useState(!1),[f,R]=p.useState(null),[L,j]=p.useState(!1),[v,u]=p.useState(null),N=H();function B(){s.post(m("team-members.store",[o]),{errorBag:"addTeamMember",preserveScroll:!0,onSuccess:()=>s.reset()})}function D(r){G.delete(m("team-invitations.destroy",[r]),{preserveScroll:!0})}function I(r){R(r),n.setData("role",r.membership.role),c(!0)}function z(){f&&n.put(m("team-members.update",[o,f]),{preserveScroll:!0,onSuccess:()=>c(!1)})}function O(){j(!0)}function E(){h.delete(m("team-members.destroy",[o,N.props.auth.user]))}function W(r){u(r)}function _(){v&&g.delete(m("team-members.destroy",[o,v]),{errorBag:"removeTeamMember",preserveScroll:!0,preserveState:!0,onSuccess:()=>u(null)})}function T(r){var t;return(t=l.find(P=>P.key===r))==null?void 0:t.name}return e.jsxs("div",{children:[d.canAddTeamMembers?e.jsxs("div",{children:[e.jsx(k,{}),e.jsxs(K,{onSubmit:B,title:"Add Team Member",description:"Add a new team member to your team, allowing them to collaborate with you.",renderActions:()=>e.jsxs(e.Fragment,{children:[e.jsx(J,{on:s.recentlySuccessful,className:"mr-3",children:"Added."}),e.jsx(A,{className:a({"opacity-25":s.processing}),disabled:s.processing,children:"Add"})]}),children:[e.jsx("div",{className:"col-span-6",children:e.jsx("div",{className:"max-w-xl text-sm text-gray-600 dark:text-gray-400",children:"Please provide the email address of the person you would like to add to this team."})}),e.jsxs("div",{className:"col-span-6 sm:col-span-4",children:[e.jsx(w,{htmlFor:"email",value:"Email"}),e.jsx(Q,{id:"email",type:"email",className:"mt-1 block w-full",value:s.data.email,onChange:r=>s.setData("email",r.currentTarget.value)}),e.jsx(S,{message:s.errors.email,className:"mt-2"})]}),l.length>0?e.jsxs("div",{className:"col-span-6 lg:col-span-4",children:[e.jsx(w,{htmlFor:"roles",value:"Role"}),e.jsx(S,{message:s.errors.role,className:"mt-2"}),e.jsx("div",{className:"relative z-0 mt-1 border border-gray-200 dark:border-gray-700 rounded-lg cursor-pointer",children:l.map((r,t)=>e.jsx("button",{type:"button",className:a("relative px-4 py-3 inline-flex w-full rounded-lg focus:z-10 focus:outline-hidden focus:border-indigo-500 dark:focus:border-indigo-600 focus:ring-2 focus:ring-indigo-500 dark:focus:ring-indigo-600",{"border-t border-gray-200 dark:border-gray-700 focus:border-none rounded-t-none":t>0,"rounded-b-none":t!=Object.keys(l).length-1}),onClick:()=>s.setData("role",r.key),children:e.jsxs("div",{className:a({"opacity-50":s.data.role&&s.data.role!=r.key}),children:[e.jsxs("div",{className:"flex items-center",children:[e.jsx("div",{className:a("text-sm text-gray-600 dark:text-gray-400",{"font-semibold":s.data.role==r.key}),children:r.name}),s.data.role==r.key?e.jsx("svg",{className:"ml-2 h-5 w-5 text-green-400",fill:"none",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",stroke:"currentColor",viewBox:"0 0 24 24",children:e.jsx("path",{d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})}):null]}),e.jsx("div",{className:"mt-2 text-xs text-gray-600 dark:text-gray-400",children:r.description})]})},r.key))})]}):null]})]}):null,o.team_invitations.length>0&&d.canAddTeamMembers?e.jsxs("div",{children:[e.jsx(k,{}),e.jsx("div",{className:"mt-10 sm:mt-0"}),e.jsx(C,{title:"Pending Team Invitations",description:"These people have been invited to your team and have been sent an invitation email. They may join the team by accepting the email invitation.",children:e.jsx("div",{className:"space-y-6",children:o.team_invitations.map(r=>e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("div",{className:"text-gray-600 dark:text-gray-400",children:r.email}),e.jsx("div",{className:"flex items-center",children:d.canRemoveTeamMembers?e.jsx("button",{className:"cursor-pointer ml-6 text-sm text-red-500 focus:outline-hidden",onClick:()=>D(r),children:"Cancel"}):null})]},r.id))})})]}):null,o.users.length>0?e.jsxs("div",{children:[e.jsx(k,{}),e.jsx("div",{className:"mt-10 sm:mt-0"}),e.jsx(C,{title:"Team Members",description:"All of the people that are part of this team.",children:e.jsx("div",{className:"space-y-6",children:o.users.map(r=>{var t;return e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center",children:[e.jsx("img",{className:"w-8 h-8 rounded-full",src:r.profile_photo_url,alt:r.name}),e.jsx("div",{className:"ml-4 dark:text-white",children:r.name})]}),e.jsxs("div",{className:"flex items-center",children:[d.canAddTeamMembers&&l.length?e.jsx("button",{className:"ml-2 text-sm text-gray-400 underline",onClick:()=>I(r),children:T(r.membership.role)}):l.length?e.jsx("div",{className:"ml-2 text-sm text-gray-400",children:T(r.membership.role)}):null,((t=N.props.auth.user)==null?void 0:t.id)===r.id?e.jsx("button",{className:"cursor-pointer ml-6 text-sm text-red-500",onClick:O,children:"Leave"}):null,d.canRemoveTeamMembers?e.jsx("button",{className:"cursor-pointer ml-6 text-sm text-red-500",onClick:()=>W(r),children:"Remove"}):null]})]},r.id)})})})]}):null,e.jsxs(y,{isOpen:F,onClose:()=>c(!1),children:[e.jsx(y.Content,{title:"Manage Role"}),f?e.jsx("div",{children:e.jsx("div",{className:"relative z-0 mt-1 border border-gray-200 dark:border-gray-700 rounded-lg cursor-pointer",children:l.map((r,t)=>e.jsx("button",{type:"button",className:a("relative px-4 py-3 inline-flex w-full rounded-lg focus:z-10 focus:outline-hidden focus:border-indigo-500 dark:focus:border-indigo-600 focus:ring-2 focus:ring-indigo-500 dark:focus:ring-indigo-600",{"border-t border-gray-200 dark:border-gray-700 focus:border-none rounded-t-none":t>0,"rounded-b-none":t!==Object.keys(l).length-1}),onClick:()=>n.setData("role",r.key),children:e.jsxs("div",{className:a({"opacity-50":n.data.role&&n.data.role!==r.key}),children:[e.jsxs("div",{className:"flex items-center",children:[e.jsx("div",{className:a("text-sm text-gray-600 dark:text-gray-400",{"font-semibold":n.data.role===r.key}),children:r.name}),n.data.role===r.key?e.jsx("svg",{className:"ml-2 h-5 w-5 text-green-400",fill:"none",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",stroke:"currentColor",viewBox:"0 0 24 24",children:e.jsx("path",{d:"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"})}):null]}),e.jsx("div",{className:"mt-2 text-xs text-gray-600 dark:text-gray-400",children:r.description})]})},r.key))})}):null,e.jsxs(y.Footer,{children:[e.jsx(b,{onClick:()=>c(!1),children:"Cancel"}),e.jsx(A,{onClick:z,className:a("ml-2",{"opacity-25":n.processing}),disabled:n.processing,children:"Save"})]})]}),e.jsxs(i,{isOpen:L,onClose:()=>j(!1),children:[e.jsx(i.Content,{title:"Leave Team",children:"Are you sure you would like to leave this team?"}),e.jsxs(i.Footer,{children:[e.jsx(b,{onClick:()=>j(!1),children:"Cancel"}),e.jsx(M,{onClick:E,className:a("ml-2",{"opacity-25":h.processing}),disabled:h.processing,children:"Leave"})]})]}),e.jsxs(i,{isOpen:!!v,onClose:()=>u(null),children:[e.jsx(i.Content,{title:"Remove Team Member",children:"Are you sure you would like to remove this person from the team?"}),e.jsxs(i.Footer,{children:[e.jsx(b,{onClick:()=>u(null),children:"Cancel"}),e.jsx(M,{onClick:_,className:a("ml-2",{"opacity-25":g.processing}),disabled:g.processing,children:"Remove"})]})]})]})}export{me as default}; diff --git a/public/build/assets/TermsOfService-pgtmp1TJ.js b/public/build/assets/TermsOfService-pgtmp1TJ.js new file mode 100644 index 0000000..e60c1f3 --- /dev/null +++ b/public/build/assets/TermsOfService-pgtmp1TJ.js @@ -0,0 +1 @@ +import{j as e,L as r}from"./app-43FwoUKv.js";import{A as a}from"./AuthenticationCardLogo-DxGGqaxw.js";function d({terms:s}){return e.jsxs("div",{className:"font-sans text-gray-900 dark:text-gray-100 antialiased",children:[e.jsx(r,{title:"Terms of Service"}),e.jsx("div",{className:"pt-4 bg-gray-100 dark:bg-gray-900",children:e.jsxs("div",{className:"min-h-screen flex flex-col items-center pt-6 sm:pt-0",children:[e.jsx("div",{children:e.jsx(a,{})}),e.jsx("div",{className:"w-full sm:max-w-2xl mt-6 p-6 bg-white dark:bg-gray-800 shadow-md overflow-hidden sm:rounded-lg prose dark:prose-invert",dangerouslySetInnerHTML:{__html:s}})]})})]})}export{d as default}; diff --git a/public/build/assets/TextInput-CdoY_jBz.js b/public/build/assets/TextInput-CdoY_jBz.js new file mode 100644 index 0000000..117547d --- /dev/null +++ b/public/build/assets/TextInput-CdoY_jBz.js @@ -0,0 +1 @@ +import{j as s,r as d}from"./app-43FwoUKv.js";import{c as t}from"./index-C3aXnQRR.js";function n({message:r,className:a,children:o}){return!r&&!o?null:s.jsx("div",{className:a,children:s.jsx("p",{className:"text-sm text-red-600 dark:text-red-400",children:r||o})})}const c=d.forwardRef((r,a)=>s.jsx("input",{...r,ref:a,className:t("border-gray-300 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-300 focus:border-indigo-500 dark:focus:border-indigo-600 focus:ring-indigo-500 dark:focus:ring-indigo-600 rounded-md shadow-xs",r.className)}));export{n as I,c as T}; diff --git a/public/build/assets/TwoFactorAuthenticationForm-DzHJ9Wxl.js b/public/build/assets/TwoFactorAuthenticationForm-DzHJ9Wxl.js new file mode 100644 index 0000000..ecf1b7e --- /dev/null +++ b/public/build/assets/TwoFactorAuthenticationForm-DzHJ9Wxl.js @@ -0,0 +1 @@ +import{u as B,r as n,j as e,a as m,m as Q,W as R}from"./app-43FwoUKv.js";import{c as g}from"./index-C3aXnQRR.js";import{A as L}from"./Modal-Dl0HSC4q.js";import{D as N}from"./DialogModal-CM2pkQ7Q.js";import{T as A,I as D}from"./TextInput-CdoY_jBz.js";import{P as S}from"./PrimaryButton-Gixff4KF.js";import{S as j}from"./SecondaryButton-CKdOzt0Y.js";import{D as W}from"./DangerButton--OsE_WB2.js";import{I as Y}from"./InputLabel-Cl3yDvOx.js";import{u as q}from"./useTypedPage-_EZ6P4Xz.js";import"./SectionTitle-CmR6E75W.js";import"./transition-aKza8ZE9.js";function u({title:v="Confirm Password",content:b="For your security, please confirm your password to continue.",button:i="Confirm",onConfirm:h,children:c}){const f=B(),[y,p]=n.useState(!1),[o,l]=n.useState({password:"",error:"",processing:!1}),t=n.useRef(null);function x(){m.get(f("password.confirmation")).then(s=>{s.data.confirmed?h():(p(!0),setTimeout(()=>{var a;return(a=t.current)==null?void 0:a.focus()},250))})}function w(){l({...o,processing:!0}),m.post(f("password.confirm"),{password:o.password}).then(()=>{d(),setTimeout(()=>h(),250)}).catch(s=>{var a;l({...o,processing:!1,error:s.response.data.errors.password[0]}),(a=t.current)==null||a.focus()})}function d(){p(!1),l({processing:!1,password:"",error:""})}return e.jsxs("span",{children:[e.jsx("span",{onClick:x,children:c}),e.jsxs(N,{isOpen:y,onClose:d,children:[e.jsxs(N.Content,{title:v,children:[b,e.jsxs("div",{className:"mt-4",children:[e.jsx(A,{ref:t,type:"password",className:"mt-1 block w-3/4",placeholder:"Password",value:o.password,onChange:s=>l({...o,password:s.currentTarget.value})}),e.jsx(D,{message:o.error,className:"mt-2"})]})]}),e.jsxs(N.Footer,{children:[e.jsx(j,{onClick:d,children:"Cancel"}),e.jsx(S,{className:g("ml-2",{"opacity-25":o.processing}),onClick:w,disabled:o.processing,children:i})]})]})]})}function oe({requiresConfirmation:v}){var k,F,P;const b=q(),[i,h]=n.useState(!1),[c,f]=n.useState(!1),[y,p]=n.useState(null),[o,l]=n.useState([]),[t,x]=n.useState(!1),[w,d]=n.useState(null),s=Q({code:""}),a=!i&&((P=(F=(k=b.props)==null?void 0:k.auth)==null?void 0:F.user)==null?void 0:P.two_factor_enabled);function I(){h(!0),R.post("/user/two-factor-authentication",{},{preserveScroll:!0,onSuccess(){return Promise.all([K(),E(),C()])},onFinish(){h(!1),x(v)}})}function E(){return m.get("/user/two-factor-secret-key").then(r=>{d(r.data.secretKey)})}function _(){s.post("/user/confirmed-two-factor-authentication",{preserveScroll:!0,preserveState:!0,errorBag:"confirmTwoFactorAuthentication",onSuccess:()=>{x(!1),p(null),d(null)}})}function K(){return m.get("/user/two-factor-qr-code").then(r=>{p(r.data.svg)})}function C(){return m.get("/user/two-factor-recovery-codes").then(r=>{l(r.data)})}function M(){m.post("/user/two-factor-recovery-codes").then(()=>{C()})}function T(){f(!0),R.delete("/user/two-factor-authentication",{preserveScroll:!0,onSuccess(){f(!1),x(!1)}})}return e.jsxs(L,{title:"Two Factor Authentication",description:"Add additional security to your account using two factor authentication.",children:[a&&!t?e.jsx("h3",{className:"text-lg font-medium text-gray-900 dark:text-gray-100",children:"You have enabled two factor authentication."}):t?e.jsx("h3",{className:"text-lg font-medium text-gray-900 dark:text-gray-100",children:"Finish enabling two factor authentication."}):e.jsx("h3",{className:"text-lg font-medium text-gray-900 dark:text-gray-100",children:"You have not enabled two factor authentication."}),e.jsx("div",{className:"mt-3 max-w-xl text-sm text-gray-600 dark:text-gray-400",children:e.jsx("p",{children:"When two factor authentication is enabled, you will be prompted for a secure, random token during authentication. You may retrieve this token from your phone's Google Authenticator application."})}),a||t?e.jsxs("div",{children:[y?e.jsxs("div",{children:[e.jsx("div",{className:"mt-4 max-w-xl text-sm text-gray-600 dark:text-gray-400",children:t?e.jsx("p",{className:"font-semibold",children:"To finish enabling two factor authentication, scan the following QR code using your phone's authenticator application or enter the setup key and provide the generated OTP code."}):e.jsx("p",{children:"Two factor authentication is now enabled. Scan the following QR code using your phone's authenticator application or enter the setup key."})}),e.jsx("div",{className:"mt-4",dangerouslySetInnerHTML:{__html:y||""}}),w&&e.jsx("div",{className:"mt-4 max-w-xl text-sm text-gray-600 dark:text-gray-400",children:e.jsxs("p",{className:"font-semibold",children:["Setup Key:"," ",e.jsx("span",{dangerouslySetInnerHTML:{__html:w||""}})]})}),t&&e.jsxs("div",{className:"mt-4",children:[e.jsx(Y,{htmlFor:"code",value:"Code"}),e.jsx(A,{id:"code",type:"text",name:"code",className:"block mt-1 w-1/2",inputMode:"numeric",autoFocus:!0,autoComplete:"one-time-code",value:s.data.code,onChange:r=>s.setData("code",r.currentTarget.value)}),e.jsx(D,{message:s.errors.code,className:"mt-2"})]})]}):null,o.length>0&&!t?e.jsxs("div",{children:[e.jsx("div",{className:"mt-4 max-w-xl text-sm text-gray-600 dark:text-gray-400",children:e.jsx("p",{className:"font-semibold",children:"Store these recovery codes in a secure password manager. They can be used to recover access to your account if your two factor authentication device is lost."})}),e.jsx("div",{className:"grid gap-1 max-w-xl mt-4 px-4 py-4 font-mono text-sm bg-gray-100 dark:bg-gray-900 rounded-lg",children:o.map(r=>e.jsx("div",{children:r},r))})]}):null]}):null,e.jsx("div",{className:"mt-5",children:a||t?e.jsxs("div",{children:[t?e.jsx(u,{onConfirm:_,children:e.jsx(S,{className:g("mr-3",{"opacity-25":i}),disabled:i,children:"Confirm"})}):null,o.length>0&&!t?e.jsx(u,{onConfirm:M,children:e.jsx(j,{className:"mr-3",children:"Regenerate Recovery Codes"})}):null,o.length===0&&!t?e.jsx(u,{onConfirm:C,children:e.jsx(j,{className:"mr-3",children:"Show Recovery Codes"})}):null,t?e.jsx(u,{onConfirm:T,children:e.jsx(j,{className:g("mr-3",{"opacity-25":c}),disabled:c,children:"Cancel"})}):e.jsx(u,{onConfirm:T,children:e.jsx(W,{className:g({"opacity-25":c}),disabled:c,children:"Disable"})})]}):e.jsx("div",{children:e.jsx(u,{onConfirm:I,children:e.jsx(S,{type:"button",className:g({"opacity-25":i}),disabled:i,children:"Enable"})})})})]})}export{oe as default}; diff --git a/public/build/assets/TwoFactorChallenge-CSR_9ApP.js b/public/build/assets/TwoFactorChallenge-CSR_9ApP.js new file mode 100644 index 0000000..1776a06 --- /dev/null +++ b/public/build/assets/TwoFactorChallenge-CSR_9ApP.js @@ -0,0 +1 @@ +import{u as v,r as s,m as g,j as e,L as h}from"./app-43FwoUKv.js";import{c as j}from"./index-C3aXnQRR.js";import{A as b}from"./AuthenticationCard-CH5UMK9r.js";import{I as l}from"./InputLabel-Cl3yDvOx.js";import{P as C}from"./PrimaryButton-Gixff4KF.js";import{T as d,I as m}from"./TextInput-CdoY_jBz.js";import"./AuthenticationCardLogo-DxGGqaxw.js";function F(){const y=v(),[r,f]=s.useState(!1),t=g({code:"",recovery_code:""}),c=s.useRef(null),a=s.useRef(null);function x(o){o.preventDefault();const n=!r;f(n),setTimeout(()=>{var i,u;n?((i=c.current)==null||i.focus(),t.setData("code","")):((u=a.current)==null||u.focus(),t.setData("recovery_code",""))},100)}function p(o){o.preventDefault(),t.post(y("two-factor.login"))}return e.jsxs(b,{children:[e.jsx(h,{title:"Two-Factor Confirmation"}),e.jsx("div",{className:"mb-4 text-sm text-gray-600 dark:text-gray-400",children:r?"Please confirm access to your account by entering one of your emergency recovery codes.":"Please confirm access to your account by entering the authentication code provided by your authenticator application."}),e.jsxs("form",{onSubmit:p,children:[r?e.jsxs("div",{children:[e.jsx(l,{htmlFor:"recovery_code",children:"Recovery Code"}),e.jsx(d,{id:"recovery_code",type:"text",className:"mt-1 block w-full",value:t.data.recovery_code,onChange:o=>t.setData("recovery_code",o.currentTarget.value),ref:c,autoComplete:"one-time-code"}),e.jsx(m,{className:"mt-2",message:t.errors.recovery_code})]}):e.jsxs("div",{children:[e.jsx(l,{htmlFor:"code",children:"Code"}),e.jsx(d,{id:"code",type:"text",inputMode:"numeric",className:"mt-1 block w-full",value:t.data.code,onChange:o=>t.setData("code",o.currentTarget.value),autoFocus:!0,autoComplete:"one-time-code",ref:a}),e.jsx(m,{className:"mt-2",message:t.errors.code})]}),e.jsxs("div",{className:"flex items-center justify-end mt-4",children:[e.jsx("button",{type:"button",className:"text-sm text-gray-600 dark:text-gray-400 hover:text-gray-900 underline cursor-pointer",onClick:x,children:r?"Use an authentication code":"Use a recovery code"}),e.jsx(C,{className:j("ml-4",{"opacity-25":t.processing}),disabled:t.processing,children:"Log in"})]})]})]})}export{F as default}; diff --git a/public/build/assets/UpdatePasswordForm-DVugAY5_.js b/public/build/assets/UpdatePasswordForm-DVugAY5_.js new file mode 100644 index 0000000..bfdc5f7 --- /dev/null +++ b/public/build/assets/UpdatePasswordForm-DVugAY5_.js @@ -0,0 +1 @@ +import{u,m as i,r as p,j as r}from"./app-43FwoUKv.js";import{c as w}from"./index-C3aXnQRR.js";import{A as f}from"./ActionMessage-BR0zIw5R.js";import{F as x}from"./FormSection-fM5DX8Wc.js";import{T as o,I as e}from"./TextInput-CdoY_jBz.js";import{I as t}from"./InputLabel-Cl3yDvOx.js";import{P as j}from"./PrimaryButton-Gixff4KF.js";import"./transition-aKza8ZE9.js";import"./SectionTitle-CmR6E75W.js";function S(){const m=u(),s=i({current_password:"",password:"",password_confirmation:""}),n=p.useRef(null),c=p.useRef(null);function l(){s.put(m("user-password.update"),{errorBag:"updatePassword",preserveScroll:!0,onSuccess:()=>s.reset(),onError:()=>{var a,d;s.errors.password&&(s.reset("password","password_confirmation"),(a=n.current)==null||a.focus()),s.errors.current_password&&(s.reset("current_password"),(d=c.current)==null||d.focus())}})}return r.jsxs(x,{onSubmit:l,title:"Update Password",description:"Ensure your account is using a long, random password to stay secure.",renderActions:()=>r.jsxs(r.Fragment,{children:[r.jsx(f,{on:s.recentlySuccessful,className:"mr-3",children:"Saved."}),r.jsx(j,{className:w({"opacity-25":s.processing}),disabled:s.processing,children:"Save"})]}),children:[r.jsxs("div",{className:"col-span-6 sm:col-span-4",children:[r.jsx(t,{htmlFor:"current_password",children:"Current Password"}),r.jsx(o,{id:"current_password",type:"password",className:"mt-1 block w-full",ref:c,value:s.data.current_password,onChange:a=>s.setData("current_password",a.currentTarget.value),autoComplete:"current-password"}),r.jsx(e,{message:s.errors.current_password,className:"mt-2"})]}),r.jsxs("div",{className:"col-span-6 sm:col-span-4",children:[r.jsx(t,{htmlFor:"password",children:"New Password"}),r.jsx(o,{id:"password",type:"password",className:"mt-1 block w-full",value:s.data.password,onChange:a=>s.setData("password",a.currentTarget.value),autoComplete:"new-password",ref:n}),r.jsx(e,{message:s.errors.password,className:"mt-2"})]}),r.jsxs("div",{className:"col-span-6 sm:col-span-4",children:[r.jsx(t,{htmlFor:"password_confirmation",children:"Confirm Password"}),r.jsx(o,{id:"password_confirmation",type:"password",className:"mt-1 block w-full",value:s.data.password_confirmation,onChange:a=>s.setData("password_confirmation",a.currentTarget.value),autoComplete:"new-password"}),r.jsx(e,{message:s.errors.password_confirmation,className:"mt-2"})]})]})}export{S as default}; diff --git a/public/build/assets/UpdateProfileInformationForm-DZ00vhI3.js b/public/build/assets/UpdateProfileInformationForm-DZ00vhI3.js new file mode 100644 index 0000000..c33d27a --- /dev/null +++ b/public/build/assets/UpdateProfileInformationForm-DZ00vhI3.js @@ -0,0 +1 @@ +import{m as w,u as I,r as n,j as e,$ as F,W as C}from"./app-43FwoUKv.js";import{c as R}from"./index-C3aXnQRR.js";import{A as _}from"./ActionMessage-BR0zIw5R.js";import{F as A}from"./FormSection-fM5DX8Wc.js";import{I as i,T as g}from"./TextInput-CdoY_jBz.js";import{I as l}from"./InputLabel-Cl3yDvOx.js";import{P as D}from"./PrimaryButton-Gixff4KF.js";import{S as v}from"./SecondaryButton-CKdOzt0Y.js";import{u as T}from"./useTypedPage-_EZ6P4Xz.js";import"./transition-aKza8ZE9.js";import"./SectionTitle-CmR6E75W.js";function G({user:o}){const a=w({_method:"PUT",name:o.name,email:o.email,photo:null}),r=I(),[m,c]=n.useState(null),s=n.useRef(null),u=T(),[j,N]=n.useState(!1);function P(){a.post(r("user-profile-information.update"),{errorBag:"updateProfileInformation",preserveScroll:!0,onSuccess:()=>d()})}function k(){var t;(t=s.current)==null||t.click()}function y(){var f,h;const t=(h=(f=s.current)==null?void 0:f.files)==null?void 0:h[0];if(!t)return;a.setData("photo",t);const p=new FileReader;p.onload=b=>{var x;c((x=b.target)==null?void 0:x.result)},p.readAsDataURL(t)}function S(){C.delete(r("current-user-photo.destroy"),{preserveScroll:!0,onSuccess:()=>{c(null),d()}})}function d(){var t;(t=s.current)!=null&&t.value&&(s.current.value="",a.setData("photo",null))}return e.jsxs(A,{onSubmit:P,title:"Profile Information",description:"Update your account's profile information and email address.",renderActions:()=>e.jsxs(e.Fragment,{children:[e.jsx(_,{on:a.recentlySuccessful,className:"mr-3",children:"Saved."}),e.jsx(D,{className:R({"opacity-25":a.processing}),disabled:a.processing,children:"Save"})]}),children:[u.props.jetstream.managesProfilePhotos?e.jsxs("div",{className:"col-span-6 sm:col-span-4",children:[e.jsx("input",{type:"file",className:"hidden",ref:s,onChange:y}),e.jsx(l,{htmlFor:"photo",value:"Photo"}),m?e.jsx("div",{className:"mt-2",children:e.jsx("span",{className:"block rounded-full w-20 h-20",style:{backgroundSize:"cover",backgroundRepeat:"no-repeat",backgroundPosition:"center center",backgroundImage:`url('${m}')`}})}):e.jsx("div",{className:"mt-2",children:e.jsx("img",{src:o.profile_photo_url,alt:o.name,className:"rounded-full h-20 w-20 object-cover"})}),e.jsx(v,{className:"mt-2 mr-2",type:"button",onClick:k,children:"Select A New Photo"}),o.profile_photo_path?e.jsx(v,{type:"button",className:"mt-2",onClick:S,children:"Remove Photo"}):null,e.jsx(i,{message:a.errors.photo,className:"mt-2"})]}):null,e.jsxs("div",{className:"col-span-6 sm:col-span-4",children:[e.jsx(l,{htmlFor:"name",value:"Name"}),e.jsx(g,{id:"name",type:"text",className:"mt-1 block w-full",value:a.data.name,onChange:t=>a.setData("name",t.currentTarget.value),autoComplete:"name"}),e.jsx(i,{message:a.errors.name,className:"mt-2"})]}),e.jsxs("div",{className:"col-span-6 sm:col-span-4",children:[e.jsx(l,{htmlFor:"email",value:"Email"}),e.jsx(g,{id:"email",type:"email",className:"mt-1 block w-full",value:a.data.email,onChange:t=>a.setData("email",t.currentTarget.value)}),e.jsx(i,{message:a.errors.email,className:"mt-2"}),u.props.jetstream.hasEmailVerification&&o.email_verified_at===null?e.jsxs("div",{children:[e.jsxs("p",{className:"text-sm mt-2 dark:text-white",children:["Your email address is unverified.",e.jsx(F,{href:r("verification.send"),method:"post",as:"button",className:"underline text-sm text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 rounded-md focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 dark:focus:ring-offset-gray-800",onClick:t=>{t.preventDefault(),N(!0)},children:"Click here to re-send the verification email."})]}),j&&e.jsx("div",{className:"mt-2 font-medium text-sm text-green-600 dark:text-green-400",children:"A new verification link has been sent to your email address."})]}):null]})]})}export{G as default}; diff --git a/public/build/assets/UpdateTeamNameForm-DroFqiCd.js b/public/build/assets/UpdateTeamNameForm-DroFqiCd.js new file mode 100644 index 0000000..b392cb6 --- /dev/null +++ b/public/build/assets/UpdateTeamNameForm-DroFqiCd.js @@ -0,0 +1 @@ +import{u as l,m as i,j as e}from"./app-43FwoUKv.js";import{A as c}from"./ActionMessage-BR0zIw5R.js";import{F as d}from"./FormSection-fM5DX8Wc.js";import{T as p,I as u}from"./TextInput-CdoY_jBz.js";import{I as t}from"./InputLabel-Cl3yDvOx.js";import{P as x}from"./PrimaryButton-Gixff4KF.js";import{c as j}from"./index-C3aXnQRR.js";import"./transition-aKza8ZE9.js";import"./SectionTitle-CmR6E75W.js";function S({team:s,permissions:r}){const m=l(),a=i({name:s.name});function n(){a.put(m("teams.update",[s]),{errorBag:"updateTeamName",preserveScroll:!0})}return e.jsxs(d,{onSubmit:n,title:"Team Name",description:"The team's name and owner information.",renderActions:r.canUpdateTeam?()=>e.jsxs(e.Fragment,{children:[e.jsx(c,{on:a.recentlySuccessful,className:"mr-3",children:"Saved."}),e.jsx(x,{className:j({"opacity-25":a.processing}),disabled:a.processing,children:"Save"})]}):void 0,children:[e.jsxs("div",{className:"col-span-6",children:[e.jsx(t,{value:"Team Owner"}),e.jsxs("div",{className:"flex items-center mt-2",children:[e.jsx("img",{className:"w-12 h-12 rounded-full object-cover",src:s.owner.profile_photo_url,alt:s.owner.name}),e.jsxs("div",{className:"ml-4 leading-tight",children:[e.jsx("div",{className:"text-gray-900 dark:text-white",children:s.owner.name}),e.jsx("div",{className:"text-gray-700 dark:text-gray-300 text-sm",children:s.owner.email})]})]})]}),e.jsxs("div",{className:"col-span-6 sm:col-span-4",children:[e.jsx(t,{htmlFor:"name",value:"Team Name"}),e.jsx(p,{id:"name",type:"text",className:"mt-1 block w-full",value:a.data.name,onChange:o=>a.setData("name",o.currentTarget.value),disabled:!r.canUpdateTeam}),e.jsx(u,{message:a.errors.name,className:"mt-2"})]})]})}export{S as default}; diff --git a/public/build/assets/VerifyEmail-DYMOR58w.js b/public/build/assets/VerifyEmail-DYMOR58w.js new file mode 100644 index 0000000..d0a22b0 --- /dev/null +++ b/public/build/assets/VerifyEmail-DYMOR58w.js @@ -0,0 +1 @@ +import{u as d,m as c,j as e,L as f,$ as r}from"./app-43FwoUKv.js";import{c as l}from"./index-C3aXnQRR.js";import{A as m}from"./AuthenticationCard-CH5UMK9r.js";import{P as u}from"./PrimaryButton-Gixff4KF.js";import"./AuthenticationCardLogo-DxGGqaxw.js";function p({status:s}){const t=d(),i=c({}),o=s==="verification-link-sent";function n(a){a.preventDefault(),i.post(t("verification.send"))}return e.jsxs(m,{children:[e.jsx(f,{title:"Email Verification"}),e.jsx("div",{className:"mb-4 text-sm text-gray-600 dark:text-gray-400",children:"Before continuing, could you verify your email address by clicking on the link we just emailed to you? If you didn't receive the email, we will gladly send you another."}),o&&e.jsx("div",{className:"mb-4 font-medium text-sm text-green-600 dark:text-green-400",children:"A new verification link has been sent to the email address you provided during registration."}),e.jsx("form",{onSubmit:n,children:e.jsxs("div",{className:"mt-4 flex items-center justify-between",children:[e.jsx(u,{className:l({"opacity-25":i.processing}),disabled:i.processing,children:"Resend Verification Email"}),e.jsx("div",{children:e.jsx(r,{href:t("profile.show"),className:"underline text-sm text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 rounded-md focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 dark:focus:ring-offset-gray-800",children:"Edit Profile"})}),e.jsx(r,{href:t("logout"),method:"post",as:"button",className:"underline text-sm text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 rounded-md focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 dark:focus:ring-offset-gray-800 ml-2",children:"Log Out"})]})})]})}export{p as default}; diff --git a/public/build/assets/Welcome-CfvT9jGT.js b/public/build/assets/Welcome-CfvT9jGT.js new file mode 100644 index 0000000..1085984 --- /dev/null +++ b/public/build/assets/Welcome-CfvT9jGT.js @@ -0,0 +1 @@ +import{u as i,j as e,L as d,$ as s}from"./app-43FwoUKv.js";import{u as c}from"./useTypedPage-_EZ6P4Xz.js";function x({canLogin:t,canRegister:a,laravelVersion:o,phpVersion:l}){const r=i(),n=c();return e.jsxs(e.Fragment,{children:[e.jsx(d,{title:"Welcome"}),e.jsxs("div",{className:"relative sm:flex sm:justify-center sm:items-center min-h-screen bg-dots-darker bg-center bg-gray-100 dark:bg-dots-lighter dark:bg-gray-900 selection:bg-red-500 selection:text-white",children:[t?e.jsx("div",{className:"sm:fixed sm:top-0 sm:right-0 p-6 text-right",children:n.props.auth.user?e.jsx(s,{href:r("dashboard"),className:"font-semibold text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-xs focus:outline-red-500",children:"Dashboard"}):e.jsxs(e.Fragment,{children:[e.jsx(s,{href:r("login"),className:"font-semibold text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-xs focus:outline-red-500",children:"Log in"}),a?e.jsx(s,{href:r("register"),className:"ml-4 font-semibold text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-xs focus:outline-red-500",children:"Register"}):null]})}):null,e.jsxs("div",{className:"max-w-7xl mx-auto p-6 lg:p-8",children:[e.jsx("div",{className:"flex justify-center",children:e.jsx("svg",{viewBox:"0 0 62 65",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:"h-16 w-auto bg-gray-100 dark:bg-gray-900",children:e.jsx("path",{d:"M61.8548 14.6253C61.8778 14.7102 61.8895 14.7978 61.8897 14.8858V28.5615C61.8898 28.737 61.8434 28.9095 61.7554 29.0614C61.6675 29.2132 61.5409 29.3392 61.3887 29.4265L49.9104 36.0351V49.1337C49.9104 49.4902 49.7209 49.8192 49.4118 49.9987L25.4519 63.7916C25.3971 63.8227 25.3372 63.8427 25.2774 63.8639C25.255 63.8714 25.2338 63.8851 25.2101 63.8913C25.0426 63.9354 24.8666 63.9354 24.6991 63.8913C24.6716 63.8838 24.6467 63.8689 24.6205 63.8589C24.5657 63.8389 24.5084 63.8215 24.456 63.7916L0.501061 49.9987C0.348882 49.9113 0.222437 49.7853 0.134469 49.6334C0.0465019 49.4816 0.000120578 49.3092 0 49.1337L0 8.10652C0 8.01678 0.0124642 7.92953 0.0348998 7.84477C0.0423783 7.8161 0.0598282 7.78993 0.0697995 7.76126C0.0884958 7.70891 0.105946 7.65531 0.133367 7.6067C0.152063 7.5743 0.179485 7.54812 0.20192 7.51821C0.230588 7.47832 0.256763 7.43719 0.290416 7.40229C0.319084 7.37362 0.356476 7.35243 0.388883 7.32751C0.425029 7.29759 0.457436 7.26518 0.498568 7.2415L12.4779 0.345059C12.6296 0.257786 12.8015 0.211853 12.9765 0.211853C13.1515 0.211853 13.3234 0.257786 13.475 0.345059L25.4531 7.2415H25.4556C25.4955 7.26643 25.5292 7.29759 25.5653 7.32626C25.5977 7.35119 25.6339 7.37362 25.6625 7.40104C25.6974 7.43719 25.7224 7.47832 25.7523 7.51821C25.7735 7.54812 25.8021 7.5743 25.8196 7.6067C25.8483 7.65656 25.8645 7.70891 25.8844 7.76126C25.8944 7.78993 25.9118 7.8161 25.9193 7.84602C25.9423 7.93096 25.954 8.01853 25.9542 8.10652V33.7317L35.9355 27.9844V14.8846C35.9355 14.7973 35.948 14.7088 35.9704 14.6253C35.9792 14.5954 35.9954 14.5692 36.0053 14.5405C36.0253 14.4882 36.0427 14.4346 36.0702 14.386C36.0888 14.3536 36.1163 14.3274 36.1375 14.2975C36.1674 14.2576 36.1923 14.2165 36.2272 14.1816C36.2559 14.1529 36.292 14.1317 36.3244 14.1068C36.3618 14.0769 36.3942 14.0445 36.4341 14.0208L48.4147 7.12434C48.5663 7.03694 48.7383 6.99094 48.9133 6.99094C49.0883 6.99094 49.2602 7.03694 49.4118 7.12434L61.3899 14.0208C61.4323 14.0457 61.4647 14.0769 61.5021 14.1055C61.5333 14.1305 61.5694 14.1529 61.5981 14.1803C61.633 14.2165 61.6579 14.2576 61.6878 14.2975C61.7103 14.3274 61.7377 14.3536 61.7551 14.386C61.7838 14.4346 61.8 14.4882 61.8199 14.5405C61.8312 14.5692 61.8474 14.5954 61.8548 14.6253ZM59.893 27.9844V16.6121L55.7013 19.0252L49.9104 22.3593V33.7317L59.8942 27.9844H59.893ZM47.9149 48.5566V37.1768L42.2187 40.4299L25.953 49.7133V61.2003L47.9149 48.5566ZM1.99677 9.83281V48.5566L23.9562 61.199V49.7145L12.4841 43.2219L12.4804 43.2194L12.4754 43.2169C12.4368 43.1945 12.4044 43.1621 12.3682 43.1347C12.3371 43.1097 12.3009 43.0898 12.2735 43.0624L12.271 43.0586C12.2386 43.0275 12.2162 42.9888 12.1887 42.9539C12.1638 42.9203 12.1339 42.8916 12.114 42.8567L12.1127 42.853C12.0903 42.8156 12.0766 42.7707 12.0604 42.7283C12.0442 42.6909 12.023 42.656 12.013 42.6161C12.0005 42.5688 11.998 42.5177 11.9931 42.4691C11.9881 42.4317 11.9781 42.3943 11.9781 42.3569V15.5801L6.18848 12.2446L1.99677 9.83281ZM12.9777 2.36177L2.99764 8.10652L12.9752 13.8513L22.9541 8.10527L12.9752 2.36177H12.9777ZM18.1678 38.2138L23.9574 34.8809V9.83281L19.7657 12.2459L13.9749 15.5801V40.6281L18.1678 38.2138ZM48.9133 9.14105L38.9344 14.8858L48.9133 20.6305L58.8909 14.8846L48.9133 9.14105ZM47.9149 22.3593L42.124 19.0252L37.9323 16.6121V27.9844L43.7219 31.3174L47.9149 33.7317V22.3593ZM24.9533 47.987L39.59 39.631L46.9065 35.4555L36.9352 29.7145L25.4544 36.3242L14.9907 42.3482L24.9533 47.987Z",fill:"#FF2D20"})})}),e.jsx("div",{className:"mt-16",children:e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6 lg:gap-8",children:[e.jsxs("a",{href:"https://laravel.com/docs",className:"scale-100 p-6 bg-white dark:bg-gray-800/50 dark:bg-linear-to-bl from-gray-700/50 via-transparent dark:ring-1 dark:ring-inset dark:ring-white/5 rounded-lg shadow-2xl shadow-gray-500/20 dark:shadow-none flex motion-safe:hover:scale-[1.01] transition-all duration-250 focus:outline focus:outline-2 focus:outline-red-500",children:[e.jsxs("div",{children:[e.jsx("div",{className:"h-16 w-16 bg-red-50 dark:bg-red-800/20 flex items-center justify-center rounded-full",children:e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",className:"w-7 h-7 stroke-red-500",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 6.042A8.967 8.967 0 006 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 016 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 016-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0018 18a8.967 8.967 0 00-6 2.292m0-14.25v14.25"})})}),e.jsx("h2",{className:"mt-6 text-xl font-semibold text-gray-900 dark:text-white",children:"Documentation"}),e.jsx("p",{className:"mt-4 text-gray-500 dark:text-gray-400 text-sm leading-relaxed",children:"Laravel has wonderful documentation covering every aspect of the framework. Whether you are a newcomer or have prior experience with Laravel, we recommend reading our documentation from beginning to end."})]}),e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",className:"self-center shrink-0 stroke-red-500 w-6 h-6 mx-6",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4.5 12h15m0 0l-6.75-6.75M19.5 12l-6.75 6.75"})})]}),e.jsxs("a",{href:"https://laracasts.com",className:"scale-100 p-6 bg-white dark:bg-gray-800/50 dark:bg-linear-to-bl from-gray-700/50 via-transparent dark:ring-1 dark:ring-inset dark:ring-white/5 rounded-lg shadow-2xl shadow-gray-500/20 dark:shadow-none flex motion-safe:hover:scale-[1.01] transition-all duration-250 focus:outline focus:outline-2 focus:outline-red-500",children:[e.jsxs("div",{children:[e.jsx("div",{className:"h-16 w-16 bg-red-50 dark:bg-red-800/20 flex items-center justify-center rounded-full",children:e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",className:"w-7 h-7 stroke-red-500",children:e.jsx("path",{strokeLinecap:"round",d:"M15.75 10.5l4.72-4.72a.75.75 0 011.28.53v11.38a.75.75 0 01-1.28.53l-4.72-4.72M4.5 18.75h9a2.25 2.25 0 002.25-2.25v-9a2.25 2.25 0 00-2.25-2.25h-9A2.25 2.25 0 002.25 7.5v9a2.25 2.25 0 002.25 2.25z"})})}),e.jsx("h2",{className:"mt-6 text-xl font-semibold text-gray-900 dark:text-white",children:"Laracasts"}),e.jsx("p",{className:"mt-4 text-gray-500 dark:text-gray-400 text-sm leading-relaxed",children:"Laracasts offers thousands of video tutorials on Laravel, PHP, and JavaScript development. Check them out, see for yourself, and massively level up your development skills in the process."})]}),e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",className:"self-center shrink-0 stroke-red-500 w-6 h-6 mx-6",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4.5 12h15m0 0l-6.75-6.75M19.5 12l-6.75 6.75"})})]}),e.jsxs("a",{href:"https://laravel-news.com",className:"scale-100 p-6 bg-white dark:bg-gray-800/50 dark:bg-linear-to-bl from-gray-700/50 via-transparent dark:ring-1 dark:ring-inset dark:ring-white/5 rounded-lg shadow-2xl shadow-gray-500/20 dark:shadow-none flex motion-safe:hover:scale-[1.01] transition-all duration-250 focus:outline focus:outline-2 focus:outline-red-500",children:[e.jsxs("div",{children:[e.jsx("div",{className:"h-16 w-16 bg-red-50 dark:bg-red-800/20 flex items-center justify-center rounded-full",children:e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",className:"w-7 h-7 stroke-red-500",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 7.5h1.5m-1.5 3h1.5m-7.5 3h7.5m-7.5 3h7.5m3-9h3.375c.621 0 1.125.504 1.125 1.125V18a2.25 2.25 0 01-2.25 2.25M16.5 7.5V18a2.25 2.25 0 002.25 2.25M16.5 7.5V4.875c0-.621-.504-1.125-1.125-1.125H4.125C3.504 3.75 3 4.254 3 4.875V18a2.25 2.25 0 002.25 2.25h13.5M6 7.5h3v3H6v-3z"})})}),e.jsx("h2",{className:"mt-6 text-xl font-semibold text-gray-900 dark:text-white",children:"Laravel News"}),e.jsx("p",{className:"mt-4 text-gray-500 dark:text-gray-400 text-sm leading-relaxed",children:"Laravel News is a community driven portal and newsletter aggregating all of the latest and most important news in the Laravel ecosystem, including new package releases and tutorials."})]}),e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",className:"self-center shrink-0 stroke-red-500 w-6 h-6 mx-6",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4.5 12h15m0 0l-6.75-6.75M19.5 12l-6.75 6.75"})})]}),e.jsx("div",{className:"scale-100 p-6 bg-white dark:bg-gray-800/50 dark:bg-linear-to-bl from-gray-700/50 via-transparent dark:ring-1 dark:ring-inset dark:ring-white/5 rounded-lg shadow-2xl shadow-gray-500/20 dark:shadow-none flex motion-safe:hover:scale-[1.01] transition-all duration-250 focus:outline focus:outline-2 focus:outline-red-500",children:e.jsxs("div",{children:[e.jsx("div",{className:"h-16 w-16 bg-red-50 dark:bg-red-800/20 flex items-center justify-center rounded-full",children:e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",className:"w-7 h-7 stroke-red-500",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6.115 5.19l.319 1.913A6 6 0 008.11 10.36L9.75 12l-.387.775c-.217.433-.132.956.21 1.298l1.348 1.348c.21.21.329.497.329.795v1.089c0 .426.24.815.622 1.006l.153.076c.433.217.956.132 1.298-.21l.723-.723a8.7 8.7 0 002.288-4.042 1.087 1.087 0 00-.358-1.099l-1.33-1.108c-.251-.21-.582-.299-.905-.245l-1.17.195a1.125 1.125 0 01-.98-.314l-.295-.295a1.125 1.125 0 010-1.591l.13-.132a1.125 1.125 0 011.3-.21l.603.302a.809.809 0 001.086-1.086L14.25 7.5l1.256-.837a4.5 4.5 0 001.528-1.732l.146-.292M6.115 5.19A9 9 0 1017.18 4.64M6.115 5.19A8.965 8.965 0 0112 3c1.929 0 3.716.607 5.18 1.64"})})}),e.jsx("h2",{className:"mt-6 text-xl font-semibold text-gray-900 dark:text-white",children:"Vibrant Ecosystem"}),e.jsxs("p",{className:"mt-4 text-gray-500 dark:text-gray-400 text-sm leading-relaxed",children:["Laravel's robust library of first-party tools and libraries, such as"," ",e.jsx("a",{href:"https://forge.laravel.com",className:"underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-xs focus:outline-red-500",children:"Forge"}),","," ",e.jsx("a",{href:"https://vapor.laravel.com",className:"underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-xs focus:outline-red-500",children:"Vapor"}),","," ",e.jsx("a",{href:"https://nova.laravel.com",className:"underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-xs focus:outline-red-500",children:"Nova"}),", and"," ",e.jsx("a",{href:"https://envoyer.io",className:"underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-xs focus:outline-red-500",children:"Envoyer"})," ","help you take your projects to the next level. Pair them with powerful open source libraries like"," ",e.jsx("a",{href:"https://laravel.com/docs/billing",className:"underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-xs focus:outline-red-500",children:"Cashier"}),","," ",e.jsx("a",{href:"https://laravel.com/docs/dusk",className:"underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-xs focus:outline-red-500",children:"Dusk"}),","," ",e.jsx("a",{href:"https://laravel.com/docs/broadcasting",className:"underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-xs focus:outline-red-500",children:"Echo"}),","," ",e.jsx("a",{href:"https://laravel.com/docs/horizon",className:"underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-xs focus:outline-red-500",children:"Horizon"}),","," ",e.jsx("a",{href:"https://laravel.com/docs/sanctum",className:"underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-xs focus:outline-red-500",children:"Sanctum"}),","," ",e.jsx("a",{href:"https://laravel.com/docs/telescope",className:"underline hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-xs focus:outline-red-500",children:"Telescope"}),", and more."]})]})})]})}),e.jsxs("div",{className:"flex justify-center mt-16 px-6 sm:items-center sm:justify-between",children:[e.jsx("div",{className:"text-center text-sm text-gray-500 dark:text-gray-400 sm:text-left",children:e.jsx("div",{className:"flex items-center gap-4",children:e.jsxs("a",{href:"https://github.com/sponsors/taylorotwell",className:"group inline-flex items-center hover:text-gray-700 dark:hover:text-white focus:outline focus:outline-2 focus:rounded-xs focus:outline-red-500",children:[e.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:"1.5",className:"-mt-px mr-1 w-5 h-5 stroke-gray-400 dark:stroke-gray-600 group-hover:stroke-gray-600 dark:group-hover:stroke-gray-400",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M21 8.25c0-2.485-2.099-4.5-4.688-4.5-1.935 0-3.597 1.126-4.312 2.733-.715-1.607-2.377-2.733-4.313-2.733C5.1 3.75 3 5.765 3 8.25c0 7.22 9 12 9 12s9-4.78 9-12z"})}),"Sponsor"]})})}),e.jsxs("div",{className:"ml-4 text-center text-sm text-gray-500 dark:text-gray-400 sm:text-right sm:ml-0",children:["Laravel v",o," (PHP v",l,")"]})]})]})]})]})}export{x as default}; diff --git a/public/build/assets/app-43FwoUKv.js b/public/build/assets/app-43FwoUKv.js new file mode 100644 index 0000000..af49dd2 --- /dev/null +++ b/public/build/assets/app-43FwoUKv.js @@ -0,0 +1,140 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Index-DJE2XEsV.js","assets/APITokenManager-DJxa8V1W.js","assets/index-C3aXnQRR.js","assets/ActionMessage-BR0zIw5R.js","assets/transition-aKza8ZE9.js","assets/Modal-Dl0HSC4q.js","assets/SectionTitle-CmR6E75W.js","assets/Checkbox-DRbLuUpm.js","assets/ConfirmationModal-A-4mK9mU.js","assets/DangerButton--OsE_WB2.js","assets/DialogModal-CM2pkQ7Q.js","assets/FormSection-fM5DX8Wc.js","assets/TextInput-CdoY_jBz.js","assets/InputLabel-Cl3yDvOx.js","assets/PrimaryButton-Gixff4KF.js","assets/SecondaryButton-CKdOzt0Y.js","assets/SectionBorder-DsOSyNBH.js","assets/useTypedPage-_EZ6P4Xz.js","assets/AppLayout-ZM0oZ-BJ.js","assets/ConfirmPassword-Cf-6lS2z.js","assets/AuthenticationCard-CH5UMK9r.js","assets/AuthenticationCardLogo-DxGGqaxw.js","assets/ForgotPassword-D6Y0jXzy.js","assets/Login-DXsbRqWh.js","assets/Register-Bcw9Ay4s.js","assets/ResetPassword--VP9wqb4.js","assets/TwoFactorChallenge-CSR_9ApP.js","assets/VerifyEmail-DYMOR58w.js","assets/Dashboard-BxXaChya.js","assets/PrivacyPolicy-wz23YJr7.js","assets/DeleteUserForm-PfxYNbC_.js","assets/LogoutOtherBrowserSessionsForm-BMipD7tw.js","assets/TwoFactorAuthenticationForm-DzHJ9Wxl.js","assets/UpdatePasswordForm-DVugAY5_.js","assets/UpdateProfileInformationForm-DZ00vhI3.js","assets/Show-BA148_LA.js","assets/Create-CC2vQbdY.js","assets/CreateTeamForm-B2bh2Oa6.js","assets/DeleteTeamForm-CGH7MRmP.js","assets/TeamMemberManager-BrsMsdPA.js","assets/UpdateTeamNameForm-DroFqiCd.js","assets/Show-C33iaoUd.js","assets/TermsOfService-pgtmp1TJ.js","assets/Welcome-CfvT9jGT.js"])))=>i.map(i=>d[i]); +function fw(o,a){for(var l=0;lp[m]})}}}return Object.freeze(Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}))}const cw="modulepreload",dw=function(o){return"/build/"+o},sg={},Ht=function(a,l,p){let m=Promise.resolve();if(l&&l.length>0){document.getElementsByTagName("link");const w=document.querySelector("meta[property=csp-nonce]"),x=(w==null?void 0:w.nonce)||(w==null?void 0:w.getAttribute("nonce"));m=Promise.allSettled(l.map(M=>{if(M=dw(M),M in sg)return;sg[M]=!0;const L=M.endsWith(".css"),O=L?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${M}"]${O}`))return;const R=document.createElement("link");if(R.rel=L?"stylesheet":cw,L||(R.as="script"),R.crossOrigin="",R.href=M,x&&R.setAttribute("nonce",x),document.head.appendChild(R),L)return new Promise((G,F)=>{R.addEventListener("load",G),R.addEventListener("error",()=>F(new Error(`Unable to preload CSS for ${M}`)))})}))}function _(w){const x=new Event("vite:preloadError",{cancelable:!0});if(x.payload=w,window.dispatchEvent(x),!x.defaultPrevented)throw w}return m.then(w=>{for(const x of w||[])x.status==="rejected"&&_(x.reason);return a().catch(_)})};var Bo=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Pd(o){return o&&o.__esModule&&Object.prototype.hasOwnProperty.call(o,"default")?o.default:o}function pw(o){if(Object.prototype.hasOwnProperty.call(o,"__esModule"))return o;var a=o.default;if(typeof a=="function"){var l=function p(){return this instanceof p?Reflect.construct(a,arguments,this.constructor):a.apply(this,arguments)};l.prototype=a.prototype}else l={};return Object.defineProperty(l,"__esModule",{value:!0}),Object.keys(o).forEach(function(p){var m=Object.getOwnPropertyDescriptor(o,p);Object.defineProperty(l,p,m.get?m:{enumerable:!0,get:function(){return o[p]}})}),l}var xp={exports:{}},Kf={},Cp={exports:{}},ut={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var fg;function hw(){if(fg)return ut;fg=1;var o=Symbol.for("react.element"),a=Symbol.for("react.portal"),l=Symbol.for("react.fragment"),p=Symbol.for("react.strict_mode"),m=Symbol.for("react.profiler"),_=Symbol.for("react.provider"),w=Symbol.for("react.context"),x=Symbol.for("react.forward_ref"),M=Symbol.for("react.suspense"),L=Symbol.for("react.memo"),O=Symbol.for("react.lazy"),R=Symbol.iterator;function G(A){return A===null||typeof A!="object"?null:(A=R&&A[R]||A["@@iterator"],typeof A=="function"?A:null)}var F={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},U=Object.assign,H={};function C(A,X,ue){this.props=A,this.context=X,this.refs=H,this.updater=ue||F}C.prototype.isReactComponent={},C.prototype.setState=function(A,X){if(typeof A!="object"&&typeof A!="function"&&A!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,A,X,"setState")},C.prototype.forceUpdate=function(A){this.updater.enqueueForceUpdate(this,A,"forceUpdate")};function I(){}I.prototype=C.prototype;function D(A,X,ue){this.props=A,this.context=X,this.refs=H,this.updater=ue||F}var Q=D.prototype=new I;Q.constructor=D,U(Q,C.prototype),Q.isPureReactComponent=!0;var ee=Array.isArray,te=Object.prototype.hasOwnProperty,oe={current:null},fe={key:!0,ref:!0,__self:!0,__source:!0};function ve(A,X,ue){var xe,de={},Ne=null,rt=null;if(X!=null)for(xe in X.ref!==void 0&&(rt=X.ref),X.key!==void 0&&(Ne=""+X.key),X)te.call(X,xe)&&!fe.hasOwnProperty(xe)&&(de[xe]=X[xe]);var Le=arguments.length-2;if(Le===1)de.children=ue;else if(1a=>{const l=yw.call(a);return o[l]||(o[l]=l.slice(8,-1).toLowerCase())})(Object.create(null)),lo=o=>(o=o.toLowerCase(),a=>xd(a)===o),Cd=o=>a=>typeof a===o,{isArray:Ts}=Array,tc=Cd("undefined");function vw(o){return o!==null&&!tc(o)&&o.constructor!==null&&!tc(o.constructor)&&fi(o.constructor.isBuffer)&&o.constructor.isBuffer(o)}const $m=lo("ArrayBuffer");function ww(o){let a;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?a=ArrayBuffer.isView(o):a=o&&o.buffer&&$m(o.buffer),a}const _w=Cd("string"),fi=Cd("function"),qm=Cd("number"),Ad=o=>o!==null&&typeof o=="object",Sw=o=>o===!0||o===!1,gd=o=>{if(xd(o)!=="object")return!1;const a=zh(o);return(a===null||a===Object.prototype||Object.getPrototypeOf(a)===null)&&!(Symbol.toStringTag in o)&&!(Symbol.iterator in o)},Ew=lo("Date"),Pw=lo("File"),xw=lo("Blob"),Cw=lo("FileList"),Aw=o=>Ad(o)&&fi(o.pipe),Rw=o=>{let a;return o&&(typeof FormData=="function"&&o instanceof FormData||fi(o.append)&&((a=xd(o))==="formdata"||a==="object"&&fi(o.toString)&&o.toString()==="[object FormData]"))},Tw=lo("URLSearchParams"),[Ow,kw,Lw,Iw]=["ReadableStream","Request","Response","Headers"].map(lo),Nw=o=>o.trim?o.trim():o.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function nc(o,a,{allOwnKeys:l=!1}={}){if(o===null||typeof o>"u")return;let p,m;if(typeof o!="object"&&(o=[o]),Ts(o))for(p=0,m=o.length;p0;)if(m=l[p],a===m.toLowerCase())return m;return null}const ra=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,Wm=o=>!tc(o)&&o!==ra;function Ah(){const{caseless:o}=Wm(this)&&this||{},a={},l=(p,m)=>{const _=o&&bm(a,m)||m;gd(a[_])&&gd(p)?a[_]=Ah(a[_],p):gd(p)?a[_]=Ah({},p):Ts(p)?a[_]=p.slice():a[_]=p};for(let p=0,m=arguments.length;p(nc(a,(m,_)=>{l&&fi(m)?o[_]=zm(m,l):o[_]=m},{allOwnKeys:p}),o),Dw=o=>(o.charCodeAt(0)===65279&&(o=o.slice(1)),o),Mw=(o,a,l,p)=>{o.prototype=Object.create(a.prototype,p),o.prototype.constructor=o,Object.defineProperty(o,"super",{value:a.prototype}),l&&Object.assign(o.prototype,l)},Uw=(o,a,l,p)=>{let m,_,w;const x={};if(a=a||{},o==null)return a;do{for(m=Object.getOwnPropertyNames(o),_=m.length;_-- >0;)w=m[_],(!p||p(w,o,a))&&!x[w]&&(a[w]=o[w],x[w]=!0);o=l!==!1&&zh(o)}while(o&&(!l||l(o,a))&&o!==Object.prototype);return a},Bw=(o,a,l)=>{o=String(o),(l===void 0||l>o.length)&&(l=o.length),l-=a.length;const p=o.indexOf(a,l);return p!==-1&&p===l},zw=o=>{if(!o)return null;if(Ts(o))return o;let a=o.length;if(!qm(a))return null;const l=new Array(a);for(;a-- >0;)l[a]=o[a];return l},$w=(o=>a=>o&&a instanceof o)(typeof Uint8Array<"u"&&zh(Uint8Array)),qw=(o,a)=>{const p=(o&&o[Symbol.iterator]).call(o);let m;for(;(m=p.next())&&!m.done;){const _=m.value;a.call(o,_[0],_[1])}},bw=(o,a)=>{let l;const p=[];for(;(l=o.exec(a))!==null;)p.push(l);return p},Ww=lo("HTMLFormElement"),Hw=o=>o.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(l,p,m){return p.toUpperCase()+m}),gg=(({hasOwnProperty:o})=>(a,l)=>o.call(a,l))(Object.prototype),jw=lo("RegExp"),Hm=(o,a)=>{const l=Object.getOwnPropertyDescriptors(o),p={};nc(l,(m,_)=>{let w;(w=a(m,_,o))!==!1&&(p[_]=w||m)}),Object.defineProperties(o,p)},Vw=o=>{Hm(o,(a,l)=>{if(fi(o)&&["arguments","caller","callee"].indexOf(l)!==-1)return!1;const p=o[l];if(fi(p)){if(a.enumerable=!1,"writable"in a){a.writable=!1;return}a.set||(a.set=()=>{throw Error("Can not rewrite read-only method '"+l+"'")})}})},Gw=(o,a)=>{const l={},p=m=>{m.forEach(_=>{l[_]=!0})};return Ts(o)?p(o):p(String(o).split(a)),l},Kw=()=>{},Qw=(o,a)=>o!=null&&Number.isFinite(o=+o)?o:a;function Jw(o){return!!(o&&fi(o.append)&&o[Symbol.toStringTag]==="FormData"&&o[Symbol.iterator])}const Xw=o=>{const a=new Array(10),l=(p,m)=>{if(Ad(p)){if(a.indexOf(p)>=0)return;if(!("toJSON"in p)){a[m]=p;const _=Ts(p)?[]:{};return nc(p,(w,x)=>{const M=l(w,m+1);!tc(M)&&(_[x]=M)}),a[m]=void 0,_}}return p};return l(o,0)},Yw=lo("AsyncFunction"),Zw=o=>o&&(Ad(o)||fi(o))&&fi(o.then)&&fi(o.catch),jm=((o,a)=>o?setImmediate:a?((l,p)=>(ra.addEventListener("message",({source:m,data:_})=>{m===ra&&_===l&&p.length&&p.shift()()},!1),m=>{p.push(m),ra.postMessage(l,"*")}))(`axios@${Math.random()}`,[]):l=>setTimeout(l))(typeof setImmediate=="function",fi(ra.postMessage)),e1=typeof queueMicrotask<"u"?queueMicrotask.bind(ra):typeof process<"u"&&process.nextTick||jm,J={isArray:Ts,isArrayBuffer:$m,isBuffer:vw,isFormData:Rw,isArrayBufferView:ww,isString:_w,isNumber:qm,isBoolean:Sw,isObject:Ad,isPlainObject:gd,isReadableStream:Ow,isRequest:kw,isResponse:Lw,isHeaders:Iw,isUndefined:tc,isDate:Ew,isFile:Pw,isBlob:xw,isRegExp:jw,isFunction:fi,isStream:Aw,isURLSearchParams:Tw,isTypedArray:$w,isFileList:Cw,forEach:nc,merge:Ah,extend:Fw,trim:Nw,stripBOM:Dw,inherits:Mw,toFlatObject:Uw,kindOf:xd,kindOfTest:lo,endsWith:Bw,toArray:zw,forEachEntry:qw,matchAll:bw,isHTMLForm:Ww,hasOwnProperty:gg,hasOwnProp:gg,reduceDescriptors:Hm,freezeMethods:Vw,toObjectSet:Gw,toCamelCase:Hw,noop:Kw,toFiniteNumber:Qw,findKey:bm,global:ra,isContextDefined:Wm,isSpecCompliantForm:Jw,toJSONObject:Xw,isAsyncFn:Yw,isThenable:Zw,setImmediate:jm,asap:e1};function Xe(o,a,l,p,m){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=o,this.name="AxiosError",a&&(this.code=a),l&&(this.config=l),p&&(this.request=p),m&&(this.response=m,this.status=m.status?m.status:null)}J.inherits(Xe,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:J.toJSONObject(this.config),code:this.code,status:this.status}}});const Vm=Xe.prototype,Gm={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(o=>{Gm[o]={value:o}});Object.defineProperties(Xe,Gm);Object.defineProperty(Vm,"isAxiosError",{value:!0});Xe.from=(o,a,l,p,m,_)=>{const w=Object.create(Vm);return J.toFlatObject(o,w,function(M){return M!==Error.prototype},x=>x!=="isAxiosError"),Xe.call(w,o.message,a,l,p,m),w.cause=o,w.name=o.name,_&&Object.assign(w,_),w};const t1=null;function Rh(o){return J.isPlainObject(o)||J.isArray(o)}function Km(o){return J.endsWith(o,"[]")?o.slice(0,-2):o}function mg(o,a,l){return o?o.concat(a).map(function(m,_){return m=Km(m),!l&&_?"["+m+"]":m}).join(l?".":""):a}function n1(o){return J.isArray(o)&&!o.some(Rh)}const r1=J.toFlatObject(J,{},null,function(a){return/^is[A-Z]/.test(a)});function Rd(o,a,l){if(!J.isObject(o))throw new TypeError("target must be an object");a=a||new FormData,l=J.toFlatObject(l,{metaTokens:!0,dots:!1,indexes:!1},!1,function(H,C){return!J.isUndefined(C[H])});const p=l.metaTokens,m=l.visitor||O,_=l.dots,w=l.indexes,M=(l.Blob||typeof Blob<"u"&&Blob)&&J.isSpecCompliantForm(a);if(!J.isFunction(m))throw new TypeError("visitor must be a function");function L(U){if(U===null)return"";if(J.isDate(U))return U.toISOString();if(!M&&J.isBlob(U))throw new Xe("Blob is not supported. Use a Buffer instead.");return J.isArrayBuffer(U)||J.isTypedArray(U)?M&&typeof Blob=="function"?new Blob([U]):Buffer.from(U):U}function O(U,H,C){let I=U;if(U&&!C&&typeof U=="object"){if(J.endsWith(H,"{}"))H=p?H:H.slice(0,-2),U=JSON.stringify(U);else if(J.isArray(U)&&n1(U)||(J.isFileList(U)||J.endsWith(H,"[]"))&&(I=J.toArray(U)))return H=Km(H),I.forEach(function(Q,ee){!(J.isUndefined(Q)||Q===null)&&a.append(w===!0?mg([H],ee,_):w===null?H:H+"[]",L(Q))}),!1}return Rh(U)?!0:(a.append(mg(C,H,_),L(U)),!1)}const R=[],G=Object.assign(r1,{defaultVisitor:O,convertValue:L,isVisitable:Rh});function F(U,H){if(!J.isUndefined(U)){if(R.indexOf(U)!==-1)throw Error("Circular reference detected in "+H.join("."));R.push(U),J.forEach(U,function(I,D){(!(J.isUndefined(I)||I===null)&&m.call(a,I,J.isString(D)?D.trim():D,H,G))===!0&&F(I,H?H.concat(D):[D])}),R.pop()}}if(!J.isObject(o))throw new TypeError("data must be an object");return F(o),a}function yg(o){const a={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(o).replace(/[!'()~]|%20|%00/g,function(p){return a[p]})}function $h(o,a){this._pairs=[],o&&Rd(o,this,a)}const Qm=$h.prototype;Qm.append=function(a,l){this._pairs.push([a,l])};Qm.toString=function(a){const l=a?function(p){return a.call(this,p,yg)}:yg;return this._pairs.map(function(m){return l(m[0])+"="+l(m[1])},"").join("&")};function i1(o){return encodeURIComponent(o).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Jm(o,a,l){if(!a)return o;const p=l&&l.encode||i1;J.isFunction(l)&&(l={serialize:l});const m=l&&l.serialize;let _;if(m?_=m(a,l):_=J.isURLSearchParams(a)?a.toString():new $h(a,l).toString(p),_){const w=o.indexOf("#");w!==-1&&(o=o.slice(0,w)),o+=(o.indexOf("?")===-1?"?":"&")+_}return o}class vg{constructor(){this.handlers=[]}use(a,l,p){return this.handlers.push({fulfilled:a,rejected:l,synchronous:p?p.synchronous:!1,runWhen:p?p.runWhen:null}),this.handlers.length-1}eject(a){this.handlers[a]&&(this.handlers[a]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(a){J.forEach(this.handlers,function(p){p!==null&&a(p)})}}const Xm={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},o1=typeof URLSearchParams<"u"?URLSearchParams:$h,l1=typeof FormData<"u"?FormData:null,u1=typeof Blob<"u"?Blob:null,a1={isBrowser:!0,classes:{URLSearchParams:o1,FormData:l1,Blob:u1},protocols:["http","https","file","blob","url","data"]},qh=typeof window<"u"&&typeof document<"u",Th=typeof navigator=="object"&&navigator||void 0,s1=qh&&(!Th||["ReactNative","NativeScript","NS"].indexOf(Th.product)<0),f1=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",c1=qh&&window.location.href||"http://localhost",d1=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:qh,hasStandardBrowserEnv:s1,hasStandardBrowserWebWorkerEnv:f1,navigator:Th,origin:c1},Symbol.toStringTag,{value:"Module"})),ur={...d1,...a1};function p1(o,a){return Rd(o,new ur.classes.URLSearchParams,Object.assign({visitor:function(l,p,m,_){return ur.isNode&&J.isBuffer(l)?(this.append(p,l.toString("base64")),!1):_.defaultVisitor.apply(this,arguments)}},a))}function h1(o){return J.matchAll(/\w+|\[(\w*)]/g,o).map(a=>a[0]==="[]"?"":a[1]||a[0])}function g1(o){const a={},l=Object.keys(o);let p;const m=l.length;let _;for(p=0;p=l.length;return w=!w&&J.isArray(m)?m.length:w,M?(J.hasOwnProp(m,w)?m[w]=[m[w],p]:m[w]=p,!x):((!m[w]||!J.isObject(m[w]))&&(m[w]=[]),a(l,p,m[w],_)&&J.isArray(m[w])&&(m[w]=g1(m[w])),!x)}if(J.isFormData(o)&&J.isFunction(o.entries)){const l={};return J.forEachEntry(o,(p,m)=>{a(h1(p),m,l,0)}),l}return null}function m1(o,a,l){if(J.isString(o))try{return(a||JSON.parse)(o),J.trim(o)}catch(p){if(p.name!=="SyntaxError")throw p}return(l||JSON.stringify)(o)}const rc={transitional:Xm,adapter:["xhr","http","fetch"],transformRequest:[function(a,l){const p=l.getContentType()||"",m=p.indexOf("application/json")>-1,_=J.isObject(a);if(_&&J.isHTMLForm(a)&&(a=new FormData(a)),J.isFormData(a))return m?JSON.stringify(Ym(a)):a;if(J.isArrayBuffer(a)||J.isBuffer(a)||J.isStream(a)||J.isFile(a)||J.isBlob(a)||J.isReadableStream(a))return a;if(J.isArrayBufferView(a))return a.buffer;if(J.isURLSearchParams(a))return l.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),a.toString();let x;if(_){if(p.indexOf("application/x-www-form-urlencoded")>-1)return p1(a,this.formSerializer).toString();if((x=J.isFileList(a))||p.indexOf("multipart/form-data")>-1){const M=this.env&&this.env.FormData;return Rd(x?{"files[]":a}:a,M&&new M,this.formSerializer)}}return _||m?(l.setContentType("application/json",!1),m1(a)):a}],transformResponse:[function(a){const l=this.transitional||rc.transitional,p=l&&l.forcedJSONParsing,m=this.responseType==="json";if(J.isResponse(a)||J.isReadableStream(a))return a;if(a&&J.isString(a)&&(p&&!this.responseType||m)){const w=!(l&&l.silentJSONParsing)&&m;try{return JSON.parse(a)}catch(x){if(w)throw x.name==="SyntaxError"?Xe.from(x,Xe.ERR_BAD_RESPONSE,this,null,this.response):x}}return a}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:ur.classes.FormData,Blob:ur.classes.Blob},validateStatus:function(a){return a>=200&&a<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};J.forEach(["delete","get","head","post","put","patch"],o=>{rc.headers[o]={}});const y1=J.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),v1=o=>{const a={};let l,p,m;return o&&o.split(` +`).forEach(function(w){m=w.indexOf(":"),l=w.substring(0,m).trim().toLowerCase(),p=w.substring(m+1).trim(),!(!l||a[l]&&y1[l])&&(l==="set-cookie"?a[l]?a[l].push(p):a[l]=[p]:a[l]=a[l]?a[l]+", "+p:p)}),a},wg=Symbol("internals");function Qf(o){return o&&String(o).trim().toLowerCase()}function md(o){return o===!1||o==null?o:J.isArray(o)?o.map(md):String(o)}function w1(o){const a=Object.create(null),l=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let p;for(;p=l.exec(o);)a[p[1]]=p[2];return a}const _1=o=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(o.trim());function Ap(o,a,l,p,m){if(J.isFunction(p))return p.call(this,a,l);if(m&&(a=l),!!J.isString(a)){if(J.isString(p))return a.indexOf(p)!==-1;if(J.isRegExp(p))return p.test(a)}}function S1(o){return o.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(a,l,p)=>l.toUpperCase()+p)}function E1(o,a){const l=J.toCamelCase(" "+a);["get","set","has"].forEach(p=>{Object.defineProperty(o,p+l,{value:function(m,_,w){return this[p].call(this,a,m,_,w)},configurable:!0})})}let Vr=class{constructor(a){a&&this.set(a)}set(a,l,p){const m=this;function _(x,M,L){const O=Qf(M);if(!O)throw new Error("header name must be a non-empty string");const R=J.findKey(m,O);(!R||m[R]===void 0||L===!0||L===void 0&&m[R]!==!1)&&(m[R||M]=md(x))}const w=(x,M)=>J.forEach(x,(L,O)=>_(L,O,M));if(J.isPlainObject(a)||a instanceof this.constructor)w(a,l);else if(J.isString(a)&&(a=a.trim())&&!_1(a))w(v1(a),l);else if(J.isHeaders(a))for(const[x,M]of a.entries())_(M,x,p);else a!=null&&_(l,a,p);return this}get(a,l){if(a=Qf(a),a){const p=J.findKey(this,a);if(p){const m=this[p];if(!l)return m;if(l===!0)return w1(m);if(J.isFunction(l))return l.call(this,m,p);if(J.isRegExp(l))return l.exec(m);throw new TypeError("parser must be boolean|regexp|function")}}}has(a,l){if(a=Qf(a),a){const p=J.findKey(this,a);return!!(p&&this[p]!==void 0&&(!l||Ap(this,this[p],p,l)))}return!1}delete(a,l){const p=this;let m=!1;function _(w){if(w=Qf(w),w){const x=J.findKey(p,w);x&&(!l||Ap(p,p[x],x,l))&&(delete p[x],m=!0)}}return J.isArray(a)?a.forEach(_):_(a),m}clear(a){const l=Object.keys(this);let p=l.length,m=!1;for(;p--;){const _=l[p];(!a||Ap(this,this[_],_,a,!0))&&(delete this[_],m=!0)}return m}normalize(a){const l=this,p={};return J.forEach(this,(m,_)=>{const w=J.findKey(p,_);if(w){l[w]=md(m),delete l[_];return}const x=a?S1(_):String(_).trim();x!==_&&delete l[_],l[x]=md(m),p[x]=!0}),this}concat(...a){return this.constructor.concat(this,...a)}toJSON(a){const l=Object.create(null);return J.forEach(this,(p,m)=>{p!=null&&p!==!1&&(l[m]=a&&J.isArray(p)?p.join(", "):p)}),l}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([a,l])=>a+": "+l).join(` +`)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(a){return a instanceof this?a:new this(a)}static concat(a,...l){const p=new this(a);return l.forEach(m=>p.set(m)),p}static accessor(a){const p=(this[wg]=this[wg]={accessors:{}}).accessors,m=this.prototype;function _(w){const x=Qf(w);p[x]||(E1(m,w),p[x]=!0)}return J.isArray(a)?a.forEach(_):_(a),this}};Vr.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);J.reduceDescriptors(Vr.prototype,({value:o},a)=>{let l=a[0].toUpperCase()+a.slice(1);return{get:()=>o,set(p){this[l]=p}}});J.freezeMethods(Vr);function Rp(o,a){const l=this||rc,p=a||l,m=Vr.from(p.headers);let _=p.data;return J.forEach(o,function(x){_=x.call(l,_,m.normalize(),a?a.status:void 0)}),m.normalize(),_}function Zm(o){return!!(o&&o.__CANCEL__)}function Os(o,a,l){Xe.call(this,o??"canceled",Xe.ERR_CANCELED,a,l),this.name="CanceledError"}J.inherits(Os,Xe,{__CANCEL__:!0});function ey(o,a,l){const p=l.config.validateStatus;!l.status||!p||p(l.status)?o(l):a(new Xe("Request failed with status code "+l.status,[Xe.ERR_BAD_REQUEST,Xe.ERR_BAD_RESPONSE][Math.floor(l.status/100)-4],l.config,l.request,l))}function P1(o){const a=/^([-+\w]{1,25})(:?\/\/|:)/.exec(o);return a&&a[1]||""}function x1(o,a){o=o||10;const l=new Array(o),p=new Array(o);let m=0,_=0,w;return a=a!==void 0?a:1e3,function(M){const L=Date.now(),O=p[_];w||(w=L),l[m]=M,p[m]=L;let R=_,G=0;for(;R!==m;)G+=l[R++],R=R%o;if(m=(m+1)%o,m===_&&(_=(_+1)%o),L-w{l=O,m=null,_&&(clearTimeout(_),_=null),o.apply(null,L)};return[(...L)=>{const O=Date.now(),R=O-l;R>=p?w(L,O):(m=L,_||(_=setTimeout(()=>{_=null,w(m)},p-R)))},()=>m&&w(m)]}const _d=(o,a,l=3)=>{let p=0;const m=x1(50,250);return C1(_=>{const w=_.loaded,x=_.lengthComputable?_.total:void 0,M=w-p,L=m(M),O=w<=x;p=w;const R={loaded:w,total:x,progress:x?w/x:void 0,bytes:M,rate:L||void 0,estimated:L&&x&&O?(x-w)/L:void 0,event:_,lengthComputable:x!=null,[a?"download":"upload"]:!0};o(R)},l)},_g=(o,a)=>{const l=o!=null;return[p=>a[0]({lengthComputable:l,total:o,loaded:p}),a[1]]},Sg=o=>(...a)=>J.asap(()=>o(...a)),A1=ur.hasStandardBrowserEnv?((o,a)=>l=>(l=new URL(l,ur.origin),o.protocol===l.protocol&&o.host===l.host&&(a||o.port===l.port)))(new URL(ur.origin),ur.navigator&&/(msie|trident)/i.test(ur.navigator.userAgent)):()=>!0,R1=ur.hasStandardBrowserEnv?{write(o,a,l,p,m,_){const w=[o+"="+encodeURIComponent(a)];J.isNumber(l)&&w.push("expires="+new Date(l).toGMTString()),J.isString(p)&&w.push("path="+p),J.isString(m)&&w.push("domain="+m),_===!0&&w.push("secure"),document.cookie=w.join("; ")},read(o){const a=document.cookie.match(new RegExp("(^|;\\s*)("+o+")=([^;]*)"));return a?decodeURIComponent(a[3]):null},remove(o){this.write(o,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function T1(o){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(o)}function O1(o,a){return a?o.replace(/\/?\/$/,"")+"/"+a.replace(/^\/+/,""):o}function ty(o,a,l){let p=!T1(a);return o&&(p||l==!1)?O1(o,a):a}const Eg=o=>o instanceof Vr?{...o}:o;function la(o,a){a=a||{};const l={};function p(L,O,R,G){return J.isPlainObject(L)&&J.isPlainObject(O)?J.merge.call({caseless:G},L,O):J.isPlainObject(O)?J.merge({},O):J.isArray(O)?O.slice():O}function m(L,O,R,G){if(J.isUndefined(O)){if(!J.isUndefined(L))return p(void 0,L,R,G)}else return p(L,O,R,G)}function _(L,O){if(!J.isUndefined(O))return p(void 0,O)}function w(L,O){if(J.isUndefined(O)){if(!J.isUndefined(L))return p(void 0,L)}else return p(void 0,O)}function x(L,O,R){if(R in a)return p(L,O);if(R in o)return p(void 0,L)}const M={url:_,method:_,data:_,baseURL:w,transformRequest:w,transformResponse:w,paramsSerializer:w,timeout:w,timeoutMessage:w,withCredentials:w,withXSRFToken:w,adapter:w,responseType:w,xsrfCookieName:w,xsrfHeaderName:w,onUploadProgress:w,onDownloadProgress:w,decompress:w,maxContentLength:w,maxBodyLength:w,beforeRedirect:w,transport:w,httpAgent:w,httpsAgent:w,cancelToken:w,socketPath:w,responseEncoding:w,validateStatus:x,headers:(L,O,R)=>m(Eg(L),Eg(O),R,!0)};return J.forEach(Object.keys(Object.assign({},o,a)),function(O){const R=M[O]||m,G=R(o[O],a[O],O);J.isUndefined(G)&&R!==x||(l[O]=G)}),l}const ny=o=>{const a=la({},o);let{data:l,withXSRFToken:p,xsrfHeaderName:m,xsrfCookieName:_,headers:w,auth:x}=a;a.headers=w=Vr.from(w),a.url=Jm(ty(a.baseURL,a.url,a.allowAbsoluteUrls),o.params,o.paramsSerializer),x&&w.set("Authorization","Basic "+btoa((x.username||"")+":"+(x.password?unescape(encodeURIComponent(x.password)):"")));let M;if(J.isFormData(l)){if(ur.hasStandardBrowserEnv||ur.hasStandardBrowserWebWorkerEnv)w.setContentType(void 0);else if((M=w.getContentType())!==!1){const[L,...O]=M?M.split(";").map(R=>R.trim()).filter(Boolean):[];w.setContentType([L||"multipart/form-data",...O].join("; "))}}if(ur.hasStandardBrowserEnv&&(p&&J.isFunction(p)&&(p=p(a)),p||p!==!1&&A1(a.url))){const L=m&&_&&R1.read(_);L&&w.set(m,L)}return a},k1=typeof XMLHttpRequest<"u",L1=k1&&function(o){return new Promise(function(l,p){const m=ny(o);let _=m.data;const w=Vr.from(m.headers).normalize();let{responseType:x,onUploadProgress:M,onDownloadProgress:L}=m,O,R,G,F,U;function H(){F&&F(),U&&U(),m.cancelToken&&m.cancelToken.unsubscribe(O),m.signal&&m.signal.removeEventListener("abort",O)}let C=new XMLHttpRequest;C.open(m.method.toUpperCase(),m.url,!0),C.timeout=m.timeout;function I(){if(!C)return;const Q=Vr.from("getAllResponseHeaders"in C&&C.getAllResponseHeaders()),te={data:!x||x==="text"||x==="json"?C.responseText:C.response,status:C.status,statusText:C.statusText,headers:Q,config:o,request:C};ey(function(fe){l(fe),H()},function(fe){p(fe),H()},te),C=null}"onloadend"in C?C.onloadend=I:C.onreadystatechange=function(){!C||C.readyState!==4||C.status===0&&!(C.responseURL&&C.responseURL.indexOf("file:")===0)||setTimeout(I)},C.onabort=function(){C&&(p(new Xe("Request aborted",Xe.ECONNABORTED,o,C)),C=null)},C.onerror=function(){p(new Xe("Network Error",Xe.ERR_NETWORK,o,C)),C=null},C.ontimeout=function(){let ee=m.timeout?"timeout of "+m.timeout+"ms exceeded":"timeout exceeded";const te=m.transitional||Xm;m.timeoutErrorMessage&&(ee=m.timeoutErrorMessage),p(new Xe(ee,te.clarifyTimeoutError?Xe.ETIMEDOUT:Xe.ECONNABORTED,o,C)),C=null},_===void 0&&w.setContentType(null),"setRequestHeader"in C&&J.forEach(w.toJSON(),function(ee,te){C.setRequestHeader(te,ee)}),J.isUndefined(m.withCredentials)||(C.withCredentials=!!m.withCredentials),x&&x!=="json"&&(C.responseType=m.responseType),L&&([G,U]=_d(L,!0),C.addEventListener("progress",G)),M&&C.upload&&([R,F]=_d(M),C.upload.addEventListener("progress",R),C.upload.addEventListener("loadend",F)),(m.cancelToken||m.signal)&&(O=Q=>{C&&(p(!Q||Q.type?new Os(null,o,C):Q),C.abort(),C=null)},m.cancelToken&&m.cancelToken.subscribe(O),m.signal&&(m.signal.aborted?O():m.signal.addEventListener("abort",O)));const D=P1(m.url);if(D&&ur.protocols.indexOf(D)===-1){p(new Xe("Unsupported protocol "+D+":",Xe.ERR_BAD_REQUEST,o));return}C.send(_||null)})},I1=(o,a)=>{const{length:l}=o=o?o.filter(Boolean):[];if(a||l){let p=new AbortController,m;const _=function(L){if(!m){m=!0,x();const O=L instanceof Error?L:this.reason;p.abort(O instanceof Xe?O:new Os(O instanceof Error?O.message:O))}};let w=a&&setTimeout(()=>{w=null,_(new Xe(`timeout ${a} of ms exceeded`,Xe.ETIMEDOUT))},a);const x=()=>{o&&(w&&clearTimeout(w),w=null,o.forEach(L=>{L.unsubscribe?L.unsubscribe(_):L.removeEventListener("abort",_)}),o=null)};o.forEach(L=>L.addEventListener("abort",_));const{signal:M}=p;return M.unsubscribe=()=>J.asap(x),M}},N1=function*(o,a){let l=o.byteLength;if(l{const m=F1(o,a);let _=0,w,x=M=>{w||(w=!0,p&&p(M))};return new ReadableStream({async pull(M){try{const{done:L,value:O}=await m.next();if(L){x(),M.close();return}let R=O.byteLength;if(l){let G=_+=R;l(G)}M.enqueue(new Uint8Array(O))}catch(L){throw x(L),L}},cancel(M){return x(M),m.return()}},{highWaterMark:2})},Td=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",ry=Td&&typeof ReadableStream=="function",M1=Td&&(typeof TextEncoder=="function"?(o=>a=>o.encode(a))(new TextEncoder):async o=>new Uint8Array(await new Response(o).arrayBuffer())),iy=(o,...a)=>{try{return!!o(...a)}catch{return!1}},U1=ry&&iy(()=>{let o=!1;const a=new Request(ur.origin,{body:new ReadableStream,method:"POST",get duplex(){return o=!0,"half"}}).headers.has("Content-Type");return o&&!a}),xg=64*1024,Oh=ry&&iy(()=>J.isReadableStream(new Response("").body)),Sd={stream:Oh&&(o=>o.body)};Td&&(o=>{["text","arrayBuffer","blob","formData","stream"].forEach(a=>{!Sd[a]&&(Sd[a]=J.isFunction(o[a])?l=>l[a]():(l,p)=>{throw new Xe(`Response type '${a}' is not supported`,Xe.ERR_NOT_SUPPORT,p)})})})(new Response);const B1=async o=>{if(o==null)return 0;if(J.isBlob(o))return o.size;if(J.isSpecCompliantForm(o))return(await new Request(ur.origin,{method:"POST",body:o}).arrayBuffer()).byteLength;if(J.isArrayBufferView(o)||J.isArrayBuffer(o))return o.byteLength;if(J.isURLSearchParams(o)&&(o=o+""),J.isString(o))return(await M1(o)).byteLength},z1=async(o,a)=>{const l=J.toFiniteNumber(o.getContentLength());return l??B1(a)},$1=Td&&(async o=>{let{url:a,method:l,data:p,signal:m,cancelToken:_,timeout:w,onDownloadProgress:x,onUploadProgress:M,responseType:L,headers:O,withCredentials:R="same-origin",fetchOptions:G}=ny(o);L=L?(L+"").toLowerCase():"text";let F=I1([m,_&&_.toAbortSignal()],w),U;const H=F&&F.unsubscribe&&(()=>{F.unsubscribe()});let C;try{if(M&&U1&&l!=="get"&&l!=="head"&&(C=await z1(O,p))!==0){let te=new Request(a,{method:"POST",body:p,duplex:"half"}),oe;if(J.isFormData(p)&&(oe=te.headers.get("content-type"))&&O.setContentType(oe),te.body){const[fe,ve]=_g(C,_d(Sg(M)));p=Pg(te.body,xg,fe,ve)}}J.isString(R)||(R=R?"include":"omit");const I="credentials"in Request.prototype;U=new Request(a,{...G,signal:F,method:l.toUpperCase(),headers:O.normalize().toJSON(),body:p,duplex:"half",credentials:I?R:void 0});let D=await fetch(U);const Q=Oh&&(L==="stream"||L==="response");if(Oh&&(x||Q&&H)){const te={};["status","statusText","headers"].forEach(De=>{te[De]=D[De]});const oe=J.toFiniteNumber(D.headers.get("content-length")),[fe,ve]=x&&_g(oe,_d(Sg(x),!0))||[];D=new Response(Pg(D.body,xg,fe,()=>{ve&&ve(),H&&H()}),te)}L=L||"text";let ee=await Sd[J.findKey(Sd,L)||"text"](D,o);return!Q&&H&&H(),await new Promise((te,oe)=>{ey(te,oe,{data:ee,headers:Vr.from(D.headers),status:D.status,statusText:D.statusText,config:o,request:U})})}catch(I){throw H&&H(),I&&I.name==="TypeError"&&/fetch/i.test(I.message)?Object.assign(new Xe("Network Error",Xe.ERR_NETWORK,o,U),{cause:I.cause||I}):Xe.from(I,I&&I.code,o,U)}}),kh={http:t1,xhr:L1,fetch:$1};J.forEach(kh,(o,a)=>{if(o){try{Object.defineProperty(o,"name",{value:a})}catch{}Object.defineProperty(o,"adapterName",{value:a})}});const Cg=o=>`- ${o}`,q1=o=>J.isFunction(o)||o===null||o===!1,oy={getAdapter:o=>{o=J.isArray(o)?o:[o];const{length:a}=o;let l,p;const m={};for(let _=0;_`adapter ${x} `+(M===!1?"is not supported by the environment":"is not available in the build"));let w=a?_.length>1?`since : +`+_.map(Cg).join(` +`):" "+Cg(_[0]):"as no adapter specified";throw new Xe("There is no suitable adapter to dispatch the request "+w,"ERR_NOT_SUPPORT")}return p},adapters:kh};function Tp(o){if(o.cancelToken&&o.cancelToken.throwIfRequested(),o.signal&&o.signal.aborted)throw new Os(null,o)}function Ag(o){return Tp(o),o.headers=Vr.from(o.headers),o.data=Rp.call(o,o.transformRequest),["post","put","patch"].indexOf(o.method)!==-1&&o.headers.setContentType("application/x-www-form-urlencoded",!1),oy.getAdapter(o.adapter||rc.adapter)(o).then(function(p){return Tp(o),p.data=Rp.call(o,o.transformResponse,p),p.headers=Vr.from(p.headers),p},function(p){return Zm(p)||(Tp(o),p&&p.response&&(p.response.data=Rp.call(o,o.transformResponse,p.response),p.response.headers=Vr.from(p.response.headers))),Promise.reject(p)})}const ly="1.8.4",Od={};["object","boolean","number","function","string","symbol"].forEach((o,a)=>{Od[o]=function(p){return typeof p===o||"a"+(a<1?"n ":" ")+o}});const Rg={};Od.transitional=function(a,l,p){function m(_,w){return"[Axios v"+ly+"] Transitional option '"+_+"'"+w+(p?". "+p:"")}return(_,w,x)=>{if(a===!1)throw new Xe(m(w," has been removed"+(l?" in "+l:"")),Xe.ERR_DEPRECATED);return l&&!Rg[w]&&(Rg[w]=!0,console.warn(m(w," has been deprecated since v"+l+" and will be removed in the near future"))),a?a(_,w,x):!0}};Od.spelling=function(a){return(l,p)=>(console.warn(`${p} is likely a misspelling of ${a}`),!0)};function b1(o,a,l){if(typeof o!="object")throw new Xe("options must be an object",Xe.ERR_BAD_OPTION_VALUE);const p=Object.keys(o);let m=p.length;for(;m-- >0;){const _=p[m],w=a[_];if(w){const x=o[_],M=x===void 0||w(x,_,o);if(M!==!0)throw new Xe("option "+_+" must be "+M,Xe.ERR_BAD_OPTION_VALUE);continue}if(l!==!0)throw new Xe("Unknown option "+_,Xe.ERR_BAD_OPTION)}}const yd={assertOptions:b1,validators:Od},Uo=yd.validators;let oa=class{constructor(a){this.defaults=a,this.interceptors={request:new vg,response:new vg}}async request(a,l){try{return await this._request(a,l)}catch(p){if(p instanceof Error){let m={};Error.captureStackTrace?Error.captureStackTrace(m):m=new Error;const _=m.stack?m.stack.replace(/^.+\n/,""):"";try{p.stack?_&&!String(p.stack).endsWith(_.replace(/^.+\n.+\n/,""))&&(p.stack+=` +`+_):p.stack=_}catch{}}throw p}}_request(a,l){typeof a=="string"?(l=l||{},l.url=a):l=a||{},l=la(this.defaults,l);const{transitional:p,paramsSerializer:m,headers:_}=l;p!==void 0&&yd.assertOptions(p,{silentJSONParsing:Uo.transitional(Uo.boolean),forcedJSONParsing:Uo.transitional(Uo.boolean),clarifyTimeoutError:Uo.transitional(Uo.boolean)},!1),m!=null&&(J.isFunction(m)?l.paramsSerializer={serialize:m}:yd.assertOptions(m,{encode:Uo.function,serialize:Uo.function},!0)),l.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?l.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:l.allowAbsoluteUrls=!0),yd.assertOptions(l,{baseUrl:Uo.spelling("baseURL"),withXsrfToken:Uo.spelling("withXSRFToken")},!0),l.method=(l.method||this.defaults.method||"get").toLowerCase();let w=_&&J.merge(_.common,_[l.method]);_&&J.forEach(["delete","get","head","post","put","patch","common"],U=>{delete _[U]}),l.headers=Vr.concat(w,_);const x=[];let M=!0;this.interceptors.request.forEach(function(H){typeof H.runWhen=="function"&&H.runWhen(l)===!1||(M=M&&H.synchronous,x.unshift(H.fulfilled,H.rejected))});const L=[];this.interceptors.response.forEach(function(H){L.push(H.fulfilled,H.rejected)});let O,R=0,G;if(!M){const U=[Ag.bind(this),void 0];for(U.unshift.apply(U,x),U.push.apply(U,L),G=U.length,O=Promise.resolve(l);R{if(!p._listeners)return;let _=p._listeners.length;for(;_-- >0;)p._listeners[_](m);p._listeners=null}),this.promise.then=m=>{let _;const w=new Promise(x=>{p.subscribe(x),_=x}).then(m);return w.cancel=function(){p.unsubscribe(_)},w},a(function(_,w,x){p.reason||(p.reason=new Os(_,w,x),l(p.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(a){if(this.reason){a(this.reason);return}this._listeners?this._listeners.push(a):this._listeners=[a]}unsubscribe(a){if(!this._listeners)return;const l=this._listeners.indexOf(a);l!==-1&&this._listeners.splice(l,1)}toAbortSignal(){const a=new AbortController,l=p=>{a.abort(p)};return this.subscribe(l),a.signal.unsubscribe=()=>this.unsubscribe(l),a.signal}static source(){let a;return{token:new uy(function(m){a=m}),cancel:a}}};function H1(o){return function(l){return o.apply(null,l)}}function j1(o){return J.isObject(o)&&o.isAxiosError===!0}const Lh={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Lh).forEach(([o,a])=>{Lh[a]=o});function ay(o){const a=new oa(o),l=zm(oa.prototype.request,a);return J.extend(l,oa.prototype,a,{allOwnKeys:!0}),J.extend(l,a,null,{allOwnKeys:!0}),l.create=function(m){return ay(la(o,m))},l}const tn=ay(rc);tn.Axios=oa;tn.CanceledError=Os;tn.CancelToken=W1;tn.isCancel=Zm;tn.VERSION=ly;tn.toFormData=Rd;tn.AxiosError=Xe;tn.Cancel=tn.CanceledError;tn.all=function(a){return Promise.all(a)};tn.spread=H1;tn.isAxiosError=j1;tn.mergeConfig=la;tn.AxiosHeaders=Vr;tn.formToJSON=o=>Ym(J.isHTMLForm(o)?new FormData(o):o);tn.getAdapter=oy.getAdapter;tn.HttpStatusCode=Lh;tn.default=tn;const{Axios:qS,AxiosError:bS,CanceledError:WS,isCancel:HS,CancelToken:jS,VERSION:VS,all:GS,Cancel:KS,isAxiosError:QS,spread:JS,toFormData:XS,AxiosHeaders:YS,HttpStatusCode:ZS,formToJSON:eE,getAdapter:tE,mergeConfig:nE}=tn;var Xf={exports:{}};/** + * @license + * Lodash + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */var V1=Xf.exports,Tg;function G1(){return Tg||(Tg=1,function(o,a){(function(){var l,p="4.17.21",m=200,_="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",w="Expected a function",x="Invalid `variable` option passed into `_.template`",M="__lodash_hash_undefined__",L=500,O="__lodash_placeholder__",R=1,G=2,F=4,U=1,H=2,C=1,I=2,D=4,Q=8,ee=16,te=32,oe=64,fe=128,ve=256,De=512,Re=30,je="...",we=800,Je=16,Ye=1,vt=2,wt=3,He=1/0,Y=9007199254740991,_e=17976931348623157e292,he=NaN,A=4294967295,X=A-1,ue=A>>>1,xe=[["ary",fe],["bind",C],["bindKey",I],["curry",Q],["curryRight",ee],["flip",De],["partial",te],["partialRight",oe],["rearg",ve]],de="[object Arguments]",Ne="[object Array]",rt="[object AsyncFunction]",Le="[object Boolean]",Me="[object Date]",Ue="[object DOMException]",dt="[object Error]",ot="[object Function]",Ct="[object GeneratorFunction]",st="[object Map]",Kt="[object Number]",Qt="[object Null]",At="[object Object]",hn="[object Promise]",Cr="[object Proxy]",nn="[object RegExp]",St="[object Set]",Cn="[object String]",Jn="[object Symbol]",Gr="[object Undefined]",ci="[object WeakMap]",_l="[object WeakSet]",$n="[object ArrayBuffer]",qn="[object DataView]",ar="[object Float32Array]",jt="[object Float64Array]",sr="[object Int8Array]",ao="[object Int16Array]",so="[object Int32Array]",Kr="[object Uint8Array]",fr="[object Uint8ClampedArray]",b="[object Uint16Array]",V="[object Uint32Array]",it=/\b__p \+= '';/g,tt=/\b(__p \+=) '' \+/g,pt=/(__e\(.*?\)|\b__t\)) \+\n'';/g,Be=/&(?:amp|lt|gt|quot|#39);/g,gn=/[&<>"']/g,Xn=RegExp(Be.source),Vt=RegExp(gn.source),bn=/<%-([\s\S]+?)%>/g,di=/<%([\s\S]+?)%>/g,Yn=/<%=([\s\S]+?)%>/g,Jt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,$o=/^\w*$/,pi=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,hi=/[\\^$.*+?()[\]{}|]/g,cr=RegExp(hi.source),Bi=/^\s+/,dr=/\s/,Ar=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,An=/\{\n\/\* \[wrapped with (.+)\] \*/,fo=/,? & /,Sl=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,qo=/[()=,{}\[\]\/\s]/,El=/\\(\\)?/g,pr=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Rn=/\w*$/,Pl=/^[-+]0x[0-9a-f]+$/i,bo=/^0b[01]+$/i,Qr=/^\[object .+?Constructor\]$/,zi=/^0o[0-7]+$/i,xl=/^(?:0|[1-9]\d*)$/,hr=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Cl=/($^)/,Ls=/['\n\r\u2028\u2029\\]/g,Lt="\\ud800-\\udfff",Is="\\u0300-\\u036f",su="\\ufe20-\\ufe2f",Wo="\\u20d0-\\u20ff",Ho=Is+su+Wo,ua="\\u2700-\\u27bf",Rr="a-z\\xdf-\\xf6\\xf8-\\xff",Al="\\xac\\xb1\\xd7\\xf7",Tr="\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf",Ns="\\u2000-\\u206f",gr=" \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",aa="A-Z\\xc0-\\xd6\\xd8-\\xde",sa="\\ufe0e\\ufe0f",jo=Al+Tr+Ns+gr,co="['’]",gi="["+Lt+"]",$i="["+jo+"]",mi="["+Ho+"]",fa="\\d+",Fs="["+ua+"]",Rl="["+Rr+"]",fu="[^"+Lt+jo+fa+ua+Rr+aa+"]",po="\\ud83c[\\udffb-\\udfff]",Vo="(?:"+mi+"|"+po+")",ca="[^"+Lt+"]",ho="(?:\\ud83c[\\udde6-\\uddff]){2}",lt="[\\ud800-\\udbff][\\udc00-\\udfff]",Zn="["+aa+"]",cu="\\u200d",Tl="(?:"+Rl+"|"+fu+")",Jr="(?:"+Zn+"|"+fu+")",du="(?:"+co+"(?:d|ll|m|re|s|t|ve))?",pu="(?:"+co+"(?:D|LL|M|RE|S|T|VE))?",Ol=Vo+"?",Go="["+sa+"]?",yi="(?:"+cu+"(?:"+[ca,ho,lt].join("|")+")"+Go+Ol+")*",Tn="\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Xr="\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])",go=Go+Ol+yi,vi="(?:"+[Fs,ho,lt].join("|")+")"+go,wi="(?:"+[ca+mi+"?",mi,ho,lt,gi].join("|")+")",hu=RegExp(co,"g"),da=RegExp(mi,"g"),_i=RegExp(po+"(?="+po+")|"+wi+go,"g"),pa=RegExp([Zn+"?"+Rl+"+"+du+"(?="+[$i,Zn,"$"].join("|")+")",Jr+"+"+pu+"(?="+[$i,Zn+Tl,"$"].join("|")+")",Zn+"?"+Tl+"+"+du,Zn+"+"+pu,Xr,Tn,fa,vi].join("|"),"g"),gu=RegExp("["+cu+Lt+Ho+sa+"]"),Si=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,mu=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Ds=-1,_t={};_t[ar]=_t[jt]=_t[sr]=_t[ao]=_t[so]=_t[Kr]=_t[fr]=_t[b]=_t[V]=!0,_t[de]=_t[Ne]=_t[$n]=_t[Le]=_t[qn]=_t[Me]=_t[dt]=_t[ot]=_t[st]=_t[Kt]=_t[At]=_t[nn]=_t[St]=_t[Cn]=_t[ci]=!1;var ht={};ht[de]=ht[Ne]=ht[$n]=ht[qn]=ht[Le]=ht[Me]=ht[ar]=ht[jt]=ht[sr]=ht[ao]=ht[so]=ht[st]=ht[Kt]=ht[At]=ht[nn]=ht[St]=ht[Cn]=ht[Jn]=ht[Kr]=ht[fr]=ht[b]=ht[V]=!0,ht[dt]=ht[ot]=ht[ci]=!1;var S={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"},B={"&":"&","<":"<",">":">",'"':""","'":"'"},ie={"&":"&","<":"<",">":">",""":'"',"'":"'"},Se={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Et=parseFloat,be=parseInt,kt=typeof Bo=="object"&&Bo&&Bo.Object===Object&&Bo,Xt=typeof self=="object"&&self&&self.Object===Object&&self,Ve=kt||Xt||Function("return this")(),Pt=a&&!a.nodeType&&a,Ut=Pt&&!0&&o&&!o.nodeType&&o,Wn=Ut&&Ut.exports===Pt,$t=Wn&&kt.process,Rt=function(){try{var z=Ut&&Ut.require&&Ut.require("util").types;return z||$t&&$t.binding&&$t.binding("util")}catch{}}(),On=Rt&&Rt.isArrayBuffer,qt=Rt&&Rt.isDate,wn=Rt&&Rt.isMap,Or=Rt&&Rt.isRegExp,qi=Rt&&Rt.isSet,Ko=Rt&&Rt.isTypedArray;function rn(z,Z,j){switch(j.length){case 0:return z.call(Z);case 1:return z.call(Z,j[0]);case 2:return z.call(Z,j[0],j[1]);case 3:return z.call(Z,j[0],j[1],j[2])}return z.apply(Z,j)}function Ms(z,Z,j,me){for(var We=-1,gt=z==null?0:z.length;++We-1}function Bs(z,Z,j){for(var me=-1,We=z==null?0:z.length;++me-1;);return j}function js(z,Z){for(var j=z.length;j--&&kl(Z,z[j],0)>-1;);return j}function cc(z,Z){for(var j=z.length,me=0;j--;)z[j]===Z&&++me;return me}var dc=ya(S),pc=ya(B);function hc(z){return"\\"+Se[z]}function Ll(z,Z){return z==null?l:z[Z]}function Il(z){return gu.test(z)}function Bd(z){return Si.test(z)}function zd(z){for(var Z,j=[];!(Z=z.next()).done;)j.push(Z.value);return j}function va(z){var Z=-1,j=Array(z.size);return z.forEach(function(me,We){j[++Z]=[We,me]}),j}function Vs(z,Z){return function(j){return z(Z(j))}}function kr(z,Z){for(var j=-1,me=z.length,We=0,gt=[];++j-1}function Cc(n,r){var s=this.__data__,d=Dn(s,n);return d<0?(++this.size,s.push([n,r])):s[d][1]=r,this}Hn.prototype.clear=Wl,Hn.prototype.delete=nr,Hn.prototype.get=Ia,Hn.prototype.has=xc,Hn.prototype.set=Cc;function Ir(n){var r=-1,s=n==null?0:n.length;for(this.clear();++r=r?n:r)),n}function rr(n,r,s,d,h,v){var P,k=r&R,$=r&G,ne=r&F;if(s&&(P=h?s(n,d,h,v):s(n)),P!==l)return P;if(!en(n))return n;var re=Ke(n);if(re){if(P=ju(n),!k)return jn(n,P)}else{var se=En(n),ge=se==ot||se==Ct;if(lu(n))return gf(n,k);if(se==At||se==de||ge&&!h){if(P=$||ge?{}:Pn(n),!k)return $?Gd(n,Zr(P,n)):Qa(n,Mt(P,n))}else{if(!ht[se])return h?n:{};P=Kd(n,se,k)}}v||(v=new Fn);var Te=v.get(n);if(Te)return Te;v.set(n,P),Kh(n)?n.forEach(function(qe){P.add(rr(qe,r,s,qe,n,v))}):Vh(n)&&n.forEach(function(qe,at){P.set(at,rr(qe,r,s,at,n,v))});var $e=ne?$?bu:qu:$?Wr:Bn,nt=re?l:$e(n);return kn(nt||n,function(qe,at){nt&&(at=qe,qe=n[at]),nl(P,at,rr(qe,r,s,at,n,v))}),P}function Oc(n){var r=Bn(n);return function(s){return Ou(s,n,r)}}function Ou(n,r,s){var d=s.length;if(n==null)return!d;for(n=Tt(n);d--;){var h=s[d],v=r[h],P=n[h];if(P===l&&!(h in n)||!v(P))return!1}return!0}function ef(n,r,s){if(typeof n!="function")throw new Lr(w);return ru(function(){n.apply(l,s)},r)}function Ti(n,r,s,d){var h=-1,v=ga,P=!0,k=n.length,$=[],ne=r.length;if(!k)return $;s&&(r=It(r,mr(s))),d?(v=Bs,P=!1):r.length>=m&&(v=bi,P=!1,r=new Zo(r));e:for(;++hh?0:h+s),d=d===l||d>h?h:et(d),d<0&&(d+=h),d=s>d?0:Jh(d);s0&&s(k)?r>1?Gt(k,r-1,s,d,h):yo(h,k):d||(h[h.length]=k)}return h}var Ua=Xa(),Lu=Xa(!0);function _r(n,r){return n&&Ua(n,r,Bn)}function Co(n,r){return n&&Lu(n,r,Bn)}function jl(n,r){return mo(r,function(s){return ml(n[s])})}function Ki(n,r){r=Ii(r,n);for(var s=0,d=r.length;n!=null&&sr}function Dr(n,r){return n!=null&&mt.call(n,r)}function il(n,r){return n!=null&&r in Tt(n)}function nf(n,r,s){return n>=Ln(r,s)&&n=120&&re.length>=120)?new Zo(P&&re):l}re=n[0];var se=-1,ge=k[0];e:for(;++se-1;)k!==n&&Ca.call(k,$,1),Ca.call(n,$,1);return n}function sn(n,r){for(var s=n?r.length:0,d=s-1;s--;){var h=r[s];if(s==d||h!==v){var v=h;zt(h)?Ca.call(n,h,1):Va(n,h)}}return n}function Kl(n,r){return n+wo(xu()*(r-n+1))}function Du(n,r,s,d){for(var h=-1,v=ln(Xo((r-n)/(s||1)),0),P=j(v);v--;)P[d?v:++h]=n,n+=s;return P}function ll(n,r){var s="";if(!n||r<1||r>Y)return s;do r%2&&(s+=n),r=wo(r/2),r&&(n+=n);while(r);return s}function Ze(n,r){return Sr(ls(n,r,Hr),n+"")}function Mn(n){return Ai(Cs(n))}function sf(n,r){var s=Cs(n);return us(s,Gi(r,0,s.length))}function ul(n,r,s,d){if(!en(n))return n;r=Ii(r,n);for(var h=-1,v=r.length,P=v-1,k=n;k!=null&&++hh?0:h+r),s=s>h?h:s,s<0&&(s+=h),h=r>s?0:s-r>>>0,r>>>=0;for(var v=j(h);++d>>1,P=n[v];P!==null&&!ui(P)&&(s?P<=r:P=m){var ne=r?null:bc(n);if(ne)return vo(ne);P=!1,h=bi,$=new Zo}else $=r?[]:k;e:for(;++d=d?n:Un(n,r,s)}var hf=Sc||function(n){return Ve.clearTimeout(n)};function gf(n,r){if(r)return n.slice();var s=n.length,d=Ks?Ks(s):new n.constructor(s);return n.copy(d),d}function Bu(n){var r=new n.constructor(n.byteLength);return new Eu(r).set(new Eu(n)),r}function Dc(n,r){var s=r?Bu(n.buffer):n.buffer;return new n.constructor(s,n.byteOffset,n.byteLength)}function Mc(n){var r=new n.constructor(n.source,Rn.exec(n));return r.lastIndex=n.lastIndex,r}function Uc(n){return vr?Tt(vr.call(n)):{}}function Bc(n,r){var s=r?Bu(n.buffer):n.buffer;return new n.constructor(s,n.byteOffset,n.length)}function mf(n,r){if(n!==r){var s=n!==l,d=n===null,h=n===n,v=ui(n),P=r!==l,k=r===null,$=r===r,ne=ui(r);if(!k&&!ne&&!v&&n>r||v&&P&&$&&!k&&!ne||d&&P&&$||!s&&$||!h)return 1;if(!d&&!v&&!ne&&n=k)return $;var ne=s[d];return $*(ne=="desc"?-1:1)}}return n.index-r.index}function zc(n,r,s,d){for(var h=-1,v=n.length,P=s.length,k=-1,$=r.length,ne=ln(v-P,0),re=j($+ne),se=!d;++k<$;)re[k]=r[k];for(;++h1?s[h-1]:l,P=h>2?s[2]:l;for(v=n.length>3&&typeof v=="function"?(h--,v):l,P&&Gn(s[0],s[1],P)&&(v=h<3?l:v,h=1),r=Tt(r);++d-1?h[v?r[P]:P]:l}}function Za(n){return Fi(function(r){var s=r.length,d=s,h=In.prototype.thru;for(n&&r.reverse();d--;){var v=r[d];if(typeof v!="function")throw new Lr(w);if(h&&!P&&tu(v)=="wrapper")var P=new In([],!0)}for(d=P?d:s;++d1&&ct.reverse(),re&&$k))return!1;var ne=v.get(n),re=v.get(r);if(ne&&re)return ne==r&&re==n;var se=-1,ge=!0,Te=s&H?new Zo:l;for(v.set(n,r),v.set(r,n);++se1?"& ":"")+r[d],r=r.join(s>2?", ":" "),n.replace(Ar,`{ +/* [wrapped with `+r+`] */ +`)}function is(n){return Ke(n)||ta(n)||!!(_c&&n&&n[_c])}function zt(n,r){var s=typeof n;return r=r??Y,!!r&&(s=="number"||s!="symbol"&&xl.test(n))&&n>-1&&n%1==0&&n0){if(++r>=we)return arguments[0]}else r=0;return n.apply(l,arguments)}}function us(n,r){var s=-1,d=n.length,h=d-1;for(r=r===l?d:r;++s1?n[r-1]:l;return s=typeof s=="function"?(n.pop(),s):l,Wt(n,s)});function ms(n){var r=y(n);return r.__chain__=!0,r}function op(n,r){return r(n),n}function li(n,r){return r(n)}var ys=Fi(function(n){var r=n.length,s=r?n[0]:0,d=this.__wrapped__,h=function(v){return Ma(v,n)};return r>1||this.__actions__.length||!(d instanceof Ge)||!zt(s)?this.thru(h):(d=d.slice(s,+s+(r?1:0)),d.__actions__.push({func:li,args:[h],thisArg:l}),new In(d,this.__chain__).thru(function(v){return r&&!v.length&&v.push(l),v}))});function hl(){return ms(this)}function vs(){return new In(this.value(),this.__chain__)}function bf(){this.__values__===l&&(this.__values__=Qh(this.value()));var n=this.__index__>=this.__values__.length,r=n?l:this.__values__[this.__index__++];return{done:n,value:r}}function Wf(){return this}function lp(n){for(var r,s=this;s instanceof xi;){var d=Xc(s);d.__index__=0,d.__values__=l,r?h.__wrapped__=d:r=d;var h=d;s=s.__wrapped__}return h.__wrapped__=n,r}function Hf(){var n=this.__wrapped__;if(n instanceof Ge){var r=n;return this.__actions__.length&&(r=new Ge(this)),r=r.reverse(),r.__actions__.push({func:li,args:[ps],thisArg:l}),new In(r,this.__chain__)}return this.thru(ps)}function up(){return Jl(this.__wrapped__,this.__actions__)}var ld=Ja(function(n,r,s){mt.call(n,s)?++n[s]:Ri(n,s,1)});function ud(n,r,s){var d=Ke(n)?Us:ku;return s&&Gn(n,r,s)&&(r=l),d(n,Fe(r,3))}function ws(n,r){var s=Ke(n)?mo:tf;return s(n,Fe(r,3))}var _s=sl(Lo),ad=sl(Qu);function jf(n,r){return Gt(gl(n,r),1)}function ap(n,r){return Gt(gl(n,r),He)}function sd(n,r,s){return s=s===l?1:et(s),Gt(gl(n,r),s)}function Ss(n,r){var s=Ke(n)?kn:Oi;return s(n,Fe(r,3))}function Zu(n,r){var s=Ke(n)?ha:kc;return s(n,Fe(r,3))}var Vf=Ja(function(n,r,s){mt.call(n,s)?n[s].push(r):Ri(n,s,[r])});function Es(n,r,s,d){n=br(n)?n:Cs(n),s=s&&!d?et(s):0;var h=n.length;return s<0&&(s=ln(h+s,0)),dd(n)?s<=h&&n.indexOf(r,s)>-1:!!h&&kl(n,r,s)>-1}var fd=Ze(function(n,r,s){var d=-1,h=typeof r=="function",v=br(n)?j(n.length):[];return Oi(n,function(P){v[++d]=h?rn(r,P,s):Mr(P,r,s)}),v}),sp=Ja(function(n,r,s){Ri(n,s,r)});function gl(n,r){var s=Ke(n)?It:lf;return s(n,Fe(r,3))}function fp(n,r,s,d){return n==null?[]:(Ke(r)||(r=r==null?[]:[r]),s=d?l:s,Ke(s)||(s=s==null?[]:[s]),Fu(n,r,s))}var ea=Ja(function(n,r,s){n[s?0:1].push(r)},function(){return[[],[]]});function cp(n,r,s){var d=Ke(n)?zs:ac,h=arguments.length<3;return d(n,Fe(r,4),s,h,Oi)}function Ps(n,r,s){var d=Ke(n)?Nd:ac,h=arguments.length<3;return d(n,Fe(r,4),s,h,kc)}function e(n,r){var s=Ke(n)?mo:tf;return s(n,pe(Fe(r,3)))}function t(n){var r=Ke(n)?Ai:Mn;return r(n)}function i(n,r,s){(s?Gn(n,r,s):r===l)?r=1:r=et(r);var d=Ke(n)?tl:sf;return d(n,r)}function u(n){var r=Ke(n)?Tc:Br;return r(n)}function f(n){if(n==null)return 0;if(br(n))return dd(n)?Qo(n):n.length;var r=En(n);return r==st||r==St?n.size:Xi(n).length}function c(n,r,s){var d=Ke(n)?$s:ff;return s&&Gn(n,r,s)&&(r=l),d(n,Fe(r,3))}var g=Ze(function(n,r){if(n==null)return[];var s=r.length;return s>1&&Gn(n,r[0],r[1])?r=[]:s>2&&Gn(r[0],r[1],r[2])&&(r=[r[0]]),Fu(n,Gt(r,1),[])}),E=Ft||function(){return Ve.Date.now()};function T(n,r){if(typeof r!="function")throw new Lr(w);return n=et(n),function(){if(--n<1)return r.apply(this,arguments)}}function K(n,r,s){return r=s?l:r,r=n&&r==null?n.length:r,Ni(n,fe,l,l,l,l,r)}function ae(n,r){var s;if(typeof r!="function")throw new Lr(w);return n=et(n),function(){return--n>0&&(s=r.apply(this,arguments)),n<=1&&(r=l),s}}var ce=Ze(function(n,r,s){var d=C;if(s.length){var h=kr(s,eo(ce));d|=te}return Ni(n,d,r,s,h)}),le=Ze(function(n,r,s){var d=C|I;if(s.length){var h=kr(s,eo(le));d|=te}return Ni(r,d,n,s,h)});function ye(n,r,s){r=s?l:r;var d=Ni(n,Q,l,l,l,l,l,r);return d.placeholder=ye.placeholder,d}function Pe(n,r,s){r=s?l:r;var d=Ni(n,ee,l,l,l,l,l,r);return d.placeholder=Pe.placeholder,d}function Ce(n,r,s){var d,h,v,P,k,$,ne=0,re=!1,se=!1,ge=!0;if(typeof n!="function")throw new Lr(w);r=Mi(r)||0,en(s)&&(re=!!s.leading,se="maxWait"in s,v=se?ln(Mi(s.maxWait)||0,r):v,ge="trailing"in s?!!s.trailing:ge);function Te(dn){var io=d,vl=h;return d=h=l,ne=dn,P=n.apply(vl,io),P}function $e(dn){return ne=dn,k=ru(at,r),re?Te(dn):P}function nt(dn){var io=dn-$,vl=dn-ne,ag=r-io;return se?Ln(ag,v-vl):ag}function qe(dn){var io=dn-$,vl=dn-ne;return $===l||io>=r||io<0||se&&vl>=v}function at(){var dn=E();if(qe(dn))return ct(dn);k=ru(at,nt(dn))}function ct(dn){return k=l,ge&&d?Te(dn):(d=h=l,P)}function ai(){k!==l&&hf(k),ne=0,d=$=h=k=l}function Pr(){return k===l?P:ct(E())}function si(){var dn=E(),io=qe(dn);if(d=arguments,h=this,$=dn,io){if(k===l)return $e($);if(se)return hf(k),k=ru(at,r),Te($)}return k===l&&(k=ru(at,r)),P}return si.cancel=ai,si.flush=Pr,si}var Zt=Ze(function(n,r){return ef(n,1,r)}),q=Ze(function(n,r,s){return ef(n,Mi(r)||0,s)});function N(n){return Ni(n,De)}function W(n,r){if(typeof n!="function"||r!=null&&typeof r!="function")throw new Lr(w);var s=function(){var d=arguments,h=r?r.apply(this,d):d[0],v=s.cache;if(v.has(h))return v.get(h);var P=n.apply(this,d);return s.cache=v.set(h,P)||v,P};return s.cache=new(W.Cache||Ir),s}W.Cache=Ir;function pe(n){if(typeof n!="function")throw new Lr(w);return function(){var r=arguments;switch(r.length){case 0:return!n.call(this);case 1:return!n.call(this,r[0]);case 2:return!n.call(this,r[0],r[1]);case 3:return!n.call(this,r[0],r[1],r[2])}return!n.apply(this,r)}}function Ae(n){return ae(2,n)}var Ie=Fc(function(n,r){r=r.length==1&&Ke(r[0])?It(r[0],mr(Fe())):It(Gt(r,1),mr(Fe()));var s=r.length;return Ze(function(d){for(var h=-1,v=Ln(d.length,s);++h=r}),ta=$a(function(){return arguments}())?$a:function(n){return an(n)&&mt.call(n,"callee")&&!xa.call(n,"callee")},Ke=j.isArray,Xy=On?mr(On):Ic;function br(n){return n!=null&&cd(n.length)&&!ml(n)}function cn(n){return an(n)&&br(n)}function Yy(n){return n===!0||n===!1||an(n)&&_n(n)==Le}var lu=Js||Pp,Zy=qt?mr(qt):Ji;function ev(n){return an(n)&&n.nodeType===1&&!Gf(n)}function tv(n){if(n==null)return!0;if(br(n)&&(Ke(n)||typeof n=="string"||typeof n.splice=="function"||lu(n)||xs(n)||ta(n)))return!n.length;var r=En(n);if(r==st||r==St)return!n.size;if(to(n))return!Xi(n).length;for(var s in n)if(mt.call(n,s))return!1;return!0}function nv(n,r){return Ur(n,r)}function rv(n,r,s){s=typeof s=="function"?s:l;var d=s?s(n,r):l;return d===l?Ur(n,r,l,s):!!d}function pp(n){if(!an(n))return!1;var r=_n(n);return r==dt||r==Ue||typeof n.message=="string"&&typeof n.name=="string"&&!Gf(n)}function iv(n){return typeof n=="number"&&Ml(n)}function ml(n){if(!en(n))return!1;var r=_n(n);return r==ot||r==Ct||r==rt||r==Cr}function jh(n){return typeof n=="number"&&n==et(n)}function cd(n){return typeof n=="number"&&n>-1&&n%1==0&&n<=Y}function en(n){var r=typeof n;return n!=null&&(r=="object"||r=="function")}function an(n){return n!=null&&typeof n=="object"}var Vh=wn?mr(wn):Nc;function ov(n,r){return n===r||Vl(n,r,Hu(r))}function lv(n,r,s){return s=typeof s=="function"?s:l,Vl(n,r,Hu(r),s)}function uv(n){return Gh(n)&&n!=+n}function av(n){if(Jd(n))throw new We(_);return rf(n)}function sv(n){return n===null}function fv(n){return n==null}function Gh(n){return typeof n=="number"||an(n)&&_n(n)==Kt}function Gf(n){if(!an(n)||_n(n)!=At)return!1;var r=Yr(n);if(r===null)return!0;var s=mt.call(r,"constructor")&&r.constructor;return typeof s=="function"&&s instanceof s&&wu.call(s)==Ea}var hp=Or?mr(Or):Iu;function cv(n){return jh(n)&&n>=-9007199254740991&&n<=Y}var Kh=qi?mr(qi):ki;function dd(n){return typeof n=="string"||!Ke(n)&&an(n)&&_n(n)==Cn}function ui(n){return typeof n=="symbol"||an(n)&&_n(n)==Jn}var xs=Ko?mr(Ko):Nu;function dv(n){return n===l}function pv(n){return an(n)&&En(n)==ci}function hv(n){return an(n)&&_n(n)==_l}var gv=ts(Ro),mv=ts(function(n,r){return n<=r});function Qh(n){if(!n)return[];if(br(n))return dd(n)?yr(n):jn(n);if(ji&&n[ji])return zd(n[ji]());var r=En(n),s=r==st?va:r==St?vo:Cs;return s(n)}function yl(n){if(!n)return n===0?n:0;if(n=Mi(n),n===He||n===-1/0){var r=n<0?-1:1;return r*_e}return n===n?n:0}function et(n){var r=yl(n),s=r%1;return r===r?s?r-s:r:0}function Jh(n){return n?Gi(et(n),0,A):0}function Mi(n){if(typeof n=="number")return n;if(ui(n))return he;if(en(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=en(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=sc(n);var s=bo.test(n);return s||zi.test(n)?be(n.slice(2),s?2:8):Pl.test(n)?he:+n}function Xh(n){return ei(n,Wr(n))}function yv(n){return n?Gi(et(n),-9007199254740991,Y):n===0?n:0}function Ot(n){return n==null?"":ir(n)}var vv=Yl(function(n,r){if(to(r)||br(r)){ei(r,Bn(r),n);return}for(var s in r)mt.call(r,s)&&nl(n,s,r[s])}),Yh=Yl(function(n,r){ei(r,Wr(r),n)}),pd=Yl(function(n,r,s,d){ei(r,Wr(r),n,d)}),wv=Yl(function(n,r,s,d){ei(r,Bn(r),n,d)}),_v=Fi(Ma);function Sv(n,r){var s=ql(n);return r==null?s:Mt(s,r)}var Ev=Ze(function(n,r){n=Tt(n);var s=-1,d=r.length,h=d>2?r[2]:l;for(h&&Gn(r[0],r[1],h)&&(d=1);++s1),v}),ei(n,bu(n),s),d&&(s=rr(s,R|G|F,xf));for(var h=r.length;h--;)Va(s,r[h]);return s});function $v(n,r){return eg(n,pe(Fe(r)))}var qv=Fi(function(n,r){return n==null?{}:af(n,r)});function eg(n,r){if(n==null)return{};var s=It(bu(n),function(d){return[d]});return r=Fe(r),To(n,s,function(d,h){return r(d,h[0])})}function bv(n,r,s){r=Ii(r,n);var d=-1,h=r.length;for(h||(h=1,n=l);++dr){var d=n;n=r,r=d}if(s||n%1||r%1){var h=xu();return Ln(n+h*(r-n+Et("1e-"+((h+"").length-1))),r)}return Kl(n,r)}var Zv=al(function(n,r,s){return r=r.toLowerCase(),n+(s?rg(r):r)});function rg(n){return yp(Ot(n).toLowerCase())}function ig(n){return n=Ot(n),n&&n.replace(hr,dc).replace(da,"")}function e0(n,r,s){n=Ot(n),r=ir(r);var d=n.length;s=s===l?d:Gi(et(s),0,d);var h=s;return s-=r.length,s>=0&&n.slice(s,h)==r}function t0(n){return n=Ot(n),n&&Vt.test(n)?n.replace(gn,pc):n}function n0(n){return n=Ot(n),n&&cr.test(n)?n.replace(hi,"\\$&"):n}var r0=al(function(n,r,s){return n+(s?"-":"")+r.toLowerCase()}),i0=al(function(n,r,s){return n+(s?" ":"")+r.toLowerCase()}),o0=vf("toLowerCase");function l0(n,r,s){n=Ot(n),r=et(r);var d=r?Qo(n):0;if(!r||d>=r)return n;var h=(r-d)/2;return $u(wo(h),s)+n+$u(Xo(h),s)}function u0(n,r,s){n=Ot(n),r=et(r);var d=r?Qo(n):0;return r&&d>>0,s?(n=Ot(n),n&&(typeof r=="string"||r!=null&&!hp(r))&&(r=ir(r),!r&&Il(n))?Zi(yr(n),0,s):n.split(r,s)):[]}var h0=al(function(n,r,s){return n+(s?" ":"")+yp(r)});function g0(n,r,s){return n=Ot(n),s=s==null?0:Gi(et(s),0,n.length),r=ir(r),n.slice(s,s+r.length)==r}function m0(n,r,s){var d=y.templateSettings;s&&Gn(n,r,s)&&(r=l),n=Ot(n),r=pd({},r,d,Ef);var h=pd({},r.imports,d.imports,Ef),v=Bn(h),P=yu(h,v),k,$,ne=0,re=r.interpolate||Cl,se="__p += '",ge=vu((r.escape||Cl).source+"|"+re.source+"|"+(re===Yn?pr:Cl).source+"|"+(r.evaluate||Cl).source+"|$","g"),Te="//# sourceURL="+(mt.call(r,"sourceURL")?(r.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++Ds+"]")+` +`;n.replace(ge,function(qe,at,ct,ai,Pr,si){return ct||(ct=ai),se+=n.slice(ne,si).replace(Ls,hc),at&&(k=!0,se+=`' + +__e(`+at+`) + +'`),Pr&&($=!0,se+=`'; +`+Pr+`; +__p += '`),ct&&(se+=`' + +((__t = (`+ct+`)) == null ? '' : __t) + +'`),ne=si+qe.length,qe}),se+=`'; +`;var $e=mt.call(r,"variable")&&r.variable;if(!$e)se=`with (obj) { +`+se+` +} +`;else if(qo.test($e))throw new We(x);se=($?se.replace(it,""):se).replace(tt,"$1").replace(pt,"$1;"),se="function("+($e||"obj")+`) { +`+($e?"":`obj || (obj = {}); +`)+"var __t, __p = ''"+(k?", __e = _.escape":"")+($?`, __j = Array.prototype.join; +function print() { __p += __j.call(arguments, '') } +`:`; +`)+se+`return __p +}`;var nt=lg(function(){return gt(v,Te+"return "+se).apply(l,P)});if(nt.source=se,pp(nt))throw nt;return nt}function y0(n){return Ot(n).toLowerCase()}function v0(n){return Ot(n).toUpperCase()}function w0(n,r,s){if(n=Ot(n),n&&(s||r===l))return sc(n);if(!n||!(r=ir(r)))return n;var d=yr(n),h=yr(r),v=fc(d,h),P=js(d,h)+1;return Zi(d,v,P).join("")}function _0(n,r,s){if(n=Ot(n),n&&(s||r===l))return n.slice(0,_a(n)+1);if(!n||!(r=ir(r)))return n;var d=yr(n),h=js(d,yr(r))+1;return Zi(d,0,h).join("")}function S0(n,r,s){if(n=Ot(n),n&&(s||r===l))return n.replace(Bi,"");if(!n||!(r=ir(r)))return n;var d=yr(n),h=fc(d,yr(r));return Zi(d,h).join("")}function E0(n,r){var s=Re,d=je;if(en(r)){var h="separator"in r?r.separator:h;s="length"in r?et(r.length):s,d="omission"in r?ir(r.omission):d}n=Ot(n);var v=n.length;if(Il(n)){var P=yr(n);v=P.length}if(s>=v)return n;var k=s-Qo(d);if(k<1)return d;var $=P?Zi(P,0,k).join(""):n.slice(0,k);if(h===l)return $+d;if(P&&(k+=$.length-k),hp(h)){if(n.slice(k).search(h)){var ne,re=$;for(h.global||(h=vu(h.source,Ot(Rn.exec(h))+"g")),h.lastIndex=0;ne=h.exec(re);)var se=ne.index;$=$.slice(0,se===l?k:se)}}else if(n.indexOf(ir(h),k)!=k){var ge=$.lastIndexOf(h);ge>-1&&($=$.slice(0,ge))}return $+d}function P0(n){return n=Ot(n),n&&Xn.test(n)?n.replace(Be,gc):n}var x0=al(function(n,r,s){return n+(s?" ":"")+r.toUpperCase()}),yp=vf("toUpperCase");function og(n,r,s){return n=Ot(n),r=s?l:r,r===l?Bd(n)?bd(n):Dd(n):n.match(r)||[]}var lg=Ze(function(n,r){try{return rn(n,l,r)}catch(s){return pp(s)?s:new We(s)}}),C0=Fi(function(n,r){return kn(r,function(s){s=ii(s),Ri(n,s,ce(n[s],n))}),n});function A0(n){var r=n==null?0:n.length,s=Fe();return n=r?It(n,function(d){if(typeof d[1]!="function")throw new Lr(w);return[s(d[0]),d[1]]}):[],Ze(function(d){for(var h=-1;++hY)return[];var s=A,d=Ln(n,A);r=Fe(r),n-=A;for(var h=Hs(d,r);++s0||r<0)?new Ge(s):(n<0?s=s.takeRight(-n):n&&(s=s.drop(n)),r!==l&&(r=et(r),s=r<0?s.dropRight(-r):s.take(r-n)),s)},Ge.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},Ge.prototype.toArray=function(){return this.take(A)},_r(Ge.prototype,function(n,r){var s=/^(?:filter|find|map|reject)|While$/.test(r),d=/^(?:head|last)$/.test(r),h=y[d?"take"+(r=="last"?"Right":""):r],v=d||/^find/.test(r);h&&(y.prototype[r]=function(){var P=this.__wrapped__,k=d?[1]:arguments,$=P instanceof Ge,ne=k[0],re=$||Ke(P),se=function(at){var ct=h.apply(y,yo([at],k));return d&&ge?ct[0]:ct};re&&s&&typeof ne=="function"&&ne.length!=1&&($=re=!1);var ge=this.__chain__,Te=!!this.__actions__.length,$e=v&&!ge,nt=$&&!Te;if(!v&&re){P=nt?P:new Ge(this);var qe=n.apply(P,k);return qe.__actions__.push({func:li,args:[se],thisArg:l}),new In(qe,ge)}return $e&&nt?n.apply(this,k):(qe=this.thru(se),$e?d?qe.value()[0]:qe.value():qe)})}),kn(["pop","push","shift","sort","splice","unshift"],function(n){var r=Wi[n],s=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",d=/^(?:pop|shift)$/.test(n);y.prototype[n]=function(){var h=arguments;if(d&&!this.__chain__){var v=this.value();return r.apply(Ke(v)?v:[],h)}return this[s](function(P){return r.apply(Ke(P)?P:[],h)})}}),_r(Ge.prototype,function(n,r){var s=y[r];if(s){var d=s.name+"";mt.call(zl,d)||(zl[d]=[]),zl[d].push({name:r,func:s})}}),zl[eu(l,I).name]=[{name:"wrapper",func:l}],Ge.prototype.clone=La,Ge.prototype.reverse=Ys,Ge.prototype.value=bl,y.prototype.at=ys,y.prototype.chain=hl,y.prototype.commit=vs,y.prototype.next=bf,y.prototype.plant=lp,y.prototype.reverse=Hf,y.prototype.toJSON=y.prototype.valueOf=y.prototype.value=up,y.prototype.first=y.prototype.head,ji&&(y.prototype[ji]=Wf),y},Nl=Wd();Ut?((Ut.exports=Nl)._=Nl,Pt._=Nl):Ve._=Nl}).call(V1)}(Xf,Xf.exports)),Xf.exports}var K1=G1();const Q1=Pd(K1);window._=Q1;window.axios=tn;window.axios.defaults.headers.common["X-Requested-With"]="XMLHttpRequest";var hd={},Op={exports:{}},jr={},kp={exports:{}},Lp={};/** + * @license React + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Og;function J1(){return Og||(Og=1,function(o){function a(Y,_e){var he=Y.length;Y.push(_e);e:for(;0>>1,X=Y[A];if(0>>1;Am(de,he))Nem(rt,de)?(Y[A]=rt,Y[Ne]=he,A=Ne):(Y[A]=de,Y[xe]=he,A=xe);else if(Nem(rt,he))Y[A]=rt,Y[Ne]=he,A=Ne;else break e}}return _e}function m(Y,_e){var he=Y.sortIndex-_e.sortIndex;return he!==0?he:Y.id-_e.id}if(typeof performance=="object"&&typeof performance.now=="function"){var _=performance;o.unstable_now=function(){return _.now()}}else{var w=Date,x=w.now();o.unstable_now=function(){return w.now()-x}}var M=[],L=[],O=1,R=null,G=3,F=!1,U=!1,H=!1,C=typeof setTimeout=="function"?setTimeout:null,I=typeof clearTimeout=="function"?clearTimeout:null,D=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function Q(Y){for(var _e=l(L);_e!==null;){if(_e.callback===null)p(L);else if(_e.startTime<=Y)p(L),_e.sortIndex=_e.expirationTime,a(M,_e);else break;_e=l(L)}}function ee(Y){if(H=!1,Q(Y),!U)if(l(M)!==null)U=!0,wt(te);else{var _e=l(L);_e!==null&&He(ee,_e.startTime-Y)}}function te(Y,_e){U=!1,H&&(H=!1,I(ve),ve=-1),F=!0;var he=G;try{for(Q(_e),R=l(M);R!==null&&(!(R.expirationTime>_e)||Y&&!je());){var A=R.callback;if(typeof A=="function"){R.callback=null,G=R.priorityLevel;var X=A(R.expirationTime<=_e);_e=o.unstable_now(),typeof X=="function"?R.callback=X:R===l(M)&&p(M),Q(_e)}else p(M);R=l(M)}if(R!==null)var ue=!0;else{var xe=l(L);xe!==null&&He(ee,xe.startTime-_e),ue=!1}return ue}finally{R=null,G=he,F=!1}}var oe=!1,fe=null,ve=-1,De=5,Re=-1;function je(){return!(o.unstable_now()-ReY||125A?(Y.sortIndex=he,a(L,Y),l(M)===null&&Y===l(L)&&(H?(I(ve),ve=-1):H=!0,He(ee,he-A))):(Y.sortIndex=X,a(M,Y),U||F||(U=!0,wt(te))),Y},o.unstable_shouldYield=je,o.unstable_wrapCallback=function(Y){var _e=G;return function(){var he=G;G=_e;try{return Y.apply(this,arguments)}finally{G=he}}}}(Lp)),Lp}var kg;function X1(){return kg||(kg=1,kp.exports=J1()),kp.exports}/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Lg;function Y1(){if(Lg)return jr;Lg=1;var o=Bh(),a=X1();function l(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,i=1;i"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),M=Object.prototype.hasOwnProperty,L=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,O={},R={};function G(e){return M.call(R,e)?!0:M.call(O,e)?!1:L.test(e)?R[e]=!0:(O[e]=!0,!1)}function F(e,t,i,u){if(i!==null&&i.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return u?!1:i!==null?!i.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function U(e,t,i,u){if(t===null||typeof t>"u"||F(e,t,i,u))return!0;if(u)return!1;if(i!==null)switch(i.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function H(e,t,i,u,f,c,g){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=u,this.attributeNamespace=f,this.mustUseProperty=i,this.propertyName=e,this.type=t,this.sanitizeURL=c,this.removeEmptyString=g}var C={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){C[e]=new H(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];C[t]=new H(t,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){C[e]=new H(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){C[e]=new H(e,2,!1,e,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){C[e]=new H(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){C[e]=new H(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){C[e]=new H(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){C[e]=new H(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){C[e]=new H(e,5,!1,e.toLowerCase(),null,!1,!1)});var I=/[\-:]([a-z])/g;function D(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(I,D);C[t]=new H(t,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(I,D);C[t]=new H(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(I,D);C[t]=new H(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){C[e]=new H(e,1,!1,e.toLowerCase(),null,!1,!1)}),C.xlinkHref=new H("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){C[e]=new H(e,1,!1,e.toLowerCase(),null,!0,!0)});function Q(e,t,i,u){var f=C.hasOwnProperty(t)?C[t]:null;(f!==null?f.type!==0:u||!(2E||f[g]!==c[E]){var T=` +`+f[g].replace(" at new "," at ");return e.displayName&&T.includes("")&&(T=T.replace("",e.displayName)),T}while(1<=g&&0<=E);break}}}finally{ue=!1,Error.prepareStackTrace=i}return(e=e?e.displayName||e.name:"")?X(e):""}function de(e){switch(e.tag){case 5:return X(e.type);case 16:return X("Lazy");case 13:return X("Suspense");case 19:return X("SuspenseList");case 0:case 2:case 15:return e=xe(e.type,!1),e;case 11:return e=xe(e.type.render,!1),e;case 1:return e=xe(e.type,!0),e;default:return""}}function Ne(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case fe:return"Fragment";case oe:return"Portal";case De:return"Profiler";case ve:return"StrictMode";case Je:return"Suspense";case Ye:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case je:return(e.displayName||"Context")+".Consumer";case Re:return(e._context.displayName||"Context")+".Provider";case we:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case vt:return t=e.displayName||null,t!==null?t:Ne(e.type)||"Memo";case wt:t=e._payload,e=e._init;try{return Ne(e(t))}catch{}}return null}function rt(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Ne(t);case 8:return t===ve?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function Le(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Me(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Ue(e){var t=Me(e)?"checked":"value",i=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),u=""+e[t];if(!e.hasOwnProperty(t)&&typeof i<"u"&&typeof i.get=="function"&&typeof i.set=="function"){var f=i.get,c=i.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return f.call(this)},set:function(g){u=""+g,c.call(this,g)}}),Object.defineProperty(e,t,{enumerable:i.enumerable}),{getValue:function(){return u},setValue:function(g){u=""+g},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function dt(e){e._valueTracker||(e._valueTracker=Ue(e))}function ot(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var i=t.getValue(),u="";return e&&(u=Me(e)?e.checked?"true":"false":e.value),e=u,e!==i?(t.setValue(e),!0):!1}function Ct(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function st(e,t){var i=t.checked;return he({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:i??e._wrapperState.initialChecked})}function Kt(e,t){var i=t.defaultValue==null?"":t.defaultValue,u=t.checked!=null?t.checked:t.defaultChecked;i=Le(t.value!=null?t.value:i),e._wrapperState={initialChecked:u,initialValue:i,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Qt(e,t){t=t.checked,t!=null&&Q(e,"checked",t,!1)}function At(e,t){Qt(e,t);var i=Le(t.value),u=t.type;if(i!=null)u==="number"?(i===0&&e.value===""||e.value!=i)&&(e.value=""+i):e.value!==""+i&&(e.value=""+i);else if(u==="submit"||u==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Cr(e,t.type,i):t.hasOwnProperty("defaultValue")&&Cr(e,t.type,Le(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function hn(e,t,i){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var u=t.type;if(!(u!=="submit"&&u!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,i||t===e.value||(e.value=t),e.defaultValue=t}i=e.name,i!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,i!==""&&(e.name=i)}function Cr(e,t,i){(t!=="number"||Ct(e.ownerDocument)!==e)&&(i==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+i&&(e.defaultValue=""+i))}var nn=Array.isArray;function St(e,t,i,u){if(e=e.options,t){t={};for(var f=0;f"+t.valueOf().toString()+"",t=qn.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function jt(e,t){if(t){var i=e.firstChild;if(i&&i===e.lastChild&&i.nodeType===3){i.nodeValue=t;return}}e.textContent=t}var sr={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ao=["Webkit","ms","Moz","O"];Object.keys(sr).forEach(function(e){ao.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),sr[t]=sr[e]})});function so(e,t,i){return t==null||typeof t=="boolean"||t===""?"":i||typeof t!="number"||t===0||sr.hasOwnProperty(e)&&sr[e]?(""+t).trim():t+"px"}function Kr(e,t){e=e.style;for(var i in t)if(t.hasOwnProperty(i)){var u=i.indexOf("--")===0,f=so(i,t[i],u);i==="float"&&(i="cssFloat"),u?e.setProperty(i,f):e[i]=f}}var fr=he({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function b(e,t){if(t){if(fr[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(l(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(l(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(l(61))}if(t.style!=null&&typeof t.style!="object")throw Error(l(62))}}function V(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var it=null;function tt(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var pt=null,Be=null,gn=null;function Xn(e){if(e=In(e)){if(typeof pt!="function")throw Error(l(280));var t=e.stateNode;t&&(t=La(t),pt(e.stateNode,e.type,t))}}function Vt(e){Be?gn?gn.push(e):gn=[e]:Be=e}function bn(){if(Be){var e=Be,t=gn;if(gn=Be=null,Xn(e),t)for(e=0;e>>=0,e===0?32:31-(aa(e)/sa|0)|0}var co=64,gi=4194304;function $i(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function mi(e,t){var i=e.pendingLanes;if(i===0)return 0;var u=0,f=e.suspendedLanes,c=e.pingedLanes,g=i&268435455;if(g!==0){var E=g&~f;E!==0?u=$i(E):(c&=g,c!==0&&(u=$i(c)))}else g=i&~f,g!==0?u=$i(g):c!==0&&(u=$i(c));if(u===0)return 0;if(t!==0&&t!==u&&(t&f)===0&&(f=u&-u,c=t&-t,f>=c||f===16&&(c&4194240)!==0))return t;if((u&4)!==0&&(u|=i&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=u;0i;i++)t.push(e);return t}function Vo(e,t,i){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-gr(t),e[t]=i}function ca(e,t){var i=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var u=e.eventTimes;for(e=e.expirationTimes;0=bi),cc=" ",dc=!1;function pc(e,t){switch(e){case"keyup":return mr.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function hc(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Ll=!1;function Il(e,t){switch(e){case"compositionend":return hc(t);case"keypress":return t.which!==32?null:(dc=!0,cc);case"textInput":return e=t.data,e===cc&&dc?null:e;default:return null}}function Bd(e,t){if(Ll)return e==="compositionend"||!yu&&pc(e,t)?(e=Wn(),Ut=Pt=Ve=null,Ll=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:i,offset:t-e};e=u}e:{for(;i;){if(i.nextSibling){i=i.nextSibling;break e}i=i.parentNode}i=void 0}i=We(i)}}function on(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?on(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Tt(){for(var e=window,t=Ct();t instanceof e.HTMLIFrameElement;){try{var i=typeof t.contentWindow.location.href=="string"}catch{i=!1}if(i)e=t.contentWindow;else break;t=Ct(e.document)}return t}function vu(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function Hd(e){var t=Tt(),i=e.focusedElem,u=e.selectionRange;if(t!==i&&i&&i.ownerDocument&&on(i.ownerDocument.documentElement,i)){if(u!==null&&vu(i)){if(t=u.start,e=u.end,e===void 0&&(e=t),"selectionStart"in i)i.selectionStart=t,i.selectionEnd=Math.min(e,i.value.length);else if(e=(t=i.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var f=i.textContent.length,c=Math.min(u.start,f);u=u.end===void 0?c:Math.min(u.end,f),!e.extend&&c>u&&(f=u,u=c,c=f),f=gt(i,c);var g=gt(i,u);f&&g&&(e.rangeCount!==1||e.anchorNode!==f.node||e.anchorOffset!==f.offset||e.focusNode!==g.node||e.focusOffset!==g.offset)&&(t=t.createRange(),t.setStart(f.node,f.offset),e.removeAllRanges(),c>u?(e.addRange(t),e.extend(g.node,g.offset)):(t.setEnd(g.node,g.offset),e.addRange(t)))}}for(t=[],e=i;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof i.focus=="function"&&i.focus(),i=0;i=document.documentMode,Wi=null,Gs=null,Ei=null,Fl=!1;function wu(e,t,i){var u=i.window===i?i.document:i.nodeType===9?i:i.ownerDocument;Fl||Wi==null||Wi!==Ct(u)||(u=Wi,"selectionStart"in u&&vu(u)?u={start:u.selectionStart,end:u.selectionEnd}:(u=(u.ownerDocument&&u.ownerDocument.defaultView||window).getSelection(),u={anchorNode:u.anchorNode,anchorOffset:u.anchorOffset,focusNode:u.focusNode,focusOffset:u.focusOffset}),Ei&&me(Ei,u)||(Ei=u,u=Ra(Gs,"onSelect"),0bl||(e.current=Ys[bl],Ys[bl]=null,bl--)}function Nt(e,t){bl++,Ys[bl]=e.current,e.current=t}var Po={},Nn=er(Po),tr=er(!1),Hn=Po;function Wl(e,t){var i=e.type.contextTypes;if(!i)return Po;var u=e.stateNode;if(u&&u.__reactInternalMemoizedUnmaskedChildContext===t)return u.__reactInternalMemoizedMaskedChildContext;var f={},c;for(c in i)f[c]=t[c];return u&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=f),f}function nr(e){return e=e.childContextTypes,e!=null}function Ia(){Dt(tr),Dt(Nn)}function xc(e,t,i){if(Nn.current!==Po)throw Error(l(168));Nt(Nn,t),Nt(tr,i)}function Cc(e,t,i){var u=e.stateNode;if(t=t.childContextTypes,typeof u.getChildContext!="function")return i;u=u.getChildContext();for(var f in u)if(!(f in t))throw Error(l(108,rt(e)||"Unknown",f));return he({},i,u)}function Ir(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Po,Hn=Nn.current,Nt(Nn,e),Nt(tr,tr.current),!0}function Ac(e,t,i){var u=e.stateNode;if(!u)throw Error(l(169));i?(e=Cc(e,t,Hn),u.__reactInternalMemoizedMergedChildContext=e,Dt(tr),Dt(Nn),Nt(Nn,e)):Dt(tr),Nt(tr,i)}var Vi=null,Na=!1,Zs=!1;function Rc(e){Vi===null?Vi=[e]:Vi.push(e)}function Zo(e){Na=!0,Rc(e)}function xo(){if(!Zs&&Vi!==null){Zs=!0;var e=0,t=lt;try{var i=Vi;for(lt=1;e>=g,f-=g,Ci=1<<32-gr(t)+f|i<ze?(vn=Oe,Oe=null):vn=Oe.sibling;var yt=le(q,Oe,W[ze],pe);if(yt===null){Oe===null&&(Oe=vn);break}e&&Oe&&yt.alternate===null&&t(q,Oe),N=c(yt,N,ze),Ie===null?Ae=yt:Ie.sibling=yt,Ie=yt,Oe=vn}if(ze===W.length)return i(q,Oe),Mt&&tl(q,ze),Ae;if(Oe===null){for(;zeze?(vn=Oe,Oe=null):vn=Oe.sibling;var Mo=le(q,Oe,yt.value,pe);if(Mo===null){Oe===null&&(Oe=vn);break}e&&Oe&&Mo.alternate===null&&t(q,Oe),N=c(Mo,N,ze),Ie===null?Ae=Mo:Ie.sibling=Mo,Ie=Mo,Oe=vn}if(yt.done)return i(q,Oe),Mt&&tl(q,ze),Ae;if(Oe===null){for(;!yt.done;ze++,yt=W.next())yt=ce(q,yt.value,pe),yt!==null&&(N=c(yt,N,ze),Ie===null?Ae=yt:Ie.sibling=yt,Ie=yt);return Mt&&tl(q,ze),Ae}for(Oe=u(q,Oe);!yt.done;ze++,yt=W.next())yt=ye(Oe,q,ze,yt.value,pe),yt!==null&&(e&&yt.alternate!==null&&Oe.delete(yt.key===null?ze:yt.key),N=c(yt,N,ze),Ie===null?Ae=yt:Ie.sibling=yt,Ie=yt);return e&&Oe.forEach(function(dp){return t(q,dp)}),Mt&&tl(q,ze),Ae}function Zt(q,N,W,pe){if(typeof W=="object"&&W!==null&&W.type===fe&&W.key===null&&(W=W.props.children),typeof W=="object"&&W!==null){switch(W.$$typeof){case te:e:{for(var Ae=W.key,Ie=N;Ie!==null;){if(Ie.key===Ae){if(Ae=W.type,Ae===fe){if(Ie.tag===7){i(q,Ie.sibling),N=f(Ie,W.props.children),N.return=q,q=N;break e}}else if(Ie.elementType===Ae||typeof Ae=="object"&&Ae!==null&&Ae.$$typeof===wt&&Lc(Ae)===Ie.type){i(q,Ie.sibling),N=f(Ie,W.props),N.ref=ku(q,Ie,W),N.return=q,q=N;break e}i(q,Ie);break}else t(q,Ie);Ie=Ie.sibling}W.type===fe?(N=hl(W.props.children,q.mode,pe,W.key),N.return=q,q=N):(pe=ys(W.type,W.key,W.props,null,q.mode,pe),pe.ref=ku(q,N,W),pe.return=q,q=pe)}return g(q);case oe:e:{for(Ie=W.key;N!==null;){if(N.key===Ie)if(N.tag===4&&N.stateNode.containerInfo===W.containerInfo&&N.stateNode.implementation===W.implementation){i(q,N.sibling),N=f(N,W.children||[]),N.return=q,q=N;break e}else{i(q,N);break}else t(q,N);N=N.sibling}N=Wf(W,q.mode,pe),N.return=q,q=N}return g(q);case wt:return Ie=W._init,Zt(q,N,Ie(W._payload),pe)}if(nn(W))return Pe(q,N,W,pe);if(_e(W))return Ce(q,N,W,pe);rl(q,W)}return typeof W=="string"&&W!==""||typeof W=="number"?(W=""+W,N!==null&&N.tag===6?(i(q,N.sibling),N=f(N,W),N.return=q,q=N):(i(q,N),N=bf(W,q.mode,pe),N.return=q,q=N),g(q)):i(q,N)}return Zt}var Gt=tf(!0),Ua=tf(!1),Lu=er(null),_r=null,Co=null,jl=null;function Ki(){jl=Co=_r=null}function Ba(e){var t=Lu.current;Dt(Lu),e._currentValue=t}function _n(e,t,i){for(;e!==null;){var u=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,u!==null&&(u.childLanes|=t)):u!==null&&(u.childLanes&t)!==t&&(u.childLanes|=t),e===i)break;e=e.return}}function Ao(e,t){_r=e,jl=Co=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&t)!==0&&(Vn=!0),e.firstContext=null)}function Dr(e){var t=e._currentValue;if(jl!==e)if(e={context:e,memoizedValue:t,next:null},Co===null){if(_r===null)throw Error(l(308));Co=e,_r.dependencies={lanes:0,firstContext:e}}else Co=Co.next=e;return t}var il=null;function nf(e){il===null?il=[e]:il.push(e)}function za(e,t,i,u){var f=t.interleaved;return f===null?(i.next=i,nf(t)):(i.next=f.next,f.next=i),t.interleaved=i,Qi(e,u)}function Qi(e,t){e.lanes|=t;var i=e.alternate;for(i!==null&&(i.lanes|=t),i=e,e=e.return;e!==null;)e.childLanes|=t,i=e.alternate,i!==null&&(i.childLanes|=t),i=e,e=e.return;return i.tag===3?i.stateNode:null}var Mr=!1;function $a(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Ic(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Ji(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Ur(e,t,i){var u=e.updateQueue;if(u===null)return null;if(u=u.shared,(ft&2)!==0){var f=u.pending;return f===null?t.next=t:(t.next=f.next,f.next=t),u.pending=t,Qi(e,i)}return f=u.interleaved,f===null?(t.next=t,nf(u)):(t.next=f.next,f.next=t),u.interleaved=t,Qi(e,i)}function qa(e,t,i){if(t=t.updateQueue,t!==null&&(t=t.shared,(i&4194240)!==0)){var u=t.lanes;u&=e.pendingLanes,i|=u,t.lanes=i,ho(e,i)}}function Nc(e,t){var i=e.updateQueue,u=e.alternate;if(u!==null&&(u=u.updateQueue,i===u)){var f=null,c=null;if(i=i.firstBaseUpdate,i!==null){do{var g={eventTime:i.eventTime,lane:i.lane,tag:i.tag,payload:i.payload,callback:i.callback,next:null};c===null?f=c=g:c=c.next=g,i=i.next}while(i!==null);c===null?f=c=t:c=c.next=t}else f=c=t;i={baseState:u.baseState,firstBaseUpdate:f,lastBaseUpdate:c,shared:u.shared,effects:u.effects},e.updateQueue=i;return}e=i.lastBaseUpdate,e===null?i.firstBaseUpdate=t:e.next=t,i.lastBaseUpdate=t}function Vl(e,t,i,u){var f=e.updateQueue;Mr=!1;var c=f.firstBaseUpdate,g=f.lastBaseUpdate,E=f.shared.pending;if(E!==null){f.shared.pending=null;var T=E,K=T.next;T.next=null,g===null?c=K:g.next=K,g=T;var ae=e.alternate;ae!==null&&(ae=ae.updateQueue,E=ae.lastBaseUpdate,E!==g&&(E===null?ae.firstBaseUpdate=K:E.next=K,ae.lastBaseUpdate=T))}if(c!==null){var ce=f.baseState;g=0,ae=K=T=null,E=c;do{var le=E.lane,ye=E.eventTime;if((u&le)===le){ae!==null&&(ae=ae.next={eventTime:ye,lane:0,tag:E.tag,payload:E.payload,callback:E.callback,next:null});e:{var Pe=e,Ce=E;switch(le=t,ye=i,Ce.tag){case 1:if(Pe=Ce.payload,typeof Pe=="function"){ce=Pe.call(ye,ce,le);break e}ce=Pe;break e;case 3:Pe.flags=Pe.flags&-65537|128;case 0:if(Pe=Ce.payload,le=typeof Pe=="function"?Pe.call(ye,ce,le):Pe,le==null)break e;ce=he({},ce,le);break e;case 2:Mr=!0}}E.callback!==null&&E.lane!==0&&(e.flags|=64,le=f.effects,le===null?f.effects=[E]:le.push(E))}else ye={eventTime:ye,lane:le,tag:E.tag,payload:E.payload,callback:E.callback,next:null},ae===null?(K=ae=ye,T=ce):ae=ae.next=ye,g|=le;if(E=E.next,E===null){if(E=f.shared.pending,E===null)break;le=E,E=le.next,le.next=null,f.lastBaseUpdate=le,f.shared.pending=null}}while(!0);if(ae===null&&(T=ce),f.baseState=T,f.firstBaseUpdate=K,f.lastBaseUpdate=ae,t=f.shared.interleaved,t!==null){f=t;do g|=f.lane,f=f.next;while(f!==t)}else c===null&&(f.shared.lanes=0);Lo|=g,e.lanes=g,e.memoizedState=ce}}function rf(e,t,i){if(e=t.effects,t.effects=null,e!==null)for(t=0;ti?i:4,e(!0);var u=af.transition;af.transition={};try{e(!1),t()}finally{lt=i,af.transition=u}}function mf(){return Br().memoizedState}function Vd(e,t,i){var u=Fo(e);if(i={lane:u,action:i,hasEagerState:!1,eagerState:null,next:null},yf(e))jn(t,i);else if(i=za(e,t,i,u),i!==null){var f=Qn();oi(i,e,u,f),ei(i,t,u)}}function zc(e,t,i){var u=Fo(e),f={lane:u,action:i,hasEagerState:!1,eagerState:null,next:null};if(yf(e))jn(t,f);else{var c=e.alternate;if(e.lanes===0&&(c===null||c.lanes===0)&&(c=t.lastRenderedReducer,c!==null))try{var g=t.lastRenderedState,E=c(g,i);if(f.hasEagerState=!0,f.eagerState=E,j(E,g)){var T=t.interleaved;T===null?(f.next=f,nf(t)):(f.next=T.next,T.next=f),t.interleaved=f;return}}catch{}finally{}i=za(e,t,f,u),i!==null&&(f=Qn(),oi(i,e,u,f),ei(i,t,u))}}function yf(e){var t=e.alternate;return e===bt||t!==null&&t===bt}function jn(e,t){Du=Kl=!0;var i=e.pending;i===null?t.next=t:(t.next=i.next,i.next=t),e.pending=t}function ei(e,t,i){if((i&4194240)!==0){var u=t.lanes;u&=e.pendingLanes,i|=u,t.lanes=i,ho(e,i)}}var Qa={readContext:Dr,useCallback:Mn,useContext:Mn,useEffect:Mn,useImperativeHandle:Mn,useInsertionEffect:Mn,useLayoutEffect:Mn,useMemo:Mn,useReducer:Mn,useRef:Mn,useState:Mn,useDebugValue:Mn,useDeferredValue:Mn,useTransition:Mn,useMutableSource:Mn,useSyncExternalStore:Mn,useId:Mn,unstable_isNewReconciler:!1},Gd={readContext:Dr,useCallback:function(e,t){return Li().memoizedState=[e,t===void 0?null:t],e},useContext:Dr,useEffect:Ka,useImperativeHandle:function(e,t,i){return i=i!=null?i.concat([e]):null,Uu(4194308,4,hf.bind(null,t,e),i)},useLayoutEffect:function(e,t){return Uu(4194308,4,e,t)},useInsertionEffect:function(e,t){return Uu(4,2,e,t)},useMemo:function(e,t){var i=Li();return t=t===void 0?null:t,e=e(),i.memoizedState=[e,t],e},useReducer:function(e,t,i){var u=Li();return t=i!==void 0?i(t):t,u.memoizedState=u.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},u.queue=e,e=e.dispatch=Vd.bind(null,bt,e),[u.memoizedState,e]},useRef:function(e){var t=Li();return e={current:e},t.memoizedState=e},useState:Mu,useDebugValue:Bu,useDeferredValue:function(e){return Li().memoizedState=e},useTransition:function(){var e=Mu(!1),t=e[0];return e=Bc.bind(null,e[1]),Li().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,i){var u=bt,f=Li();if(Mt){if(i===void 0)throw Error(l(407));i=i()}else{if(i=t(),yn===null)throw Error(l(349));(To&30)!==0||df(u,t,i)}f.memoizedState=i;var c={value:i,getSnapshot:t};return f.queue=c,Ka(Yi.bind(null,u,c,e),[e]),u.flags|=2048,Jl(9,ir.bind(null,u,c,i,t),void 0,null),i},useId:function(){var e=Li(),t=yn.identifierPrefix;if(Mt){var i=Ai,u=Ci;i=(u&~(1<<32-gr(u)-1)).toString(32)+i,t=":"+t+"R"+i,i=ll++,0<\/script>",e=e.removeChild(e.firstChild)):typeof u.is=="string"?e=g.createElement(i,{is:u.is}):(e=g.createElement(i),i==="select"&&(g=e,u.multiple?g.multiple=!0:u.size&&(g.size=u.size))):e=g.createElementNS(e,i),e[Pi]=t,e[Eo]=u,En(e,t,!1,!1),t.stateNode=e;e:{switch(g=V(i,u),i){case"dialog":Ft("cancel",e),Ft("close",e),f=u;break;case"iframe":case"object":case"embed":Ft("load",e),f=u;break;case"video":case"audio":for(f=0;ffl&&(t.flags|=128,u=!0,ju(c,!1),t.lanes=4194304)}else{if(!u)if(e=ol(g),e!==null){if(t.flags|=128,u=!0,i=e.updateQueue,i!==null&&(t.updateQueue=i,t.flags|=4),ju(c,!0),c.tail===null&&c.tailMode==="hidden"&&!g.alternate&&!Mt)return Pn(t),null}else 2*Lt()-c.renderingStartTime>fl&&i!==1073741824&&(t.flags|=128,u=!0,ju(c,!1),t.lanes=4194304);c.isBackwards?(g.sibling=t.child,t.child=g):(i=c.last,i!==null?i.sibling=g:t.child=g,c.last=g)}return c.tail!==null?(t=c.tail,c.rendering=t,c.tail=t.sibling,c.renderingStartTime=Lt(),t.sibling=null,i=Bt.current,Nt(Bt,u?i&1|2:i&1),t):(Pn(t),null);case 22:case 23:return $f(),u=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==u&&(t.flags|=8192),u&&(t.mode&1)!==0?(Er&1073741824)!==0&&(Pn(t),t.subtreeFlags&6&&(t.flags|=8192)):Pn(t),null;case 24:return null;case 25:return null}throw Error(l(156,t.tag))}function Qd(e,t){switch(nl(t),t.tag){case 1:return nr(t.type)&&Ia(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Ro(),Dt(tr),Dt(Nn),Wa(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 5:return ba(t),null;case 13:if(Dt(Bt),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(l(340));Ti()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Dt(Bt),null;case 4:return Ro(),null;case 10:return Ba(t.type._context),null;case 22:case 23:return $f(),null;case 24:return null;default:return null}}var is=!1,zt=!1,Gn=typeof WeakSet=="function"?WeakSet:Set,Ee=null;function nu(e,t){var i=e.ref;if(i!==null)if(typeof i=="function")try{i(null)}catch(u){Wt(e,t,u)}else i.current=null}function Vu(e,t,i){try{i()}catch(u){Wt(e,t,u)}}var Vc=!1;function Jd(e,t){if(Cu=B,e=Tt(),vu(e)){if("selectionStart"in e)var i={start:e.selectionStart,end:e.selectionEnd};else e:{i=(i=e.ownerDocument)&&i.defaultView||window;var u=i.getSelection&&i.getSelection();if(u&&u.rangeCount!==0){i=u.anchorNode;var f=u.anchorOffset,c=u.focusNode;u=u.focusOffset;try{i.nodeType,c.nodeType}catch{i=null;break e}var g=0,E=-1,T=-1,K=0,ae=0,ce=e,le=null;t:for(;;){for(var ye;ce!==i||f!==0&&ce.nodeType!==3||(E=g+f),ce!==c||u!==0&&ce.nodeType!==3||(T=g+u),ce.nodeType===3&&(g+=ce.nodeValue.length),(ye=ce.firstChild)!==null;)le=ce,ce=ye;for(;;){if(ce===e)break t;if(le===i&&++K===f&&(E=g),le===c&&++ae===u&&(T=g),(ye=ce.nextSibling)!==null)break;ce=le,le=ce.parentNode}ce=ye}i=E===-1||T===-1?null:{start:E,end:T}}else i=null}i=i||{start:0,end:0}}else i=null;for(Yo={focusedElem:e,selectionRange:i},B=!1,Ee=t;Ee!==null;)if(t=Ee,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,Ee=e;else for(;Ee!==null;){t=Ee;try{var Pe=t.alternate;if((t.flags&1024)!==0)switch(t.tag){case 0:case 11:case 15:break;case 1:if(Pe!==null){var Ce=Pe.memoizedProps,Zt=Pe.memoizedState,q=t.stateNode,N=q.getSnapshotBeforeUpdate(t.elementType===t.type?Ce:zr(t.type,Ce),Zt);q.__reactInternalSnapshotBeforeUpdate=N}break;case 3:var W=t.stateNode.containerInfo;W.nodeType===1?W.textContent="":W.nodeType===9&&W.documentElement&&W.removeChild(W.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(l(163))}}catch(pe){Wt(t,t.return,pe)}if(e=t.sibling,e!==null){e.return=t.return,Ee=e;break}Ee=t.return}return Pe=Vc,Vc=!1,Pe}function to(e,t,i){var u=t.updateQueue;if(u=u!==null?u.lastEffect:null,u!==null){var f=u=u.next;do{if((f.tag&e)===e){var c=f.destroy;f.destroy=void 0,c!==void 0&&Vu(t,i,c)}f=f.next}while(f!==u)}}function Gu(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var i=t=t.next;do{if((i.tag&e)===e){var u=i.create;i.destroy=u()}i=i.next}while(i!==t)}}function os(e){var t=e.ref;if(t!==null){var i=e.stateNode;switch(e.tag){case 5:e=i;break;default:e=i}typeof t=="function"?t(e):t.current=e}}function Gc(e){var t=e.alternate;t!==null&&(e.alternate=null,Gc(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Pi],delete t[Eo],delete t[ka],delete t[y],delete t[ql])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Kc(e){return e.tag===5||e.tag===3||e.tag===4}function Qc(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Kc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Of(e,t,i){var u=e.tag;if(u===5||u===6)e=e.stateNode,t?i.nodeType===8?i.parentNode.insertBefore(e,t):i.insertBefore(e,t):(i.nodeType===8?(t=i.parentNode,t.insertBefore(e,i)):(t=i,t.appendChild(e)),i=i._reactRootContainer,i!=null||t.onclick!==null||(t.onclick=Ta));else if(u!==4&&(e=e.child,e!==null))for(Of(e,t,i),e=e.sibling;e!==null;)Of(e,t,i),e=e.sibling}function ls(e,t,i){var u=e.tag;if(u===5||u===6)e=e.stateNode,t?i.insertBefore(e,t):i.appendChild(e);else if(u!==4&&(e=e.child,e!==null))for(ls(e,t,i),e=e.sibling;e!==null;)ls(e,t,i),e=e.sibling}var mn=null,ni=!1;function Di(e,t,i){for(i=i.child;i!==null;)kf(e,t,i),i=i.sibling}function kf(e,t,i){if(Tr&&typeof Tr.onCommitFiberUnmount=="function")try{Tr.onCommitFiberUnmount(Al,i)}catch{}switch(i.tag){case 5:zt||nu(i,t);case 6:var u=mn,f=ni;mn=null,Di(e,t,i),mn=u,ni=f,mn!==null&&(ni?(e=mn,i=i.stateNode,e.nodeType===8?e.parentNode.removeChild(i):e.removeChild(i)):mn.removeChild(i.stateNode));break;case 18:mn!==null&&(ni?(e=mn,i=i.stateNode,e.nodeType===8?Xs(e.parentNode,i):e.nodeType===1&&Xs(e,i),ht(e)):Xs(mn,i.stateNode));break;case 4:u=mn,f=ni,mn=i.stateNode.containerInfo,ni=!0,Di(e,t,i),mn=u,ni=f;break;case 0:case 11:case 14:case 15:if(!zt&&(u=i.updateQueue,u!==null&&(u=u.lastEffect,u!==null))){f=u=u.next;do{var c=f,g=c.destroy;c=c.tag,g!==void 0&&((c&2)!==0||(c&4)!==0)&&Vu(i,t,g),f=f.next}while(f!==u)}Di(e,t,i);break;case 1:if(!zt&&(nu(i,t),u=i.stateNode,typeof u.componentWillUnmount=="function"))try{u.props=i.memoizedProps,u.state=i.memoizedState,u.componentWillUnmount()}catch(E){Wt(i,t,E)}Di(e,t,i);break;case 21:Di(e,t,i);break;case 22:i.mode&1?(zt=(u=zt)||i.memoizedState!==null,Di(e,t,i),zt=u):Di(e,t,i);break;default:Di(e,t,i)}}function ru(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var i=e.stateNode;i===null&&(i=e.stateNode=new Gn),t.forEach(function(u){var f=rp.bind(null,e,u);i.has(u)||(i.add(u),u.then(f,f))})}}function Sr(e,t){var i=t.deletions;if(i!==null)for(var u=0;uf&&(f=g),u&=~c}if(u=f,u=Lt()-u,u=(120>u?120:480>u?480:1080>u?1080:1920>u?1920:3e3>u?3e3:4320>u?4320:1960*Xc(u/1960))-u,10e?16:e,No===null)var u=!1;else{if(e=No,No=null,Kn=0,(ft&6)!==0)throw Error(l(331));var f=ft;for(ft|=4,Ee=e.current;Ee!==null;){var c=Ee,g=c.child;if((Ee.flags&16)!==0){var E=c.deletions;if(E!==null){for(var T=0;TLt()-Ff?dl(e,0):ss|=i),lr(e,t)}function rd(e,t){t===0&&((e.mode&1)===0?t=1:(t=gi,gi<<=1,(gi&130023424)===0&&(gi=4194304)));var i=Qn();e=Qi(e,t),e!==null&&(Vo(e,t,i),lr(e,i))}function np(e){var t=e.memoizedState,i=0;t!==null&&(i=t.retryLane),rd(e,i)}function rp(e,t){var i=0;switch(e.tag){case 13:var u=e.stateNode,f=e.memoizedState;f!==null&&(i=f.retryLane);break;case 19:u=e.stateNode;break;default:throw Error(l(314))}u!==null&&u.delete(t),rd(e,i)}var id;id=function(e,t,i){if(e!==null)if(e.memoizedProps!==t.pendingProps||tr.current)Vn=!0;else{if((e.lanes&i)===0&&(t.flags&128)===0)return Vn=!1,Hc(e,t,i);Vn=(e.flags&131072)!==0}else Vn=!1,Mt&&(t.flags&1048576)!==0&&Tc(t,Da,t.index);switch(t.lanes=0,t.tag){case 2:var u=t.type;rs(e,t),e=t.pendingProps;var f=Wl(t,Nn.current);Ao(t,i),f=ul(null,t,u,e,f,i);var c=Ha();return t.flags|=1,typeof f=="object"&&f!==null&&typeof f.render=="function"&&f.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,nr(u)?(c=!0,Ir(t)):c=!1,t.memoizedState=f.state!==null&&f.state!==void 0?f.state:null,$a(t),f.updater=Ya,t.stateNode=f,f._reactInternals=t,wf(t,u,e,i),t=Af(null,t,u,!0,c,i)):(t.tag=0,Mt&&c&&Tu(t),Sn(null,t,f,i),t=t.child),t;case 16:u=t.elementType;e:{switch(rs(e,t),e=t.pendingProps,f=u._init,u=f(u._payload),t.type=u,f=t.tag=op(u),e=zr(u,e),f){case 0:t=xf(null,t,u,e,i);break e;case 1:t=Cf(null,t,u,e,i);break e;case 11:t=bc(null,t,u,e,i);break e;case 14:t=Sf(null,t,u,zr(u.type,e),i);break e}throw Error(l(306,u,""))}return t;case 0:return u=t.type,f=t.pendingProps,f=t.elementType===u?f:zr(u,f),xf(e,t,u,f,i);case 1:return u=t.type,f=t.pendingProps,f=t.elementType===u?f:zr(u,f),Cf(e,t,u,f,i);case 3:e:{if(Wc(t),e===null)throw Error(l(387));u=t.pendingProps,c=t.memoizedState,f=c.element,Ic(e,t),Vl(t,u,null,i);var g=t.memoizedState;if(u=g.element,c.isDehydrated)if(c={element:u,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},t.updateQueue.baseState=c,t.memoizedState=c,t.flags&256){f=sl(Error(l(423)),t),t=Fi(e,t,u,i,f);break e}else if(u!==f){f=sl(Error(l(424)),t),t=Fi(e,t,u,i,f);break e}else for(wr=So(t.stateNode.containerInfo.firstChild),Dn=t,Mt=!0,Zr=null,i=Ua(t,null,u,i),t.child=i;i;)i.flags=i.flags&-3|4096,i=i.sibling;else{if(Ti(),u===f){t=ti(e,t,i);break e}Sn(e,t,u,i)}t=t.child}return t;case 5:return lf(t),e===null&&rr(t),u=t.type,f=t.pendingProps,c=e!==null?e.memoizedProps:null,g=f.children,Au(u,f)?g=null:c!==null&&Au(u,c)&&(t.flags|=32),Pf(e,t),Sn(e,t,g,i),t.child;case 6:return e===null&&rr(t),null;case 13:return ns(e,t,i);case 4:return of(t,t.stateNode.containerInfo),u=t.pendingProps,e===null?t.child=Gt(t,null,u,i):Sn(e,t,u,i),t.child;case 11:return u=t.type,f=t.pendingProps,f=t.elementType===u?f:zr(u,f),bc(e,t,u,f,i);case 7:return Sn(e,t,t.pendingProps,i),t.child;case 8:return Sn(e,t,t.pendingProps.children,i),t.child;case 12:return Sn(e,t,t.pendingProps.children,i),t.child;case 10:e:{if(u=t.type._context,f=t.pendingProps,c=t.memoizedProps,g=f.value,Nt(Lu,u._currentValue),u._currentValue=g,c!==null)if(j(c.value,g)){if(c.children===f.children&&!tr.current){t=ti(e,t,i);break e}}else for(c=t.child,c!==null&&(c.return=t);c!==null;){var E=c.dependencies;if(E!==null){g=c.child;for(var T=E.firstContext;T!==null;){if(T.context===u){if(c.tag===1){T=Ji(-1,i&-i),T.tag=2;var K=c.updateQueue;if(K!==null){K=K.shared;var ae=K.pending;ae===null?T.next=T:(T.next=ae.next,ae.next=T),K.pending=T}}c.lanes|=i,T=c.alternate,T!==null&&(T.lanes|=i),_n(c.return,i,t),E.lanes|=i;break}T=T.next}}else if(c.tag===10)g=c.type===t.type?null:c.child;else if(c.tag===18){if(g=c.return,g===null)throw Error(l(341));g.lanes|=i,E=g.alternate,E!==null&&(E.lanes|=i),_n(g,i,t),g=c.sibling}else g=c.child;if(g!==null)g.return=c;else for(g=c;g!==null;){if(g===t){g=null;break}if(c=g.sibling,c!==null){c.return=g.return,g=c;break}g=g.return}c=g}Sn(e,t,f.children,i),t=t.child}return t;case 9:return f=t.type,u=t.pendingProps.children,Ao(t,i),f=Dr(f),u=u(f),t.flags|=1,Sn(e,t,u,i),t.child;case 14:return u=t.type,f=zr(u,t.pendingProps),f=zr(u.type,f),Sf(e,t,u,f,i);case 15:return Ni(e,t,t.type,t.pendingProps,i);case 17:return u=t.type,f=t.pendingProps,f=t.elementType===u?f:zr(u,f),rs(e,t),t.tag=1,nr(u)?(e=!0,Ir(t)):e=!1,Ao(t,i),al(t,u,f),wf(t,u,f,i),Af(null,t,u,!0,e,i);case 19:return Oo(e,t,i);case 22:return Ef(e,t,i)}throw Error(l(156,t.tag))};function od(e,t){return xl(e,t)}function ip(e,t,i,u){this.tag=e,this.key=i,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=u,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function qr(e,t,i,u){return new ip(e,t,i,u)}function ms(e){return e=e.prototype,!(!e||!e.isReactComponent)}function op(e){if(typeof e=="function")return ms(e)?1:0;if(e!=null){if(e=e.$$typeof,e===we)return 11;if(e===vt)return 14}return 2}function li(e,t){var i=e.alternate;return i===null?(i=qr(e.tag,t,e.key,e.mode),i.elementType=e.elementType,i.type=e.type,i.stateNode=e.stateNode,i.alternate=e,e.alternate=i):(i.pendingProps=t,i.type=e.type,i.flags=0,i.subtreeFlags=0,i.deletions=null),i.flags=e.flags&14680064,i.childLanes=e.childLanes,i.lanes=e.lanes,i.child=e.child,i.memoizedProps=e.memoizedProps,i.memoizedState=e.memoizedState,i.updateQueue=e.updateQueue,t=e.dependencies,i.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},i.sibling=e.sibling,i.index=e.index,i.ref=e.ref,i}function ys(e,t,i,u,f,c){var g=2;if(u=e,typeof e=="function")ms(e)&&(g=1);else if(typeof e=="string")g=5;else e:switch(e){case fe:return hl(i.children,f,c,t);case ve:g=8,f|=8;break;case De:return e=qr(12,i,t,f|2),e.elementType=De,e.lanes=c,e;case Je:return e=qr(13,i,t,f),e.elementType=Je,e.lanes=c,e;case Ye:return e=qr(19,i,t,f),e.elementType=Ye,e.lanes=c,e;case He:return vs(i,f,c,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Re:g=10;break e;case je:g=9;break e;case we:g=11;break e;case vt:g=14;break e;case wt:g=16,u=null;break e}throw Error(l(130,e==null?e:typeof e,""))}return t=qr(g,i,t,f),t.elementType=e,t.type=u,t.lanes=c,t}function hl(e,t,i,u){return e=qr(7,e,u,t),e.lanes=i,e}function vs(e,t,i,u){return e=qr(22,e,u,t),e.elementType=He,e.lanes=i,e.stateNode={isHidden:!1},e}function bf(e,t,i){return e=qr(6,e,null,t),e.lanes=i,e}function Wf(e,t,i){return t=qr(4,e.children!==null?e.children:[],e.key,t),t.lanes=i,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function lp(e,t,i,u,f){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=po(0),this.expirationTimes=po(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=po(0),this.identifierPrefix=u,this.onRecoverableError=f,this.mutableSourceEagerHydrationData=null}function Hf(e,t,i,u,f,c,g,E,T){return e=new lp(e,t,i,E,T),t===1?(t=1,c===!0&&(t|=8)):t=0,c=qr(3,null,null,t),e.current=c,c.stateNode=e,c.memoizedState={element:u,isDehydrated:i,cache:null,transitions:null,pendingSuspenseBoundaries:null},$a(c),e}function up(e,t,i){var u=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(o)}catch(a){console.error(a)}}return o(),Op.exports=Y1(),Op.exports}var Ng;function e_(){if(Ng)return hd;Ng=1;var o=Z1();return hd.createRoot=o.createRoot,hd.hydrateRoot=o.hydrateRoot,hd}var t_=e_(),Ip,Fg;function n_(){if(Fg)return Ip;Fg=1;var o=function(D){return a(D)&&!l(D)};function a(I){return!!I&&typeof I=="object"}function l(I){var D=Object.prototype.toString.call(I);return D==="[object RegExp]"||D==="[object Date]"||_(I)}var p=typeof Symbol=="function"&&Symbol.for,m=p?Symbol.for("react.element"):60103;function _(I){return I.$$typeof===m}function w(I){return Array.isArray(I)?[]:{}}function x(I,D){return D.clone!==!1&&D.isMergeableObject(I)?H(w(I),I,D):I}function M(I,D,Q){return I.concat(D).map(function(ee){return x(ee,Q)})}function L(I,D){if(!D.customMerge)return H;var Q=D.customMerge(I);return typeof Q=="function"?Q:H}function O(I){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(I).filter(function(D){return Object.propertyIsEnumerable.call(I,D)}):[]}function R(I){return Object.keys(I).concat(O(I))}function G(I,D){try{return D in I}catch{return!1}}function F(I,D){return G(I,D)&&!(Object.hasOwnProperty.call(I,D)&&Object.propertyIsEnumerable.call(I,D))}function U(I,D,Q){var ee={};return Q.isMergeableObject(I)&&R(I).forEach(function(te){ee[te]=x(I[te],Q)}),R(D).forEach(function(te){F(I,te)||(G(I,te)&&Q.isMergeableObject(D[te])?ee[te]=L(te,Q)(I[te],D[te],Q):ee[te]=x(D[te],Q))}),ee}function H(I,D,Q){Q=Q||{},Q.arrayMerge=Q.arrayMerge||M,Q.isMergeableObject=Q.isMergeableObject||o,Q.cloneUnlessOtherwiseSpecified=x;var ee=Array.isArray(D),te=Array.isArray(I),oe=ee===te;return oe?ee?Q.arrayMerge(I,D,Q):U(I,D,Q):x(D,Q)}H.all=function(D,Q){if(!Array.isArray(D))throw new Error("first argument should be an array");return D.reduce(function(ee,te){return H(ee,te,Q)},{})};var C=H;return Ip=C,Ip}var r_=n_();const i_=Pd(r_);var Np,Dg;function ks(){return Dg||(Dg=1,Np=TypeError),Np}const o_={},l_=Object.freeze(Object.defineProperty({__proto__:null,default:o_},Symbol.toStringTag,{value:"Module"})),u_=pw(l_);var Fp,Mg;function kd(){if(Mg)return Fp;Mg=1;var o=typeof Map=="function"&&Map.prototype,a=Object.getOwnPropertyDescriptor&&o?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,l=o&&a&&typeof a.get=="function"?a.get:null,p=o&&Map.prototype.forEach,m=typeof Set=="function"&&Set.prototype,_=Object.getOwnPropertyDescriptor&&m?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,w=m&&_&&typeof _.get=="function"?_.get:null,x=m&&Set.prototype.forEach,M=typeof WeakMap=="function"&&WeakMap.prototype,L=M?WeakMap.prototype.has:null,O=typeof WeakSet=="function"&&WeakSet.prototype,R=O?WeakSet.prototype.has:null,G=typeof WeakRef=="function"&&WeakRef.prototype,F=G?WeakRef.prototype.deref:null,U=Boolean.prototype.valueOf,H=Object.prototype.toString,C=Function.prototype.toString,I=String.prototype.match,D=String.prototype.slice,Q=String.prototype.replace,ee=String.prototype.toUpperCase,te=String.prototype.toLowerCase,oe=RegExp.prototype.test,fe=Array.prototype.concat,ve=Array.prototype.join,De=Array.prototype.slice,Re=Math.floor,je=typeof BigInt=="function"?BigInt.prototype.valueOf:null,we=Object.getOwnPropertySymbols,Je=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Symbol.prototype.toString:null,Ye=typeof Symbol=="function"&&typeof Symbol.iterator=="object",vt=typeof Symbol=="function"&&Symbol.toStringTag&&(typeof Symbol.toStringTag===Ye||!0)?Symbol.toStringTag:null,wt=Object.prototype.propertyIsEnumerable,He=(typeof Reflect=="function"?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(b){return b.__proto__}:null);function Y(b,V){if(b===1/0||b===-1/0||b!==b||b&&b>-1e3&&b<1e3||oe.call(/e/,V))return V;var it=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if(typeof b=="number"){var tt=b<0?-Re(-b):Re(b);if(tt!==b){var pt=String(tt),Be=D.call(V,pt.length+1);return Q.call(pt,it,"$&_")+"."+Q.call(Q.call(Be,/([0-9]{3})/g,"$&_"),/_$/,"")}}return Q.call(V,it,"$&_")}var _e=u_,he=_e.custom,A=st(he)?he:null,X={__proto__:null,double:'"',single:"'"},ue={__proto__:null,double:/(["\\])/g,single:/(['\\])/g};Fp=function b(V,it,tt,pt){var Be=it||{};if(At(Be,"quoteStyle")&&!At(X,Be.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(At(Be,"maxStringLength")&&(typeof Be.maxStringLength=="number"?Be.maxStringLength<0&&Be.maxStringLength!==1/0:Be.maxStringLength!==null))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var gn=At(Be,"customInspect")?Be.customInspect:!0;if(typeof gn!="boolean"&&gn!=="symbol")throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(At(Be,"indent")&&Be.indent!==null&&Be.indent!==" "&&!(parseInt(Be.indent,10)===Be.indent&&Be.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(At(Be,"numericSeparator")&&typeof Be.numericSeparator!="boolean")throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var Xn=Be.numericSeparator;if(typeof V>"u")return"undefined";if(V===null)return"null";if(typeof V=="boolean")return V?"true":"false";if(typeof V=="string")return $n(V,Be);if(typeof V=="number"){if(V===0)return 1/0/V>0?"0":"-0";var Vt=String(V);return Xn?Y(V,Vt):Vt}if(typeof V=="bigint"){var bn=String(V)+"n";return Xn?Y(V,bn):bn}var di=typeof Be.depth>"u"?5:Be.depth;if(typeof tt>"u"&&(tt=0),tt>=di&&di>0&&typeof V=="object")return rt(V)?"[Array]":"[Object]";var Yn=so(Be,tt);if(typeof pt>"u")pt=[];else if(nn(pt,V)>=0)return"[Circular]";function Jt(Qr,zi,xl){if(zi&&(pt=De.call(pt),pt.push(zi)),xl){var hr={depth:Be.depth};return At(Be,"quoteStyle")&&(hr.quoteStyle=Be.quoteStyle),b(Qr,hr,tt+1,pt)}return b(Qr,Be,tt+1,pt)}if(typeof V=="function"&&!Me(V)){var $o=Cr(V),pi=fr(V,Jt);return"[Function"+($o?": "+$o:" (anonymous)")+"]"+(pi.length>0?" { "+ve.call(pi,", ")+" }":"")}if(st(V)){var hi=Ye?Q.call(String(V),/^(Symbol\(.*\))_[^)]*$/,"$1"):Je.call(V);return typeof V=="object"&&!Ye?ar(hi):hi}if(_l(V)){for(var cr="<"+te.call(String(V.nodeName)),Bi=V.attributes||[],dr=0;dr",cr}if(rt(V)){if(V.length===0)return"[]";var Ar=fr(V,Jt);return Yn&&!ao(Ar)?"["+Kr(Ar,Yn)+"]":"[ "+ve.call(Ar,", ")+" ]"}if(Ue(V)){var An=fr(V,Jt);return!("cause"in Error.prototype)&&"cause"in V&&!wt.call(V,"cause")?"{ ["+String(V)+"] "+ve.call(fe.call("[cause]: "+Jt(V.cause),An),", ")+" }":An.length===0?"["+String(V)+"]":"{ ["+String(V)+"] "+ve.call(An,", ")+" }"}if(typeof V=="object"&&gn){if(A&&typeof V[A]=="function"&&_e)return _e(V,{depth:di-tt});if(gn!=="symbol"&&typeof V.inspect=="function")return V.inspect()}if(St(V)){var fo=[];return p&&p.call(V,function(Qr,zi){fo.push(Jt(zi,V,!0)+" => "+Jt(Qr,V))}),sr("Map",l.call(V),fo,Yn)}if(Gr(V)){var Sl=[];return x&&x.call(V,function(Qr){Sl.push(Jt(Qr,V))}),sr("Set",w.call(V),Sl,Yn)}if(Cn(V))return jt("WeakMap");if(ci(V))return jt("WeakSet");if(Jn(V))return jt("WeakRef");if(ot(V))return ar(Jt(Number(V)));if(Kt(V))return ar(Jt(je.call(V)));if(Ct(V))return ar(U.call(V));if(dt(V))return ar(Jt(String(V)));if(typeof window<"u"&&V===window)return"{ [object Window] }";if(typeof globalThis<"u"&&V===globalThis||typeof Bo<"u"&&V===Bo)return"{ [object globalThis] }";if(!Le(V)&&!Me(V)){var qo=fr(V,Jt),El=He?He(V)===Object.prototype:V instanceof Object||V.constructor===Object,pr=V instanceof Object?"":"null prototype",Rn=!El&&vt&&Object(V)===V&&vt in V?D.call(hn(V),8,-1):pr?"Object":"",Pl=El||typeof V.constructor!="function"?"":V.constructor.name?V.constructor.name+" ":"",bo=Pl+(Rn||pr?"["+ve.call(fe.call([],Rn||[],pr||[]),": ")+"] ":"");return qo.length===0?bo+"{}":Yn?bo+"{"+Kr(qo,Yn)+"}":bo+"{ "+ve.call(qo,", ")+" }"}return String(V)};function xe(b,V,it){var tt=it.quoteStyle||V,pt=X[tt];return pt+b+pt}function de(b){return Q.call(String(b),/"/g,""")}function Ne(b){return!vt||!(typeof b=="object"&&(vt in b||typeof b[vt]<"u"))}function rt(b){return hn(b)==="[object Array]"&&Ne(b)}function Le(b){return hn(b)==="[object Date]"&&Ne(b)}function Me(b){return hn(b)==="[object RegExp]"&&Ne(b)}function Ue(b){return hn(b)==="[object Error]"&&Ne(b)}function dt(b){return hn(b)==="[object String]"&&Ne(b)}function ot(b){return hn(b)==="[object Number]"&&Ne(b)}function Ct(b){return hn(b)==="[object Boolean]"&&Ne(b)}function st(b){if(Ye)return b&&typeof b=="object"&&b instanceof Symbol;if(typeof b=="symbol")return!0;if(!b||typeof b!="object"||!Je)return!1;try{return Je.call(b),!0}catch{}return!1}function Kt(b){if(!b||typeof b!="object"||!je)return!1;try{return je.call(b),!0}catch{}return!1}var Qt=Object.prototype.hasOwnProperty||function(b){return b in this};function At(b,V){return Qt.call(b,V)}function hn(b){return H.call(b)}function Cr(b){if(b.name)return b.name;var V=I.call(C.call(b),/^function\s*([\w$]+)/);return V?V[1]:null}function nn(b,V){if(b.indexOf)return b.indexOf(V);for(var it=0,tt=b.length;itV.maxStringLength){var it=b.length-V.maxStringLength,tt="... "+it+" more character"+(it>1?"s":"");return $n(D.call(b,0,V.maxStringLength),V)+tt}var pt=ue[V.quoteStyle||"single"];pt.lastIndex=0;var Be=Q.call(Q.call(b,pt,"\\$1"),/[\x00-\x1f]/g,qn);return xe(Be,"single",V)}function qn(b){var V=b.charCodeAt(0),it={8:"b",9:"t",10:"n",12:"f",13:"r"}[V];return it?"\\"+it:"\\x"+(V<16?"0":"")+ee.call(V.toString(16))}function ar(b){return"Object("+b+")"}function jt(b){return b+" { ? }"}function sr(b,V,it,tt){var pt=tt?Kr(it,tt):ve.call(it,", ");return b+" ("+V+") {"+pt+"}"}function ao(b){for(var V=0;V=0)return!1;return!0}function so(b,V){var it;if(b.indent===" ")it=" ";else if(typeof b.indent=="number"&&b.indent>0)it=ve.call(Array(b.indent+1)," ");else return null;return{base:it,prev:ve.call(Array(V+1),it)}}function Kr(b,V){if(b.length===0)return"";var it=` +`+V.prev+V.base;return it+ve.call(b,","+it)+` +`+V.prev}function fr(b,V){var it=rt(b),tt=[];if(it){tt.length=b.length;for(var pt=0;pt"u"||!fe?o:fe(Uint8Array),Ye={__proto__:null,"%AggregateError%":typeof AggregateError>"u"?o:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?o:ArrayBuffer,"%ArrayIteratorPrototype%":oe&&fe?fe([][Symbol.iterator]()):o,"%AsyncFromSyncIteratorPrototype%":o,"%AsyncFunction%":we,"%AsyncGenerator%":we,"%AsyncGeneratorFunction%":we,"%AsyncIteratorPrototype%":we,"%Atomics%":typeof Atomics>"u"?o:Atomics,"%BigInt%":typeof BigInt>"u"?o:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?o:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?o:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?o:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":l,"%eval%":eval,"%EvalError%":p,"%Float16Array%":typeof Float16Array>"u"?o:Float16Array,"%Float32Array%":typeof Float32Array>"u"?o:Float32Array,"%Float64Array%":typeof Float64Array>"u"?o:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?o:FinalizationRegistry,"%Function%":C,"%GeneratorFunction%":we,"%Int8Array%":typeof Int8Array>"u"?o:Int8Array,"%Int16Array%":typeof Int16Array>"u"?o:Int16Array,"%Int32Array%":typeof Int32Array>"u"?o:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":oe&&fe?fe(fe([][Symbol.iterator]())):o,"%JSON%":typeof JSON=="object"?JSON:o,"%Map%":typeof Map>"u"?o:Map,"%MapIteratorPrototype%":typeof Map>"u"||!oe||!fe?o:fe(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":a,"%Object.getOwnPropertyDescriptor%":D,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?o:Promise,"%Proxy%":typeof Proxy>"u"?o:Proxy,"%RangeError%":m,"%ReferenceError%":_,"%Reflect%":typeof Reflect>"u"?o:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?o:Set,"%SetIteratorPrototype%":typeof Set>"u"||!oe||!fe?o:fe(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?o:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":oe&&fe?fe(""[Symbol.iterator]()):o,"%Symbol%":oe?Symbol:o,"%SyntaxError%":w,"%ThrowTypeError%":te,"%TypedArray%":Je,"%TypeError%":x,"%Uint8Array%":typeof Uint8Array>"u"?o:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?o:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?o:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?o:Uint32Array,"%URIError%":M,"%WeakMap%":typeof WeakMap>"u"?o:WeakMap,"%WeakRef%":typeof WeakRef>"u"?o:WeakRef,"%WeakSet%":typeof WeakSet>"u"?o:WeakSet,"%Function.prototype.call%":je,"%Function.prototype.apply%":Re,"%Object.defineProperty%":Q,"%Object.getPrototypeOf%":ve,"%Math.abs%":L,"%Math.floor%":O,"%Math.max%":R,"%Math.min%":G,"%Math.pow%":F,"%Math.round%":U,"%Math.sign%":H,"%Reflect.getPrototypeOf%":De};if(fe)try{null.error}catch(Me){var vt=fe(fe(Me));Ye["%Error.prototype%"]=vt}var wt=function Me(Ue){var dt;if(Ue==="%AsyncFunction%")dt=I("async function () {}");else if(Ue==="%GeneratorFunction%")dt=I("function* () {}");else if(Ue==="%AsyncGeneratorFunction%")dt=I("async function* () {}");else if(Ue==="%AsyncGenerator%"){var ot=Me("%AsyncGeneratorFunction%");ot&&(dt=ot.prototype)}else if(Ue==="%AsyncIteratorPrototype%"){var Ct=Me("%AsyncGenerator%");Ct&&fe&&(dt=fe(Ct.prototype))}return Ye[Ue]=dt,dt},He={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},Y=Ld(),_e=I_(),he=Y.call(je,Array.prototype.concat),A=Y.call(Re,Array.prototype.splice),X=Y.call(je,String.prototype.replace),ue=Y.call(je,String.prototype.slice),xe=Y.call(je,RegExp.prototype.exec),de=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,Ne=/\\(\\)?/g,rt=function(Ue){var dt=ue(Ue,0,1),ot=ue(Ue,-1);if(dt==="%"&&ot!=="%")throw new w("invalid intrinsic syntax, expected closing `%`");if(ot==="%"&&dt!=="%")throw new w("invalid intrinsic syntax, expected opening `%`");var Ct=[];return X(Ue,de,function(st,Kt,Qt,At){Ct[Ct.length]=Qt?X(At,Ne,"$1"):Kt||st}),Ct},Le=function(Ue,dt){var ot=Ue,Ct;if(_e(He,ot)&&(Ct=He[ot],ot="%"+Ct[0]+"%"),_e(Ye,ot)){var st=Ye[ot];if(st===we&&(st=wt(ot)),typeof st>"u"&&!dt)throw new x("intrinsic "+Ue+" exists, but is not available. Please file an issue!");return{alias:Ct,name:ot,value:st}}throw new w("intrinsic "+Ue+" does not exist!")};return hh=function(Ue,dt){if(typeof Ue!="string"||Ue.length===0)throw new x("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof dt!="boolean")throw new x('"allowMissing" argument must be a boolean');if(xe(/^%?[^%]*%?$/,Ue)===null)throw new w("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var ot=rt(Ue),Ct=ot.length>0?ot[0]:"",st=Le("%"+Ct+"%",dt),Kt=st.name,Qt=st.value,At=!1,hn=st.alias;hn&&(Ct=hn[0],A(ot,he([0,1],hn)));for(var Cr=1,nn=!0;Cr=ot.length){var Gr=D(Qt,St);nn=!!Gr,nn&&"get"in Gr&&!("originalValue"in Gr.get)?Qt=Gr.get:Qt=Qt[St]}else nn=_e(Qt,St),Qt=Qt[St];nn&&!At&&(Ye[Kt]=Qt)}}return Qt},hh}var gh,ym;function gy(){if(ym)return gh;ym=1;var o=Wh(),a=hy(),l=a([o("%String.prototype.indexOf%")]);return gh=function(m,_){var w=o(m,!!_);return typeof w=="function"&&l(m,".prototype.")>-1?a([w]):w},gh}var mh,vm;function my(){if(vm)return mh;vm=1;var o=Wh(),a=gy(),l=kd(),p=ks(),m=o("%Map%",!0),_=a("Map.prototype.get",!0),w=a("Map.prototype.set",!0),x=a("Map.prototype.has",!0),M=a("Map.prototype.delete",!0),L=a("Map.prototype.size",!0);return mh=!!m&&function(){var R,G={assert:function(F){if(!G.has(F))throw new p("Side channel does not contain "+l(F))},delete:function(F){if(R){var U=M(R,F);return L(R)===0&&(R=void 0),U}return!1},get:function(F){if(R)return _(R,F)},has:function(F){return R?x(R,F):!1},set:function(F,U){R||(R=new m),w(R,F,U)}};return G},mh}var yh,wm;function N_(){if(wm)return yh;wm=1;var o=Wh(),a=gy(),l=kd(),p=my(),m=ks(),_=o("%WeakMap%",!0),w=a("WeakMap.prototype.get",!0),x=a("WeakMap.prototype.set",!0),M=a("WeakMap.prototype.has",!0),L=a("WeakMap.prototype.delete",!0);return yh=_?function(){var R,G,F={assert:function(U){if(!F.has(U))throw new m("Side channel does not contain "+l(U))},delete:function(U){if(_&&U&&(typeof U=="object"||typeof U=="function")){if(R)return L(R,U)}else if(p&&G)return G.delete(U);return!1},get:function(U){return _&&U&&(typeof U=="object"||typeof U=="function")&&R?w(R,U):G&&G.get(U)},has:function(U){return _&&U&&(typeof U=="object"||typeof U=="function")&&R?M(R,U):!!G&&G.has(U)},set:function(U,H){_&&U&&(typeof U=="object"||typeof U=="function")?(R||(R=new _),x(R,U,H)):p&&(G||(G=p()),G.set(U,H))}};return F}:p,yh}var vh,_m;function F_(){if(_m)return vh;_m=1;var o=ks(),a=kd(),l=a_(),p=my(),m=N_(),_=m||p||l;return vh=function(){var x,M={assert:function(L){if(!M.has(L))throw new o("Side channel does not contain "+a(L))},delete:function(L){return!!x&&x.delete(L)},get:function(L){return x&&x.get(L)},has:function(L){return!!x&&x.has(L)},set:function(L,O){x||(x=_()),x.set(L,O)}};return M},vh}var wh,Sm;function Hh(){if(Sm)return wh;Sm=1;var o=String.prototype.replace,a=/%20/g,l={RFC1738:"RFC1738",RFC3986:"RFC3986"};return wh={default:l.RFC3986,formatters:{RFC1738:function(p){return o.call(p,a,"+")},RFC3986:function(p){return String(p)}},RFC1738:l.RFC1738,RFC3986:l.RFC3986},wh}var _h,Em;function yy(){if(Em)return _h;Em=1;var o=Hh(),a=Object.prototype.hasOwnProperty,l=Array.isArray,p=function(){for(var C=[],I=0;I<256;++I)C.push("%"+((I<16?"0":"")+I.toString(16)).toUpperCase());return C}(),m=function(I){for(;I.length>1;){var D=I.pop(),Q=D.obj[D.prop];if(l(Q)){for(var ee=[],te=0;te=L?oe.slice(ve,ve+L):oe,Re=[],je=0;je=48&&we<=57||we>=65&&we<=90||we>=97&&we<=122||te===o.RFC1738&&(we===40||we===41)){Re[Re.length]=De.charAt(je);continue}if(we<128){Re[Re.length]=p[we];continue}if(we<2048){Re[Re.length]=p[192|we>>6]+p[128|we&63];continue}if(we<55296||we>=57344){Re[Re.length]=p[224|we>>12]+p[128|we>>6&63]+p[128|we&63];continue}je+=1,we=65536+((we&1023)<<10|De.charCodeAt(je)&1023),Re[Re.length]=p[240|we>>18]+p[128|we>>12&63]+p[128|we>>6&63]+p[128|we&63]}fe+=Re.join("")}return fe},R=function(I){for(var D=[{obj:{o:I},prop:"o"}],Q=[],ee=0;ee"u"&&(he=0)}if(typeof De=="function"?Y=De(I,Y):Y instanceof Date?Y=we(Y):D==="comma"&&_(Y)&&(Y=a.maybeMap(Y,function(Kt){return Kt instanceof Date?we(Kt):Kt})),Y===null){if(te)return ve&&!vt?ve(I,O.encoder,wt,"key",Je):I;Y=""}if(R(Y)||a.isBuffer(Y)){if(ve){var ue=vt?I:ve(I,O.encoder,wt,"key",Je);return[Ye(ue)+"="+Ye(ve(Y,O.encoder,wt,"value",Je))]}return[Ye(I)+"="+Ye(String(Y))]}var xe=[];if(typeof Y>"u")return xe;var de;if(D==="comma"&&_(Y))vt&&ve&&(Y=a.maybeMap(Y,ve)),de=[{value:Y.length>0?Y.join(",")||null:void 0}];else if(_(De))de=De;else{var Ne=Object.keys(Y);de=Re?Ne.sort(Re):Ne}var rt=fe?String(I).replace(/\./g,"%2E"):String(I),Le=Q&&_(Y)&&Y.length===1?rt+"[]":rt;if(ee&&_(Y)&&Y.length===0)return Le+"[]";for(var Me=0;Me"u"?C.encodeDotInKeys===!0?!0:O.allowDots:!!C.allowDots;return{addQueryPrefix:typeof C.addQueryPrefix=="boolean"?C.addQueryPrefix:O.addQueryPrefix,allowDots:oe,allowEmptyArrays:typeof C.allowEmptyArrays=="boolean"?!!C.allowEmptyArrays:O.allowEmptyArrays,arrayFormat:te,charset:I,charsetSentinel:typeof C.charsetSentinel=="boolean"?C.charsetSentinel:O.charsetSentinel,commaRoundTrip:!!C.commaRoundTrip,delimiter:typeof C.delimiter>"u"?O.delimiter:C.delimiter,encode:typeof C.encode=="boolean"?C.encode:O.encode,encodeDotInKeys:typeof C.encodeDotInKeys=="boolean"?C.encodeDotInKeys:O.encodeDotInKeys,encoder:typeof C.encoder=="function"?C.encoder:O.encoder,encodeValuesOnly:typeof C.encodeValuesOnly=="boolean"?C.encodeValuesOnly:O.encodeValuesOnly,filter:ee,format:D,formatter:Q,serializeDate:typeof C.serializeDate=="function"?C.serializeDate:O.serializeDate,skipNulls:typeof C.skipNulls=="boolean"?C.skipNulls:O.skipNulls,sort:typeof C.sort=="function"?C.sort:null,strictNullHandling:typeof C.strictNullHandling=="boolean"?C.strictNullHandling:O.strictNullHandling}};return Sh=function(H,C){var I=H,D=U(C),Q,ee;typeof D.filter=="function"?(ee=D.filter,I=ee("",I)):_(D.filter)&&(ee=D.filter,Q=ee);var te=[];if(typeof I!="object"||I===null)return"";var oe=m[D.arrayFormat],fe=oe==="comma"&&D.commaRoundTrip;Q||(Q=Object.keys(I)),D.sort&&Q.sort(D.sort);for(var ve=o(),De=0;De0?Je+we:""},Sh}var Eh,xm;function M_(){if(xm)return Eh;xm=1;var o=yy(),a=Object.prototype.hasOwnProperty,l=Array.isArray,p={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!1,decoder:o.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictDepth:!1,strictNullHandling:!1,throwOnLimitExceeded:!1},m=function(G){return G.replace(/&#(\d+);/g,function(F,U){return String.fromCharCode(parseInt(U,10))})},_=function(G,F,U){if(G&&typeof G=="string"&&F.comma&&G.indexOf(",")>-1)return G.split(",");if(F.throwOnLimitExceeded&&U>=F.arrayLimit)throw new RangeError("Array limit exceeded. Only "+F.arrayLimit+" element"+(F.arrayLimit===1?"":"s")+" allowed in an array.");return G},w="utf8=%26%2310003%3B",x="utf8=%E2%9C%93",M=function(F,U){var H={__proto__:null},C=U.ignoreQueryPrefix?F.replace(/^\?/,""):F;C=C.replace(/%5B/gi,"[").replace(/%5D/gi,"]");var I=U.parameterLimit===1/0?void 0:U.parameterLimit,D=C.split(U.delimiter,U.throwOnLimitExceeded?I+1:I);if(U.throwOnLimitExceeded&&D.length>I)throw new RangeError("Parameter limit exceeded. Only "+I+" parameter"+(I===1?"":"s")+" allowed.");var Q=-1,ee,te=U.charset;if(U.charsetSentinel)for(ee=0;ee-1&&(Re=l(Re)?[Re]:Re);var je=a.call(H,De);je&&U.duplicates==="combine"?H[De]=o.combine(H[De],Re):(!je||U.duplicates==="last")&&(H[De]=Re)}return H},L=function(G,F,U,H){var C=0;if(G.length>0&&G[G.length-1]==="[]"){var I=G.slice(0,-1).join("");C=Array.isArray(F)&&F[I]?F[I].length:0}for(var D=H?F:_(F,U,C),Q=G.length-1;Q>=0;--Q){var ee,te=G[Q];if(te==="[]"&&U.parseArrays)ee=U.allowEmptyArrays&&(D===""||U.strictNullHandling&&D===null)?[]:o.combine([],D);else{ee=U.plainObjects?{__proto__:null}:{};var oe=te.charAt(0)==="["&&te.charAt(te.length-1)==="]"?te.slice(1,-1):te,fe=U.decodeDotInKeys?oe.replace(/%2E/g,"."):oe,ve=parseInt(fe,10);!U.parseArrays&&fe===""?ee={0:D}:!isNaN(ve)&&te!==fe&&String(ve)===fe&&ve>=0&&U.parseArrays&&ve<=U.arrayLimit?(ee=[],ee[ve]=D):fe!=="__proto__"&&(ee[fe]=D)}D=ee}return D},O=function(F,U,H,C){if(F){var I=H.allowDots?F.replace(/\.([^.[]+)/g,"[$1]"):F,D=/(\[[^[\]]*])/,Q=/(\[[^[\]]*])/g,ee=H.depth>0&&D.exec(I),te=ee?I.slice(0,ee.index):I,oe=[];if(te){if(!H.plainObjects&&a.call(Object.prototype,te)&&!H.allowPrototypes)return;oe.push(te)}for(var fe=0;H.depth>0&&(ee=Q.exec(I))!==null&&fe"u"?p.charset:F.charset,H=typeof F.duplicates>"u"?p.duplicates:F.duplicates;if(H!=="combine"&&H!=="first"&&H!=="last")throw new TypeError("The duplicates option must be either combine, first, or last");var C=typeof F.allowDots>"u"?F.decodeDotInKeys===!0?!0:p.allowDots:!!F.allowDots;return{allowDots:C,allowEmptyArrays:typeof F.allowEmptyArrays=="boolean"?!!F.allowEmptyArrays:p.allowEmptyArrays,allowPrototypes:typeof F.allowPrototypes=="boolean"?F.allowPrototypes:p.allowPrototypes,allowSparse:typeof F.allowSparse=="boolean"?F.allowSparse:p.allowSparse,arrayLimit:typeof F.arrayLimit=="number"?F.arrayLimit:p.arrayLimit,charset:U,charsetSentinel:typeof F.charsetSentinel=="boolean"?F.charsetSentinel:p.charsetSentinel,comma:typeof F.comma=="boolean"?F.comma:p.comma,decodeDotInKeys:typeof F.decodeDotInKeys=="boolean"?F.decodeDotInKeys:p.decodeDotInKeys,decoder:typeof F.decoder=="function"?F.decoder:p.decoder,delimiter:typeof F.delimiter=="string"||o.isRegExp(F.delimiter)?F.delimiter:p.delimiter,depth:typeof F.depth=="number"||F.depth===!1?+F.depth:p.depth,duplicates:H,ignoreQueryPrefix:F.ignoreQueryPrefix===!0,interpretNumericEntities:typeof F.interpretNumericEntities=="boolean"?F.interpretNumericEntities:p.interpretNumericEntities,parameterLimit:typeof F.parameterLimit=="number"?F.parameterLimit:p.parameterLimit,parseArrays:F.parseArrays!==!1,plainObjects:typeof F.plainObjects=="boolean"?F.plainObjects:p.plainObjects,strictDepth:typeof F.strictDepth=="boolean"?!!F.strictDepth:p.strictDepth,strictNullHandling:typeof F.strictNullHandling=="boolean"?F.strictNullHandling:p.strictNullHandling,throwOnLimitExceeded:typeof F.throwOnLimitExceeded=="boolean"?F.throwOnLimitExceeded:!1}};return Eh=function(G,F){var U=R(F);if(G===""||G===null||typeof G>"u")return U.plainObjects?{__proto__:null}:{};for(var H=typeof G=="string"?M(G,U):G,C=U.plainObjects?{__proto__:null}:{},I=Object.keys(H),D=0;Do.apply(this,p),a)}}function uo(o,a){return document.dispatchEvent(new CustomEvent(`inertia:${o}`,a))}var Rm=o=>uo("before",{cancelable:!0,detail:{visit:o}}),B_=o=>uo("error",{detail:{errors:o}}),z_=o=>uo("exception",{cancelable:!0,detail:{exception:o}}),$_=o=>uo("finish",{detail:{visit:o}}),q_=o=>uo("invalid",{cancelable:!0,detail:{response:o}}),ec=o=>uo("navigate",{detail:{page:o}}),b_=o=>uo("progress",{detail:{progress:o}}),W_=o=>uo("start",{detail:{visit:o}}),H_=o=>uo("success",{detail:{page:o}}),j_=(o,a)=>uo("prefetched",{detail:{fetchedAt:Date.now(),response:o.data,visit:a}}),V_=o=>uo("prefetching",{detail:{visit:o}}),xr=class{static set(o,a){typeof window<"u"&&window.sessionStorage.setItem(o,JSON.stringify(a))}static get(o){if(typeof window<"u")return JSON.parse(window.sessionStorage.getItem(o)||"null")}static merge(o,a){let l=this.get(o);l===null?this.set(o,a):this.set(o,{...l,...a})}static remove(o){typeof window<"u"&&window.sessionStorage.removeItem(o)}static removeNested(o,a){let l=this.get(o);l!==null&&(delete l[a],this.set(o,l))}static exists(o){try{return this.get(o)!==null}catch{return!1}}static clear(){typeof window<"u"&&window.sessionStorage.clear()}};xr.locationVisitKey="inertiaLocationVisit";var G_=async o=>{if(typeof window>"u")throw new Error("Unable to encrypt history");let a=vy(),l=await wy(),p=await Z_(l);if(!p)throw new Error("Unable to encrypt history");return await Q_(a,p,o)},Rs={key:"historyKey",iv:"historyIv"},K_=async o=>{let a=vy(),l=await wy();if(!l)throw new Error("Unable to decrypt history");return await J_(a,l,o)},Q_=async(o,a,l)=>{if(typeof window>"u")throw new Error("Unable to encrypt history");if(typeof window.crypto.subtle>"u")return console.warn("Encryption is not supported in this environment. SSL is required."),Promise.resolve(l);let p=new TextEncoder,m=JSON.stringify(l),_=new Uint8Array(m.length*3),w=p.encodeInto(m,_);return window.crypto.subtle.encrypt({name:"AES-GCM",iv:o},a,_.subarray(0,w.written))},J_=async(o,a,l)=>{if(typeof window.crypto.subtle>"u")return console.warn("Decryption is not supported in this environment. SSL is required."),Promise.resolve(l);let p=await window.crypto.subtle.decrypt({name:"AES-GCM",iv:o},a,l);return JSON.parse(new TextDecoder().decode(p))},vy=()=>{let o=xr.get(Rs.iv);if(o)return new Uint8Array(o);let a=window.crypto.getRandomValues(new Uint8Array(12));return xr.set(Rs.iv,Array.from(a)),a},X_=async()=>typeof window.crypto.subtle>"u"?(console.warn("Encryption is not supported in this environment. SSL is required."),Promise.resolve(null)):window.crypto.subtle.generateKey({name:"AES-GCM",length:256},!0,["encrypt","decrypt"]),Y_=async o=>{if(typeof window.crypto.subtle>"u")return console.warn("Encryption is not supported in this environment. SSL is required."),Promise.resolve();let a=await window.crypto.subtle.exportKey("raw",o);xr.set(Rs.key,Array.from(new Uint8Array(a)))},Z_=async o=>{if(o)return o;let a=await X_();return a?(await Y_(a),a):null},wy=async()=>{let o=xr.get(Rs.key);return o?await window.crypto.subtle.importKey("raw",new Uint8Array(o),{name:"AES-GCM",length:256},!0,["encrypt","decrypt"]):null},oo=class{static save(){xt.saveScrollPositions(Array.from(this.regions()).map(o=>({top:o.scrollTop,left:o.scrollLeft})))}static regions(){return document.querySelectorAll("[scroll-region]")}static reset(){typeof window<"u"&&window.scrollTo(0,0),this.regions().forEach(o=>{typeof o.scrollTo=="function"?o.scrollTo(0,0):(o.scrollTop=0,o.scrollLeft=0)}),this.save(),window.location.hash&&setTimeout(()=>{var o;return(o=document.getElementById(window.location.hash.slice(1)))==null?void 0:o.scrollIntoView()})}static restore(o){this.restoreDocument(),this.regions().forEach((a,l)=>{let p=o[l];p&&(typeof a.scrollTo=="function"?a.scrollTo(p.left,p.top):(a.scrollTop=p.top,a.scrollLeft=p.left))})}static restoreDocument(){let o=xt.getDocumentScrollPosition();typeof window<"u"&&window.scrollTo(o.left,o.top)}static onScroll(o){let a=o.target;typeof a.hasAttribute=="function"&&a.hasAttribute("scroll-region")&&this.save()}static onWindowScroll(){xt.saveDocumentScrollPosition({top:window.scrollY,left:window.scrollX})}};function Nh(o){return o instanceof File||o instanceof Blob||o instanceof FileList&&o.length>0||o instanceof FormData&&Array.from(o.values()).some(a=>Nh(a))||typeof o=="object"&&o!==null&&Object.values(o).some(a=>Nh(a))}var Tm=o=>o instanceof FormData;function _y(o,a=new FormData,l=null){o=o||{};for(let p in o)Object.prototype.hasOwnProperty.call(o,p)&&Ey(a,Sy(l,p),o[p]);return a}function Sy(o,a){return o?o+"["+a+"]":a}function Ey(o,a,l){if(Array.isArray(l))return Array.from(l.keys()).forEach(p=>Ey(o,Sy(a,p.toString()),l[p]));if(l instanceof Date)return o.append(a,l.toISOString());if(l instanceof File)return o.append(a,l,l.name);if(l instanceof Blob)return o.append(a,l);if(typeof l=="boolean")return o.append(a,l?"1":"0");if(typeof l=="string")return o.append(a,l);if(typeof l=="number")return o.append(a,`${l}`);if(l==null)return o.append(a,"");_y(l,o,a)}function uu(o){return new URL(o.toString(),typeof window>"u"?void 0:window.location.toString())}var eS=(o,a,l,p,m)=>{let _=typeof o=="string"?uu(o):o;if((Nh(a)||p)&&!Tm(a)&&(a=_y(a)),Tm(a))return[_,a];let[w,x]=Py(l,_,a,m);return[uu(w),x]};function Py(o,a,l,p="brackets"){let m=/^https?:\/\//.test(a.toString()),_=m||a.toString().startsWith("/"),w=!_&&!a.toString().startsWith("#")&&!a.toString().startsWith("?"),x=a.toString().includes("?")||o==="get"&&Object.keys(l).length,M=a.toString().includes("#"),L=new URL(a.toString(),"http://localhost");return o==="get"&&Object.keys(l).length&&(L.search=Am.stringify(i_(Am.parse(L.search,{ignoreQueryPrefix:!0}),l),{encodeValuesOnly:!0,arrayFormat:p}),l={}),[[m?`${L.protocol}//${L.host}`:"",_?L.pathname:"",w?L.pathname.substring(1):"",x?L.search:"",M?L.hash:""].join(""),l]}function Ed(o){return o=new URL(o.href),o.hash="",o}var Om=(o,a)=>{o.hash&&!a.hash&&Ed(o).href===a.href&&(a.hash=o.hash)},Fh=(o,a)=>Ed(o).href===Ed(a).href,tS=class{constructor(){this.componentId={},this.listeners=[],this.isFirstPageLoad=!0,this.cleared=!1}init({initialPage:o,swapComponent:a,resolveComponent:l}){return this.page=o,this.swapComponent=a,this.resolveComponent=l,this}set(o,{replace:a=!1,preserveScroll:l=!1,preserveState:p=!1}={}){this.componentId={};let m=this.componentId;return o.clearHistory&&xt.clear(),this.resolve(o.component).then(_=>{if(m!==this.componentId)return;o.rememberedState??(o.rememberedState={});let w=typeof window<"u"?window.location:new URL(o.url);return a=a||Fh(uu(o.url),w),new Promise(x=>{a?xt.replaceState(o,()=>x(null)):xt.pushState(o,()=>x(null))}).then(()=>{let x=!this.isTheSame(o);return this.page=o,this.cleared=!1,x&&this.fireEventsFor("newComponent"),this.isFirstPageLoad&&this.fireEventsFor("firstLoad"),this.isFirstPageLoad=!1,this.swap({component:_,page:o,preserveState:p}).then(()=>{l||oo.reset(),ia.fireInternalEvent("loadDeferredProps"),a||ec(o)})})})}setQuietly(o,{preserveState:a=!1}={}){return this.resolve(o.component).then(l=>(this.page=o,this.cleared=!1,xt.setCurrent(o),this.swap({component:l,page:o,preserveState:a})))}clear(){this.cleared=!0}isCleared(){return this.cleared}get(){return this.page}merge(o){this.page={...this.page,...o}}setUrlHash(o){this.page.url.includes(o)||(this.page.url+=o)}remember(o){this.page.rememberedState=o}swap({component:o,page:a,preserveState:l}){return this.swapComponent({component:o,page:a,preserveState:l})}resolve(o){return Promise.resolve(this.resolveComponent(o))}isTheSame(o){return this.page.component===o.component}on(o,a){return this.listeners.push({event:o,callback:a}),()=>{this.listeners=this.listeners.filter(l=>l.event!==o&&l.callback!==a)}}fireEventsFor(o){this.listeners.filter(a=>a.event===o).forEach(a=>a.callback())}},Qe=new tS,xy=class{constructor(){this.items=[],this.processingPromise=null}add(o){return this.items.push(o),this.process()}process(){return this.processingPromise??(this.processingPromise=this.processNext().then(()=>{this.processingPromise=null})),this.processingPromise}processNext(){let o=this.items.shift();return o?Promise.resolve(o()).then(()=>this.processNext()):Promise.resolve()}},Yf=typeof window>"u",Jf=new xy,km=!Yf&&/CriOS/.test(window.navigator.userAgent),nS=class{constructor(){this.rememberedState="rememberedState",this.scrollRegions="scrollRegions",this.preserveUrl=!1,this.current={},this.initialState=null}remember(o,a){var l;this.replaceState({...Qe.get(),rememberedState:{...((l=Qe.get())==null?void 0:l.rememberedState)??{},[a]:o}})}restore(o){var a,l;if(!Yf)return(l=(a=this.initialState)==null?void 0:a[this.rememberedState])==null?void 0:l[o]}pushState(o,a=null){if(!Yf){if(this.preserveUrl){a&&a();return}this.current=o,Jf.add(()=>this.getPageData(o).then(l=>{let p=()=>{this.doPushState({page:l},o.url),a&&a()};km?setTimeout(p):p()}))}}getPageData(o){return new Promise(a=>o.encryptHistory?G_(o).then(a):a(o))}processQueue(){return Jf.process()}decrypt(o=null){var l;if(Yf)return Promise.resolve(o??Qe.get());let a=o??((l=window.history.state)==null?void 0:l.page);return this.decryptPageData(a).then(p=>{if(!p)throw new Error("Unable to decrypt history");return this.initialState===null?this.initialState=p??void 0:this.current=p??{},p})}decryptPageData(o){return o instanceof ArrayBuffer?K_(o):Promise.resolve(o)}saveScrollPositions(o){Jf.add(()=>Promise.resolve().then(()=>{var a;(a=window.history.state)!=null&&a.page&&this.doReplaceState({page:window.history.state.page,scrollRegions:o},this.current.url)}))}saveDocumentScrollPosition(o){Jf.add(()=>Promise.resolve().then(()=>{var a;(a=window.history.state)!=null&&a.page&&this.doReplaceState({page:window.history.state.page,documentScrollPosition:o},this.current.url)}))}getScrollRegions(){var o;return((o=window.history.state)==null?void 0:o.scrollRegions)||[]}getDocumentScrollPosition(){var o;return((o=window.history.state)==null?void 0:o.documentScrollPosition)||{top:0,left:0}}replaceState(o,a=null){if(Qe.merge(o),!Yf){if(this.preserveUrl){a&&a();return}this.current=o,Jf.add(()=>this.getPageData(o).then(l=>{let p=()=>{this.doReplaceState({page:l},o.url),a&&a()};km?setTimeout(p):p()}))}}doReplaceState(o,a){var l,p;window.history.replaceState({...o,scrollRegions:o.scrollRegions??((l=window.history.state)==null?void 0:l.scrollRegions),documentScrollPosition:o.documentScrollPosition??((p=window.history.state)==null?void 0:p.documentScrollPosition)},"",a)}doPushState(o,a){window.history.pushState(o,"",a)}getState(o,a){var l;return((l=this.current)==null?void 0:l[o])??a}deleteState(o){this.current[o]!==void 0&&(delete this.current[o],this.replaceState(this.current))}hasAnyState(){return!!this.getAllState()}clear(){xr.remove(Rs.key),xr.remove(Rs.iv)}setCurrent(o){this.current=o}isValidState(o){return!!o.page}getAllState(){return this.current}};typeof window<"u"&&window.history.scrollRestoration&&(window.history.scrollRestoration="manual");var xt=new nS,rS=class{constructor(){this.internalListeners=[]}init(){typeof window<"u"&&(window.addEventListener("popstate",this.handlePopstateEvent.bind(this)),window.addEventListener("scroll",Ih(oo.onWindowScroll.bind(oo),100),!0)),typeof document<"u"&&document.addEventListener("scroll",Ih(oo.onScroll.bind(oo),100),!0)}onGlobalEvent(a,l){let p=m=>{let _=l(m);m.cancelable&&!m.defaultPrevented&&_===!1&&m.preventDefault()};return this.registerListener(`inertia:${a}`,p)}on(a,l){return this.internalListeners.push({event:a,listener:l}),()=>{this.internalListeners=this.internalListeners.filter(p=>p.listener!==l)}}onMissingHistoryItem(){Qe.clear(),this.fireInternalEvent("missingHistoryItem")}fireInternalEvent(a){this.internalListeners.filter(l=>l.event===a).forEach(l=>l.listener())}registerListener(a,l){return document.addEventListener(a,l),()=>document.removeEventListener(a,l)}handlePopstateEvent(a){let l=a.state||null;if(l===null){let p=uu(Qe.get().url);p.hash=window.location.hash,xt.replaceState({...Qe.get(),url:p.href}),oo.reset();return}if(!xt.isValidState(l))return this.onMissingHistoryItem();xt.decrypt(l.page).then(p=>{Qe.setQuietly(p,{preserveState:!1}).then(()=>{oo.restore(xt.getScrollRegions()),ec(Qe.get())})}).catch(()=>{this.onMissingHistoryItem()})}},ia=new rS,iS=class{constructor(){this.type=this.resolveType()}resolveType(){return typeof window>"u"?"navigate":window.performance&&window.performance.getEntriesByType&&window.performance.getEntriesByType("navigation").length>0?window.performance.getEntriesByType("navigation")[0].type:"navigate"}get(){return this.type}isBackForward(){return this.type==="back_forward"}isReload(){return this.type==="reload"}},xh=new iS,oS=class{static handle(){this.clearRememberedStateOnReload(),[this.handleBackForward,this.handleLocation,this.handleDefault].find(o=>o.bind(this)())}static clearRememberedStateOnReload(){xh.isReload()&&xt.deleteState(xt.rememberedState)}static handleBackForward(){if(!xh.isBackForward()||!xt.hasAnyState())return!1;let o=xt.getScrollRegions();return xt.decrypt().then(a=>{Qe.set(a,{preserveScroll:!0,preserveState:!0}).then(()=>{oo.restore(o),ec(Qe.get())})}).catch(()=>{ia.onMissingHistoryItem()}),!0}static handleLocation(){if(!xr.exists(xr.locationVisitKey))return!1;let o=xr.get(xr.locationVisitKey)||{};return xr.remove(xr.locationVisitKey),typeof window<"u"&&Qe.setUrlHash(window.location.hash),xt.decrypt().then(()=>{let a=xt.getState(xt.rememberedState,{}),l=xt.getScrollRegions();Qe.remember(a),Qe.set(Qe.get(),{preserveScroll:o.preserveScroll,preserveState:!0}).then(()=>{o.preserveScroll&&oo.restore(l),ec(Qe.get())})}).catch(()=>{ia.onMissingHistoryItem()}),!0}static handleDefault(){typeof window<"u"&&Qe.setUrlHash(window.location.hash),Qe.set(Qe.get(),{preserveScroll:!0,preserveState:!0}).then(()=>{xh.isReload()&&oo.restore(xt.getScrollRegions()),ec(Qe.get())})}},lS=class{constructor(o,a,l){this.id=null,this.throttle=!1,this.keepAlive=!1,this.cbCount=0,this.keepAlive=l.keepAlive??!1,this.cb=a,this.interval=o,(l.autoStart??!0)&&this.start()}stop(){this.id&&clearInterval(this.id)}start(){typeof window>"u"||(this.stop(),this.id=window.setInterval(()=>{(!this.throttle||this.cbCount%10===0)&&this.cb(),this.throttle&&this.cbCount++},this.interval))}isInBackground(o){this.throttle=this.keepAlive?!1:o,this.throttle&&(this.cbCount=0)}},uS=class{constructor(){this.polls=[],this.setupVisibilityListener()}add(a,l,p){let m=new lS(a,l,p);return this.polls.push(m),{stop:()=>m.stop(),start:()=>m.start()}}clear(){this.polls.forEach(a=>a.stop()),this.polls=[]}setupVisibilityListener(){typeof document>"u"||document.addEventListener("visibilitychange",()=>{this.polls.forEach(a=>a.isInBackground(document.hidden))},!1)}},aS=new uS,Cy=(o,a,l)=>{if(o===a)return!0;for(let p in o)if(!l.includes(p)&&o[p]!==a[p]&&!sS(o[p],a[p]))return!1;return!0},sS=(o,a)=>{switch(typeof o){case"object":return Cy(o,a,[]);case"function":return o.toString()===a.toString();default:return o===a}},fS={ms:1,s:1e3,m:6e4,h:36e5,d:864e5},Lm=o=>{if(typeof o=="number")return o;for(let[a,l]of Object.entries(fS))if(o.endsWith(a))return parseFloat(o)*l;return parseInt(o)},cS=class{constructor(){this.cached=[],this.inFlightRequests=[],this.removalTimers=[],this.currentUseId=null}add(o,a,{cacheFor:l}){if(this.findInFlight(o))return Promise.resolve();let p=this.findCached(o);if(!o.fresh&&p&&p.staleTimestamp>Date.now())return Promise.resolve();let[m,_]=this.extractStaleValues(l),w=new Promise((x,M)=>{a({...o,onCancel:()=>{this.remove(o),o.onCancel(),M()},onError:L=>{this.remove(o),o.onError(L),M()},onPrefetching(L){o.onPrefetching(L)},onPrefetched(L,O){o.onPrefetched(L,O)},onPrefetchResponse(L){x(L)}})}).then(x=>(this.remove(o),this.cached.push({params:{...o},staleTimestamp:Date.now()+m,response:w,singleUse:l===0,timestamp:Date.now(),inFlight:!1}),this.scheduleForRemoval(o,_),this.inFlightRequests=this.inFlightRequests.filter(M=>!this.paramsAreEqual(M.params,o)),x.handlePrefetch(),x));return this.inFlightRequests.push({params:{...o},response:w,staleTimestamp:null,inFlight:!0}),w}removeAll(){this.cached=[],this.removalTimers.forEach(o=>{clearTimeout(o.timer)}),this.removalTimers=[]}remove(o){this.cached=this.cached.filter(a=>!this.paramsAreEqual(a.params,o)),this.clearTimer(o)}extractStaleValues(o){let[a,l]=this.cacheForToStaleAndExpires(o);return[Lm(a),Lm(l)]}cacheForToStaleAndExpires(o){if(!Array.isArray(o))return[o,o];switch(o.length){case 0:return[0,0];case 1:return[o[0],o[0]];default:return[o[0],o[1]]}}clearTimer(o){let a=this.removalTimers.find(l=>this.paramsAreEqual(l.params,o));a&&(clearTimeout(a.timer),this.removalTimers=this.removalTimers.filter(l=>l!==a))}scheduleForRemoval(o,a){if(!(typeof window>"u")&&(this.clearTimer(o),a>0)){let l=window.setTimeout(()=>this.remove(o),a);this.removalTimers.push({params:o,timer:l})}}get(o){return this.findCached(o)||this.findInFlight(o)}use(o,a){let l=`${a.url.pathname}-${Date.now()}-${Math.random().toString(36).substring(7)}`;return this.currentUseId=l,o.response.then(p=>{if(this.currentUseId===l)return p.mergeParams({...a,onPrefetched:()=>{}}),this.removeSingleUseItems(a),p.handle()})}removeSingleUseItems(o){this.cached=this.cached.filter(a=>this.paramsAreEqual(a.params,o)?!a.singleUse:!0)}findCached(o){return this.cached.find(a=>this.paramsAreEqual(a.params,o))||null}findInFlight(o){return this.inFlightRequests.find(a=>this.paramsAreEqual(a.params,o))||null}paramsAreEqual(o,a){return Cy(o,a,["showProgress","replace","prefetch","onBefore","onStart","onProgress","onFinish","onCancel","onSuccess","onError","onPrefetched","onCancelToken","onPrefetching","async"])}},na=new cS,dS=class Ay{constructor(a){if(this.callbacks=[],!a.prefetch)this.params=a;else{let l={onBefore:this.wrapCallback(a,"onBefore"),onStart:this.wrapCallback(a,"onStart"),onProgress:this.wrapCallback(a,"onProgress"),onFinish:this.wrapCallback(a,"onFinish"),onCancel:this.wrapCallback(a,"onCancel"),onSuccess:this.wrapCallback(a,"onSuccess"),onError:this.wrapCallback(a,"onError"),onCancelToken:this.wrapCallback(a,"onCancelToken"),onPrefetched:this.wrapCallback(a,"onPrefetched"),onPrefetching:this.wrapCallback(a,"onPrefetching")};this.params={...a,...l,onPrefetchResponse:a.onPrefetchResponse||(()=>{})}}}static create(a){return new Ay(a)}data(){return this.params.method==="get"?{}:this.params.data}queryParams(){return this.params.method==="get"?this.params.data:{}}isPartial(){return this.params.only.length>0||this.params.except.length>0||this.params.reset.length>0}onCancelToken(a){this.params.onCancelToken({cancel:a})}markAsFinished(){this.params.completed=!0,this.params.cancelled=!1,this.params.interrupted=!1}markAsCancelled({cancelled:a=!0,interrupted:l=!1}){this.params.onCancel(),this.params.completed=!1,this.params.cancelled=a,this.params.interrupted=l}wasCancelledAtAll(){return this.params.cancelled||this.params.interrupted}onFinish(){this.params.onFinish(this.params)}onStart(){this.params.onStart(this.params)}onPrefetching(){this.params.onPrefetching(this.params)}onPrefetchResponse(a){this.params.onPrefetchResponse&&this.params.onPrefetchResponse(a)}all(){return this.params}headers(){let a={...this.params.headers};this.isPartial()&&(a["X-Inertia-Partial-Component"]=Qe.get().component);let l=this.params.only.concat(this.params.reset);return l.length>0&&(a["X-Inertia-Partial-Data"]=l.join(",")),this.params.except.length>0&&(a["X-Inertia-Partial-Except"]=this.params.except.join(",")),this.params.reset.length>0&&(a["X-Inertia-Reset"]=this.params.reset.join(",")),this.params.errorBag&&this.params.errorBag.length>0&&(a["X-Inertia-Error-Bag"]=this.params.errorBag),a}setPreserveOptions(a){this.params.preserveScroll=this.resolvePreserveOption(this.params.preserveScroll,a),this.params.preserveState=this.resolvePreserveOption(this.params.preserveState,a)}runCallbacks(){this.callbacks.forEach(({name:a,args:l})=>{this.params[a](...l)})}merge(a){this.params={...this.params,...a}}wrapCallback(a,l){return(...p)=>{this.recordCallback(l,p),a[l](...p)}}recordCallback(a,l){this.callbacks.push({name:a,args:l})}resolvePreserveOption(a,l){return typeof a=="function"?a(l):a==="errors"?Object.keys(l.props.errors||{}).length>0:a}},pS={modal:null,listener:null,show(o){typeof o=="object"&&(o=`All Inertia requests must receive a valid Inertia response, however a plain JSON response was received.
${JSON.stringify(o)}`);let a=document.createElement("html");a.innerHTML=o,a.querySelectorAll("a").forEach(p=>p.setAttribute("target","_top")),this.modal=document.createElement("div"),this.modal.style.position="fixed",this.modal.style.width="100vw",this.modal.style.height="100vh",this.modal.style.padding="50px",this.modal.style.boxSizing="border-box",this.modal.style.backgroundColor="rgba(0, 0, 0, .6)",this.modal.style.zIndex=2e5,this.modal.addEventListener("click",()=>this.hide());let l=document.createElement("iframe");if(l.style.backgroundColor="white",l.style.borderRadius="5px",l.style.width="100%",l.style.height="100%",this.modal.appendChild(l),document.body.prepend(this.modal),document.body.style.overflow="hidden",!l.contentWindow)throw new Error("iframe not yet ready.");l.contentWindow.document.open(),l.contentWindow.document.write(a.outerHTML),l.contentWindow.document.close(),this.listener=this.hideOnEscape.bind(this),document.addEventListener("keydown",this.listener)},hide(){this.modal.outerHTML="",this.modal=null,document.body.style.overflow="visible",document.removeEventListener("keydown",this.listener)},hideOnEscape(o){o.keyCode===27&&this.hide()}},hS=new xy,Im=class Ry{constructor(a,l,p){this.requestParams=a,this.response=l,this.originatingPage=p}static create(a,l,p){return new Ry(a,l,p)}async handlePrefetch(){Fh(this.requestParams.all().url,window.location)&&this.handle()}async handle(){return hS.add(()=>this.process())}async process(){if(this.requestParams.all().prefetch)return this.requestParams.all().prefetch=!1,this.requestParams.all().onPrefetched(this.response,this.requestParams.all()),j_(this.response,this.requestParams.all()),Promise.resolve();if(this.requestParams.runCallbacks(),!this.isInertiaResponse())return this.handleNonInertiaResponse();await xt.processQueue(),xt.preserveUrl=this.requestParams.all().preserveUrl,await this.setPage();let a=Qe.get().props.errors||{};if(Object.keys(a).length>0){let l=this.getScopedErrors(a);return B_(l),this.requestParams.all().onError(l)}H_(Qe.get()),await this.requestParams.all().onSuccess(Qe.get()),xt.preserveUrl=!1}mergeParams(a){this.requestParams.merge(a)}async handleNonInertiaResponse(){if(this.isLocationVisit()){let l=uu(this.getHeader("x-inertia-location"));return Om(this.requestParams.all().url,l),this.locationVisit(l)}let a={...this.response,data:this.getDataFromResponse(this.response.data)};if(q_(a))return pS.show(a.data)}isInertiaResponse(){return this.hasHeader("x-inertia")}hasStatus(a){return this.response.status===a}getHeader(a){return this.response.headers[a]}hasHeader(a){return this.getHeader(a)!==void 0}isLocationVisit(){return this.hasStatus(409)&&this.hasHeader("x-inertia-location")}locationVisit(a){try{if(xr.set(xr.locationVisitKey,{preserveScroll:this.requestParams.all().preserveScroll===!0}),typeof window>"u")return;Fh(window.location,a)?window.location.reload():window.location.href=a.href}catch{return!1}}async setPage(){let a=this.getDataFromResponse(this.response.data);return this.shouldSetPage(a)?(this.mergeProps(a),await this.setRememberedState(a),this.requestParams.setPreserveOptions(a),a.url=xt.preserveUrl?Qe.get().url:this.pageUrl(a),Qe.set(a,{replace:this.requestParams.all().replace,preserveScroll:this.requestParams.all().preserveScroll,preserveState:this.requestParams.all().preserveState})):Promise.resolve()}getDataFromResponse(a){if(typeof a!="string")return a;try{return JSON.parse(a)}catch{return a}}shouldSetPage(a){if(!this.requestParams.all().async||this.originatingPage.component!==a.component)return!0;if(this.originatingPage.component!==Qe.get().component)return!1;let l=uu(this.originatingPage.url),p=uu(Qe.get().url);return l.origin===p.origin&&l.pathname===p.pathname}pageUrl(a){let l=uu(a.url);return Om(this.requestParams.all().url,l),l.pathname+l.search+l.hash}mergeProps(a){this.requestParams.isPartial()&&a.component===Qe.get().component&&((a.mergeProps||[]).forEach(l=>{let p=a.props[l];Array.isArray(p)?a.props[l]=[...Qe.get().props[l]||[],...p]:typeof p=="object"&&(a.props[l]={...Qe.get().props[l]||[],...p})}),a.props={...Qe.get().props,...a.props})}async setRememberedState(a){let l=await xt.getState(xt.rememberedState,{});this.requestParams.all().preserveState&&l&&a.component===Qe.get().component&&(a.rememberedState=l)}getScopedErrors(a){return this.requestParams.all().errorBag?a[this.requestParams.all().errorBag||""]||{}:a}},Nm=class Ty{constructor(a,l){this.page=l,this.requestHasFinished=!1,this.requestParams=dS.create(a),this.cancelToken=new AbortController}static create(a,l){return new Ty(a,l)}async send(){this.requestParams.onCancelToken(()=>this.cancel({cancelled:!0})),W_(this.requestParams.all()),this.requestParams.onStart(),this.requestParams.all().prefetch&&(this.requestParams.onPrefetching(),V_(this.requestParams.all()));let a=this.requestParams.all().prefetch;return tn({method:this.requestParams.all().method,url:Ed(this.requestParams.all().url).href,data:this.requestParams.data(),params:this.requestParams.queryParams(),signal:this.cancelToken.signal,headers:this.getHeaders(),onUploadProgress:this.onProgress.bind(this),responseType:"text"}).then(l=>(this.response=Im.create(this.requestParams,l,this.page),this.response.handle())).catch(l=>l!=null&&l.response?(this.response=Im.create(this.requestParams,l.response,this.page),this.response.handle()):Promise.reject(l)).catch(l=>{if(!tn.isCancel(l)&&z_(l))return Promise.reject(l)}).finally(()=>{this.finish(),a&&this.response&&this.requestParams.onPrefetchResponse(this.response)})}finish(){this.requestParams.wasCancelledAtAll()||(this.requestParams.markAsFinished(),this.fireFinishEvents())}fireFinishEvents(){this.requestHasFinished||(this.requestHasFinished=!0,$_(this.requestParams.all()),this.requestParams.onFinish())}cancel({cancelled:a=!1,interrupted:l=!1}){this.requestHasFinished||(this.cancelToken.abort(),this.requestParams.markAsCancelled({cancelled:a,interrupted:l}),this.fireFinishEvents())}onProgress(a){this.requestParams.data()instanceof FormData&&(a.percentage=a.progress?Math.round(a.progress*100):0,b_(a),this.requestParams.all().onProgress(a))}getHeaders(){let a={...this.requestParams.headers(),Accept:"text/html, application/xhtml+xml","X-Requested-With":"XMLHttpRequest","X-Inertia":!0};return Qe.get().version&&(a["X-Inertia-Version"]=Qe.get().version),a}},Fm=class{constructor({maxConcurrent:o,interruptible:a}){this.requests=[],this.maxConcurrent=o,this.interruptible=a}send(o){this.requests.push(o),o.send().then(()=>{this.requests=this.requests.filter(a=>a!==o)})}interruptInFlight(){this.cancel({interrupted:!0},!1)}cancelInFlight(){this.cancel({cancelled:!0},!0)}cancel({cancelled:o=!1,interrupted:a=!1}={},l){var p;this.shouldCancel(l)&&((p=this.requests.shift())==null||p.cancel({interrupted:a,cancelled:o}))}shouldCancel(o){return o?!0:this.interruptible&&this.requests.length>=this.maxConcurrent}},gS=class{constructor(){this.syncRequestStream=new Fm({maxConcurrent:1,interruptible:!0}),this.asyncRequestStream=new Fm({maxConcurrent:1/0,interruptible:!1})}init({initialPage:o,resolveComponent:a,swapComponent:l}){Qe.init({initialPage:o,resolveComponent:a,swapComponent:l}),oS.handle(),ia.init(),ia.on("missingHistoryItem",()=>{typeof window<"u"&&this.visit(window.location.href,{preserveState:!0,preserveScroll:!0,replace:!0})}),ia.on("loadDeferredProps",()=>{this.loadDeferredProps()})}get(o,a={},l={}){return this.visit(o,{...l,method:"get",data:a})}post(o,a={},l={}){return this.visit(o,{preserveState:!0,...l,method:"post",data:a})}put(o,a={},l={}){return this.visit(o,{preserveState:!0,...l,method:"put",data:a})}patch(o,a={},l={}){return this.visit(o,{preserveState:!0,...l,method:"patch",data:a})}delete(o,a={}){return this.visit(o,{preserveState:!0,...a,method:"delete"})}reload(o={}){if(!(typeof window>"u"))return this.visit(window.location.href,{...o,preserveScroll:!0,preserveState:!0,async:!0,headers:{...o.headers||{},"Cache-Control":"no-cache"}})}remember(o,a="default"){xt.remember(o,a)}restore(o="default"){return xt.restore(o)}on(o,a){return typeof window>"u"?()=>{}:ia.onGlobalEvent(o,a)}cancel(){this.syncRequestStream.cancelInFlight()}cancelAll(){this.asyncRequestStream.cancelInFlight(),this.syncRequestStream.cancelInFlight()}poll(o,a={},l={}){return aS.add(o,()=>this.reload(a),{autoStart:l.autoStart??!0,keepAlive:l.keepAlive??!1})}visit(o,a={}){let l=this.getPendingVisit(o,{...a,showProgress:a.showProgress??!a.async}),p=this.getVisitEvents(a);if(p.onBefore(l)===!1||!Rm(l))return;let m=l.async?this.asyncRequestStream:this.syncRequestStream;m.interruptInFlight(),!Qe.isCleared()&&!l.preserveUrl&&oo.save();let _={...l,...p},w=na.get(_);w?(Dm(w.inFlight),na.use(w,_)):(Dm(!0),m.send(Nm.create(_,Qe.get())))}getCached(o,a={}){return na.findCached(this.getPrefetchParams(o,a))}flush(o,a={}){na.remove(this.getPrefetchParams(o,a))}flushAll(){na.removeAll()}getPrefetching(o,a={}){return na.findInFlight(this.getPrefetchParams(o,a))}prefetch(o,a={},{cacheFor:l=3e4}){if(a.method!=="get")throw new Error("Prefetch requests must use the GET method");let p=this.getPendingVisit(o,{...a,async:!0,showProgress:!1,prefetch:!0}),m=p.url.origin+p.url.pathname+p.url.search,_=window.location.origin+window.location.pathname+window.location.search;if(m===_)return;let w=this.getVisitEvents(a);if(w.onBefore(p)===!1||!Rm(p))return;Dy(),this.asyncRequestStream.interruptInFlight();let x={...p,...w};new Promise(M=>{let L=()=>{Qe.get()?M():setTimeout(L,50)};L()}).then(()=>{na.add(x,M=>{this.asyncRequestStream.send(Nm.create(M,Qe.get()))},{cacheFor:l})})}clearHistory(){xt.clear()}decryptHistory(){return xt.decrypt()}replace(o){this.clientVisit(o,{replace:!0})}push(o){this.clientVisit(o)}clientVisit(o,{replace:a=!1}={}){let l=Qe.get(),p=typeof o.props=="function"?o.props(l.props):o.props??l.props;Qe.set({...l,...o,props:p},{replace:a,preserveScroll:o.preserveScroll,preserveState:o.preserveState})}getPrefetchParams(o,a){return{...this.getPendingVisit(o,{...a,async:!0,showProgress:!1,prefetch:!0}),...this.getVisitEvents(a)}}getPendingVisit(o,a,l={}){let p={method:"get",data:{},replace:!1,preserveScroll:!1,preserveState:!1,only:[],except:[],headers:{},errorBag:"",forceFormData:!1,queryStringArrayFormat:"brackets",async:!1,showProgress:!0,fresh:!1,reset:[],preserveUrl:!1,prefetch:!1,...a},[m,_]=eS(o,p.data,p.method,p.forceFormData,p.queryStringArrayFormat);return{cancelled:!1,completed:!1,interrupted:!1,...p,...l,url:m,data:_}}getVisitEvents(o){return{onCancelToken:o.onCancelToken||(()=>{}),onBefore:o.onBefore||(()=>{}),onStart:o.onStart||(()=>{}),onProgress:o.onProgress||(()=>{}),onFinish:o.onFinish||(()=>{}),onCancel:o.onCancel||(()=>{}),onSuccess:o.onSuccess||(()=>{}),onError:o.onError||(()=>{}),onPrefetched:o.onPrefetched||(()=>{}),onPrefetching:o.onPrefetching||(()=>{})}}loadDeferredProps(){var a;let o=(a=Qe.get())==null?void 0:a.deferredProps;o&&Object.entries(o).forEach(([l,p])=>{this.reload({only:p})})}},mS={buildDOMElement(o){let a=document.createElement("template");a.innerHTML=o;let l=a.content.firstChild;if(!o.startsWith("