feat(movies): switch provider to TMDb and store full actor image URLs\n\n- Add TmdbMovieProvider (v3 endpoints, v4 Bearer auth); set TMDb as default provider\n- Update config/movies.php with TMDb image base and profile size; add TMDB_PROFILE_SIZE\n- Upsert: persist actor profile_path as FULL TMDb CDN URL; backfill existing rows\n- Migrations: add actors.profile_path and backfill full URLs\n- Models: allow mass-assign profile_path on Actor\n- Admin: default provider from config; comments and docs updated\n- Frontend: show actor image on /actors/{id}; minor TMDb wording fixes in admin UI\n- Docs: update root and Movies module READMEs; env example for TMDb\n- Tests: adjust for TMDb defaults and provider IDs\n\nIncludes updated public/build assets and manifest.
This commit is contained in:
parent
3013bb5740
commit
6ca368c237
16
.env.example
16
.env.example
|
|
@ -20,10 +20,18 @@ LOG_STACK=single
|
||||||
LOG_DEPRECATIONS_CHANNEL=null
|
LOG_DEPRECATIONS_CHANNEL=null
|
||||||
LOG_LEVEL=debug
|
LOG_LEVEL=debug
|
||||||
|
|
||||||
# Movies / OMDb
|
# Movies Provider (tmdb by default)
|
||||||
OMDB_API_KEY=
|
MOVIES_PROVIDER=tmdb
|
||||||
OMDB_LANGUAGE=en-US
|
|
||||||
OMDB_CACHE_TTL=3600
|
# TMDb (The Movie Database)
|
||||||
|
# Use a TMDb v4 Read Access Token (Bearer) for API access.
|
||||||
|
TMDB_API_TOKEN=
|
||||||
|
TMDB_LANGUAGE=en-US
|
||||||
|
TMDB_CACHE_TTL=3600
|
||||||
|
TMDB_IMAGE_BASE=https://image.tmdb.org/t/p/
|
||||||
|
TMDB_POSTER_SIZE=w500
|
||||||
|
TMDB_BACKDROP_SIZE=w780
|
||||||
|
TMDB_PROFILE_SIZE=w185
|
||||||
|
|
||||||
DB_CONNECTION=sqlite
|
DB_CONNECTION=sqlite
|
||||||
# DB_HOST=127.0.0.1
|
# DB_HOST=127.0.0.1
|
||||||
|
|
|
||||||
45
.github/workflows/lint.yml
vendored
Normal file
45
.github/workflows/lint.yml
vendored
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
name: linter
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- develop
|
||||||
|
- main
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- develop
|
||||||
|
- main
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
quality:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup PHP
|
||||||
|
uses: shivammathur/setup-php@v2
|
||||||
|
with:
|
||||||
|
php-version: '8.4'
|
||||||
|
|
||||||
|
- name: Install Dependencies
|
||||||
|
run: |
|
||||||
|
composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist
|
||||||
|
npm install
|
||||||
|
|
||||||
|
- name: Run Pint
|
||||||
|
run: vendor/bin/pint
|
||||||
|
|
||||||
|
- name: Format Frontend
|
||||||
|
run: npm run format
|
||||||
|
|
||||||
|
- name: Lint Frontend
|
||||||
|
run: npm run lint
|
||||||
|
|
||||||
|
# - name: Commit Changes
|
||||||
|
# uses: stefanzweifel/git-auto-commit-action@v5
|
||||||
|
# with:
|
||||||
|
# commit_message: fix code style
|
||||||
|
# commit_options: '--no-verify'
|
||||||
50
.github/workflows/tests.yml
vendored
Normal file
50
.github/workflows/tests.yml
vendored
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
name: tests
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- develop
|
||||||
|
- main
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- develop
|
||||||
|
- main
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
ci:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup PHP
|
||||||
|
uses: shivammathur/setup-php@v2
|
||||||
|
with:
|
||||||
|
php-version: 8.4
|
||||||
|
tools: composer:v2
|
||||||
|
coverage: xdebug
|
||||||
|
|
||||||
|
- name: Setup Node
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: '22'
|
||||||
|
cache: 'npm'
|
||||||
|
|
||||||
|
- name: Install Node Dependencies
|
||||||
|
run: npm ci
|
||||||
|
|
||||||
|
- name: Install Dependencies
|
||||||
|
run: composer install --no-interaction --prefer-dist --optimize-autoloader
|
||||||
|
|
||||||
|
- name: Copy Environment File
|
||||||
|
run: cp .env.example .env
|
||||||
|
|
||||||
|
- name: Generate Application Key
|
||||||
|
run: php artisan key:generate
|
||||||
|
|
||||||
|
- name: Build Assets
|
||||||
|
run: npm run build
|
||||||
|
|
||||||
|
- name: Tests
|
||||||
|
run: ./vendor/bin/pest
|
||||||
|
|
@ -13,7 +13,7 @@ class ExistsMovieController extends Controller
|
||||||
ExistsMovieRequest $request,
|
ExistsMovieRequest $request,
|
||||||
CheckMovieExistsServiceInterface $service
|
CheckMovieExistsServiceInterface $service
|
||||||
): JsonResponse {
|
): JsonResponse {
|
||||||
$provider = $request->validated('provider') ?? 'omdb';
|
$provider = $request->validated('provider') ?? config('movies.provider', 'tmdb');
|
||||||
$providerId = $request->validated('provider_id');
|
$providerId = $request->validated('provider_id');
|
||||||
|
|
||||||
$movie = $service->findByProviderId($provider, $providerId);
|
$movie = $service->findByProviderId($provider, $providerId);
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ class Actor extends Model
|
||||||
{
|
{
|
||||||
use HasFactory;
|
use HasFactory;
|
||||||
protected $table = 'actors';
|
protected $table = 'actors';
|
||||||
protected $fillable = ['name'];
|
protected $fillable = ['name', 'profile_path'];
|
||||||
|
|
||||||
public function movies(): BelongsToMany { return $this->belongsToMany(Movie::class, 'movie_actor'); }
|
public function movies(): BelongsToMany { return $this->belongsToMany(Movie::class, 'movie_actor'); }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ use Illuminate\Support\ServiceProvider;
|
||||||
use Illuminate\Support\Facades\Route;
|
use Illuminate\Support\Facades\Route;
|
||||||
use App\Modules\Movies\Services\Contracts\MovieProvider;
|
use App\Modules\Movies\Services\Contracts\MovieProvider;
|
||||||
use App\Modules\Movies\Services\Omdb\OmdbMovieProvider;
|
use App\Modules\Movies\Services\Omdb\OmdbMovieProvider;
|
||||||
|
use App\Modules\Movies\Services\Tmdb\TmdbMovieProvider;
|
||||||
use App\Modules\Movies\Services\Contracts\ListMoviesServiceInterface;
|
use App\Modules\Movies\Services\Contracts\ListMoviesServiceInterface;
|
||||||
use App\Modules\Movies\Services\Contracts\ShowMovieServiceInterface;
|
use App\Modules\Movies\Services\Contracts\ShowMovieServiceInterface;
|
||||||
use App\Modules\Movies\Services\Contracts\UpsertMovieServiceInterface;
|
use App\Modules\Movies\Services\Contracts\UpsertMovieServiceInterface;
|
||||||
|
|
@ -25,10 +26,11 @@ class MoviesServiceProvider extends ServiceProvider
|
||||||
{
|
{
|
||||||
// Bind movie provider based on config
|
// Bind movie provider based on config
|
||||||
$this->app->bind(MovieProvider::class, function () {
|
$this->app->bind(MovieProvider::class, function () {
|
||||||
$provider = config('movies.provider', 'omdb');
|
$provider = config('movies.provider', 'tmdb');
|
||||||
return match ($provider) {
|
return match ($provider) {
|
||||||
|
'tmdb' => new TmdbMovieProvider(),
|
||||||
'omdb' => new OmdbMovieProvider(),
|
'omdb' => new OmdbMovieProvider(),
|
||||||
default => new OmdbMovieProvider(),
|
default => new TmdbMovieProvider(),
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Movies Module
|
# Movies Module
|
||||||
|
|
||||||
This module implements service-first Movies functionality, including:
|
This module implements service-first Movies functionality, including:
|
||||||
- Admin search + accept flow (OMDb)
|
- Admin search + accept flow (TMDb)
|
||||||
- Public browsing (Inertia pages) backed by JSON API
|
- Public browsing (Inertia pages) backed by JSON API
|
||||||
- Strict controller→service separation
|
- Strict controller→service separation
|
||||||
|
|
||||||
|
|
@ -9,7 +9,7 @@ This module implements service-first Movies functionality, including:
|
||||||
|
|
||||||
Admin (auth required)
|
Admin (auth required)
|
||||||
- GET /admin/movies → Inertia admin page (search + accept)
|
- GET /admin/movies → Inertia admin page (search + accept)
|
||||||
- GET /admin/movies/search?q=&page= → JSON results from OMDb (10 per page)
|
- GET /admin/movies/search?q=&page= → JSON results from TMDb (20 per page)
|
||||||
- GET /admin/movies/exists?provider_id= → Duplicate check
|
- GET /admin/movies/exists?provider_id= → Duplicate check
|
||||||
- POST /admin/movies/accept { provider_id, mode: overwrite|duplicate } → Persist movie
|
- POST /admin/movies/accept { provider_id, mode: overwrite|duplicate } → Persist movie
|
||||||
|
|
||||||
|
|
@ -23,14 +23,14 @@ Public
|
||||||
- Images are stored as remote URLs only (not downloaded).
|
- Images are stored as remote URLs only (not downloaded).
|
||||||
|
|
||||||
## Services & Contracts
|
## Services & Contracts
|
||||||
- Provider: App\\Modules\\Movies\\Services\\Contracts\\MovieProvider (OMDb implementation)
|
- Provider: App\\Modules\\Movies\\Services\\Contracts\\MovieProvider (TMDb implementation)
|
||||||
- Browse: ListMoviesServiceInterface, ShowMovieServiceInterface
|
- Browse: ListMoviesServiceInterface, ShowMovieServiceInterface
|
||||||
- Admin: UpsertMovieServiceInterface, CheckMovieExistsServiceInterface
|
- Admin: UpsertMovieServiceInterface, CheckMovieExistsServiceInterface
|
||||||
|
|
||||||
All DI bindings are registered in MoviesServiceProvider.
|
All DI bindings are registered in MoviesServiceProvider.
|
||||||
|
|
||||||
## Admin flow
|
## Admin flow
|
||||||
1. Search calls /admin/movies/search (OMDb search). List shows poster, title, year only (no details calls).
|
1. Search calls /admin/movies/search (TMDb search). List shows poster, title, year only (no details calls).
|
||||||
2. Accept button:
|
2. Accept button:
|
||||||
- If unique, accepts immediately (no modal).
|
- If unique, accepts immediately (no modal).
|
||||||
- If duplicate exists by provider_id, shows modal: Overwrite | Save as Duplicate | Cancel.
|
- If duplicate exists by provider_id, shows modal: Overwrite | Save as Duplicate | Cancel.
|
||||||
|
|
@ -43,12 +43,24 @@ All DI bindings are registered in MoviesServiceProvider.
|
||||||
## Environment
|
## Environment
|
||||||
Add to .env (values shown as placeholders):
|
Add to .env (values shown as placeholders):
|
||||||
```
|
```
|
||||||
OMDB_API_KEY=
|
# Active provider
|
||||||
OMDB_LANGUAGE=en-US
|
MOVIES_PROVIDER=tmdb
|
||||||
OMDB_CACHE_TTL=3600
|
|
||||||
|
# TMDb (v4 Read Access Token recommended)
|
||||||
|
TMDB_API_TOKEN=
|
||||||
|
TMDB_LANGUAGE=en-US
|
||||||
|
TMDB_CACHE_TTL=3600
|
||||||
|
TMDB_IMAGE_BASE=https://image.tmdb.org/t/p/
|
||||||
|
TMDB_POSTER_SIZE=w500
|
||||||
|
TMDB_BACKDROP_SIZE=w780
|
||||||
|
TMDB_PROFILE_SIZE=w185
|
||||||
```
|
```
|
||||||
|
|
||||||
Set your real OMDb key locally (per user decision). Timezone is America/Chicago.
|
Set your real TMDb token locally (you will provide it). Timezone is America/Chicago.
|
||||||
|
|
||||||
|
Actor images
|
||||||
|
- When accepting a movie, actor profile images are stored on the `actors.profile_path` column as FULL TMDb CDN URLs (e.g., `https://image.tmdb.org/t/p/w185/abc123.jpg`).
|
||||||
|
- You can adjust the size used via `TMDB_PROFILE_SIZE`.
|
||||||
|
|
||||||
## Development
|
## Development
|
||||||
- Run backend: `php artisan serve`
|
- Run backend: `php artisan serve`
|
||||||
|
|
@ -56,5 +68,5 @@ Set your real OMDb key locally (per user decision). Timezone is America/Chicago.
|
||||||
- Tests: `./vendor/bin/pest`
|
- Tests: `./vendor/bin/pest`
|
||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
- Pagination: OMDb search uses 10/page; public DB pagination defaults to 20/page (configurable at request).
|
- Pagination: TMDb search uses 20/page; public DB pagination defaults to 20/page (configurable at request).
|
||||||
- Controller classes contain no business logic; all logic resides in services.
|
- Controller classes contain no business logic; all logic resides in services.
|
||||||
|
|
|
||||||
170
app/Modules/Movies/Services/Tmdb/TmdbMovieProvider.php
Normal file
170
app/Modules/Movies/Services/Tmdb/TmdbMovieProvider.php
Normal file
|
|
@ -0,0 +1,170 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Modules\Movies\Services\Tmdb;
|
||||||
|
|
||||||
|
use App\Modules\Movies\Services\Contracts\MovieProvider;
|
||||||
|
use Illuminate\Support\Facades\Cache;
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
use Illuminate\Support\Collection;
|
||||||
|
|
||||||
|
class TmdbMovieProvider implements MovieProvider
|
||||||
|
{
|
||||||
|
protected string $baseUrl;
|
||||||
|
protected ?string $apiToken;
|
||||||
|
protected string $language;
|
||||||
|
protected string $imageBase;
|
||||||
|
protected string $posterSize;
|
||||||
|
protected string $backdropSize;
|
||||||
|
protected string $profileSize;
|
||||||
|
protected int $cacheTtl;
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->baseUrl = rtrim(config('movies.tmdb.base_url', 'https://api.themoviedb.org/3'), '/');
|
||||||
|
$this->apiToken = config('movies.tmdb.api_token');
|
||||||
|
$this->language = (string) config('movies.tmdb.language', 'en-US');
|
||||||
|
$this->imageBase = rtrim(config('movies.tmdb.image_base', 'https://image.tmdb.org/t/p/'), '/');
|
||||||
|
$this->posterSize = (string) config('movies.tmdb.poster_size', 'w500');
|
||||||
|
$this->backdropSize = (string) config('movies.tmdb.backdrop_size', 'w780');
|
||||||
|
$this->profileSize = (string) config('movies.tmdb.profile_size', 'w185');
|
||||||
|
$this->cacheTtl = (int) config('movies.tmdb.cache_ttl', 3600);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function search(string $query, int $page = 1): array
|
||||||
|
{
|
||||||
|
$query = trim($query);
|
||||||
|
if ($query === '') {
|
||||||
|
return ['results' => collect(), 'total' => 0, 'page' => 1, 'has_more' => false];
|
||||||
|
}
|
||||||
|
|
||||||
|
$cacheKey = sprintf('tmdb.search.%s.p%s.%s', md5($query), $page, $this->language);
|
||||||
|
$data = Cache::remember($cacheKey, $this->cacheTtl, function () use ($query, $page) {
|
||||||
|
$response = Http::acceptJson()
|
||||||
|
->withHeaders($this->authHeaders())
|
||||||
|
->timeout(6)
|
||||||
|
->retry(3, 300)
|
||||||
|
->get($this->baseUrl . '/search/movie', [
|
||||||
|
'query' => $query,
|
||||||
|
'page' => $page,
|
||||||
|
'include_adult' => false,
|
||||||
|
'language' => $this->language,
|
||||||
|
]);
|
||||||
|
|
||||||
|
if ($response->failed()) {
|
||||||
|
abort(502, "Couldn’t reach TMDb. Please try again.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return $response->json();
|
||||||
|
});
|
||||||
|
|
||||||
|
$total = (int) ($data['total_results'] ?? 0);
|
||||||
|
$hasMore = ($data['page'] ?? 1) < ($data['total_pages'] ?? 1);
|
||||||
|
$results = collect($data['results'] ?? [])->map(function ($item) {
|
||||||
|
return [
|
||||||
|
'provider' => 'tmdb',
|
||||||
|
'provider_id' => isset($item['id']) ? (string) $item['id'] : null,
|
||||||
|
'title' => $item['title'] ?? ($item['original_title'] ?? null),
|
||||||
|
'year' => isset($item['release_date']) && $item['release_date'] ? (int) substr($item['release_date'], 0, 4) : null,
|
||||||
|
'poster_url' => $this->buildImageUrl($item['poster_path'] ?? null, true),
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
return [
|
||||||
|
'results' => $results,
|
||||||
|
'total' => $total,
|
||||||
|
'page' => (int) ($data['page'] ?? $page),
|
||||||
|
'has_more' => $hasMore,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function details(string $id): array
|
||||||
|
{
|
||||||
|
$id = trim($id);
|
||||||
|
$cacheKey = sprintf('tmdb.details.%s.%s', $id, $this->language);
|
||||||
|
$data = Cache::remember($cacheKey, $this->cacheTtl, function () use ($id) {
|
||||||
|
$response = Http::acceptJson()
|
||||||
|
->withHeaders($this->authHeaders())
|
||||||
|
->timeout(6)
|
||||||
|
->retry(3, 300)
|
||||||
|
->get($this->baseUrl . "/movie/{$id}", [
|
||||||
|
'append_to_response' => 'credits,external_ids',
|
||||||
|
'language' => $this->language,
|
||||||
|
]);
|
||||||
|
|
||||||
|
if ($response->failed()) {
|
||||||
|
abort(502, "Couldn’t reach TMDb. Please try again.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return $response->json();
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!isset($data['id'])) {
|
||||||
|
abort(404, 'Movie not found in TMDb');
|
||||||
|
}
|
||||||
|
|
||||||
|
$genres = collect($data['genres'] ?? [])->pluck('name')->filter()->values()->all();
|
||||||
|
$cast = collect($data['credits']['cast'] ?? [])->sortByDesc('popularity')->take(15);
|
||||||
|
$actors = $cast->pluck('name')->filter()->values()->all();
|
||||||
|
// Map of actor name => TMDb profile image URL (FULL URL), used to store on Actor records
|
||||||
|
$actorsProfiles = $cast
|
||||||
|
->mapWithKeys(function ($c) {
|
||||||
|
$name = $c['name'] ?? null;
|
||||||
|
$path = $c['profile_path'] ?? null;
|
||||||
|
if (!$name || !$path) return [];
|
||||||
|
return [$name => $this->buildProfileUrl($path)];
|
||||||
|
})
|
||||||
|
->all();
|
||||||
|
$directors = collect($data['credits']['crew'] ?? [])->filter(fn($c) => ($c['job'] ?? null) === 'Director')->pluck('name')->unique()->values()->all();
|
||||||
|
$studios = collect($data['production_companies'] ?? [])->pluck('name')->filter()->values()->all();
|
||||||
|
$countries = collect($data['production_countries'] ?? [])->pluck('name')->filter()->values()->all();
|
||||||
|
$languages = collect($data['spoken_languages'] ?? [])->pluck('english_name')->filter()->values()->all();
|
||||||
|
|
||||||
|
// External IDs include imdb_id when available
|
||||||
|
$external = [
|
||||||
|
'tmdb' => isset($data['id']) ? (string) $data['id'] : null,
|
||||||
|
];
|
||||||
|
if (!empty($data['external_ids']['imdb_id'])) {
|
||||||
|
$external['imdb'] = $data['external_ids']['imdb_id'];
|
||||||
|
}
|
||||||
|
|
||||||
|
return [
|
||||||
|
'provider' => 'tmdb',
|
||||||
|
'provider_id' => isset($data['id']) ? (string) $data['id'] : null,
|
||||||
|
'external_ids' => $external,
|
||||||
|
'title' => $data['title'] ?? null,
|
||||||
|
'original_title' => $data['original_title'] ?? ($data['title'] ?? null),
|
||||||
|
'description' => $data['overview'] ?? null,
|
||||||
|
'poster_url' => $this->buildImageUrl($data['poster_path'] ?? null, true),
|
||||||
|
'backdrop_url' => $this->buildImageUrl($data['backdrop_path'] ?? null, false),
|
||||||
|
'genres' => $genres,
|
||||||
|
'rating' => null, // Certification requires extra call; left null for now
|
||||||
|
'release_date' => $data['release_date'] ?? null,
|
||||||
|
'year' => isset($data['release_date']) && $data['release_date'] ? (int) substr($data['release_date'], 0, 4) : null,
|
||||||
|
'runtime' => isset($data['runtime']) ? (int) $data['runtime'] : null,
|
||||||
|
'actors' => $actors,
|
||||||
|
'actors_profiles' => $actorsProfiles,
|
||||||
|
'directors' => $directors,
|
||||||
|
'studios' => $studios,
|
||||||
|
'countries' => $countries,
|
||||||
|
'languages' => $languages,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function authHeaders(): array
|
||||||
|
{
|
||||||
|
return $this->apiToken ? ['Authorization' => 'Bearer ' . $this->apiToken] : [];
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function buildImageUrl(?string $path, bool $poster = true): ?string
|
||||||
|
{
|
||||||
|
if (!$path) return null;
|
||||||
|
$size = $poster ? $this->posterSize : $this->backdropSize;
|
||||||
|
return rtrim($this->imageBase, '/') . '/' . trim($size, '/') . $path;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function buildProfileUrl(?string $path): ?string
|
||||||
|
{
|
||||||
|
if (!$path) return null;
|
||||||
|
return rtrim($this->imageBase, '/') . '/' . trim($this->profileSize, '/') . $path;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -53,7 +53,12 @@ class UpsertMovieFromProvider implements UpsertMovieServiceInterface
|
||||||
|
|
||||||
// Sync relations using names from details payload
|
// Sync relations using names from details payload
|
||||||
$this->syncByNames($movie, Genre::class, 'genres', $details['genres'] ?? []);
|
$this->syncByNames($movie, Genre::class, 'genres', $details['genres'] ?? []);
|
||||||
$this->syncByNames($movie, Actor::class, 'actors', $details['actors'] ?? []);
|
// Actors: also persist profile_path when available; backfill if missing
|
||||||
|
$this->syncActorsWithProfiles(
|
||||||
|
$movie,
|
||||||
|
$details['actors'] ?? [],
|
||||||
|
$details['actors_profiles'] ?? []
|
||||||
|
);
|
||||||
$this->syncByNames($movie, Director::class, 'directors', $details['directors'] ?? []);
|
$this->syncByNames($movie, Director::class, 'directors', $details['directors'] ?? []);
|
||||||
$this->syncByNames($movie, Studio::class, 'studios', $details['studios'] ?? []);
|
$this->syncByNames($movie, Studio::class, 'studios', $details['studios'] ?? []);
|
||||||
$this->syncByNames($movie, Country::class, 'countries', $details['countries'] ?? []);
|
$this->syncByNames($movie, Country::class, 'countries', $details['countries'] ?? []);
|
||||||
|
|
@ -105,6 +110,55 @@ class UpsertMovieFromProvider implements UpsertMovieServiceInterface
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sync actors and persist their TMDb profile image path when available.
|
||||||
|
* If an actor already exists without image data, update the record.
|
||||||
|
*
|
||||||
|
* @param Movie $movie
|
||||||
|
* @param array $names List of actor names
|
||||||
|
* @param array $profiles Map of name => profile_path (relative path from TMDb)
|
||||||
|
*/
|
||||||
|
protected function syncActorsWithProfiles(Movie $movie, array $names, array $profiles = []): void
|
||||||
|
{
|
||||||
|
$ids = collect($names)
|
||||||
|
->filter()
|
||||||
|
->map(function ($name) use ($profiles) {
|
||||||
|
$original = (string) $name;
|
||||||
|
$normalized = $this->normalizeName($original);
|
||||||
|
if ($normalized === '') return null;
|
||||||
|
|
||||||
|
/** @var Actor|null $existing */
|
||||||
|
$existing = Actor::query()
|
||||||
|
->whereRaw('lower(name) = ?', [mb_strtolower($normalized)])
|
||||||
|
->first();
|
||||||
|
|
||||||
|
$profilePath = $profiles[$original] ?? $profiles[$normalized] ?? null;
|
||||||
|
|
||||||
|
if ($existing) {
|
||||||
|
if ($profilePath && empty($existing->profile_path)) {
|
||||||
|
$existing->profile_path = $profilePath;
|
||||||
|
$existing->save();
|
||||||
|
}
|
||||||
|
return $existing->getKey();
|
||||||
|
}
|
||||||
|
|
||||||
|
$actor = new Actor();
|
||||||
|
$actor->setAttribute('name', $normalized);
|
||||||
|
if ($profilePath) {
|
||||||
|
$actor->setAttribute('profile_path', $profilePath);
|
||||||
|
}
|
||||||
|
$actor->save();
|
||||||
|
return $actor->getKey();
|
||||||
|
})
|
||||||
|
->filter()
|
||||||
|
->values()
|
||||||
|
->all();
|
||||||
|
|
||||||
|
if (method_exists($movie, 'actors')) {
|
||||||
|
$movie->actors()->sync($ids);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Normalize a person/genre/studio/etc name for de-duplication.
|
* Normalize a person/genre/studio/etc name for de-duplication.
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ use App\Modules\Movies\Http\Controllers\Admin\DeleteMovieController;
|
||||||
// Admin Movies list page (shows local DB movies)
|
// Admin Movies list page (shows local DB movies)
|
||||||
Route::get('/', [MoviesListPageController::class, '__invoke'])->name('index');
|
Route::get('/', [MoviesListPageController::class, '__invoke'])->name('index');
|
||||||
|
|
||||||
// Admin Add Movie page (OMDb search + accept flow)
|
// Admin Add Movie page (TMDb search + accept flow)
|
||||||
Route::get('add', [MoviesPageController::class, '__invoke'])->name('add');
|
Route::get('add', [MoviesPageController::class, '__invoke'])->name('add');
|
||||||
|
|
||||||
Route::get('search', [SearchMoviesController::class, '__invoke'])->name('search');
|
Route::get('search', [SearchMoviesController::class, '__invoke'])->name('search');
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,25 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'provider' => 'omdb',
|
// Set the active external provider for admin search/details ingestion
|
||||||
|
'provider' => env('MOVIES_PROVIDER', 'tmdb'),
|
||||||
|
|
||||||
|
// TMDb (The Movie Database) configuration
|
||||||
|
'tmdb' => [
|
||||||
|
'base_url' => env('TMDB_BASE_URL', 'https://api.themoviedb.org/3'),
|
||||||
|
// TMDb v4 API token (recommended). Use a "Read Access Token" and pass via Bearer auth
|
||||||
|
'api_token' => env('TMDB_API_TOKEN'),
|
||||||
|
'language' => env('TMDB_LANGUAGE', 'en-US'),
|
||||||
|
// Images
|
||||||
|
'image_base' => env('TMDB_IMAGE_BASE', 'https://image.tmdb.org/t/p/'),
|
||||||
|
'poster_size' => env('TMDB_POSTER_SIZE', 'w500'),
|
||||||
|
'backdrop_size' => env('TMDB_BACKDROP_SIZE', 'w780'),
|
||||||
|
'profile_size' => env('TMDB_PROFILE_SIZE', 'w185'),
|
||||||
|
// Cache duration in seconds
|
||||||
|
'cache_ttl' => env('TMDB_CACHE_TTL', 3600),
|
||||||
|
],
|
||||||
|
|
||||||
|
// Legacy OMDb configuration (kept for reference/backward-compat)
|
||||||
'omdb' => [
|
'omdb' => [
|
||||||
'base_url' => env('OMDB_BASE_URL', 'https://www.omdbapi.com/'),
|
'base_url' => env('OMDB_BASE_URL', 'https://www.omdbapi.com/'),
|
||||||
'api_key' => env('OMDB_API_KEY'),
|
'api_key' => env('OMDB_API_KEY'),
|
||||||
|
|
|
||||||
|
|
@ -15,11 +15,11 @@ class MovieFactory extends Factory
|
||||||
public function definition(): array
|
public function definition(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'provider' => 'omdb',
|
'provider' => 'tmdb',
|
||||||
'provider_id' => $this->faker->unique()->bothify('tt########'),
|
'provider_id' => (string) $this->faker->unique()->numberBetween(1000, 99999999),
|
||||||
'external_ids' => [
|
'external_ids' => [
|
||||||
|
'tmdb' => (string) $this->faker->numberBetween(1000, 99999999),
|
||||||
'imdb' => $this->faker->bothify('tt########'),
|
'imdb' => $this->faker->bothify('tt########'),
|
||||||
'omdb' => $this->faker->bothify('tt########'),
|
|
||||||
],
|
],
|
||||||
'title' => $this->faker->sentence(3),
|
'title' => $this->faker->sentence(3),
|
||||||
'original_title' => $this->faker->sentence(3),
|
'original_title' => $this->faker->sentence(3),
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration {
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('actors', function (Blueprint $table) {
|
||||||
|
$table->string('profile_path')->nullable()->after('name');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('actors', function (Blueprint $table) {
|
||||||
|
$table->dropColumn('profile_path');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
|
return new class extends Migration {
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
// Build the TMDb image base prefix for profile images.
|
||||||
|
$imageBase = rtrim((string) config('movies.tmdb.image_base', 'https://image.tmdb.org/t/p/'), '/');
|
||||||
|
$profileSize = trim((string) config('movies.tmdb.profile_size', 'w185'), '/');
|
||||||
|
$prefix = $imageBase . '/' . $profileSize; // no trailing slash; profile_path begins with '/'
|
||||||
|
|
||||||
|
// Update existing rows that still store relative paths (do not start with http)
|
||||||
|
DB::statement(
|
||||||
|
"UPDATE actors SET profile_path = CONCAT(?, profile_path) WHERE profile_path IS NOT NULL AND profile_path NOT LIKE 'http%'",
|
||||||
|
[$prefix]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
// Irreversible safely; no action.
|
||||||
|
}
|
||||||
|
};
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
||||||
import{d as m,J as k,a as i,F as y,g as x,b as n,k as d,I as f,t as g,K as b,u as r,o as t,w as l,f as e,h as v}from"./app-CClrM5Yi.js";import{c as o}from"./createLucideIcon-ZFd4jktC.js";import{e as I,_ as M,a as w}from"./Layout.vue_vue_type_script_setup_true_lang-ROf3tZlv.js";import{_ as A}from"./AppLayout.vue_vue_type_script_setup_true_lang-DESMBqxz.js";import"./AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js";import"./useForwardExpose-BhawR5VU.js";import"./index-C4J_hXM0.js";import"./index--H2rh_A_.js";import"./VisuallyHidden-Cu70tzB6.js";import"./RovingFocusGroup-CNFroA6Y.js";import"./useArrowNavigation-C6Y-ieo6.js";const C=o("MonitorIcon",[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]);const $=o("MoonIcon",[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}]]);const B=o("SunIcon",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]),S={class:"inline-flex gap-1 rounded-lg bg-neutral-100 p-1 dark:bg-neutral-800"},z=["onClick"],D={class:"ml-1.5 text-sm"},L=m({__name:"AppearanceTabs",setup(u){const{appearance:a,updateAppearance:c}=k(),p=[{value:"light",Icon:B,label:"Light"},{value:"dark",Icon:$,label:"Dark"},{value:"system",Icon:C,label:"System"}];return(q,F)=>(t(),i("div",S,[(t(),i(y,null,x(p,({value:s,Icon:h,label:_})=>n("button",{key:s,onClick:N=>r(c)(s),class:b(["flex items-center rounded-md px-3.5 py-1.5 transition-colors",r(a)===s?"bg-white shadow-xs dark:bg-neutral-700 dark:text-neutral-100":"text-neutral-500 hover:bg-neutral-200/60 hover:text-black dark:text-neutral-400 dark:hover:bg-neutral-700/60"])},[(t(),d(f(h),{class:"-ml-1 h-4 w-4"})),n("span",D,g(_),1)],10,z)),64))]))}}),j={class:"space-y-6"},Q=m({__name:"Appearance",setup(u){const a=[{title:"Appearance settings",href:I().url}];return(c,p)=>(t(),d(A,{breadcrumbs:a},{default:l(()=>[e(r(v),{title:"Appearance settings"}),e(M,null,{default:l(()=>[n("div",j,[e(w,{title:"Appearance settings",description:"Update your account's appearance settings"}),e(L)])]),_:1})]),_:1}))}});export{Q as default};
|
import{d as m,J as k,a as i,F as y,g as x,b as n,k as d,I as f,t as g,K as b,u as r,o as t,w as l,f as e,h as v}from"./app-BXYcVHqk.js";import{c as o}from"./createLucideIcon-BlA39rtn.js";import{e as I,_ as M,a as w}from"./Layout.vue_vue_type_script_setup_true_lang-CqO9sNxz.js";import{_ as A}from"./AppLayout.vue_vue_type_script_setup_true_lang-86gE95Fg.js";import"./AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js";import"./useForwardExpose-Djbxsgaa.js";import"./index-C4J_hXM0.js";import"./index--H2rh_A_.js";import"./VisuallyHidden-BvthYHr5.js";import"./RovingFocusGroup-dmigQ6Dy.js";import"./useArrowNavigation-C6Y-ieo6.js";const C=o("MonitorIcon",[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]);const $=o("MoonIcon",[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}]]);const B=o("SunIcon",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]),S={class:"inline-flex gap-1 rounded-lg bg-neutral-100 p-1 dark:bg-neutral-800"},z=["onClick"],D={class:"ml-1.5 text-sm"},L=m({__name:"AppearanceTabs",setup(u){const{appearance:a,updateAppearance:c}=k(),p=[{value:"light",Icon:B,label:"Light"},{value:"dark",Icon:$,label:"Dark"},{value:"system",Icon:C,label:"System"}];return(q,F)=>(t(),i("div",S,[(t(),i(y,null,x(p,({value:s,Icon:h,label:_})=>n("button",{key:s,onClick:N=>r(c)(s),class:b(["flex items-center rounded-md px-3.5 py-1.5 transition-colors",r(a)===s?"bg-white shadow-xs dark:bg-neutral-700 dark:text-neutral-100":"text-neutral-500 hover:bg-neutral-200/60 hover:text-black dark:text-neutral-400 dark:hover:bg-neutral-700/60"])},[(t(),d(f(h),{class:"-ml-1 h-4 w-4"})),n("span",D,g(_),1)],10,z)),64))]))}}),j={class:"space-y-6"},Q=m({__name:"Appearance",setup(u){const a=[{title:"Appearance settings",href:I().url}];return(c,p)=>(t(),d(A,{breadcrumbs:a},{default:l(()=>[e(r(v),{title:"Appearance settings"}),e(M,null,{default:l(()=>[n("div",j,[e(w,{title:"Appearance settings",description:"Update your account's appearance settings"}),e(L)])]),_:1})]),_:1}))}});export{Q as default};
|
||||||
|
|
@ -1 +1 @@
|
||||||
import{a as f}from"./AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js";import{h as m}from"./index-C4J_hXM0.js";import{d as c,a as u,b as e,G as n,f as i,w as l,t as o,u as a,m as _,o as r,k as h}from"./app-CClrM5Yi.js";const p={class:"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10"},x={class:"w-full max-w-sm"},g={class:"flex flex-col gap-8"},v={class:"flex flex-col items-center gap-4"},k={class:"mb-1 flex h-9 w-9 items-center justify-center rounded-md"},y={class:"sr-only"},w={class:"space-y-2 text-center"},b={class:"text-xl font-medium"},B={class:"text-center text-sm text-muted-foreground"},$=c({__name:"AuthSimpleLayout",props:{title:{},description:{}},setup(t){return(s,d)=>(r(),u("div",p,[e("div",x,[e("div",g,[e("div",v,[i(a(_),{href:a(m)(),class:"flex flex-col items-center gap-2 font-medium"},{default:l(()=>[e("div",k,[i(f,{class:"size-9 fill-current text-[var(--foreground)] dark:text-white"})]),e("span",y,o(t.title),1)]),_:1},8,["href"]),e("div",w,[e("h1",b,o(t.title),1),e("p",B,o(t.description),1)])]),n(s.$slots,"default")])])]))}}),C=c({__name:"AuthLayout",props:{title:{},description:{}},setup(t){return(s,d)=>(r(),h($,{title:t.title,description:t.description},{default:l(()=>[n(s.$slots,"default")]),_:3},8,["title","description"]))}});export{C as _};
|
import{a as f}from"./AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js";import{h as m}from"./index-C4J_hXM0.js";import{d as c,a as u,b as e,G as n,f as i,w as l,t as o,u as a,m as _,o as r,k as h}from"./app-BXYcVHqk.js";const p={class:"flex min-h-svh flex-col items-center justify-center gap-6 bg-background p-6 md:p-10"},x={class:"w-full max-w-sm"},g={class:"flex flex-col gap-8"},v={class:"flex flex-col items-center gap-4"},k={class:"mb-1 flex h-9 w-9 items-center justify-center rounded-md"},y={class:"sr-only"},w={class:"space-y-2 text-center"},b={class:"text-xl font-medium"},B={class:"text-center text-sm text-muted-foreground"},$=c({__name:"AuthSimpleLayout",props:{title:{},description:{}},setup(t){return(s,d)=>(r(),u("div",p,[e("div",x,[e("div",g,[e("div",v,[i(a(_),{href:a(m)(),class:"flex flex-col items-center gap-2 font-medium"},{default:l(()=>[e("div",k,[i(f,{class:"size-9 fill-current text-[var(--foreground)] dark:text-white"})]),e("span",y,o(t.title),1)]),_:1},8,["href"]),e("div",w,[e("h1",b,o(t.title),1),e("p",B,o(t.description),1)])]),n(s.$slots,"default")])])]))}}),C=c({__name:"AuthLayout",props:{title:{},description:{}},setup(t){return(s,d)=>(r(),h($,{title:t.title,description:t.description},{default:l(()=>[n(s.$slots,"default")]),_:3},8,["title","description"]))}});export{C as _};
|
||||||
|
|
@ -1 +1 @@
|
||||||
import{_ as n}from"./InputError.vue_vue_type_script_setup_true_lang-DxwKzEqx.js";import{_ as p}from"./AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js";import{_}from"./Input.vue_vue_type_script_setup_true_lang-BcBrC1ED.js";import{_ as c}from"./Label.vue_vue_type_script_setup_true_lang-Dbqibcwo.js";import{_ as l}from"./Spinner.vue_vue_type_script_setup_true_lang-BPOcqWqa.js";import{_ as u}from"./AuthLayout.vue_vue_type_script_setup_true_lang-B14CUTB5.js";import{s as w}from"./index-BCC4ahRc.js";import{d as C,k as i,w as e,f as o,u as s,h as b,A as h,B as $,b as r,l as m,i as g,o as d}from"./app-CClrM5Yi.js";import"./useForwardExpose-BhawR5VU.js";import"./createLucideIcon-ZFd4jktC.js";import"./index-C4J_hXM0.js";const k={class:"space-y-6"},x={class:"grid gap-2"},y={class:"flex items-center"},G=C({__name:"ConfirmPassword",setup(P){return(B,a)=>(d(),i(u,{title:"Confirm your password",description:"This is a secure area of the application. Please confirm your password before continuing."},{default:e(()=>[o(s(b),{title:"Confirm password"}),o(s(h),$(s(w).form(),{"reset-on-success":""}),{default:e(({errors:f,processing:t})=>[r("div",k,[r("div",x,[o(s(c),{htmlFor:"password"},{default:e(()=>[...a[0]||(a[0]=[m("Password",-1)])]),_:1}),o(s(_),{id:"password",type:"password",name:"password",class:"mt-1 block w-full",required:"",autocomplete:"current-password",autofocus:""}),o(n,{message:f.password},null,8,["message"])]),r("div",y,[o(s(p),{class:"w-full",disabled:t,"data-test":"confirm-password-button"},{default:e(()=>[t?(d(),i(s(l),{key:0})):g("",!0),a[1]||(a[1]=m(" Confirm Password ",-1))]),_:2},1032,["disabled"])])])]),_:1},16)]),_:1}))}});export{G as default};
|
import{_ as n}from"./InputError.vue_vue_type_script_setup_true_lang-CQ06D4fO.js";import{_ as p}from"./AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js";import{_}from"./Input.vue_vue_type_script_setup_true_lang-Caepq1Nz.js";import{_ as c}from"./Label.vue_vue_type_script_setup_true_lang-CLMgeKfL.js";import{_ as l}from"./Spinner.vue_vue_type_script_setup_true_lang-NJl11ITg.js";import{_ as u}from"./AuthLayout.vue_vue_type_script_setup_true_lang-Chpkpy8i.js";import{s as w}from"./index-BCC4ahRc.js";import{d as C,k as i,w as e,f as o,u as s,h as b,A as h,B as $,b as r,l as m,i as g,o as d}from"./app-BXYcVHqk.js";import"./useForwardExpose-Djbxsgaa.js";import"./createLucideIcon-BlA39rtn.js";import"./index-C4J_hXM0.js";const k={class:"space-y-6"},x={class:"grid gap-2"},y={class:"flex items-center"},G=C({__name:"ConfirmPassword",setup(P){return(B,a)=>(d(),i(u,{title:"Confirm your password",description:"This is a secure area of the application. Please confirm your password before continuing."},{default:e(()=>[o(s(b),{title:"Confirm password"}),o(s(h),$(s(w).form(),{"reset-on-success":""}),{default:e(({errors:f,processing:t})=>[r("div",k,[r("div",x,[o(s(c),{htmlFor:"password"},{default:e(()=>[...a[0]||(a[0]=[m("Password",-1)])]),_:1}),o(s(_),{id:"password",type:"password",name:"password",class:"mt-1 block w-full",required:"",autocomplete:"current-password",autofocus:""}),o(n,{message:f.password},null,8,["message"])]),r("div",y,[o(s(p),{class:"w-full",disabled:t,"data-test":"confirm-password-button"},{default:e(()=>[t?(d(),i(s(l),{key:0})):g("",!0),a[1]||(a[1]=m(" Confirm Password ",-1))]),_:2},1032,["disabled"])])])]),_:1},16)]),_:1}))}});export{G as default};
|
||||||
|
|
@ -1 +1 @@
|
||||||
import{_ as y}from"./AppLayout.vue_vue_type_script_setup_true_lang-DESMBqxz.js";import{d as k}from"./index-C4J_hXM0.js";import{d as v,c as w,a as s,b as e,o as r,r as _,e as $,f as l,u as M,h as j,w as L,t as n,F as f,g as m,i as c}from"./app-CClrM5Yi.js";import"./AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js";import"./useForwardExpose-BhawR5VU.js";import"./VisuallyHidden-Cu70tzB6.js";import"./RovingFocusGroup-CNFroA6Y.js";import"./useArrowNavigation-C6Y-ieo6.js";import"./createLucideIcon-ZFd4jktC.js";const D={class:"absolute inset-0 size-full stroke-neutral-900/20 dark:stroke-neutral-100/20",fill:"none"},N=["id"],V=["fill"],p=v({__name:"PlaceholderPattern",setup(b){const u=w(()=>`pattern-${Math.random().toString(36).substring(2,9)}`);return(i,o)=>(r(),s("svg",D,[e("defs",null,[e("pattern",{id:u.value,x:"0",y:"0",width:"8",height:"8",patternUnits:"userSpaceOnUse"},[...o[0]||(o[0]=[e("path",{d:"M-1 5L5 -1M3 9L8.5 3.5","stroke-width":"0.5"},null,-1)])],8,N)]),e("rect",{stroke:"none",fill:`url(#${u.value})`,width:"100%",height:"100%"},null,8,V)]))}}),A={class:"flex h-full flex-1 flex-col gap-4 overflow-x-auto rounded-xl p-4"},B={class:"grid auto-rows-min gap-4 md:grid-cols-3"},C={class:"relative overflow-hidden rounded-xl border border-sidebar-border/70 dark:border-sidebar-border"},F={class:"p-4"},P={key:0,class:"rounded-md border border-red-300 bg-red-50 p-3 text-red-800 dark:border-red-800 dark:bg-red-950 dark:text-red-200"},S={key:1},U={key:0,class:"space-y-3"},q=["aria-busy"],z=["href"],E={class:"h-20 w-14 shrink-0 overflow-hidden rounded bg-muted"},R=["src","alt"],X={class:"flex min-w-0 flex-1 flex-col"},H={class:"flex items-center justify-between gap-2"},I={class:"truncate font-medium"},O={class:"text-xs text-muted-foreground"},W={class:"mt-1 text-xs text-muted-foreground"},G={key:0,class:"mr-2 rounded border px-1 py-0.5"},J={key:1},K={key:0,class:"px-2 py-2 text-sm text-muted-foreground"},Q={class:"relative aspect-video overflow-hidden rounded-xl border border-sidebar-border/70 dark:border-sidebar-border"},T={class:"relative aspect-video overflow-hidden rounded-xl border border-sidebar-border/70 dark:border-sidebar-border"},Y={class:"relative min-h-[100vh] flex-1 rounded-xl border border-sidebar-border/70 md:min-h-min dark:border-sidebar-border"},le=v({__name:"Dashboard",setup(b){const u=[{title:"Dashboard",href:k().url}],i=_(!1),o=_(null),h=_([]);async function x(){i.value=!0,o.value=null;try{const d=await fetch("/api/movies?sort=newest&per_page=3",{headers:{Accept:"application/json","X-Requested-With":"XMLHttpRequest"},credentials:"same-origin"});if(!d.ok)throw new Error(`Failed: ${d.status}`);const a=await d.json();h.value=a.data}catch(d){o.value=d?.message??"Unexpected error"}finally{i.value=!1}}return $(x),(d,a)=>(r(),s(f,null,[l(M(j),{title:"Dashboard"}),l(y,{breadcrumbs:u},{default:L(()=>[e("div",A,[e("div",B,[e("div",C,[e("div",F,[a[1]||(a[1]=e("div",{class:"mb-3 flex items-center justify-between gap-2"},[e("h2",{class:"text-sm font-semibold"},"Last Movies Added"),e("a",{href:"/movies",class:"text-xs text-primary underline-offset-2 hover:underline"},"View all")],-1)),o.value?(r(),s("div",P,n(o.value),1)):(r(),s("div",S,[i.value?(r(),s("div",U,[(r(),s(f,null,m(3,t=>e("div",{key:t,class:"flex gap-3"},[...a[0]||(a[0]=[e("div",{class:"h-20 w-14 shrink-0 rounded bg-muted animate-pulse"},null,-1),e("div",{class:"flex min-w-0 flex-1 flex-col gap-2"},[e("div",{class:"h-4 w-1/2 rounded bg-muted animate-pulse"}),e("div",{class:"h-3 w-2/3 rounded bg-muted animate-pulse"}),e("div",{class:"h-3 w-1/3 rounded bg-muted animate-pulse"})],-1)])])),64))])):(r(),s("ul",{key:1,class:"divide-y divide-muted-foreground/20","aria-busy":i.value?"true":"false"},[(r(!0),s(f,null,m(h.value,t=>(r(),s("li",{key:t.id,class:"py-2"},[e("a",{href:`/movies/${t.id}`,class:"flex gap-3 rounded px-2 py-2 hover:bg-muted/40 focus:bg-muted/40 focus:outline-none"},[e("div",E,[t.poster_url?(r(),s("img",{key:0,src:t.poster_url,alt:`Poster for ${t.title}`,loading:"lazy",class:"h-full w-full object-cover"},null,8,R)):c("",!0)]),e("div",X,[e("div",H,[e("div",I,n(t.title),1),e("div",O,n(t.year??""),1)]),e("div",W,[t.rating?(r(),s("span",G,n(t.rating),1)):c("",!0),t.genres?.length?(r(),s("span",J,n(t.genres.map(g=>g.name).join(", ")),1)):c("",!0)])])],8,z)]))),128)),h.value.length?c("",!0):(r(),s("li",K,"No movies yet — add some from Admin → Movies."))],8,q))]))])]),e("div",Q,[l(p)]),e("div",T,[l(p)])]),e("div",Y,[l(p)])])]),_:1})],64))}});export{le as default};
|
import{_ as y}from"./AppLayout.vue_vue_type_script_setup_true_lang-86gE95Fg.js";import{d as k}from"./index-C4J_hXM0.js";import{d as v,c as w,a as s,b as e,o as r,r as _,e as $,f as l,u as M,h as j,w as L,t as n,F as f,g as m,i as c}from"./app-BXYcVHqk.js";import"./AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js";import"./useForwardExpose-Djbxsgaa.js";import"./VisuallyHidden-BvthYHr5.js";import"./RovingFocusGroup-dmigQ6Dy.js";import"./useArrowNavigation-C6Y-ieo6.js";import"./createLucideIcon-BlA39rtn.js";const D={class:"absolute inset-0 size-full stroke-neutral-900/20 dark:stroke-neutral-100/20",fill:"none"},N=["id"],V=["fill"],p=v({__name:"PlaceholderPattern",setup(b){const u=w(()=>`pattern-${Math.random().toString(36).substring(2,9)}`);return(i,o)=>(r(),s("svg",D,[e("defs",null,[e("pattern",{id:u.value,x:"0",y:"0",width:"8",height:"8",patternUnits:"userSpaceOnUse"},[...o[0]||(o[0]=[e("path",{d:"M-1 5L5 -1M3 9L8.5 3.5","stroke-width":"0.5"},null,-1)])],8,N)]),e("rect",{stroke:"none",fill:`url(#${u.value})`,width:"100%",height:"100%"},null,8,V)]))}}),A={class:"flex h-full flex-1 flex-col gap-4 overflow-x-auto rounded-xl p-4"},B={class:"grid auto-rows-min gap-4 md:grid-cols-3"},C={class:"relative overflow-hidden rounded-xl border border-sidebar-border/70 dark:border-sidebar-border"},F={class:"p-4"},P={key:0,class:"rounded-md border border-red-300 bg-red-50 p-3 text-red-800 dark:border-red-800 dark:bg-red-950 dark:text-red-200"},S={key:1},U={key:0,class:"space-y-3"},q=["aria-busy"],z=["href"],E={class:"h-20 w-14 shrink-0 overflow-hidden rounded bg-muted"},R=["src","alt"],X={class:"flex min-w-0 flex-1 flex-col"},H={class:"flex items-center justify-between gap-2"},I={class:"truncate font-medium"},O={class:"text-xs text-muted-foreground"},W={class:"mt-1 text-xs text-muted-foreground"},G={key:0,class:"mr-2 rounded border px-1 py-0.5"},J={key:1},K={key:0,class:"px-2 py-2 text-sm text-muted-foreground"},Q={class:"relative aspect-video overflow-hidden rounded-xl border border-sidebar-border/70 dark:border-sidebar-border"},T={class:"relative aspect-video overflow-hidden rounded-xl border border-sidebar-border/70 dark:border-sidebar-border"},Y={class:"relative min-h-[100vh] flex-1 rounded-xl border border-sidebar-border/70 md:min-h-min dark:border-sidebar-border"},le=v({__name:"Dashboard",setup(b){const u=[{title:"Dashboard",href:k().url}],i=_(!1),o=_(null),h=_([]);async function x(){i.value=!0,o.value=null;try{const d=await fetch("/api/movies?sort=newest&per_page=3",{headers:{Accept:"application/json","X-Requested-With":"XMLHttpRequest"},credentials:"same-origin"});if(!d.ok)throw new Error(`Failed: ${d.status}`);const a=await d.json();h.value=a.data}catch(d){o.value=d?.message??"Unexpected error"}finally{i.value=!1}}return $(x),(d,a)=>(r(),s(f,null,[l(M(j),{title:"Dashboard"}),l(y,{breadcrumbs:u},{default:L(()=>[e("div",A,[e("div",B,[e("div",C,[e("div",F,[a[1]||(a[1]=e("div",{class:"mb-3 flex items-center justify-between gap-2"},[e("h2",{class:"text-sm font-semibold"},"Last Movies Added"),e("a",{href:"/movies",class:"text-xs text-primary underline-offset-2 hover:underline"},"View all")],-1)),o.value?(r(),s("div",P,n(o.value),1)):(r(),s("div",S,[i.value?(r(),s("div",U,[(r(),s(f,null,m(3,t=>e("div",{key:t,class:"flex gap-3"},[...a[0]||(a[0]=[e("div",{class:"h-20 w-14 shrink-0 rounded bg-muted animate-pulse"},null,-1),e("div",{class:"flex min-w-0 flex-1 flex-col gap-2"},[e("div",{class:"h-4 w-1/2 rounded bg-muted animate-pulse"}),e("div",{class:"h-3 w-2/3 rounded bg-muted animate-pulse"}),e("div",{class:"h-3 w-1/3 rounded bg-muted animate-pulse"})],-1)])])),64))])):(r(),s("ul",{key:1,class:"divide-y divide-muted-foreground/20","aria-busy":i.value?"true":"false"},[(r(!0),s(f,null,m(h.value,t=>(r(),s("li",{key:t.id,class:"py-2"},[e("a",{href:`/movies/${t.id}`,class:"flex gap-3 rounded px-2 py-2 hover:bg-muted/40 focus:bg-muted/40 focus:outline-none"},[e("div",E,[t.poster_url?(r(),s("img",{key:0,src:t.poster_url,alt:`Poster for ${t.title}`,loading:"lazy",class:"h-full w-full object-cover"},null,8,R)):c("",!0)]),e("div",X,[e("div",H,[e("div",I,n(t.title),1),e("div",O,n(t.year??""),1)]),e("div",W,[t.rating?(r(),s("span",G,n(t.rating),1)):c("",!0),t.genres?.length?(r(),s("span",J,n(t.genres.map(g=>g.name).join(", ")),1)):c("",!0)])])],8,z)]))),128)),h.value.length?c("",!0):(r(),s("li",K,"No movies yet — add some from Admin → Movies."))],8,q))]))])]),e("div",Q,[l(p)]),e("div",T,[l(p)])]),e("div",Y,[l(p)])])]),_:1})],64))}});export{le as default};
|
||||||
|
|
@ -1 +1 @@
|
||||||
import{u as D,d as x}from"./VisuallyHidden-Cu70tzB6.js";import{a as h,b as B,c as b,d as w,D as v,X as C,f as P,g as $}from"./AppLayout.vue_vue_type_script_setup_true_lang-DESMBqxz.js";import{d as r,k as p,u as e,B as u,w as d,G as c,o as i,c as m,f as _,b as k,a as z,K as O}from"./app-CClrM5Yi.js";import{c as f}from"./AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js";const N=r({__name:"Dialog",props:{open:{type:Boolean},defaultOpen:{type:Boolean},modal:{type:Boolean}},emits:["update:open"],setup(s,{emit:a}){const t=D(s,a);return(n,y)=>(i(),p(e(h),u({"data-slot":"dialog"},e(t)),{default:d(()=>[c(n.$slots,"default")]),_:3},16))}}),F=r({__name:"DialogOverlay",props:{forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(s){const a=s,o=m(()=>{const{class:l,...t}=a;return t});return(l,t)=>(i(),p(e(B),u({"data-slot":"dialog-overlay"},o.value,{class:e(f)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80",a.class)}),{default:d(()=>[c(l.$slots,"default")]),_:3},16,["class"]))}}),T=r({__name:"DialogContent",props:{forceMount:{type:Boolean},disableOutsidePointerEvents:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(s,{emit:a}){const o=s,l=a,t=m(()=>{const{class:y,...g}=o;return g}),n=D(t,l);return(y,g)=>(i(),p(e(b),null,{default:d(()=>[_(F),_(e(w),u({"data-slot":"dialog-content"},e(n),{class:e(f)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",o.class)}),{default:d(()=>[c(y.$slots,"default"),_(e(v),{class:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4"},{default:d(()=>[_(e(C)),g[0]||(g[0]=k("span",{class:"sr-only"},"Close",-1))]),_:1})]),_:3},16,["class"])]),_:3}))}}),V=r({__name:"DialogDescription",props:{asChild:{type:Boolean},as:{},class:{}},setup(s){const a=s,o=m(()=>{const{class:t,...n}=a;return n}),l=x(o);return(t,n)=>(i(),p(e(P),u({"data-slot":"dialog-description"},e(l),{class:e(f)("text-muted-foreground text-sm",a.class)}),{default:d(()=>[c(t.$slots,"default")]),_:3},16,["class"]))}}),G=r({__name:"DialogHeader",props:{class:{}},setup(s){const a=s;return(o,l)=>(i(),z("div",{"data-slot":"dialog-header",class:O(e(f)("flex flex-col gap-2 text-center sm:text-left",a.class))},[c(o.$slots,"default")],2))}}),H=r({__name:"DialogTitle",props:{asChild:{type:Boolean},as:{},class:{}},setup(s){const a=s,o=m(()=>{const{class:t,...n}=a;return n}),l=x(o);return(t,n)=>(i(),p(e($),u({"data-slot":"dialog-title"},e(l),{class:e(f)("text-lg leading-none font-semibold",a.class)}),{default:d(()=>[c(t.$slots,"default")]),_:3},16,["class"]))}});export{T as _,G as a,H as b,V as c,N as d};
|
import{u as D,d as x}from"./VisuallyHidden-BvthYHr5.js";import{a as h,b as B,c as b,d as w,D as v,X as C,f as P,g as $}from"./AppLayout.vue_vue_type_script_setup_true_lang-86gE95Fg.js";import{d as r,k as p,u as e,B as u,w as d,G as c,o as i,c as m,f as _,b as k,a as z,K as O}from"./app-BXYcVHqk.js";import{c as f}from"./AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js";const N=r({__name:"Dialog",props:{open:{type:Boolean},defaultOpen:{type:Boolean},modal:{type:Boolean}},emits:["update:open"],setup(s,{emit:a}){const t=D(s,a);return(n,y)=>(i(),p(e(h),u({"data-slot":"dialog"},e(t)),{default:d(()=>[c(n.$slots,"default")]),_:3},16))}}),F=r({__name:"DialogOverlay",props:{forceMount:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},setup(s){const a=s,o=m(()=>{const{class:l,...t}=a;return t});return(l,t)=>(i(),p(e(B),u({"data-slot":"dialog-overlay"},o.value,{class:e(f)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80",a.class)}),{default:d(()=>[c(l.$slots,"default")]),_:3},16,["class"]))}}),T=r({__name:"DialogContent",props:{forceMount:{type:Boolean},disableOutsidePointerEvents:{type:Boolean},asChild:{type:Boolean},as:{},class:{}},emits:["escapeKeyDown","pointerDownOutside","focusOutside","interactOutside","openAutoFocus","closeAutoFocus"],setup(s,{emit:a}){const o=s,l=a,t=m(()=>{const{class:y,...g}=o;return g}),n=D(t,l);return(y,g)=>(i(),p(e(b),null,{default:d(()=>[_(F),_(e(w),u({"data-slot":"dialog-content"},e(n),{class:e(f)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",o.class)}),{default:d(()=>[c(y.$slots,"default"),_(e(v),{class:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4"},{default:d(()=>[_(e(C)),g[0]||(g[0]=k("span",{class:"sr-only"},"Close",-1))]),_:1})]),_:3},16,["class"])]),_:3}))}}),V=r({__name:"DialogDescription",props:{asChild:{type:Boolean},as:{},class:{}},setup(s){const a=s,o=m(()=>{const{class:t,...n}=a;return n}),l=x(o);return(t,n)=>(i(),p(e(P),u({"data-slot":"dialog-description"},e(l),{class:e(f)("text-muted-foreground text-sm",a.class)}),{default:d(()=>[c(t.$slots,"default")]),_:3},16,["class"]))}}),G=r({__name:"DialogHeader",props:{class:{}},setup(s){const a=s;return(o,l)=>(i(),z("div",{"data-slot":"dialog-header",class:O(e(f)("flex flex-col gap-2 text-center sm:text-left",a.class))},[c(o.$slots,"default")],2))}}),H=r({__name:"DialogTitle",props:{asChild:{type:Boolean},as:{},class:{}},setup(s){const a=s,o=m(()=>{const{class:t,...n}=a;return n}),l=x(o);return(t,n)=>(i(),p(e($),u({"data-slot":"dialog-title"},e(l),{class:e(f)("text-lg leading-none font-semibold",a.class)}),{default:d(()=>[c(t.$slots,"default")]),_:3},16,["class"]))}});export{T as _,G as a,H as b,V as c,N as d};
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
||||||
import{_}from"./InputError.vue_vue_type_script_setup_true_lang-DxwKzEqx.js";import{_ as p}from"./TextLink.vue_vue_type_script_setup_true_lang-JYycsYY3.js";import{_ as u}from"./AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js";import{_ as c}from"./Input.vue_vue_type_script_setup_true_lang-BcBrC1ED.js";import{_ as x}from"./Label.vue_vue_type_script_setup_true_lang-Dbqibcwo.js";import{_ as g}from"./Spinner.vue_vue_type_script_setup_true_lang-BPOcqWqa.js";import{_ as k}from"./AuthLayout.vue_vue_type_script_setup_true_lang-B14CUTB5.js";import{l as w}from"./index-C4J_hXM0.js";import{e as y}from"./index-vZYIBGLo.js";import{d as v,k as d,w as a,f as s,a as $,i as n,b as o,u as t,h as b,o as r,t as h,A as B,C,D as E,l as i}from"./app-CClrM5Yi.js";import"./useForwardExpose-BhawR5VU.js";import"./createLucideIcon-ZFd4jktC.js";import"./index-BCC4ahRc.js";const N={key:0,class:"mb-4 text-center text-sm font-medium text-green-600"},V={class:"space-y-6"},F={class:"grid gap-2"},P={class:"my-6 flex items-center justify-start"},D={class:"space-x-1 text-center text-sm text-muted-foreground"},M=v({__name:"ForgotPassword",props:{status:{}},setup(m){return(j,e)=>(r(),d(k,{title:"Forgot password",description:"Enter your email to receive a password reset link"},{default:a(()=>[s(t(b),{title:"Forgot password"}),m.status?(r(),$("div",N,h(m.status),1)):n("",!0),o("div",V,[s(t(B),C(E(t(y).form())),{default:a(({errors:f,processing:l})=>[o("div",F,[s(t(x),{for:"email"},{default:a(()=>[...e[0]||(e[0]=[i("Email address",-1)])]),_:1}),s(t(c),{id:"email",type:"email",name:"email",autocomplete:"off",autofocus:"",placeholder:"email@example.com"}),s(_,{message:f.email},null,8,["message"])]),o("div",P,[s(t(u),{class:"w-full",disabled:l,"data-test":"email-password-reset-link-button"},{default:a(()=>[l?(r(),d(t(g),{key:0})):n("",!0),e[1]||(e[1]=i(" Email password reset link ",-1))]),_:2},1032,["disabled"])])]),_:1},16),o("div",D,[e[3]||(e[3]=o("span",null,"Or, return to",-1)),s(p,{href:t(w)()},{default:a(()=>[...e[2]||(e[2]=[i("log in",-1)])]),_:1},8,["href"])])])]),_:1}))}});export{M as default};
|
import{_}from"./InputError.vue_vue_type_script_setup_true_lang-CQ06D4fO.js";import{_ as p}from"./TextLink.vue_vue_type_script_setup_true_lang-CEF924Ry.js";import{_ as u}from"./AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js";import{_ as c}from"./Input.vue_vue_type_script_setup_true_lang-Caepq1Nz.js";import{_ as x}from"./Label.vue_vue_type_script_setup_true_lang-CLMgeKfL.js";import{_ as g}from"./Spinner.vue_vue_type_script_setup_true_lang-NJl11ITg.js";import{_ as k}from"./AuthLayout.vue_vue_type_script_setup_true_lang-Chpkpy8i.js";import{l as w}from"./index-C4J_hXM0.js";import{e as y}from"./index-vZYIBGLo.js";import{d as v,k as d,w as a,f as s,a as $,i as n,b as o,u as t,h as b,o as r,t as h,A as B,C,D as E,l as i}from"./app-BXYcVHqk.js";import"./useForwardExpose-Djbxsgaa.js";import"./createLucideIcon-BlA39rtn.js";import"./index-BCC4ahRc.js";const N={key:0,class:"mb-4 text-center text-sm font-medium text-green-600"},V={class:"space-y-6"},F={class:"grid gap-2"},P={class:"my-6 flex items-center justify-start"},D={class:"space-x-1 text-center text-sm text-muted-foreground"},M=v({__name:"ForgotPassword",props:{status:{}},setup(m){return(j,e)=>(r(),d(k,{title:"Forgot password",description:"Enter your email to receive a password reset link"},{default:a(()=>[s(t(b),{title:"Forgot password"}),m.status?(r(),$("div",N,h(m.status),1)):n("",!0),o("div",V,[s(t(B),C(E(t(y).form())),{default:a(({errors:f,processing:l})=>[o("div",F,[s(t(x),{for:"email"},{default:a(()=>[...e[0]||(e[0]=[i("Email address",-1)])]),_:1}),s(t(c),{id:"email",type:"email",name:"email",autocomplete:"off",autofocus:"",placeholder:"email@example.com"}),s(_,{message:f.email},null,8,["message"])]),o("div",P,[s(t(u),{class:"w-full",disabled:l,"data-test":"email-password-reset-link-button"},{default:a(()=>[l?(r(),d(t(g),{key:0})):n("",!0),e[1]||(e[1]=i(" Email password reset link ",-1))]),_:2},1032,["disabled"])])]),_:1},16),o("div",D,[e[3]||(e[3]=o("span",null,"Or, return to",-1)),s(p,{href:t(w)()},{default:a(()=>[...e[2]||(e[2]=[i("log in",-1)])]),_:1},8,["href"])])])]),_:1}))}});export{M as default};
|
||||||
1
public/build/assets/Index-B9wSodOw.css
Normal file
1
public/build/assets/Index-B9wSodOw.css
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
.fade-enter-active[data-v-0cff14f2],.fade-leave-active[data-v-0cff14f2]{transition:opacity .2s}.fade-enter-from[data-v-0cff14f2],.fade-leave-to[data-v-0cff14f2]{opacity:0}
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +0,0 @@
|
||||||
.fade-enter-active[data-v-e85a9790],.fade-leave-active[data-v-e85a9790]{transition:opacity .2s}.fade-enter-from[data-v-e85a9790],.fade-leave-to[data-v-e85a9790]{opacity:0}
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
||||||
import{d as s,q as n,v as d,u as a,a as u,K as m,N as p,o as f}from"./app-CClrM5Yi.js";import{c}from"./AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js";import{b}from"./useForwardExpose-BhawR5VU.js";const h=s({__name:"Input",props:{defaultValue:{},modelValue:{},class:{}},emits:["update:modelValue"],setup(r,{emit:o}){const e=r,t=b(e,"modelValue",o,{passive:!0,defaultValue:e.defaultValue});return(x,i)=>n((f(),u("input",{"onUpdate:modelValue":i[0]||(i[0]=l=>p(t)?t.value=l:null),"data-slot":"input",class:m(a(c)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e.class))},null,2)),[[d,a(t)]])}});export{h as _};
|
import{d as s,q as n,v as d,u as a,a as u,K as m,N as p,o as f}from"./app-BXYcVHqk.js";import{c}from"./AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js";import{b}from"./useForwardExpose-Djbxsgaa.js";const h=s({__name:"Input",props:{defaultValue:{},modelValue:{},class:{}},emits:["update:modelValue"],setup(r,{emit:o}){const e=r,t=b(e,"modelValue",o,{passive:!0,defaultValue:e.defaultValue});return(x,i)=>n((f(),u("input",{"onUpdate:modelValue":i[0]||(i[0]=l=>p(t)?t.value=l:null),"data-slot":"input",class:m(a(c)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",e.class))},null,2)),[[d,a(t)]])}});export{h as _};
|
||||||
|
|
@ -1 +1 @@
|
||||||
import{d as s,q as t,L as a,a as r,b as o,t as n,o as c}from"./app-CClrM5Yi.js";const i={class:"text-sm text-red-600 dark:text-red-500"},l=s({__name:"InputError",props:{message:{}},setup(e){return(m,d)=>t((c(),r("div",null,[o("p",i,n(e.message),1)],512)),[[a,e.message]])}});export{l as _};
|
import{d as s,q as t,L as a,a as r,b as o,t as n,o as c}from"./app-BXYcVHqk.js";const i={class:"text-sm text-red-600 dark:text-red-500"},l=s({__name:"InputError",props:{message:{}},setup(e){return(m,d)=>t((c(),r("div",null,[o("p",i,n(e.message),1)],512)),[[a,e.message]])}});export{l as _};
|
||||||
|
|
@ -1 +1 @@
|
||||||
import{P as c,c as f}from"./AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js";import{a as _}from"./useForwardExpose-BhawR5VU.js";import{d as l,k as d,w as n,G as p,B as u,u as o,o as i,c as m}from"./app-CClrM5Yi.js";var b=l({__name:"Label",props:{for:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"label"}},setup(s){const t=s;return _(),(r,a)=>(i(),d(o(c),u(t,{onMousedown:a[0]||(a[0]=e=>{!e.defaultPrevented&&e.detail>1&&e.preventDefault()})}),{default:n(()=>[p(r.$slots,"default")]),_:3},16))}}),g=b;const x=l({__name:"Label",props:{for:{},asChild:{type:Boolean},as:{},class:{}},setup(s){const t=s,r=m(()=>{const{class:a,...e}=t;return e});return(a,e)=>(i(),d(o(g),u({"data-slot":"label"},r.value,{class:o(f)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",t.class)}),{default:n(()=>[p(a.$slots,"default")]),_:3},16,["class"]))}});export{x as _};
|
import{P as c,c as f}from"./AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js";import{a as _}from"./useForwardExpose-Djbxsgaa.js";import{d as l,k as d,w as n,G as p,B as u,u as o,o as i,c as m}from"./app-BXYcVHqk.js";var b=l({__name:"Label",props:{for:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"label"}},setup(s){const t=s;return _(),(r,a)=>(i(),d(o(c),u(t,{onMousedown:a[0]||(a[0]=e=>{!e.defaultPrevented&&e.detail>1&&e.preventDefault()})}),{default:n(()=>[p(r.$slots,"default")]),_:3},16))}}),g=b;const x=l({__name:"Label",props:{for:{},asChild:{type:Boolean},as:{},class:{}},setup(s){const t=s,r=m(()=>{const{class:a,...e}=t;return e});return(a,e)=>(i(),d(o(g),u({"data-slot":"label"},r.value,{class:o(f)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",t.class)}),{default:n(()=>[p(a.$slots,"default")]),_:3},16,["class"]))}});export{x as _};
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
||||||
import{d as y,k as v,w as d,f as s,u as t,h as b,b as i,A as q,B as Q,l as u,T as P,q as $,L as x,o as C}from"./app-CClrM5Yi.js";import{q as _}from"./index-C4J_hXM0.js";import{_ as m}from"./InputError.vue_vue_type_script_setup_true_lang-DxwKzEqx.js";import{_ as k}from"./AppLayout.vue_vue_type_script_setup_true_lang-DESMBqxz.js";import{b as N,_ as T,a as B}from"./Layout.vue_vue_type_script_setup_true_lang-ROf3tZlv.js";import{_ as S}from"./AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js";import{_ as l}from"./Input.vue_vue_type_script_setup_true_lang-BcBrC1ED.js";import{_ as p}from"./Label.vue_vue_type_script_setup_true_lang-Dbqibcwo.js";import"./useForwardExpose-BhawR5VU.js";import"./VisuallyHidden-Cu70tzB6.js";import"./RovingFocusGroup-CNFroA6Y.js";import"./useArrowNavigation-C6Y-ieo6.js";import"./createLucideIcon-ZFd4jktC.js";import"./index--H2rh_A_.js";const r=e=>({url:r.url(e),method:"get"});r.definition={methods:["get","head"],url:"/settings/password"};r.url=e=>r.definition.url+_(e);r.get=e=>({url:r.url(e),method:"get"});r.head=e=>({url:r.url(e),method:"head"});const c=e=>({action:r.url(e),method:"get"});c.get=e=>({action:r.url(e),method:"get"});c.head=e=>({action:r.url({[e?.mergeQuery?"mergeQuery":"query"]:{_method:"HEAD",...e?.query??e?.mergeQuery??{}}}),method:"get"});r.form=c;const a=e=>({url:a.url(e),method:"put"});a.definition={methods:["put"],url:"/settings/password"};a.url=e=>a.definition.url+_(e);a.put=e=>({url:a.url(e),method:"put"});const f=e=>({action:a.url({[e?.mergeQuery?"mergeQuery":"query"]:{_method:"PUT",...e?.query??e?.mergeQuery??{}}}),method:"post"});f.put=e=>({action:a.url({[e?.mergeQuery?"mergeQuery":"query"]:{_method:"PUT",...e?.query??e?.mergeQuery??{}}}),method:"post"});a.form=f;const U={edit:r,update:a},V={class:"space-y-6"},A={class:"grid gap-2"},D={class:"grid gap-2"},E={class:"grid gap-2"},F={class:"flex items-center gap-4"},H={class:"text-sm text-neutral-600"},se=y({__name:"Password",setup(e){const w=[{title:"Password settings",href:N().url}];return(I,o)=>(C(),v(k,{breadcrumbs:w},{default:d(()=>[s(t(b),{title:"Password settings"}),s(T,null,{default:d(()=>[i("div",V,[s(B,{title:"Update password",description:"Ensure your account is using a long, random password to stay secure"}),s(t(q),Q(t(U).update.form(),{options:{preserveScroll:!0},"reset-on-success":"","reset-on-error":["password","password_confirmation","current_password"],class:"space-y-6"}),{default:d(({errors:n,processing:g,recentlySuccessful:h})=>[i("div",A,[s(t(p),{for:"current_password"},{default:d(()=>[...o[0]||(o[0]=[u("Current password",-1)])]),_:1}),s(t(l),{id:"current_password",name:"current_password",type:"password",class:"mt-1 block w-full",autocomplete:"current-password",placeholder:"Current password"}),s(m,{message:n.current_password},null,8,["message"])]),i("div",D,[s(t(p),{for:"password"},{default:d(()=>[...o[1]||(o[1]=[u("New password",-1)])]),_:1}),s(t(l),{id:"password",name:"password",type:"password",class:"mt-1 block w-full",autocomplete:"new-password",placeholder:"New password"}),s(m,{message:n.password},null,8,["message"])]),i("div",E,[s(t(p),{for:"password_confirmation"},{default:d(()=>[...o[2]||(o[2]=[u("Confirm password",-1)])]),_:1}),s(t(l),{id:"password_confirmation",name:"password_confirmation",type:"password",class:"mt-1 block w-full",autocomplete:"new-password",placeholder:"Confirm password"}),s(m,{message:n.password_confirmation},null,8,["message"])]),i("div",F,[s(t(S),{disabled:g,"data-test":"update-password-button"},{default:d(()=>[...o[3]||(o[3]=[u("Save password",-1)])]),_:1},8,["disabled"]),s(P,{"enter-active-class":"transition ease-in-out","enter-from-class":"opacity-0","leave-active-class":"transition ease-in-out","leave-to-class":"opacity-0"},{default:d(()=>[$(i("p",H," Saved. ",512),[[x,h]])]),_:2},1024)])]),_:1},16)])]),_:1})]),_:1}))}});export{se as default};
|
import{d as y,k as v,w as d,f as s,u as t,h as b,b as i,A as q,B as Q,l as u,T as P,q as $,L as x,o as C}from"./app-BXYcVHqk.js";import{q as _}from"./index-C4J_hXM0.js";import{_ as m}from"./InputError.vue_vue_type_script_setup_true_lang-CQ06D4fO.js";import{_ as k}from"./AppLayout.vue_vue_type_script_setup_true_lang-86gE95Fg.js";import{b as N,_ as T,a as B}from"./Layout.vue_vue_type_script_setup_true_lang-CqO9sNxz.js";import{_ as S}from"./AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js";import{_ as l}from"./Input.vue_vue_type_script_setup_true_lang-Caepq1Nz.js";import{_ as p}from"./Label.vue_vue_type_script_setup_true_lang-CLMgeKfL.js";import"./useForwardExpose-Djbxsgaa.js";import"./VisuallyHidden-BvthYHr5.js";import"./RovingFocusGroup-dmigQ6Dy.js";import"./useArrowNavigation-C6Y-ieo6.js";import"./createLucideIcon-BlA39rtn.js";import"./index--H2rh_A_.js";const r=e=>({url:r.url(e),method:"get"});r.definition={methods:["get","head"],url:"/settings/password"};r.url=e=>r.definition.url+_(e);r.get=e=>({url:r.url(e),method:"get"});r.head=e=>({url:r.url(e),method:"head"});const c=e=>({action:r.url(e),method:"get"});c.get=e=>({action:r.url(e),method:"get"});c.head=e=>({action:r.url({[e?.mergeQuery?"mergeQuery":"query"]:{_method:"HEAD",...e?.query??e?.mergeQuery??{}}}),method:"get"});r.form=c;const a=e=>({url:a.url(e),method:"put"});a.definition={methods:["put"],url:"/settings/password"};a.url=e=>a.definition.url+_(e);a.put=e=>({url:a.url(e),method:"put"});const f=e=>({action:a.url({[e?.mergeQuery?"mergeQuery":"query"]:{_method:"PUT",...e?.query??e?.mergeQuery??{}}}),method:"post"});f.put=e=>({action:a.url({[e?.mergeQuery?"mergeQuery":"query"]:{_method:"PUT",...e?.query??e?.mergeQuery??{}}}),method:"post"});a.form=f;const U={edit:r,update:a},V={class:"space-y-6"},A={class:"grid gap-2"},D={class:"grid gap-2"},E={class:"grid gap-2"},F={class:"flex items-center gap-4"},H={class:"text-sm text-neutral-600"},se=y({__name:"Password",setup(e){const w=[{title:"Password settings",href:N().url}];return(I,o)=>(C(),v(k,{breadcrumbs:w},{default:d(()=>[s(t(b),{title:"Password settings"}),s(T,null,{default:d(()=>[i("div",V,[s(B,{title:"Update password",description:"Ensure your account is using a long, random password to stay secure"}),s(t(q),Q(t(U).update.form(),{options:{preserveScroll:!0},"reset-on-success":"","reset-on-error":["password","password_confirmation","current_password"],class:"space-y-6"}),{default:d(({errors:n,processing:g,recentlySuccessful:h})=>[i("div",A,[s(t(p),{for:"current_password"},{default:d(()=>[...o[0]||(o[0]=[u("Current password",-1)])]),_:1}),s(t(l),{id:"current_password",name:"current_password",type:"password",class:"mt-1 block w-full",autocomplete:"current-password",placeholder:"Current password"}),s(m,{message:n.current_password},null,8,["message"])]),i("div",D,[s(t(p),{for:"password"},{default:d(()=>[...o[1]||(o[1]=[u("New password",-1)])]),_:1}),s(t(l),{id:"password",name:"password",type:"password",class:"mt-1 block w-full",autocomplete:"new-password",placeholder:"New password"}),s(m,{message:n.password},null,8,["message"])]),i("div",E,[s(t(p),{for:"password_confirmation"},{default:d(()=>[...o[2]||(o[2]=[u("Confirm password",-1)])]),_:1}),s(t(l),{id:"password_confirmation",name:"password_confirmation",type:"password",class:"mt-1 block w-full",autocomplete:"new-password",placeholder:"Confirm password"}),s(m,{message:n.password_confirmation},null,8,["message"])]),i("div",F,[s(t(S),{disabled:g,"data-test":"update-password-button"},{default:d(()=>[...o[3]||(o[3]=[u("Save password",-1)])]),_:1},8,["disabled"]),s(P,{"enter-active-class":"transition ease-in-out","enter-from-class":"opacity-0","leave-active-class":"transition ease-in-out","leave-to-class":"opacity-0"},{default:d(()=>[$(i("p",H," Saved. ",512),[[x,h]])]),_:2},1024)])]),_:1},16)])]),_:1})]),_:1}))}});export{se as default};
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
||||||
import{_ as n}from"./InputError.vue_vue_type_script_setup_true_lang-DxwKzEqx.js";import{_ as g}from"./TextLink.vue_vue_type_script_setup_true_lang-JYycsYY3.js";import{_ as w}from"./AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js";import{_ as l}from"./Input.vue_vue_type_script_setup_true_lang-BcBrC1ED.js";import{_ as p}from"./Label.vue_vue_type_script_setup_true_lang-Dbqibcwo.js";import{_ as x}from"./Spinner.vue_vue_type_script_setup_true_lang-BPOcqWqa.js";import{_ as b}from"./AuthLayout.vue_vue_type_script_setup_true_lang-B14CUTB5.js";import{q as y,l as h}from"./index-C4J_hXM0.js";import{d as v,k as f,w as r,f as e,u as a,h as C,A as $,B as q,b as d,l as i,i as N,o as _}from"./app-CClrM5Yi.js";import"./useForwardExpose-BhawR5VU.js";import"./createLucideIcon-ZFd4jktC.js";const t=o=>({url:t.url(o),method:"post"});t.definition={methods:["post"],url:"/register"};t.url=o=>t.definition.url+y(o);t.post=o=>({url:t.url(o),method:"post"});const c=o=>({action:t.url(o),method:"post"});c.post=o=>({action:t.url(o),method:"post"});t.form=c;Object.assign(t,t);const k={class:"grid gap-6"},B={class:"grid gap-2"},P={class:"grid gap-2"},V={class:"grid gap-2"},A={class:"grid gap-2"},E={class:"text-center text-sm text-muted-foreground"},K=v({__name:"Register",setup(o){return(F,s)=>(_(),f(b,{title:"Create an account",description:"Enter your details below to create your account"},{default:r(()=>[e(a(C),{title:"Register"}),e(a($),q(a(t).form(),{"reset-on-success":["password","password_confirmation"],class:"flex flex-col gap-6"}),{default:r(({errors:m,processing:u})=>[d("div",k,[d("div",B,[e(a(p),{for:"name"},{default:r(()=>[...s[0]||(s[0]=[i("Name",-1)])]),_:1}),e(a(l),{id:"name",type:"text",required:"",autofocus:"",tabindex:1,autocomplete:"name",name:"name",placeholder:"Full name"}),e(n,{message:m.name},null,8,["message"])]),d("div",P,[e(a(p),{for:"email"},{default:r(()=>[...s[1]||(s[1]=[i("Email address",-1)])]),_:1}),e(a(l),{id:"email",type:"email",required:"",tabindex:2,autocomplete:"email",name:"email",placeholder:"email@example.com"}),e(n,{message:m.email},null,8,["message"])]),d("div",V,[e(a(p),{for:"password"},{default:r(()=>[...s[2]||(s[2]=[i("Password",-1)])]),_:1}),e(a(l),{id:"password",type:"password",required:"",tabindex:3,autocomplete:"new-password",name:"password",placeholder:"Password"}),e(n,{message:m.password},null,8,["message"])]),d("div",A,[e(a(p),{for:"password_confirmation"},{default:r(()=>[...s[3]||(s[3]=[i("Confirm password",-1)])]),_:1}),e(a(l),{id:"password_confirmation",type:"password",required:"",tabindex:4,autocomplete:"new-password",name:"password_confirmation",placeholder:"Confirm password"}),e(n,{message:m.password_confirmation},null,8,["message"])]),e(a(w),{type:"submit",class:"mt-2 w-full",tabindex:"5",disabled:u,"data-test":"register-user-button"},{default:r(()=>[u?(_(),f(a(x),{key:0})):N("",!0),s[4]||(s[4]=i(" Create account ",-1))]),_:2},1032,["disabled"])]),d("div",E,[s[6]||(s[6]=i(" Already have an account? ",-1)),e(g,{href:a(h)(),class:"underline underline-offset-4",tabindex:6},{default:r(()=>[...s[5]||(s[5]=[i("Log in",-1)])]),_:1},8,["href"])])]),_:1},16)]),_:1}))}});export{K as default};
|
import{_ as n}from"./InputError.vue_vue_type_script_setup_true_lang-CQ06D4fO.js";import{_ as g}from"./TextLink.vue_vue_type_script_setup_true_lang-CEF924Ry.js";import{_ as w}from"./AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js";import{_ as l}from"./Input.vue_vue_type_script_setup_true_lang-Caepq1Nz.js";import{_ as p}from"./Label.vue_vue_type_script_setup_true_lang-CLMgeKfL.js";import{_ as x}from"./Spinner.vue_vue_type_script_setup_true_lang-NJl11ITg.js";import{_ as b}from"./AuthLayout.vue_vue_type_script_setup_true_lang-Chpkpy8i.js";import{q as y,l as h}from"./index-C4J_hXM0.js";import{d as v,k as f,w as r,f as e,u as a,h as C,A as $,B as q,b as d,l as i,i as N,o as _}from"./app-BXYcVHqk.js";import"./useForwardExpose-Djbxsgaa.js";import"./createLucideIcon-BlA39rtn.js";const t=o=>({url:t.url(o),method:"post"});t.definition={methods:["post"],url:"/register"};t.url=o=>t.definition.url+y(o);t.post=o=>({url:t.url(o),method:"post"});const c=o=>({action:t.url(o),method:"post"});c.post=o=>({action:t.url(o),method:"post"});t.form=c;Object.assign(t,t);const k={class:"grid gap-6"},B={class:"grid gap-2"},P={class:"grid gap-2"},V={class:"grid gap-2"},A={class:"grid gap-2"},E={class:"text-center text-sm text-muted-foreground"},K=v({__name:"Register",setup(o){return(F,s)=>(_(),f(b,{title:"Create an account",description:"Enter your details below to create your account"},{default:r(()=>[e(a(C),{title:"Register"}),e(a($),q(a(t).form(),{"reset-on-success":["password","password_confirmation"],class:"flex flex-col gap-6"}),{default:r(({errors:m,processing:u})=>[d("div",k,[d("div",B,[e(a(p),{for:"name"},{default:r(()=>[...s[0]||(s[0]=[i("Name",-1)])]),_:1}),e(a(l),{id:"name",type:"text",required:"",autofocus:"",tabindex:1,autocomplete:"name",name:"name",placeholder:"Full name"}),e(n,{message:m.name},null,8,["message"])]),d("div",P,[e(a(p),{for:"email"},{default:r(()=>[...s[1]||(s[1]=[i("Email address",-1)])]),_:1}),e(a(l),{id:"email",type:"email",required:"",tabindex:2,autocomplete:"email",name:"email",placeholder:"email@example.com"}),e(n,{message:m.email},null,8,["message"])]),d("div",V,[e(a(p),{for:"password"},{default:r(()=>[...s[2]||(s[2]=[i("Password",-1)])]),_:1}),e(a(l),{id:"password",type:"password",required:"",tabindex:3,autocomplete:"new-password",name:"password",placeholder:"Password"}),e(n,{message:m.password},null,8,["message"])]),d("div",A,[e(a(p),{for:"password_confirmation"},{default:r(()=>[...s[3]||(s[3]=[i("Confirm password",-1)])]),_:1}),e(a(l),{id:"password_confirmation",type:"password",required:"",tabindex:4,autocomplete:"new-password",name:"password_confirmation",placeholder:"Confirm password"}),e(n,{message:m.password_confirmation},null,8,["message"])]),e(a(w),{type:"submit",class:"mt-2 w-full",tabindex:"5",disabled:u,"data-test":"register-user-button"},{default:r(()=>[u?(_(),f(a(x),{key:0})):N("",!0),s[4]||(s[4]=i(" Create account ",-1))]),_:2},1032,["disabled"])]),d("div",E,[s[6]||(s[6]=i(" Already have an account? ",-1)),e(g,{href:a(h)(),class:"underline underline-offset-4",tabindex:6},{default:r(()=>[...s[5]||(s[5]=[i("Log in",-1)])]),_:1},8,["href"])])]),_:1},16)]),_:1}))}});export{K as default};
|
||||||
|
|
@ -1 +1 @@
|
||||||
import{_ as d}from"./InputError.vue_vue_type_script_setup_true_lang-DxwKzEqx.js";import{_ as c}from"./AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js";import{_ as i}from"./Input.vue_vue_type_script_setup_true_lang-BcBrC1ED.js";import{_ as n}from"./Label.vue_vue_type_script_setup_true_lang-Dbqibcwo.js";import{_ as g}from"./Spinner.vue_vue_type_script_setup_true_lang-BPOcqWqa.js";import{_ as k}from"./AuthLayout.vue_vue_type_script_setup_true_lang-B14CUTB5.js";import{u as b}from"./index-vZYIBGLo.js";import{d as y,r as V,k as u,w as o,f as s,u as a,h as v,A as P,B as $,b as r,l as m,i as C,o as w}from"./app-CClrM5Yi.js";import"./useForwardExpose-BhawR5VU.js";import"./createLucideIcon-ZFd4jktC.js";import"./index-C4J_hXM0.js";import"./index-BCC4ahRc.js";const x={class:"grid gap-6"},B={class:"grid gap-2"},N={class:"grid gap-2"},R={class:"grid gap-2"},K=y({__name:"ResetPassword",props:{token:{},email:{}},setup(l){const p=V(l.email);return(A,e)=>(w(),u(k,{title:"Reset password",description:"Please enter your new password below"},{default:o(()=>[s(a(v),{title:"Reset password"}),s(a(P),$(a(b).form(),{transform:t=>({...t,token:l.token,email:l.email}),"reset-on-success":["password","password_confirmation"]}),{default:o(({errors:t,processing:f})=>[r("div",x,[r("div",B,[s(a(n),{for:"email"},{default:o(()=>[...e[1]||(e[1]=[m("Email",-1)])]),_:1}),s(a(i),{id:"email",type:"email",name:"email",autocomplete:"email",modelValue:p.value,"onUpdate:modelValue":e[0]||(e[0]=_=>p.value=_),class:"mt-1 block w-full",readonly:""},null,8,["modelValue"]),s(d,{message:t.email,class:"mt-2"},null,8,["message"])]),r("div",N,[s(a(n),{for:"password"},{default:o(()=>[...e[2]||(e[2]=[m("Password",-1)])]),_:1}),s(a(i),{id:"password",type:"password",name:"password",autocomplete:"new-password",class:"mt-1 block w-full",autofocus:"",placeholder:"Password"}),s(d,{message:t.password},null,8,["message"])]),r("div",R,[s(a(n),{for:"password_confirmation"},{default:o(()=>[...e[3]||(e[3]=[m(" Confirm Password ",-1)])]),_:1}),s(a(i),{id:"password_confirmation",type:"password",name:"password_confirmation",autocomplete:"new-password",class:"mt-1 block w-full",placeholder:"Confirm password"}),s(d,{message:t.password_confirmation},null,8,["message"])]),s(a(c),{type:"submit",class:"mt-4 w-full",disabled:f,"data-test":"reset-password-button"},{default:o(()=>[f?(w(),u(a(g),{key:0})):C("",!0),e[4]||(e[4]=m(" Reset password ",-1))]),_:2},1032,["disabled"])])]),_:1},16,["transform"])]),_:1}))}});export{K as default};
|
import{_ as d}from"./InputError.vue_vue_type_script_setup_true_lang-CQ06D4fO.js";import{_ as c}from"./AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js";import{_ as i}from"./Input.vue_vue_type_script_setup_true_lang-Caepq1Nz.js";import{_ as n}from"./Label.vue_vue_type_script_setup_true_lang-CLMgeKfL.js";import{_ as g}from"./Spinner.vue_vue_type_script_setup_true_lang-NJl11ITg.js";import{_ as k}from"./AuthLayout.vue_vue_type_script_setup_true_lang-Chpkpy8i.js";import{u as b}from"./index-vZYIBGLo.js";import{d as y,r as V,k as u,w as o,f as s,u as a,h as v,A as P,B as $,b as r,l as m,i as C,o as w}from"./app-BXYcVHqk.js";import"./useForwardExpose-Djbxsgaa.js";import"./createLucideIcon-BlA39rtn.js";import"./index-C4J_hXM0.js";import"./index-BCC4ahRc.js";const x={class:"grid gap-6"},B={class:"grid gap-2"},N={class:"grid gap-2"},R={class:"grid gap-2"},K=y({__name:"ResetPassword",props:{token:{},email:{}},setup(l){const p=V(l.email);return(A,e)=>(w(),u(k,{title:"Reset password",description:"Please enter your new password below"},{default:o(()=>[s(a(v),{title:"Reset password"}),s(a(P),$(a(b).form(),{transform:t=>({...t,token:l.token,email:l.email}),"reset-on-success":["password","password_confirmation"]}),{default:o(({errors:t,processing:f})=>[r("div",x,[r("div",B,[s(a(n),{for:"email"},{default:o(()=>[...e[1]||(e[1]=[m("Email",-1)])]),_:1}),s(a(i),{id:"email",type:"email",name:"email",autocomplete:"email",modelValue:p.value,"onUpdate:modelValue":e[0]||(e[0]=_=>p.value=_),class:"mt-1 block w-full",readonly:""},null,8,["modelValue"]),s(d,{message:t.email,class:"mt-2"},null,8,["message"])]),r("div",N,[s(a(n),{for:"password"},{default:o(()=>[...e[2]||(e[2]=[m("Password",-1)])]),_:1}),s(a(i),{id:"password",type:"password",name:"password",autocomplete:"new-password",class:"mt-1 block w-full",autofocus:"",placeholder:"Password"}),s(d,{message:t.password},null,8,["message"])]),r("div",R,[s(a(n),{for:"password_confirmation"},{default:o(()=>[...e[3]||(e[3]=[m(" Confirm Password ",-1)])]),_:1}),s(a(i),{id:"password_confirmation",type:"password",name:"password_confirmation",autocomplete:"new-password",class:"mt-1 block w-full",placeholder:"Confirm password"}),s(d,{message:t.password_confirmation},null,8,["message"])]),s(a(c),{type:"submit",class:"mt-4 w-full",disabled:f,"data-test":"reset-password-button"},{default:o(()=>[f?(w(),u(a(g),{key:0})):C("",!0),e[4]||(e[4]=m(" Reset password ",-1))]),_:2},1032,["disabled"])])]),_:1},16,["transform"])]),_:1}))}});export{K as default};
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
import{a4 as L,r as E,p as w,H as q,E as B,c as b,d as M,Q as x,a5 as G,a6 as C,a7 as V,a8 as j,R as K,a9 as Y,k as z,o as W,w as _,f as H,u as T,G as Q}from"./app-CClrM5Yi.js";import{r as J,S as O,P as X}from"./AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js";import{q as Z,i as ee,u as te,b as ne}from"./useForwardExpose-BhawR5VU.js";import{b as R,g as P,c as ae,a as oe}from"./VisuallyHidden-Cu70tzB6.js";function Ee(t,e="reka"){return`${e}-${L?.()}`}function re(t,e){const i=E(t);function a(d){return e[i.value][d]??i.value}return{state:i,dispatch:d=>{i.value=a(d)}}}function ie(t,e){const i=E({}),a=E("none"),s=E(t),d=t.value?"mounted":"unmounted";let c;const v=e.value?.ownerDocument.defaultView??Z,{state:m,dispatch:u}=re(d,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}}),n=o=>{if(ee){const r=new CustomEvent(o,{bubbles:!1,cancelable:!1});e.value?.dispatchEvent(r)}};w(t,async(o,r)=>{const h=r!==o;if(await q(),h){const I=a.value,p=N(e.value);o?(u("MOUNT"),n("enter"),p==="none"&&n("after-enter")):p==="none"||p==="undefined"||i.value?.display==="none"?(u("UNMOUNT"),n("leave"),n("after-leave")):r&&I!==p?(u("ANIMATION_OUT"),n("leave")):(u("UNMOUNT"),n("after-leave"))}},{immediate:!0});const l=o=>{const r=N(e.value),h=r.includes(CSS.escape(o.animationName)),I=m.value==="mounted"?"enter":"leave";if(o.target===e.value&&h&&(n(`after-${I}`),u("ANIMATION_END"),!s.value)){const p=e.value.style.animationFillMode;e.value.style.animationFillMode="forwards",c=v?.setTimeout(()=>{e.value?.style.animationFillMode==="forwards"&&(e.value.style.animationFillMode=p)})}o.target===e.value&&r==="none"&&u("ANIMATION_END")},f=o=>{o.target===e.value&&(a.value=N(e.value))},A=w(e,(o,r)=>{o?(i.value=getComputedStyle(o),o.addEventListener("animationstart",f),o.addEventListener("animationcancel",l),o.addEventListener("animationend",l)):(u("ANIMATION_END"),c!==void 0&&v?.clearTimeout(c),r?.removeEventListener("animationstart",f),r?.removeEventListener("animationcancel",l),r?.removeEventListener("animationend",l))},{immediate:!0}),g=w(m,()=>{const o=N(e.value);a.value=m.value==="mounted"?o:"none"});return B(()=>{A(),g()}),{isPresent:b(()=>["mounted","unmountSuspended"].includes(m.value))}}function N(t){return t&&getComputedStyle(t).animationName||"none"}var Ie=M({name:"Presence",props:{present:{type:Boolean,required:!0},forceMount:{type:Boolean}},slots:{},setup(t,{slots:e,expose:i}){const{present:a,forceMount:s}=x(t),d=E(),{isPresent:c}=ie(a,d);i({present:c});let v=e.default({present:c.value});v=J(v||[]);const m=G();if(v&&v?.length>1){const u=m?.parent?.type.name?`<${m.parent.type.name} />`:"component";throw new Error([`Detected an invalid children for \`${u}\` for \`Presence\` component.`,"","Note: Presence works similarly to `v-if` directly, but it waits for animation/transition to finished before unmounting. So it expect only one direct child of valid VNode type.","You can apply a few solutions:",["Provide a single child element so that `presence` directive attach correctly.","Ensure the first child is an actual element instead of a raw text node or comment node."].map(n=>` - ${n}`).join(`
|
import{a4 as L,r as E,p as w,H as q,E as B,c as b,d as M,Q as x,a5 as G,a6 as C,a7 as V,a8 as j,R as K,a9 as Y,k as z,o as W,w as _,f as H,u as T,G as Q}from"./app-BXYcVHqk.js";import{r as J,S as O,P as X}from"./AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js";import{q as Z,i as ee,u as te,b as ne}from"./useForwardExpose-Djbxsgaa.js";import{b as R,g as P,c as ae,a as oe}from"./VisuallyHidden-BvthYHr5.js";function Ee(t,e="reka"){return`${e}-${L?.()}`}function re(t,e){const i=E(t);function a(d){return e[i.value][d]??i.value}return{state:i,dispatch:d=>{i.value=a(d)}}}function ie(t,e){const i=E({}),a=E("none"),s=E(t),d=t.value?"mounted":"unmounted";let c;const v=e.value?.ownerDocument.defaultView??Z,{state:m,dispatch:u}=re(d,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}}),n=o=>{if(ee){const r=new CustomEvent(o,{bubbles:!1,cancelable:!1});e.value?.dispatchEvent(r)}};w(t,async(o,r)=>{const h=r!==o;if(await q(),h){const I=a.value,p=N(e.value);o?(u("MOUNT"),n("enter"),p==="none"&&n("after-enter")):p==="none"||p==="undefined"||i.value?.display==="none"?(u("UNMOUNT"),n("leave"),n("after-leave")):r&&I!==p?(u("ANIMATION_OUT"),n("leave")):(u("UNMOUNT"),n("after-leave"))}},{immediate:!0});const l=o=>{const r=N(e.value),h=r.includes(CSS.escape(o.animationName)),I=m.value==="mounted"?"enter":"leave";if(o.target===e.value&&h&&(n(`after-${I}`),u("ANIMATION_END"),!s.value)){const p=e.value.style.animationFillMode;e.value.style.animationFillMode="forwards",c=v?.setTimeout(()=>{e.value?.style.animationFillMode==="forwards"&&(e.value.style.animationFillMode=p)})}o.target===e.value&&r==="none"&&u("ANIMATION_END")},f=o=>{o.target===e.value&&(a.value=N(e.value))},A=w(e,(o,r)=>{o?(i.value=getComputedStyle(o),o.addEventListener("animationstart",f),o.addEventListener("animationcancel",l),o.addEventListener("animationend",l)):(u("ANIMATION_END"),c!==void 0&&v?.clearTimeout(c),r?.removeEventListener("animationstart",f),r?.removeEventListener("animationcancel",l),r?.removeEventListener("animationend",l))},{immediate:!0}),g=w(m,()=>{const o=N(e.value);a.value=m.value==="mounted"?o:"none"});return B(()=>{A(),g()}),{isPresent:b(()=>["mounted","unmountSuspended"].includes(m.value))}}function N(t){return t&&getComputedStyle(t).animationName||"none"}var Ie=M({name:"Presence",props:{present:{type:Boolean,required:!0},forceMount:{type:Boolean}},slots:{},setup(t,{slots:e,expose:i}){const{present:a,forceMount:s}=x(t),d=E(),{isPresent:c}=ie(a,d);i({present:c});let v=e.default({present:c.value});v=J(v||[]);const m=G();if(v&&v?.length>1){const u=m?.parent?.type.name?`<${m.parent.type.name} />`:"component";throw new Error([`Detected an invalid children for \`${u}\` for \`Presence\` component.`,"","Note: Presence works similarly to `v-if` directly, but it waits for animation/transition to finished before unmounting. So it expect only one direct child of valid VNode type.","You can apply a few solutions:",["Provide a single child element so that `presence` directive attach correctly.","Ensure the first child is an actual element instead of a raw text node or comment node."].map(n=>` - ${n}`).join(`
|
||||||
`)].join(`
|
`)].join(`
|
||||||
`))}return()=>s.value||a.value||c.value?C(e.default({present:c.value})[0],{ref:u=>{const n=te(u);return typeof n?.hasAttribute>"u"||(n?.hasAttribute("data-reka-popper-content-wrapper")?d.value=n.firstElementChild:d.value=n),n}}):null}});const U="data-reka-collection-item";function se(t={}){const{key:e="",isProvider:i=!1}=t,a=`${e}CollectionProvider`;let s;if(i){const n=E(new Map);s={collectionRef:E(),itemMap:n},V(a,s)}else s=j(a);const d=(n=!1)=>{const l=s.collectionRef.value;if(!l)return[];const f=Array.from(l.querySelectorAll(`[${U}]`)),g=Array.from(s.itemMap.value.values()).sort((S,o)=>f.indexOf(S.ref)-f.indexOf(o.ref));return n?g:g.filter(S=>S.ref.dataset.disabled!=="")},c=M({name:"CollectionSlot",setup(n,{slots:l}){const{primitiveElement:f,currentElement:A}=R();return w(A,()=>{s.collectionRef.value=A.value}),()=>C(O,{ref:f},l)}}),v=M({name:"CollectionItem",inheritAttrs:!1,props:{value:{validator:()=>!0}},setup(n,{slots:l,attrs:f}){const{primitiveElement:A,currentElement:g}=R();return K(S=>{if(g.value){const o=Y(g.value);s.itemMap.value.set(o,{ref:g.value,value:n.value}),S(()=>s.itemMap.value.delete(o))}}),()=>C(O,{...f,[U]:"",ref:A},l)}}),m=b(()=>Array.from(s.itemMap.value.values())),u=b(()=>s.itemMap.value.size);return{getItems:d,reactiveItems:m,itemMapSize:u,CollectionSlot:c,CollectionItem:v}}const ue="rovingFocusGroup.onEntryFocus",le={bubbles:!1,cancelable:!0},ce={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function de(t,e){return e!=="rtl"?t:t==="ArrowLeft"?"ArrowRight":t==="ArrowRight"?"ArrowLeft":t}function ye(t,e,i){const a=de(t.key,i);if(!(e==="vertical"&&["ArrowLeft","ArrowRight"].includes(a))&&!(e==="horizontal"&&["ArrowUp","ArrowDown"].includes(a)))return ce[a]}function fe(t,e=!1){const i=P();for(const a of t)if(a===i||(a.focus({preventScroll:e}),P()!==i))return}function Se(t,e){return t.map((i,a)=>t[(e+a)%t.length])}const[Te,me]=ae("RovingFocusGroup");var ve=M({__name:"RovingFocusGroup",props:{orientation:{type:String,required:!1,default:void 0},dir:{type:String,required:!1},loop:{type:Boolean,required:!1,default:!1},currentTabStopId:{type:[String,null],required:!1},defaultCurrentTabStopId:{type:String,required:!1},preventScrollOnEntryFocus:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["entryFocus","update:currentTabStopId"],setup(t,{expose:e,emit:i}){const a=t,s=i,{loop:d,orientation:c,dir:v}=x(a),m=oe(v),u=ne(a,"currentTabStopId",s,{defaultValue:a.defaultCurrentTabStopId,passive:a.currentTabStopId===void 0}),n=E(!1),l=E(!1),f=E(0),{getItems:A,CollectionSlot:g}=se({isProvider:!0});function S(r){const h=!l.value;if(r.currentTarget&&r.target===r.currentTarget&&h&&!n.value){const I=new CustomEvent(ue,le);if(r.currentTarget.dispatchEvent(I),s("entryFocus",I),!I.defaultPrevented){const p=A().map(y=>y.ref).filter(y=>y.dataset.disabled!==""),F=p.find(y=>y.getAttribute("data-active")===""),D=p.find(y=>y.getAttribute("data-highlighted")===""),$=p.find(y=>y.id===u.value),k=[F,D,$,...p].filter(Boolean);fe(k,a.preventScrollOnEntryFocus)}}l.value=!1}function o(){setTimeout(()=>{l.value=!1},1)}return e({getItems:A}),me({loop:d,dir:m,orientation:c,currentTabStopId:u,onItemFocus:r=>{u.value=r},onItemShiftTab:()=>{n.value=!0},onFocusableItemAdd:()=>{f.value++},onFocusableItemRemove:()=>{f.value--}}),(r,h)=>(W(),z(T(g),null,{default:_(()=>[H(T(X),{tabindex:n.value||f.value===0?-1:0,"data-orientation":T(c),as:r.as,"as-child":r.asChild,dir:T(m),style:{outline:"none"},onMousedown:h[0]||(h[0]=I=>l.value=!0),onMouseup:o,onFocus:S,onBlur:h[1]||(h[1]=I=>n.value=!1)},{default:_(()=>[Q(r.$slots,"default")]),_:3},8,["tabindex","data-orientation","as","as-child","dir"])]),_:3}))}}),Ne=ve;export{Ie as P,Ne as R,se as a,fe as f,ye as g,Te as i,Ee as u,Se as w};
|
`))}return()=>s.value||a.value||c.value?C(e.default({present:c.value})[0],{ref:u=>{const n=te(u);return typeof n?.hasAttribute>"u"||(n?.hasAttribute("data-reka-popper-content-wrapper")?d.value=n.firstElementChild:d.value=n),n}}):null}});const U="data-reka-collection-item";function se(t={}){const{key:e="",isProvider:i=!1}=t,a=`${e}CollectionProvider`;let s;if(i){const n=E(new Map);s={collectionRef:E(),itemMap:n},V(a,s)}else s=j(a);const d=(n=!1)=>{const l=s.collectionRef.value;if(!l)return[];const f=Array.from(l.querySelectorAll(`[${U}]`)),g=Array.from(s.itemMap.value.values()).sort((S,o)=>f.indexOf(S.ref)-f.indexOf(o.ref));return n?g:g.filter(S=>S.ref.dataset.disabled!=="")},c=M({name:"CollectionSlot",setup(n,{slots:l}){const{primitiveElement:f,currentElement:A}=R();return w(A,()=>{s.collectionRef.value=A.value}),()=>C(O,{ref:f},l)}}),v=M({name:"CollectionItem",inheritAttrs:!1,props:{value:{validator:()=>!0}},setup(n,{slots:l,attrs:f}){const{primitiveElement:A,currentElement:g}=R();return K(S=>{if(g.value){const o=Y(g.value);s.itemMap.value.set(o,{ref:g.value,value:n.value}),S(()=>s.itemMap.value.delete(o))}}),()=>C(O,{...f,[U]:"",ref:A},l)}}),m=b(()=>Array.from(s.itemMap.value.values())),u=b(()=>s.itemMap.value.size);return{getItems:d,reactiveItems:m,itemMapSize:u,CollectionSlot:c,CollectionItem:v}}const ue="rovingFocusGroup.onEntryFocus",le={bubbles:!1,cancelable:!0},ce={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function de(t,e){return e!=="rtl"?t:t==="ArrowLeft"?"ArrowRight":t==="ArrowRight"?"ArrowLeft":t}function ye(t,e,i){const a=de(t.key,i);if(!(e==="vertical"&&["ArrowLeft","ArrowRight"].includes(a))&&!(e==="horizontal"&&["ArrowUp","ArrowDown"].includes(a)))return ce[a]}function fe(t,e=!1){const i=P();for(const a of t)if(a===i||(a.focus({preventScroll:e}),P()!==i))return}function Se(t,e){return t.map((i,a)=>t[(e+a)%t.length])}const[Te,me]=ae("RovingFocusGroup");var ve=M({__name:"RovingFocusGroup",props:{orientation:{type:String,required:!1,default:void 0},dir:{type:String,required:!1},loop:{type:Boolean,required:!1,default:!1},currentTabStopId:{type:[String,null],required:!1},defaultCurrentTabStopId:{type:String,required:!1},preventScrollOnEntryFocus:{type:Boolean,required:!1,default:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:["entryFocus","update:currentTabStopId"],setup(t,{expose:e,emit:i}){const a=t,s=i,{loop:d,orientation:c,dir:v}=x(a),m=oe(v),u=ne(a,"currentTabStopId",s,{defaultValue:a.defaultCurrentTabStopId,passive:a.currentTabStopId===void 0}),n=E(!1),l=E(!1),f=E(0),{getItems:A,CollectionSlot:g}=se({isProvider:!0});function S(r){const h=!l.value;if(r.currentTarget&&r.target===r.currentTarget&&h&&!n.value){const I=new CustomEvent(ue,le);if(r.currentTarget.dispatchEvent(I),s("entryFocus",I),!I.defaultPrevented){const p=A().map(y=>y.ref).filter(y=>y.dataset.disabled!==""),F=p.find(y=>y.getAttribute("data-active")===""),D=p.find(y=>y.getAttribute("data-highlighted")===""),$=p.find(y=>y.id===u.value),k=[F,D,$,...p].filter(Boolean);fe(k,a.preventScrollOnEntryFocus)}}l.value=!1}function o(){setTimeout(()=>{l.value=!1},1)}return e({getItems:A}),me({loop:d,dir:m,orientation:c,currentTabStopId:u,onItemFocus:r=>{u.value=r},onItemShiftTab:()=>{n.value=!0},onFocusableItemAdd:()=>{f.value++},onFocusableItemRemove:()=>{f.value--}}),(r,h)=>(W(),z(T(g),null,{default:_(()=>[H(T(X),{tabindex:n.value||f.value===0?-1:0,"data-orientation":T(c),as:r.as,"as-child":r.asChild,dir:T(m),style:{outline:"none"},onMousedown:h[0]||(h[0]=I=>l.value=!0),onMouseup:o,onFocus:S,onBlur:h[1]||(h[1]=I=>n.value=!1)},{default:_(()=>[Q(r.$slots,"default")]),_:3},8,["tabindex","data-orientation","as","as-child","dir"])]),_:3}))}}),Ne=ve;export{Ie as P,Ne as R,se as a,fe as f,ye as g,Te as i,Ee as u,Se as w};
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/build/assets/Show-BND-fsBv.js
Normal file
1
public/build/assets/Show-BND-fsBv.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +0,0 @@
|
||||||
.fade-enter-active[data-v-57497e98],.fade-leave-active[data-v-57497e98]{transition:opacity .2s}.fade-enter-from[data-v-57497e98],.fade-leave-to[data-v-57497e98]{opacity:0}
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/build/assets/Show-Gr7GKjC3.css
Normal file
1
public/build/assets/Show-Gr7GKjC3.css
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
.fade-enter-active[data-v-1101142c],.fade-leave-active[data-v-1101142c]{transition:opacity .2s}.fade-enter-from[data-v-1101142c],.fade-leave-to[data-v-1101142c]{opacity:0}
|
||||||
|
|
@ -1 +1 @@
|
||||||
import{c as o}from"./AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js";import{c as r}from"./createLucideIcon-ZFd4jktC.js";import{d as c,k as n,u as a,K as t,o as l}from"./app-CClrM5Yi.js";const i=r("LoaderCircleIcon",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]),f=c({__name:"Spinner",props:{class:{}},setup(s){const e=s;return(p,m)=>(l(),n(a(i),{role:"status","aria-label":"Loading",class:t(a(o)("size-4 animate-spin",e.class))},null,8,["class"]))}});export{f as _};
|
import{c as o}from"./AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js";import{c as r}from"./createLucideIcon-BlA39rtn.js";import{d as c,k as n,u as a,K as t,o as l}from"./app-BXYcVHqk.js";const i=r("LoaderCircleIcon",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]),f=c({__name:"Spinner",props:{class:{}},setup(s){const e=s;return(p,m)=>(l(),n(a(i),{role:"status","aria-label":"Loading",class:t(a(o)("size-4 animate-spin",e.class))},null,8,["class"]))}});export{f as _};
|
||||||
|
|
@ -1 +1 @@
|
||||||
import{d as a,k as n,u as o,m as r,w as d,G as s,o as i}from"./app-CClrM5Yi.js";const l=a({__name:"TextLink",props:{href:{},tabindex:{},method:{},as:{}},setup(e){return(t,u)=>(i(),n(o(r),{href:e.href,tabindex:e.tabindex,method:e.method,as:e.as,class:"text-foreground underline decoration-neutral-300 underline-offset-4 transition-colors duration-300 ease-out hover:decoration-current! dark:decoration-neutral-500"},{default:d(()=>[s(t.$slots,"default")]),_:3},8,["href","tabindex","method","as"]))}});export{l as _};
|
import{d as a,k as n,u as o,m as r,w as d,G as s,o as i}from"./app-BXYcVHqk.js";const l=a({__name:"TextLink",props:{href:{},tabindex:{},method:{},as:{}},setup(e){return(t,u)=>(i(),n(o(r),{href:e.href,tabindex:e.tabindex,method:e.method,as:e.as,class:"text-foreground underline decoration-neutral-300 underline-offset-4 transition-colors duration-300 ease-out hover:decoration-current! dark:decoration-neutral-500"},{default:d(()=>[s(t.$slots,"default")]),_:3},8,["href","tabindex","method","as"]))}});export{l as _};
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
||||||
import{_ as v}from"./InputError.vue_vue_type_script_setup_true_lang-DxwKzEqx.js";import{_ as y}from"./AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js";import{_ as V}from"./Input.vue_vue_type_script_setup_true_lang-BcBrC1ED.js";import{_ as B,a as E,b as F}from"./PinInputSlot.vue_vue_type_script_setup_true_lang-D_qQ1GfR.js";import{_ as j}from"./AuthLayout.vue_vue_type_script_setup_true_lang-B14CUTB5.js";import{s as g}from"./index--H2rh_A_.js";import{d as A,c as x,r as b,k as m,w as a,f as n,b as o,u as t,h as N,o as d,A as h,B as k,a as R,F as P,g as q,l as C,t as w}from"./app-CClrM5Yi.js";import"./useForwardExpose-BhawR5VU.js";import"./VisuallyHidden-Cu70tzB6.js";import"./useArrowNavigation-C6Y-ieo6.js";import"./VisuallyHiddenInput-Drd3EMOd.js";import"./index-C4J_hXM0.js";const D={class:"space-y-6"},I=["value"],L={class:"flex flex-col items-center justify-center space-y-3 text-center"},M={class:"flex w-full items-center justify-center"},S={class:"text-center text-sm text-muted-foreground"},U=["onClick"],z={class:"text-center text-sm text-muted-foreground"},G=["onClick"],ae=A({__name:"TwoFactorChallenge",setup(H){const l=x(()=>r.value?{title:"Recovery Code",description:"Please confirm access to your account by entering one of your emergency recovery codes.",toggleText:"login using an authentication code"}:{title:"Authentication Code",description:"Enter the authentication code provided by your authenticator application.",toggleText:"login using a recovery code"}),r=b(!1),p=_=>{r.value=!r.value,_(),s.value=[]},s=b([]),$=x(()=>s.value.join(""));return(_,e)=>(d(),m(j,{title:l.value.title,description:l.value.description},{default:a(()=>[n(t(N),{title:"Two-Factor Authentication"}),o("div",D,[r.value?(d(),m(t(h),k({key:1},t(g).form(),{class:"space-y-4","reset-on-error":""}),{default:a(({errors:i,processing:u,clearErrors:c})=>[n(t(V),{name:"recovery_code",type:"text",placeholder:"Enter recovery code",autofocus:r.value,required:""},null,8,["autofocus"]),n(v,{message:i.recovery_code},null,8,["message"]),n(t(y),{type:"submit",class:"w-full",disabled:u},{default:a(()=>[...e[4]||(e[4]=[C("Continue",-1)])]),_:1},8,["disabled"]),o("div",z,[e[5]||(e[5]=o("span",null,"or you can ",-1)),o("button",{type:"button",class:"text-foreground underline decoration-neutral-300 underline-offset-4 transition-colors duration-300 ease-out hover:decoration-current! dark:decoration-neutral-500",onClick:()=>p(c)},w(l.value.toggleText),9,G)])]),_:1},16)):(d(),m(t(h),k({key:0},t(g).form(),{class:"space-y-4","reset-on-error":"",onError:e[1]||(e[1]=i=>s.value=[])}),{default:a(({errors:i,processing:u,clearErrors:c})=>[o("input",{type:"hidden",name:"code",value:$.value},null,8,I),o("div",L,[o("div",M,[n(t(B),{id:"otp",placeholder:"○",modelValue:s.value,"onUpdate:modelValue":e[0]||(e[0]=f=>s.value=f),type:"number",otp:""},{default:a(()=>[n(t(E),null,{default:a(()=>[(d(),R(P,null,q(6,(f,T)=>n(t(F),{key:f,index:T,disabled:u,autofocus:""},null,8,["index","disabled"])),64))]),_:2},1024)]),_:2},1032,["modelValue"])]),n(v,{message:i.code},null,8,["message"])]),n(t(y),{type:"submit",class:"w-full",disabled:u},{default:a(()=>[...e[2]||(e[2]=[C("Continue",-1)])]),_:1},8,["disabled"]),o("div",S,[e[3]||(e[3]=o("span",null,"or you can ",-1)),o("button",{type:"button",class:"text-foreground underline decoration-neutral-300 underline-offset-4 transition-colors duration-300 ease-out hover:decoration-current! dark:decoration-neutral-500",onClick:()=>p(c)},w(l.value.toggleText),9,U)])]),_:1},16))])]),_:1},8,["title","description"]))}});export{ae as default};
|
import{_ as v}from"./InputError.vue_vue_type_script_setup_true_lang-CQ06D4fO.js";import{_ as y}from"./AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js";import{_ as V}from"./Input.vue_vue_type_script_setup_true_lang-Caepq1Nz.js";import{_ as B,a as E,b as F}from"./PinInputSlot.vue_vue_type_script_setup_true_lang-D1xXx8BE.js";import{_ as j}from"./AuthLayout.vue_vue_type_script_setup_true_lang-Chpkpy8i.js";import{s as g}from"./index--H2rh_A_.js";import{d as A,c as x,r as b,k as m,w as a,f as n,b as o,u as t,h as N,o as d,A as h,B as k,a as R,F as P,g as q,l as C,t as w}from"./app-BXYcVHqk.js";import"./useForwardExpose-Djbxsgaa.js";import"./VisuallyHidden-BvthYHr5.js";import"./useArrowNavigation-C6Y-ieo6.js";import"./VisuallyHiddenInput-BVzeYF-P.js";import"./index-C4J_hXM0.js";const D={class:"space-y-6"},I=["value"],L={class:"flex flex-col items-center justify-center space-y-3 text-center"},M={class:"flex w-full items-center justify-center"},S={class:"text-center text-sm text-muted-foreground"},U=["onClick"],z={class:"text-center text-sm text-muted-foreground"},G=["onClick"],ae=A({__name:"TwoFactorChallenge",setup(H){const l=x(()=>r.value?{title:"Recovery Code",description:"Please confirm access to your account by entering one of your emergency recovery codes.",toggleText:"login using an authentication code"}:{title:"Authentication Code",description:"Enter the authentication code provided by your authenticator application.",toggleText:"login using a recovery code"}),r=b(!1),p=_=>{r.value=!r.value,_(),s.value=[]},s=b([]),$=x(()=>s.value.join(""));return(_,e)=>(d(),m(j,{title:l.value.title,description:l.value.description},{default:a(()=>[n(t(N),{title:"Two-Factor Authentication"}),o("div",D,[r.value?(d(),m(t(h),k({key:1},t(g).form(),{class:"space-y-4","reset-on-error":""}),{default:a(({errors:i,processing:u,clearErrors:c})=>[n(t(V),{name:"recovery_code",type:"text",placeholder:"Enter recovery code",autofocus:r.value,required:""},null,8,["autofocus"]),n(v,{message:i.recovery_code},null,8,["message"]),n(t(y),{type:"submit",class:"w-full",disabled:u},{default:a(()=>[...e[4]||(e[4]=[C("Continue",-1)])]),_:1},8,["disabled"]),o("div",z,[e[5]||(e[5]=o("span",null,"or you can ",-1)),o("button",{type:"button",class:"text-foreground underline decoration-neutral-300 underline-offset-4 transition-colors duration-300 ease-out hover:decoration-current! dark:decoration-neutral-500",onClick:()=>p(c)},w(l.value.toggleText),9,G)])]),_:1},16)):(d(),m(t(h),k({key:0},t(g).form(),{class:"space-y-4","reset-on-error":"",onError:e[1]||(e[1]=i=>s.value=[])}),{default:a(({errors:i,processing:u,clearErrors:c})=>[o("input",{type:"hidden",name:"code",value:$.value},null,8,I),o("div",L,[o("div",M,[n(t(B),{id:"otp",placeholder:"○",modelValue:s.value,"onUpdate:modelValue":e[0]||(e[0]=f=>s.value=f),type:"number",otp:""},{default:a(()=>[n(t(E),null,{default:a(()=>[(d(),R(P,null,q(6,(f,T)=>n(t(F),{key:f,index:T,disabled:u,autofocus:""},null,8,["index","disabled"])),64))]),_:2},1024)]),_:2},1032,["modelValue"])]),n(v,{message:i.code},null,8,["message"])]),n(t(y),{type:"submit",class:"w-full",disabled:u},{default:a(()=>[...e[2]||(e[2]=[C("Continue",-1)])]),_:1},8,["disabled"]),o("div",S,[e[3]||(e[3]=o("span",null,"or you can ",-1)),o("button",{type:"button",class:"text-foreground underline decoration-neutral-300 underline-offset-4 transition-colors duration-300 ease-out hover:decoration-current! dark:decoration-neutral-500",onClick:()=>p(c)},w(l.value.toggleText),9,U)])]),_:1},16))])]),_:1},8,["title","description"]))}});export{ae as default};
|
||||||
|
|
@ -1 +1 @@
|
||||||
import{_ as l}from"./TextLink.vue_vue_type_script_setup_true_lang-JYycsYY3.js";import{_ as d}from"./AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js";import{_ as u}from"./Spinner.vue_vue_type_script_setup_true_lang-BPOcqWqa.js";import{_ as c}from"./AuthLayout.vue_vue_type_script_setup_true_lang-B14CUTB5.js";import{b as _}from"./index-C4J_hXM0.js";import{s as p}from"./index-DZxzsgmi.js";import{d as k,k as r,w as a,f as s,a as y,i as m,u as e,h as x,o as i,A as b,B as v,l as n}from"./app-CClrM5Yi.js";import"./createLucideIcon-ZFd4jktC.js";const g={key:0,class:"mb-4 text-center text-sm font-medium text-green-600"},P=k({__name:"VerifyEmail",props:{status:{}},setup(f){return(h,t)=>(i(),r(c,{title:"Verify email",description:"Please verify your email address by clicking on the link we just emailed to you."},{default:a(()=>[s(e(x),{title:"Email verification"}),f.status==="verification-link-sent"?(i(),y("div",g," A new verification link has been sent to the email address you provided during registration. ")):m("",!0),s(e(b),v(e(p).form(),{class:"space-y-6 text-center"}),{default:a(({processing:o})=>[s(e(d),{disabled:o,variant:"secondary"},{default:a(()=>[o?(i(),r(e(u),{key:0})):m("",!0),t[0]||(t[0]=n(" Resend verification email ",-1))]),_:2},1032,["disabled"]),s(l,{href:e(_)(),as:"button",class:"mx-auto block text-sm"},{default:a(()=>[...t[1]||(t[1]=[n(" Log out ",-1)])]),_:1},8,["href"])]),_:1},16)]),_:1}))}});export{P as default};
|
import{_ as l}from"./TextLink.vue_vue_type_script_setup_true_lang-CEF924Ry.js";import{_ as d}from"./AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js";import{_ as u}from"./Spinner.vue_vue_type_script_setup_true_lang-NJl11ITg.js";import{_ as c}from"./AuthLayout.vue_vue_type_script_setup_true_lang-Chpkpy8i.js";import{b as _}from"./index-C4J_hXM0.js";import{s as p}from"./index-DZxzsgmi.js";import{d as k,k as r,w as a,f as s,a as y,i as m,u as e,h as x,o as i,A as b,B as v,l as n}from"./app-BXYcVHqk.js";import"./createLucideIcon-BlA39rtn.js";const g={key:0,class:"mb-4 text-center text-sm font-medium text-green-600"},P=k({__name:"VerifyEmail",props:{status:{}},setup(f){return(h,t)=>(i(),r(c,{title:"Verify email",description:"Please verify your email address by clicking on the link we just emailed to you."},{default:a(()=>[s(e(x),{title:"Email verification"}),f.status==="verification-link-sent"?(i(),y("div",g," A new verification link has been sent to the email address you provided during registration. ")):m("",!0),s(e(b),v(e(p).form(),{class:"space-y-6 text-center"}),{default:a(({processing:o})=>[s(e(d),{disabled:o,variant:"secondary"},{default:a(()=>[o?(i(),r(e(u),{key:0})):m("",!0),t[0]||(t[0]=n(" Resend verification email ",-1))]),_:2},1032,["disabled"]),s(l,{href:e(_)(),as:"button",class:"mx-auto block text-sm"},{default:a(()=>[...t[1]||(t[1]=[n(" Log out ",-1)])]),_:1},8,["href"])]),_:1},16)]),_:1}))}});export{P as default};
|
||||||
|
|
@ -1 +1 @@
|
||||||
import{a8 as f,a7 as p,r as u,c as l,a5 as d,aa as m,ab as c,ac as h,d as v,k as y,o as w,w as g,G as P,u as b}from"./app-CClrM5Yi.js";import{u as E}from"./useForwardExpose-BhawR5VU.js";import{P as x}from"./AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js";function _(e,t){const s=typeof e=="string"&&!t?`${e}Context`:t,o=Symbol(s);return[n=>{const i=f(o,n);if(i||i===null)return i;throw new Error(`Injection \`${o.toString()}\` not found. Component must be used within ${Array.isArray(e)?`one of the following components: ${e.join(", ")}`:`\`${e}\``}`)},n=>(p(o,n),n)]}function R(){let e=document.activeElement;if(e==null)return null;for(;e!=null&&e.shadowRoot!=null&&e.shadowRoot.activeElement!=null;)e=e.shadowRoot.activeElement;return e}const[C]=_("ConfigProvider");function V(e){const t=C({dir:u("ltr")});return l(()=>e?.value||t.dir?.value||"ltr")}function j(e){const t=d(),s=t?.type.emits,o={};return s?.length||console.warn(`No emitted event found. Please check component: ${t?.type.__name}`),s?.forEach(r=>{o[m(c(r))]=(...a)=>e(r,...a)}),o}function $(e){const t=d(),s=Object.keys(t?.type.props??{}).reduce((r,a)=>{const n=(t?.type.props[a]).default;return n!==void 0&&(r[a]=n),r},{}),o=h(e);return l(()=>{const r={},a=t?.vnode.props??{};return Object.keys(a).forEach(n=>{r[c(n)]=a[n]}),Object.keys({...s,...r}).reduce((n,i)=>(o.value[i]!==void 0&&(n[i]=o.value[i]),n),{})})}function q(e,t){const s=$(e),o=t?j(t):{};return l(()=>({...s.value,...o}))}function B(){const e=u(),t=l(()=>["#text","#comment"].includes(e.value?.$el.nodeName)?e.value?.$el.nextElementSibling:E(e));return{primitiveElement:e,currentElement:t}}var k=v({__name:"VisuallyHidden",props:{feature:{type:String,required:!1,default:"focusable"},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(e){return(t,s)=>(w(),y(b(x),{as:t.as,"as-child":t.asChild,"aria-hidden":t.feature==="focusable"?"true":void 0,"data-hidden":t.feature==="fully-hidden"?"":void 0,tabindex:t.feature==="fully-hidden"?"-1":void 0,style:{position:"absolute",border:0,width:"1px",height:"1px",padding:0,margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",clipPath:"inset(50%)",whiteSpace:"nowrap",wordWrap:"normal",top:"-1px",left:"-1px"}},{default:g(()=>[P(t.$slots,"default")]),_:3},8,["as","as-child","aria-hidden","data-hidden","tabindex"]))}}),O=k;export{O as V,V as a,B as b,_ as c,$ as d,j as e,R as g,C as i,q as u};
|
import{a8 as f,a7 as p,r as u,c as l,a5 as d,aa as m,ab as c,ac as h,d as v,k as y,o as w,w as g,G as P,u as b}from"./app-BXYcVHqk.js";import{u as E}from"./useForwardExpose-Djbxsgaa.js";import{P as x}from"./AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js";function _(e,t){const s=typeof e=="string"&&!t?`${e}Context`:t,o=Symbol(s);return[n=>{const i=f(o,n);if(i||i===null)return i;throw new Error(`Injection \`${o.toString()}\` not found. Component must be used within ${Array.isArray(e)?`one of the following components: ${e.join(", ")}`:`\`${e}\``}`)},n=>(p(o,n),n)]}function R(){let e=document.activeElement;if(e==null)return null;for(;e!=null&&e.shadowRoot!=null&&e.shadowRoot.activeElement!=null;)e=e.shadowRoot.activeElement;return e}const[C]=_("ConfigProvider");function V(e){const t=C({dir:u("ltr")});return l(()=>e?.value||t.dir?.value||"ltr")}function j(e){const t=d(),s=t?.type.emits,o={};return s?.length||console.warn(`No emitted event found. Please check component: ${t?.type.__name}`),s?.forEach(r=>{o[m(c(r))]=(...a)=>e(r,...a)}),o}function $(e){const t=d(),s=Object.keys(t?.type.props??{}).reduce((r,a)=>{const n=(t?.type.props[a]).default;return n!==void 0&&(r[a]=n),r},{}),o=h(e);return l(()=>{const r={},a=t?.vnode.props??{};return Object.keys(a).forEach(n=>{r[c(n)]=a[n]}),Object.keys({...s,...r}).reduce((n,i)=>(o.value[i]!==void 0&&(n[i]=o.value[i]),n),{})})}function q(e,t){const s=$(e),o=t?j(t):{};return l(()=>({...s.value,...o}))}function B(){const e=u(),t=l(()=>["#text","#comment"].includes(e.value?.$el.nodeName)?e.value?.$el.nextElementSibling:E(e));return{primitiveElement:e,currentElement:t}}var k=v({__name:"VisuallyHidden",props:{feature:{type:String,required:!1,default:"focusable"},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:"span"}},setup(e){return(t,s)=>(w(),y(b(x),{as:t.as,"as-child":t.asChild,"aria-hidden":t.feature==="focusable"?"true":void 0,"data-hidden":t.feature==="fully-hidden"?"":void 0,tabindex:t.feature==="fully-hidden"?"-1":void 0,style:{position:"absolute",border:0,width:"1px",height:"1px",padding:0,margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",clipPath:"inset(50%)",whiteSpace:"nowrap",wordWrap:"normal",top:"-1px",left:"-1px"}},{default:g(()=>[P(t.$slots,"default")]),_:3},8,["as","as-child","aria-hidden","data-hidden","tabindex"]))}}),O=k;export{O as V,V as a,B as b,_ as c,$ as d,j as e,R as g,C as i,q as u};
|
||||||
|
|
@ -1 +1 @@
|
||||||
import{b as g,V as h}from"./VisuallyHidden-Cu70tzB6.js";import{d as y,c as o,p as B,k as p,o as n,B as d,a as f,i as E,F as c,g as V}from"./app-CClrM5Yi.js";var k=y({inheritAttrs:!1,__name:"VisuallyHiddenInputBubble",props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:"fully-hidden"}},setup(i){const e=i,{primitiveElement:s,currentElement:l}=g(),t=o(()=>e.checked??e.value);return B(t,(r,a)=>{if(!l.value)return;const u=l.value,_=window.HTMLInputElement.prototype,v=Object.getOwnPropertyDescriptor(_,"value").set;if(v&&r!==a){const b=new Event("input",{bubbles:!0}),q=new Event("change",{bubbles:!0});v.call(u,r),u.dispatchEvent(b),u.dispatchEvent(q)}}),(r,a)=>(n(),p(h,d({ref_key:"primitiveElement",ref:s},{...e,...r.$attrs},{as:"input"}),null,16))}}),m=k,A=y({inheritAttrs:!1,__name:"VisuallyHiddenInput",props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:"fully-hidden"}},setup(i){const e=i,s=o(()=>typeof e.value=="object"&&Array.isArray(e.value)&&e.value.length===0&&e.required),l=o(()=>typeof e.value=="string"||typeof e.value=="number"||typeof e.value=="boolean"||e.value===null||e.value===void 0?[{name:e.name,value:e.value}]:typeof e.value=="object"&&Array.isArray(e.value)?e.value.flatMap((t,r)=>typeof t=="object"?Object.entries(t).map(([a,u])=>({name:`${e.name}[${r}][${a}]`,value:u})):{name:`${e.name}[${r}]`,value:t}):e.value!==null&&typeof e.value=="object"&&!Array.isArray(e.value)?Object.entries(e.value).map(([t,r])=>({name:`${e.name}[${t}]`,value:r})):[]);return(t,r)=>(n(),f(c,null,[E(" We render single input if it's required "),s.value?(n(),p(m,d({key:t.name},{...e,...t.$attrs},{name:t.name,value:t.value}),null,16,["name","value"])):(n(!0),f(c,{key:1},V(l.value,a=>(n(),p(m,d({key:a.name},{ref_for:!0},{...e,...t.$attrs},{name:a.name,value:a.value}),null,16,["name","value"]))),128))],2112))}}),w=A;export{w as V};
|
import{b as g,V as h}from"./VisuallyHidden-BvthYHr5.js";import{d as y,c as o,p as B,k as p,o as n,B as d,a as f,i as E,F as c,g as V}from"./app-BXYcVHqk.js";var k=y({inheritAttrs:!1,__name:"VisuallyHiddenInputBubble",props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:"fully-hidden"}},setup(i){const e=i,{primitiveElement:s,currentElement:l}=g(),t=o(()=>e.checked??e.value);return B(t,(r,a)=>{if(!l.value)return;const u=l.value,_=window.HTMLInputElement.prototype,v=Object.getOwnPropertyDescriptor(_,"value").set;if(v&&r!==a){const b=new Event("input",{bubbles:!0}),q=new Event("change",{bubbles:!0});v.call(u,r),u.dispatchEvent(b),u.dispatchEvent(q)}}),(r,a)=>(n(),p(h,d({ref_key:"primitiveElement",ref:s},{...e,...r.$attrs},{as:"input"}),null,16))}}),m=k,A=y({inheritAttrs:!1,__name:"VisuallyHiddenInput",props:{name:{type:String,required:!0},value:{type:null,required:!0},checked:{type:Boolean,required:!1,default:void 0},required:{type:Boolean,required:!1},disabled:{type:Boolean,required:!1},feature:{type:String,required:!1,default:"fully-hidden"}},setup(i){const e=i,s=o(()=>typeof e.value=="object"&&Array.isArray(e.value)&&e.value.length===0&&e.required),l=o(()=>typeof e.value=="string"||typeof e.value=="number"||typeof e.value=="boolean"||e.value===null||e.value===void 0?[{name:e.name,value:e.value}]:typeof e.value=="object"&&Array.isArray(e.value)?e.value.flatMap((t,r)=>typeof t=="object"?Object.entries(t).map(([a,u])=>({name:`${e.name}[${r}][${a}]`,value:u})):{name:`${e.name}[${r}]`,value:t}):e.value!==null&&typeof e.value=="object"&&!Array.isArray(e.value)?Object.entries(e.value).map(([t,r])=>({name:`${e.name}[${t}]`,value:r})):[]);return(t,r)=>(n(),f(c,null,[E(" We render single input if it's required "),s.value?(n(),p(m,d({key:t.name},{...e,...t.$attrs},{name:t.name,value:t.value}),null,16,["name","value"])):(n(!0),f(c,{key:1},V(l.value,a=>(n(),p(m,d({key:a.name},{ref_for:!0},{...e,...t.$attrs},{name:a.name,value:a.value}),null,16,["name","value"]))),128))],2112))}}),w=A;export{w as V};
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/build/assets/app-C_XNTc3U.css
Normal file
1
public/build/assets/app-C_XNTc3U.css
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
||||||
import{c}from"./createLucideIcon-ZFd4jktC.js";const o=c("CheckIcon",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);export{o as C};
|
import{c}from"./createLucideIcon-BlA39rtn.js";const o=c("CheckIcon",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);export{o as C};
|
||||||
|
|
@ -1 +1 @@
|
||||||
import{a6 as a}from"./app-CClrM5Yi.js";const d=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();var o={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};const h=({size:e,strokeWidth:t=2,absoluteStrokeWidth:r,color:s,iconNode:n,name:i,class:w,...l},{slots:c})=>a("svg",{...o,width:e||o.width,height:e||o.height,stroke:s||o.stroke,"stroke-width":r?Number(t)*24/Number(e):t,class:["lucide",`lucide-${d(i??"icon")}`],...l},[...n.map(u=>a(...u)),...c.default?[c.default()]:[]]);const m=(e,t)=>(r,{slots:s})=>a(h,{...r,iconNode:t,name:e},s);export{m as c};
|
import{a6 as a}from"./app-BXYcVHqk.js";const d=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase();var o={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};const h=({size:e,strokeWidth:t=2,absoluteStrokeWidth:r,color:s,iconNode:n,name:i,class:w,...l},{slots:c})=>a("svg",{...o,width:e||o.width,height:e||o.height,stroke:s||o.stroke,"stroke-width":r?Number(t)*24/Number(e):t,class:["lucide",`lucide-${d(i??"icon")}`],...l},[...n.map(u=>a(...u)),...c.default?[c.default()]:[]]);const m=(e,t)=>(r,{slots:s})=>a(h,{...r,iconNode:t,name:e},s);export{m as c};
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -1,133 +1,133 @@
|
||||||
{
|
{
|
||||||
"_AppLayout.vue_vue_type_script_setup_true_lang-DESMBqxz.js": {
|
"_AppLayout.vue_vue_type_script_setup_true_lang-86gE95Fg.js": {
|
||||||
"file": "assets/AppLayout.vue_vue_type_script_setup_true_lang-DESMBqxz.js",
|
"file": "assets/AppLayout.vue_vue_type_script_setup_true_lang-86gE95Fg.js",
|
||||||
"name": "AppLayout.vue_vue_type_script_setup_true_lang",
|
"name": "AppLayout.vue_vue_type_script_setup_true_lang",
|
||||||
"imports": [
|
"imports": [
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js",
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js",
|
||||||
"resources/js/app.ts",
|
"resources/js/app.ts",
|
||||||
"_useForwardExpose-BhawR5VU.js",
|
"_useForwardExpose-Djbxsgaa.js",
|
||||||
"_VisuallyHidden-Cu70tzB6.js",
|
"_VisuallyHidden-BvthYHr5.js",
|
||||||
"_RovingFocusGroup-CNFroA6Y.js",
|
"_RovingFocusGroup-dmigQ6Dy.js",
|
||||||
"_useArrowNavigation-C6Y-ieo6.js",
|
"_useArrowNavigation-C6Y-ieo6.js",
|
||||||
"_index-C4J_hXM0.js",
|
"_index-C4J_hXM0.js",
|
||||||
"_createLucideIcon-ZFd4jktC.js"
|
"_createLucideIcon-BlA39rtn.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js": {
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js": {
|
||||||
"file": "assets/AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js",
|
"file": "assets/AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js",
|
||||||
"name": "AppLogoIcon.vue_vue_type_script_setup_true_lang",
|
"name": "AppLogoIcon.vue_vue_type_script_setup_true_lang",
|
||||||
"imports": [
|
"imports": [
|
||||||
"resources/js/app.ts"
|
"resources/js/app.ts"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"_AuthLayout.vue_vue_type_script_setup_true_lang-B14CUTB5.js": {
|
"_AuthLayout.vue_vue_type_script_setup_true_lang-Chpkpy8i.js": {
|
||||||
"file": "assets/AuthLayout.vue_vue_type_script_setup_true_lang-B14CUTB5.js",
|
"file": "assets/AuthLayout.vue_vue_type_script_setup_true_lang-Chpkpy8i.js",
|
||||||
"name": "AuthLayout.vue_vue_type_script_setup_true_lang",
|
"name": "AuthLayout.vue_vue_type_script_setup_true_lang",
|
||||||
"imports": [
|
"imports": [
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js",
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js",
|
||||||
"_index-C4J_hXM0.js",
|
"_index-C4J_hXM0.js",
|
||||||
"resources/js/app.ts"
|
"resources/js/app.ts"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"_DialogTitle.vue_vue_type_script_setup_true_lang-Dg2xd9QK.js": {
|
"_DialogTitle.vue_vue_type_script_setup_true_lang-BKahKO_t.js": {
|
||||||
"file": "assets/DialogTitle.vue_vue_type_script_setup_true_lang-Dg2xd9QK.js",
|
"file": "assets/DialogTitle.vue_vue_type_script_setup_true_lang-BKahKO_t.js",
|
||||||
"name": "DialogTitle.vue_vue_type_script_setup_true_lang",
|
"name": "DialogTitle.vue_vue_type_script_setup_true_lang",
|
||||||
"imports": [
|
"imports": [
|
||||||
"_VisuallyHidden-Cu70tzB6.js",
|
"_VisuallyHidden-BvthYHr5.js",
|
||||||
"_AppLayout.vue_vue_type_script_setup_true_lang-DESMBqxz.js",
|
"_AppLayout.vue_vue_type_script_setup_true_lang-86gE95Fg.js",
|
||||||
"resources/js/app.ts",
|
"resources/js/app.ts",
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js"
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"_Input.vue_vue_type_script_setup_true_lang-BcBrC1ED.js": {
|
"_Input.vue_vue_type_script_setup_true_lang-Caepq1Nz.js": {
|
||||||
"file": "assets/Input.vue_vue_type_script_setup_true_lang-BcBrC1ED.js",
|
"file": "assets/Input.vue_vue_type_script_setup_true_lang-Caepq1Nz.js",
|
||||||
"name": "Input.vue_vue_type_script_setup_true_lang",
|
"name": "Input.vue_vue_type_script_setup_true_lang",
|
||||||
"imports": [
|
"imports": [
|
||||||
"resources/js/app.ts",
|
"resources/js/app.ts",
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js",
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js",
|
||||||
"_useForwardExpose-BhawR5VU.js"
|
"_useForwardExpose-Djbxsgaa.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"_InputError.vue_vue_type_script_setup_true_lang-DxwKzEqx.js": {
|
"_InputError.vue_vue_type_script_setup_true_lang-CQ06D4fO.js": {
|
||||||
"file": "assets/InputError.vue_vue_type_script_setup_true_lang-DxwKzEqx.js",
|
"file": "assets/InputError.vue_vue_type_script_setup_true_lang-CQ06D4fO.js",
|
||||||
"name": "InputError.vue_vue_type_script_setup_true_lang",
|
"name": "InputError.vue_vue_type_script_setup_true_lang",
|
||||||
"imports": [
|
"imports": [
|
||||||
"resources/js/app.ts"
|
"resources/js/app.ts"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"_Label.vue_vue_type_script_setup_true_lang-Dbqibcwo.js": {
|
"_Label.vue_vue_type_script_setup_true_lang-CLMgeKfL.js": {
|
||||||
"file": "assets/Label.vue_vue_type_script_setup_true_lang-Dbqibcwo.js",
|
"file": "assets/Label.vue_vue_type_script_setup_true_lang-CLMgeKfL.js",
|
||||||
"name": "Label.vue_vue_type_script_setup_true_lang",
|
"name": "Label.vue_vue_type_script_setup_true_lang",
|
||||||
"imports": [
|
"imports": [
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js",
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js",
|
||||||
"_useForwardExpose-BhawR5VU.js",
|
"_useForwardExpose-Djbxsgaa.js",
|
||||||
"resources/js/app.ts"
|
"resources/js/app.ts"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"_Layout.vue_vue_type_script_setup_true_lang-ROf3tZlv.js": {
|
"_Layout.vue_vue_type_script_setup_true_lang-CqO9sNxz.js": {
|
||||||
"file": "assets/Layout.vue_vue_type_script_setup_true_lang-ROf3tZlv.js",
|
"file": "assets/Layout.vue_vue_type_script_setup_true_lang-CqO9sNxz.js",
|
||||||
"name": "Layout.vue_vue_type_script_setup_true_lang",
|
"name": "Layout.vue_vue_type_script_setup_true_lang",
|
||||||
"imports": [
|
"imports": [
|
||||||
"resources/js/app.ts",
|
"resources/js/app.ts",
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js",
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js",
|
||||||
"_useForwardExpose-BhawR5VU.js",
|
"_useForwardExpose-Djbxsgaa.js",
|
||||||
"_index-C4J_hXM0.js",
|
"_index-C4J_hXM0.js",
|
||||||
"_AppLayout.vue_vue_type_script_setup_true_lang-DESMBqxz.js",
|
"_AppLayout.vue_vue_type_script_setup_true_lang-86gE95Fg.js",
|
||||||
"_index--H2rh_A_.js"
|
"_index--H2rh_A_.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"_PinInputSlot.vue_vue_type_script_setup_true_lang-D_qQ1GfR.js": {
|
"_PinInputSlot.vue_vue_type_script_setup_true_lang-D1xXx8BE.js": {
|
||||||
"file": "assets/PinInputSlot.vue_vue_type_script_setup_true_lang-D_qQ1GfR.js",
|
"file": "assets/PinInputSlot.vue_vue_type_script_setup_true_lang-D1xXx8BE.js",
|
||||||
"name": "PinInputSlot.vue_vue_type_script_setup_true_lang",
|
"name": "PinInputSlot.vue_vue_type_script_setup_true_lang",
|
||||||
"imports": [
|
"imports": [
|
||||||
"_VisuallyHidden-Cu70tzB6.js",
|
"_VisuallyHidden-BvthYHr5.js",
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js",
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js",
|
||||||
"resources/js/app.ts",
|
"resources/js/app.ts",
|
||||||
"_useForwardExpose-BhawR5VU.js",
|
"_useForwardExpose-Djbxsgaa.js",
|
||||||
"_useArrowNavigation-C6Y-ieo6.js",
|
"_useArrowNavigation-C6Y-ieo6.js",
|
||||||
"_VisuallyHiddenInput-Drd3EMOd.js"
|
"_VisuallyHiddenInput-BVzeYF-P.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"_RovingFocusGroup-CNFroA6Y.js": {
|
"_RovingFocusGroup-dmigQ6Dy.js": {
|
||||||
"file": "assets/RovingFocusGroup-CNFroA6Y.js",
|
"file": "assets/RovingFocusGroup-dmigQ6Dy.js",
|
||||||
"name": "RovingFocusGroup",
|
"name": "RovingFocusGroup",
|
||||||
"imports": [
|
"imports": [
|
||||||
"resources/js/app.ts",
|
"resources/js/app.ts",
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js",
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js",
|
||||||
"_useForwardExpose-BhawR5VU.js",
|
"_useForwardExpose-Djbxsgaa.js",
|
||||||
"_VisuallyHidden-Cu70tzB6.js"
|
"_VisuallyHidden-BvthYHr5.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"_Spinner.vue_vue_type_script_setup_true_lang-BPOcqWqa.js": {
|
"_Spinner.vue_vue_type_script_setup_true_lang-NJl11ITg.js": {
|
||||||
"file": "assets/Spinner.vue_vue_type_script_setup_true_lang-BPOcqWqa.js",
|
"file": "assets/Spinner.vue_vue_type_script_setup_true_lang-NJl11ITg.js",
|
||||||
"name": "Spinner.vue_vue_type_script_setup_true_lang",
|
"name": "Spinner.vue_vue_type_script_setup_true_lang",
|
||||||
"imports": [
|
"imports": [
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js",
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js",
|
||||||
"_createLucideIcon-ZFd4jktC.js",
|
"_createLucideIcon-BlA39rtn.js",
|
||||||
"resources/js/app.ts"
|
"resources/js/app.ts"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"_TextLink.vue_vue_type_script_setup_true_lang-JYycsYY3.js": {
|
"_TextLink.vue_vue_type_script_setup_true_lang-CEF924Ry.js": {
|
||||||
"file": "assets/TextLink.vue_vue_type_script_setup_true_lang-JYycsYY3.js",
|
"file": "assets/TextLink.vue_vue_type_script_setup_true_lang-CEF924Ry.js",
|
||||||
"name": "TextLink.vue_vue_type_script_setup_true_lang",
|
"name": "TextLink.vue_vue_type_script_setup_true_lang",
|
||||||
"imports": [
|
"imports": [
|
||||||
"resources/js/app.ts"
|
"resources/js/app.ts"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"_VisuallyHidden-Cu70tzB6.js": {
|
"_VisuallyHidden-BvthYHr5.js": {
|
||||||
"file": "assets/VisuallyHidden-Cu70tzB6.js",
|
"file": "assets/VisuallyHidden-BvthYHr5.js",
|
||||||
"name": "VisuallyHidden",
|
"name": "VisuallyHidden",
|
||||||
"imports": [
|
"imports": [
|
||||||
"resources/js/app.ts",
|
"resources/js/app.ts",
|
||||||
"_useForwardExpose-BhawR5VU.js",
|
"_useForwardExpose-Djbxsgaa.js",
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js"
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"_VisuallyHiddenInput-Drd3EMOd.js": {
|
"_VisuallyHiddenInput-BVzeYF-P.js": {
|
||||||
"file": "assets/VisuallyHiddenInput-Drd3EMOd.js",
|
"file": "assets/VisuallyHiddenInput-BVzeYF-P.js",
|
||||||
"name": "VisuallyHiddenInput",
|
"name": "VisuallyHiddenInput",
|
||||||
"imports": [
|
"imports": [
|
||||||
"_VisuallyHidden-Cu70tzB6.js",
|
"_VisuallyHidden-BvthYHr5.js",
|
||||||
"resources/js/app.ts"
|
"resources/js/app.ts"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
@ -135,15 +135,15 @@
|
||||||
"file": "assets/_plugin-vue_export-helper-DlAUqK2U.js",
|
"file": "assets/_plugin-vue_export-helper-DlAUqK2U.js",
|
||||||
"name": "_plugin-vue_export-helper"
|
"name": "_plugin-vue_export-helper"
|
||||||
},
|
},
|
||||||
"_check-BNffy8wt.js": {
|
"_check-DM1YWYaE.js": {
|
||||||
"file": "assets/check-BNffy8wt.js",
|
"file": "assets/check-DM1YWYaE.js",
|
||||||
"name": "check",
|
"name": "check",
|
||||||
"imports": [
|
"imports": [
|
||||||
"_createLucideIcon-ZFd4jktC.js"
|
"_createLucideIcon-BlA39rtn.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"_createLucideIcon-ZFd4jktC.js": {
|
"_createLucideIcon-BlA39rtn.js": {
|
||||||
"file": "assets/createLucideIcon-ZFd4jktC.js",
|
"file": "assets/createLucideIcon-BlA39rtn.js",
|
||||||
"name": "createLucideIcon",
|
"name": "createLucideIcon",
|
||||||
"imports": [
|
"imports": [
|
||||||
"resources/js/app.ts"
|
"resources/js/app.ts"
|
||||||
|
|
@ -186,15 +186,15 @@
|
||||||
"file": "assets/useArrowNavigation-C6Y-ieo6.js",
|
"file": "assets/useArrowNavigation-C6Y-ieo6.js",
|
||||||
"name": "useArrowNavigation"
|
"name": "useArrowNavigation"
|
||||||
},
|
},
|
||||||
"_useForwardExpose-BhawR5VU.js": {
|
"_useForwardExpose-Djbxsgaa.js": {
|
||||||
"file": "assets/useForwardExpose-BhawR5VU.js",
|
"file": "assets/useForwardExpose-Djbxsgaa.js",
|
||||||
"name": "useForwardExpose",
|
"name": "useForwardExpose",
|
||||||
"imports": [
|
"imports": [
|
||||||
"resources/js/app.ts"
|
"resources/js/app.ts"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"resources/js/app.ts": {
|
"resources/js/app.ts": {
|
||||||
"file": "assets/app-CClrM5Yi.js",
|
"file": "assets/app-BXYcVHqk.js",
|
||||||
"name": "app",
|
"name": "app",
|
||||||
"src": "resources/js/app.ts",
|
"src": "resources/js/app.ts",
|
||||||
"isEntry": true,
|
"isEntry": true,
|
||||||
|
|
@ -223,28 +223,28 @@
|
||||||
"resources/js/pages/studios/Show.vue"
|
"resources/js/pages/studios/Show.vue"
|
||||||
],
|
],
|
||||||
"css": [
|
"css": [
|
||||||
"assets/app-BUIfoF4D.css"
|
"assets/app-C_XNTc3U.css"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"resources/js/pages/Dashboard.vue": {
|
"resources/js/pages/Dashboard.vue": {
|
||||||
"file": "assets/Dashboard-BZ90YdF3.js",
|
"file": "assets/Dashboard-CFdKPMzj.js",
|
||||||
"name": "Dashboard",
|
"name": "Dashboard",
|
||||||
"src": "resources/js/pages/Dashboard.vue",
|
"src": "resources/js/pages/Dashboard.vue",
|
||||||
"isDynamicEntry": true,
|
"isDynamicEntry": true,
|
||||||
"imports": [
|
"imports": [
|
||||||
"_AppLayout.vue_vue_type_script_setup_true_lang-DESMBqxz.js",
|
"_AppLayout.vue_vue_type_script_setup_true_lang-86gE95Fg.js",
|
||||||
"_index-C4J_hXM0.js",
|
"_index-C4J_hXM0.js",
|
||||||
"resources/js/app.ts",
|
"resources/js/app.ts",
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js",
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js",
|
||||||
"_useForwardExpose-BhawR5VU.js",
|
"_useForwardExpose-Djbxsgaa.js",
|
||||||
"_VisuallyHidden-Cu70tzB6.js",
|
"_VisuallyHidden-BvthYHr5.js",
|
||||||
"_RovingFocusGroup-CNFroA6Y.js",
|
"_RovingFocusGroup-dmigQ6Dy.js",
|
||||||
"_useArrowNavigation-C6Y-ieo6.js",
|
"_useArrowNavigation-C6Y-ieo6.js",
|
||||||
"_createLucideIcon-ZFd4jktC.js"
|
"_createLucideIcon-BlA39rtn.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"resources/js/pages/Welcome.vue": {
|
"resources/js/pages/Welcome.vue": {
|
||||||
"file": "assets/Welcome-1IB3Dtj8.js",
|
"file": "assets/Welcome-O_P1SsIM.js",
|
||||||
"name": "Welcome",
|
"name": "Welcome",
|
||||||
"src": "resources/js/pages/Welcome.vue",
|
"src": "resources/js/pages/Welcome.vue",
|
||||||
"isDynamicEntry": true,
|
"isDynamicEntry": true,
|
||||||
|
|
@ -254,419 +254,419 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"resources/js/pages/actors/Show.vue": {
|
"resources/js/pages/actors/Show.vue": {
|
||||||
"file": "assets/Show-BCIzyp2I.js",
|
"file": "assets/Show-BND-fsBv.js",
|
||||||
"name": "Show",
|
"name": "Show",
|
||||||
"src": "resources/js/pages/actors/Show.vue",
|
"src": "resources/js/pages/actors/Show.vue",
|
||||||
"isDynamicEntry": true,
|
"isDynamicEntry": true,
|
||||||
"imports": [
|
"imports": [
|
||||||
"resources/js/app.ts",
|
"resources/js/app.ts",
|
||||||
"_AppLayout.vue_vue_type_script_setup_true_lang-DESMBqxz.js",
|
"_AppLayout.vue_vue_type_script_setup_true_lang-86gE95Fg.js",
|
||||||
"__plugin-vue_export-helper-DlAUqK2U.js",
|
"__plugin-vue_export-helper-DlAUqK2U.js",
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js",
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js",
|
||||||
"_useForwardExpose-BhawR5VU.js",
|
"_useForwardExpose-Djbxsgaa.js",
|
||||||
"_VisuallyHidden-Cu70tzB6.js",
|
"_VisuallyHidden-BvthYHr5.js",
|
||||||
"_RovingFocusGroup-CNFroA6Y.js",
|
"_RovingFocusGroup-dmigQ6Dy.js",
|
||||||
"_useArrowNavigation-C6Y-ieo6.js",
|
"_useArrowNavigation-C6Y-ieo6.js",
|
||||||
"_index-C4J_hXM0.js",
|
"_index-C4J_hXM0.js",
|
||||||
"_createLucideIcon-ZFd4jktC.js"
|
"_createLucideIcon-BlA39rtn.js"
|
||||||
],
|
],
|
||||||
"css": [
|
"css": [
|
||||||
"assets/Show-Cm2t8bQb.css"
|
"assets/Show-Gr7GKjC3.css"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"resources/js/pages/admin/movies/Edit.vue": {
|
"resources/js/pages/admin/movies/Edit.vue": {
|
||||||
"file": "assets/Edit-CORuyxK8.js",
|
"file": "assets/Edit-BGSmNGbP.js",
|
||||||
"name": "Edit",
|
"name": "Edit",
|
||||||
"src": "resources/js/pages/admin/movies/Edit.vue",
|
"src": "resources/js/pages/admin/movies/Edit.vue",
|
||||||
"isDynamicEntry": true,
|
"isDynamicEntry": true,
|
||||||
"imports": [
|
"imports": [
|
||||||
"resources/js/app.ts",
|
"resources/js/app.ts",
|
||||||
"_AppLayout.vue_vue_type_script_setup_true_lang-DESMBqxz.js",
|
"_AppLayout.vue_vue_type_script_setup_true_lang-86gE95Fg.js",
|
||||||
"__plugin-vue_export-helper-DlAUqK2U.js",
|
"__plugin-vue_export-helper-DlAUqK2U.js",
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js",
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js",
|
||||||
"_useForwardExpose-BhawR5VU.js",
|
"_useForwardExpose-Djbxsgaa.js",
|
||||||
"_VisuallyHidden-Cu70tzB6.js",
|
"_VisuallyHidden-BvthYHr5.js",
|
||||||
"_RovingFocusGroup-CNFroA6Y.js",
|
"_RovingFocusGroup-dmigQ6Dy.js",
|
||||||
"_useArrowNavigation-C6Y-ieo6.js",
|
"_useArrowNavigation-C6Y-ieo6.js",
|
||||||
"_index-C4J_hXM0.js",
|
"_index-C4J_hXM0.js",
|
||||||
"_createLucideIcon-ZFd4jktC.js"
|
"_createLucideIcon-BlA39rtn.js"
|
||||||
],
|
],
|
||||||
"css": [
|
"css": [
|
||||||
"assets/Edit-CBkUZj2d.css"
|
"assets/Edit-CBkUZj2d.css"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"resources/js/pages/admin/movies/Index.vue": {
|
"resources/js/pages/admin/movies/Index.vue": {
|
||||||
"file": "assets/Index-Dc3cIue4.js",
|
"file": "assets/Index-BdIxoUYY.js",
|
||||||
"name": "Index",
|
"name": "Index",
|
||||||
"src": "resources/js/pages/admin/movies/Index.vue",
|
"src": "resources/js/pages/admin/movies/Index.vue",
|
||||||
"isDynamicEntry": true,
|
"isDynamicEntry": true,
|
||||||
"imports": [
|
"imports": [
|
||||||
"resources/js/app.ts",
|
"resources/js/app.ts",
|
||||||
"_AppLayout.vue_vue_type_script_setup_true_lang-DESMBqxz.js",
|
"_AppLayout.vue_vue_type_script_setup_true_lang-86gE95Fg.js",
|
||||||
"__plugin-vue_export-helper-DlAUqK2U.js",
|
"__plugin-vue_export-helper-DlAUqK2U.js",
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js",
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js",
|
||||||
"_useForwardExpose-BhawR5VU.js",
|
"_useForwardExpose-Djbxsgaa.js",
|
||||||
"_VisuallyHidden-Cu70tzB6.js",
|
"_VisuallyHidden-BvthYHr5.js",
|
||||||
"_RovingFocusGroup-CNFroA6Y.js",
|
"_RovingFocusGroup-dmigQ6Dy.js",
|
||||||
"_useArrowNavigation-C6Y-ieo6.js",
|
"_useArrowNavigation-C6Y-ieo6.js",
|
||||||
"_index-C4J_hXM0.js",
|
"_index-C4J_hXM0.js",
|
||||||
"_createLucideIcon-ZFd4jktC.js"
|
"_createLucideIcon-BlA39rtn.js"
|
||||||
],
|
],
|
||||||
"css": [
|
"css": [
|
||||||
"assets/Index-BrX3yilR.css"
|
"assets/Index-B9wSodOw.css"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"resources/js/pages/admin/movies/List.vue": {
|
"resources/js/pages/admin/movies/List.vue": {
|
||||||
"file": "assets/List-C_4Kh8Sa.js",
|
"file": "assets/List--GExccxm.js",
|
||||||
"name": "List",
|
"name": "List",
|
||||||
"src": "resources/js/pages/admin/movies/List.vue",
|
"src": "resources/js/pages/admin/movies/List.vue",
|
||||||
"isDynamicEntry": true,
|
"isDynamicEntry": true,
|
||||||
"imports": [
|
"imports": [
|
||||||
"resources/js/app.ts",
|
"resources/js/app.ts",
|
||||||
"_AppLayout.vue_vue_type_script_setup_true_lang-DESMBqxz.js",
|
"_AppLayout.vue_vue_type_script_setup_true_lang-86gE95Fg.js",
|
||||||
"__plugin-vue_export-helper-DlAUqK2U.js",
|
"__plugin-vue_export-helper-DlAUqK2U.js",
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js",
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js",
|
||||||
"_useForwardExpose-BhawR5VU.js",
|
"_useForwardExpose-Djbxsgaa.js",
|
||||||
"_VisuallyHidden-Cu70tzB6.js",
|
"_VisuallyHidden-BvthYHr5.js",
|
||||||
"_RovingFocusGroup-CNFroA6Y.js",
|
"_RovingFocusGroup-dmigQ6Dy.js",
|
||||||
"_useArrowNavigation-C6Y-ieo6.js",
|
"_useArrowNavigation-C6Y-ieo6.js",
|
||||||
"_index-C4J_hXM0.js",
|
"_index-C4J_hXM0.js",
|
||||||
"_createLucideIcon-ZFd4jktC.js"
|
"_createLucideIcon-BlA39rtn.js"
|
||||||
],
|
],
|
||||||
"css": [
|
"css": [
|
||||||
"assets/List-CVA9NIjL.css"
|
"assets/List-CVA9NIjL.css"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"resources/js/pages/auth/ConfirmPassword.vue": {
|
"resources/js/pages/auth/ConfirmPassword.vue": {
|
||||||
"file": "assets/ConfirmPassword-wh4eUhzq.js",
|
"file": "assets/ConfirmPassword-B6O1LD69.js",
|
||||||
"name": "ConfirmPassword",
|
"name": "ConfirmPassword",
|
||||||
"src": "resources/js/pages/auth/ConfirmPassword.vue",
|
"src": "resources/js/pages/auth/ConfirmPassword.vue",
|
||||||
"isDynamicEntry": true,
|
"isDynamicEntry": true,
|
||||||
"imports": [
|
"imports": [
|
||||||
"_InputError.vue_vue_type_script_setup_true_lang-DxwKzEqx.js",
|
"_InputError.vue_vue_type_script_setup_true_lang-CQ06D4fO.js",
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js",
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js",
|
||||||
"_Input.vue_vue_type_script_setup_true_lang-BcBrC1ED.js",
|
"_Input.vue_vue_type_script_setup_true_lang-Caepq1Nz.js",
|
||||||
"_Label.vue_vue_type_script_setup_true_lang-Dbqibcwo.js",
|
"_Label.vue_vue_type_script_setup_true_lang-CLMgeKfL.js",
|
||||||
"_Spinner.vue_vue_type_script_setup_true_lang-BPOcqWqa.js",
|
"_Spinner.vue_vue_type_script_setup_true_lang-NJl11ITg.js",
|
||||||
"_AuthLayout.vue_vue_type_script_setup_true_lang-B14CUTB5.js",
|
"_AuthLayout.vue_vue_type_script_setup_true_lang-Chpkpy8i.js",
|
||||||
"_index-BCC4ahRc.js",
|
"_index-BCC4ahRc.js",
|
||||||
"resources/js/app.ts",
|
"resources/js/app.ts",
|
||||||
"_useForwardExpose-BhawR5VU.js",
|
"_useForwardExpose-Djbxsgaa.js",
|
||||||
"_createLucideIcon-ZFd4jktC.js",
|
"_createLucideIcon-BlA39rtn.js",
|
||||||
"_index-C4J_hXM0.js"
|
"_index-C4J_hXM0.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"resources/js/pages/auth/ForgotPassword.vue": {
|
"resources/js/pages/auth/ForgotPassword.vue": {
|
||||||
"file": "assets/ForgotPassword-BI_N76PO.js",
|
"file": "assets/ForgotPassword-AD9ZLowk.js",
|
||||||
"name": "ForgotPassword",
|
"name": "ForgotPassword",
|
||||||
"src": "resources/js/pages/auth/ForgotPassword.vue",
|
"src": "resources/js/pages/auth/ForgotPassword.vue",
|
||||||
"isDynamicEntry": true,
|
"isDynamicEntry": true,
|
||||||
"imports": [
|
"imports": [
|
||||||
"_InputError.vue_vue_type_script_setup_true_lang-DxwKzEqx.js",
|
"_InputError.vue_vue_type_script_setup_true_lang-CQ06D4fO.js",
|
||||||
"_TextLink.vue_vue_type_script_setup_true_lang-JYycsYY3.js",
|
"_TextLink.vue_vue_type_script_setup_true_lang-CEF924Ry.js",
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js",
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js",
|
||||||
"_Input.vue_vue_type_script_setup_true_lang-BcBrC1ED.js",
|
"_Input.vue_vue_type_script_setup_true_lang-Caepq1Nz.js",
|
||||||
"_Label.vue_vue_type_script_setup_true_lang-Dbqibcwo.js",
|
"_Label.vue_vue_type_script_setup_true_lang-CLMgeKfL.js",
|
||||||
"_Spinner.vue_vue_type_script_setup_true_lang-BPOcqWqa.js",
|
"_Spinner.vue_vue_type_script_setup_true_lang-NJl11ITg.js",
|
||||||
"_AuthLayout.vue_vue_type_script_setup_true_lang-B14CUTB5.js",
|
"_AuthLayout.vue_vue_type_script_setup_true_lang-Chpkpy8i.js",
|
||||||
"_index-C4J_hXM0.js",
|
"_index-C4J_hXM0.js",
|
||||||
"_index-vZYIBGLo.js",
|
"_index-vZYIBGLo.js",
|
||||||
"resources/js/app.ts",
|
"resources/js/app.ts",
|
||||||
"_useForwardExpose-BhawR5VU.js",
|
"_useForwardExpose-Djbxsgaa.js",
|
||||||
"_createLucideIcon-ZFd4jktC.js",
|
"_createLucideIcon-BlA39rtn.js",
|
||||||
"_index-BCC4ahRc.js"
|
"_index-BCC4ahRc.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"resources/js/pages/auth/Login.vue": {
|
"resources/js/pages/auth/Login.vue": {
|
||||||
"file": "assets/Login-4gIV6O-Y.js",
|
"file": "assets/Login-DPWFjlev.js",
|
||||||
"name": "Login",
|
"name": "Login",
|
||||||
"src": "resources/js/pages/auth/Login.vue",
|
"src": "resources/js/pages/auth/Login.vue",
|
||||||
"isDynamicEntry": true,
|
"isDynamicEntry": true,
|
||||||
"imports": [
|
"imports": [
|
||||||
"_InputError.vue_vue_type_script_setup_true_lang-DxwKzEqx.js",
|
"_InputError.vue_vue_type_script_setup_true_lang-CQ06D4fO.js",
|
||||||
"_TextLink.vue_vue_type_script_setup_true_lang-JYycsYY3.js",
|
"_TextLink.vue_vue_type_script_setup_true_lang-CEF924Ry.js",
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js",
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js",
|
||||||
"_VisuallyHidden-Cu70tzB6.js",
|
"_VisuallyHidden-BvthYHr5.js",
|
||||||
"_useForwardExpose-BhawR5VU.js",
|
"_useForwardExpose-Djbxsgaa.js",
|
||||||
"resources/js/app.ts",
|
"resources/js/app.ts",
|
||||||
"_RovingFocusGroup-CNFroA6Y.js",
|
"_RovingFocusGroup-dmigQ6Dy.js",
|
||||||
"_VisuallyHiddenInput-Drd3EMOd.js",
|
"_VisuallyHiddenInput-BVzeYF-P.js",
|
||||||
"_check-BNffy8wt.js",
|
"_check-DM1YWYaE.js",
|
||||||
"_Input.vue_vue_type_script_setup_true_lang-BcBrC1ED.js",
|
"_Input.vue_vue_type_script_setup_true_lang-Caepq1Nz.js",
|
||||||
"_Label.vue_vue_type_script_setup_true_lang-Dbqibcwo.js",
|
"_Label.vue_vue_type_script_setup_true_lang-CLMgeKfL.js",
|
||||||
"_Spinner.vue_vue_type_script_setup_true_lang-BPOcqWqa.js",
|
"_Spinner.vue_vue_type_script_setup_true_lang-NJl11ITg.js",
|
||||||
"_AuthLayout.vue_vue_type_script_setup_true_lang-B14CUTB5.js",
|
"_AuthLayout.vue_vue_type_script_setup_true_lang-Chpkpy8i.js",
|
||||||
"_index-C4J_hXM0.js",
|
"_index-C4J_hXM0.js",
|
||||||
"_index-vZYIBGLo.js",
|
"_index-vZYIBGLo.js",
|
||||||
"_createLucideIcon-ZFd4jktC.js",
|
"_createLucideIcon-BlA39rtn.js",
|
||||||
"_index-BCC4ahRc.js"
|
"_index-BCC4ahRc.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"resources/js/pages/auth/Register.vue": {
|
"resources/js/pages/auth/Register.vue": {
|
||||||
"file": "assets/Register-kQGfWF-K.js",
|
"file": "assets/Register-UZ1nsWPC.js",
|
||||||
"name": "Register",
|
"name": "Register",
|
||||||
"src": "resources/js/pages/auth/Register.vue",
|
"src": "resources/js/pages/auth/Register.vue",
|
||||||
"isDynamicEntry": true,
|
"isDynamicEntry": true,
|
||||||
"imports": [
|
"imports": [
|
||||||
"_InputError.vue_vue_type_script_setup_true_lang-DxwKzEqx.js",
|
"_InputError.vue_vue_type_script_setup_true_lang-CQ06D4fO.js",
|
||||||
"_TextLink.vue_vue_type_script_setup_true_lang-JYycsYY3.js",
|
"_TextLink.vue_vue_type_script_setup_true_lang-CEF924Ry.js",
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js",
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js",
|
||||||
"_Input.vue_vue_type_script_setup_true_lang-BcBrC1ED.js",
|
"_Input.vue_vue_type_script_setup_true_lang-Caepq1Nz.js",
|
||||||
"_Label.vue_vue_type_script_setup_true_lang-Dbqibcwo.js",
|
"_Label.vue_vue_type_script_setup_true_lang-CLMgeKfL.js",
|
||||||
"_Spinner.vue_vue_type_script_setup_true_lang-BPOcqWqa.js",
|
"_Spinner.vue_vue_type_script_setup_true_lang-NJl11ITg.js",
|
||||||
"_AuthLayout.vue_vue_type_script_setup_true_lang-B14CUTB5.js",
|
"_AuthLayout.vue_vue_type_script_setup_true_lang-Chpkpy8i.js",
|
||||||
"_index-C4J_hXM0.js",
|
"_index-C4J_hXM0.js",
|
||||||
"resources/js/app.ts",
|
"resources/js/app.ts",
|
||||||
"_useForwardExpose-BhawR5VU.js",
|
"_useForwardExpose-Djbxsgaa.js",
|
||||||
"_createLucideIcon-ZFd4jktC.js"
|
"_createLucideIcon-BlA39rtn.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"resources/js/pages/auth/ResetPassword.vue": {
|
"resources/js/pages/auth/ResetPassword.vue": {
|
||||||
"file": "assets/ResetPassword-BPOrjW9k.js",
|
"file": "assets/ResetPassword-hpGi5-g3.js",
|
||||||
"name": "ResetPassword",
|
"name": "ResetPassword",
|
||||||
"src": "resources/js/pages/auth/ResetPassword.vue",
|
"src": "resources/js/pages/auth/ResetPassword.vue",
|
||||||
"isDynamicEntry": true,
|
"isDynamicEntry": true,
|
||||||
"imports": [
|
"imports": [
|
||||||
"_InputError.vue_vue_type_script_setup_true_lang-DxwKzEqx.js",
|
"_InputError.vue_vue_type_script_setup_true_lang-CQ06D4fO.js",
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js",
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js",
|
||||||
"_Input.vue_vue_type_script_setup_true_lang-BcBrC1ED.js",
|
"_Input.vue_vue_type_script_setup_true_lang-Caepq1Nz.js",
|
||||||
"_Label.vue_vue_type_script_setup_true_lang-Dbqibcwo.js",
|
"_Label.vue_vue_type_script_setup_true_lang-CLMgeKfL.js",
|
||||||
"_Spinner.vue_vue_type_script_setup_true_lang-BPOcqWqa.js",
|
"_Spinner.vue_vue_type_script_setup_true_lang-NJl11ITg.js",
|
||||||
"_AuthLayout.vue_vue_type_script_setup_true_lang-B14CUTB5.js",
|
"_AuthLayout.vue_vue_type_script_setup_true_lang-Chpkpy8i.js",
|
||||||
"_index-vZYIBGLo.js",
|
"_index-vZYIBGLo.js",
|
||||||
"resources/js/app.ts",
|
"resources/js/app.ts",
|
||||||
"_useForwardExpose-BhawR5VU.js",
|
"_useForwardExpose-Djbxsgaa.js",
|
||||||
"_createLucideIcon-ZFd4jktC.js",
|
"_createLucideIcon-BlA39rtn.js",
|
||||||
"_index-C4J_hXM0.js",
|
"_index-C4J_hXM0.js",
|
||||||
"_index-BCC4ahRc.js"
|
"_index-BCC4ahRc.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"resources/js/pages/auth/TwoFactorChallenge.vue": {
|
"resources/js/pages/auth/TwoFactorChallenge.vue": {
|
||||||
"file": "assets/TwoFactorChallenge-BSzmROh9.js",
|
"file": "assets/TwoFactorChallenge-DMm8cjEf.js",
|
||||||
"name": "TwoFactorChallenge",
|
"name": "TwoFactorChallenge",
|
||||||
"src": "resources/js/pages/auth/TwoFactorChallenge.vue",
|
"src": "resources/js/pages/auth/TwoFactorChallenge.vue",
|
||||||
"isDynamicEntry": true,
|
"isDynamicEntry": true,
|
||||||
"imports": [
|
"imports": [
|
||||||
"_InputError.vue_vue_type_script_setup_true_lang-DxwKzEqx.js",
|
"_InputError.vue_vue_type_script_setup_true_lang-CQ06D4fO.js",
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js",
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js",
|
||||||
"_Input.vue_vue_type_script_setup_true_lang-BcBrC1ED.js",
|
"_Input.vue_vue_type_script_setup_true_lang-Caepq1Nz.js",
|
||||||
"_PinInputSlot.vue_vue_type_script_setup_true_lang-D_qQ1GfR.js",
|
"_PinInputSlot.vue_vue_type_script_setup_true_lang-D1xXx8BE.js",
|
||||||
"_AuthLayout.vue_vue_type_script_setup_true_lang-B14CUTB5.js",
|
"_AuthLayout.vue_vue_type_script_setup_true_lang-Chpkpy8i.js",
|
||||||
"_index--H2rh_A_.js",
|
"_index--H2rh_A_.js",
|
||||||
"resources/js/app.ts",
|
"resources/js/app.ts",
|
||||||
"_useForwardExpose-BhawR5VU.js",
|
"_useForwardExpose-Djbxsgaa.js",
|
||||||
"_VisuallyHidden-Cu70tzB6.js",
|
"_VisuallyHidden-BvthYHr5.js",
|
||||||
"_useArrowNavigation-C6Y-ieo6.js",
|
"_useArrowNavigation-C6Y-ieo6.js",
|
||||||
"_VisuallyHiddenInput-Drd3EMOd.js",
|
"_VisuallyHiddenInput-BVzeYF-P.js",
|
||||||
"_index-C4J_hXM0.js"
|
"_index-C4J_hXM0.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"resources/js/pages/auth/VerifyEmail.vue": {
|
"resources/js/pages/auth/VerifyEmail.vue": {
|
||||||
"file": "assets/VerifyEmail-DZQcbTya.js",
|
"file": "assets/VerifyEmail-B313sHZj.js",
|
||||||
"name": "VerifyEmail",
|
"name": "VerifyEmail",
|
||||||
"src": "resources/js/pages/auth/VerifyEmail.vue",
|
"src": "resources/js/pages/auth/VerifyEmail.vue",
|
||||||
"isDynamicEntry": true,
|
"isDynamicEntry": true,
|
||||||
"imports": [
|
"imports": [
|
||||||
"_TextLink.vue_vue_type_script_setup_true_lang-JYycsYY3.js",
|
"_TextLink.vue_vue_type_script_setup_true_lang-CEF924Ry.js",
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js",
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js",
|
||||||
"_Spinner.vue_vue_type_script_setup_true_lang-BPOcqWqa.js",
|
"_Spinner.vue_vue_type_script_setup_true_lang-NJl11ITg.js",
|
||||||
"_AuthLayout.vue_vue_type_script_setup_true_lang-B14CUTB5.js",
|
"_AuthLayout.vue_vue_type_script_setup_true_lang-Chpkpy8i.js",
|
||||||
"_index-C4J_hXM0.js",
|
"_index-C4J_hXM0.js",
|
||||||
"_index-DZxzsgmi.js",
|
"_index-DZxzsgmi.js",
|
||||||
"resources/js/app.ts",
|
"resources/js/app.ts",
|
||||||
"_createLucideIcon-ZFd4jktC.js"
|
"_createLucideIcon-BlA39rtn.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"resources/js/pages/directors/Show.vue": {
|
"resources/js/pages/directors/Show.vue": {
|
||||||
"file": "assets/Show-CLkQumZS.js",
|
"file": "assets/Show-Bg2WY_KO.js",
|
||||||
"name": "Show",
|
"name": "Show",
|
||||||
"src": "resources/js/pages/directors/Show.vue",
|
"src": "resources/js/pages/directors/Show.vue",
|
||||||
"isDynamicEntry": true,
|
"isDynamicEntry": true,
|
||||||
"imports": [
|
"imports": [
|
||||||
"resources/js/app.ts",
|
"resources/js/app.ts",
|
||||||
"_AppLayout.vue_vue_type_script_setup_true_lang-DESMBqxz.js",
|
"_AppLayout.vue_vue_type_script_setup_true_lang-86gE95Fg.js",
|
||||||
"__plugin-vue_export-helper-DlAUqK2U.js",
|
"__plugin-vue_export-helper-DlAUqK2U.js",
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js",
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js",
|
||||||
"_useForwardExpose-BhawR5VU.js",
|
"_useForwardExpose-Djbxsgaa.js",
|
||||||
"_VisuallyHidden-Cu70tzB6.js",
|
"_VisuallyHidden-BvthYHr5.js",
|
||||||
"_RovingFocusGroup-CNFroA6Y.js",
|
"_RovingFocusGroup-dmigQ6Dy.js",
|
||||||
"_useArrowNavigation-C6Y-ieo6.js",
|
"_useArrowNavigation-C6Y-ieo6.js",
|
||||||
"_index-C4J_hXM0.js",
|
"_index-C4J_hXM0.js",
|
||||||
"_createLucideIcon-ZFd4jktC.js"
|
"_createLucideIcon-BlA39rtn.js"
|
||||||
],
|
],
|
||||||
"css": [
|
"css": [
|
||||||
"assets/Show-B-qGUz9l.css"
|
"assets/Show-B-qGUz9l.css"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"resources/js/pages/genres/Show.vue": {
|
"resources/js/pages/genres/Show.vue": {
|
||||||
"file": "assets/Show-y_rWxQ3Z.js",
|
"file": "assets/Show-DeHiSsqs.js",
|
||||||
"name": "Show",
|
"name": "Show",
|
||||||
"src": "resources/js/pages/genres/Show.vue",
|
"src": "resources/js/pages/genres/Show.vue",
|
||||||
"isDynamicEntry": true,
|
"isDynamicEntry": true,
|
||||||
"imports": [
|
"imports": [
|
||||||
"resources/js/app.ts",
|
"resources/js/app.ts",
|
||||||
"_AppLayout.vue_vue_type_script_setup_true_lang-DESMBqxz.js",
|
"_AppLayout.vue_vue_type_script_setup_true_lang-86gE95Fg.js",
|
||||||
"__plugin-vue_export-helper-DlAUqK2U.js",
|
"__plugin-vue_export-helper-DlAUqK2U.js",
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js",
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js",
|
||||||
"_useForwardExpose-BhawR5VU.js",
|
"_useForwardExpose-Djbxsgaa.js",
|
||||||
"_VisuallyHidden-Cu70tzB6.js",
|
"_VisuallyHidden-BvthYHr5.js",
|
||||||
"_RovingFocusGroup-CNFroA6Y.js",
|
"_RovingFocusGroup-dmigQ6Dy.js",
|
||||||
"_useArrowNavigation-C6Y-ieo6.js",
|
"_useArrowNavigation-C6Y-ieo6.js",
|
||||||
"_index-C4J_hXM0.js",
|
"_index-C4J_hXM0.js",
|
||||||
"_createLucideIcon-ZFd4jktC.js"
|
"_createLucideIcon-BlA39rtn.js"
|
||||||
],
|
],
|
||||||
"css": [
|
"css": [
|
||||||
"assets/Show-DB_iXr9H.css"
|
"assets/Show-DB_iXr9H.css"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"resources/js/pages/movies/Index.vue": {
|
"resources/js/pages/movies/Index.vue": {
|
||||||
"file": "assets/Index-CYUFIW2Y.js",
|
"file": "assets/Index-DePos18c.js",
|
||||||
"name": "Index",
|
"name": "Index",
|
||||||
"src": "resources/js/pages/movies/Index.vue",
|
"src": "resources/js/pages/movies/Index.vue",
|
||||||
"isDynamicEntry": true,
|
"isDynamicEntry": true,
|
||||||
"imports": [
|
"imports": [
|
||||||
"resources/js/app.ts",
|
"resources/js/app.ts",
|
||||||
"_AppLayout.vue_vue_type_script_setup_true_lang-DESMBqxz.js",
|
"_AppLayout.vue_vue_type_script_setup_true_lang-86gE95Fg.js",
|
||||||
"__plugin-vue_export-helper-DlAUqK2U.js",
|
"__plugin-vue_export-helper-DlAUqK2U.js",
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js",
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js",
|
||||||
"_useForwardExpose-BhawR5VU.js",
|
"_useForwardExpose-Djbxsgaa.js",
|
||||||
"_VisuallyHidden-Cu70tzB6.js",
|
"_VisuallyHidden-BvthYHr5.js",
|
||||||
"_RovingFocusGroup-CNFroA6Y.js",
|
"_RovingFocusGroup-dmigQ6Dy.js",
|
||||||
"_useArrowNavigation-C6Y-ieo6.js",
|
"_useArrowNavigation-C6Y-ieo6.js",
|
||||||
"_index-C4J_hXM0.js",
|
"_index-C4J_hXM0.js",
|
||||||
"_createLucideIcon-ZFd4jktC.js"
|
"_createLucideIcon-BlA39rtn.js"
|
||||||
],
|
],
|
||||||
"css": [
|
"css": [
|
||||||
"assets/Index-BJjYncZL.css"
|
"assets/Index-BJjYncZL.css"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"resources/js/pages/movies/Show.vue": {
|
"resources/js/pages/movies/Show.vue": {
|
||||||
"file": "assets/Show-B81d5hyh.js",
|
"file": "assets/Show-B054TjDf.js",
|
||||||
"name": "Show",
|
"name": "Show",
|
||||||
"src": "resources/js/pages/movies/Show.vue",
|
"src": "resources/js/pages/movies/Show.vue",
|
||||||
"isDynamicEntry": true,
|
"isDynamicEntry": true,
|
||||||
"imports": [
|
"imports": [
|
||||||
"resources/js/app.ts",
|
"resources/js/app.ts",
|
||||||
"_AppLayout.vue_vue_type_script_setup_true_lang-DESMBqxz.js",
|
"_AppLayout.vue_vue_type_script_setup_true_lang-86gE95Fg.js",
|
||||||
"__plugin-vue_export-helper-DlAUqK2U.js",
|
"__plugin-vue_export-helper-DlAUqK2U.js",
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js",
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js",
|
||||||
"_useForwardExpose-BhawR5VU.js",
|
"_useForwardExpose-Djbxsgaa.js",
|
||||||
"_VisuallyHidden-Cu70tzB6.js",
|
"_VisuallyHidden-BvthYHr5.js",
|
||||||
"_RovingFocusGroup-CNFroA6Y.js",
|
"_RovingFocusGroup-dmigQ6Dy.js",
|
||||||
"_useArrowNavigation-C6Y-ieo6.js",
|
"_useArrowNavigation-C6Y-ieo6.js",
|
||||||
"_index-C4J_hXM0.js",
|
"_index-C4J_hXM0.js",
|
||||||
"_createLucideIcon-ZFd4jktC.js"
|
"_createLucideIcon-BlA39rtn.js"
|
||||||
],
|
],
|
||||||
"css": [
|
"css": [
|
||||||
"assets/Show-u0mnbIJy.css"
|
"assets/Show-u0mnbIJy.css"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"resources/js/pages/settings/Appearance.vue": {
|
"resources/js/pages/settings/Appearance.vue": {
|
||||||
"file": "assets/Appearance-x5-Kktlh.js",
|
"file": "assets/Appearance-xAaPb6Fu.js",
|
||||||
"name": "Appearance",
|
"name": "Appearance",
|
||||||
"src": "resources/js/pages/settings/Appearance.vue",
|
"src": "resources/js/pages/settings/Appearance.vue",
|
||||||
"isDynamicEntry": true,
|
"isDynamicEntry": true,
|
||||||
"imports": [
|
"imports": [
|
||||||
"resources/js/app.ts",
|
"resources/js/app.ts",
|
||||||
"_createLucideIcon-ZFd4jktC.js",
|
"_createLucideIcon-BlA39rtn.js",
|
||||||
"_Layout.vue_vue_type_script_setup_true_lang-ROf3tZlv.js",
|
"_Layout.vue_vue_type_script_setup_true_lang-CqO9sNxz.js",
|
||||||
"_AppLayout.vue_vue_type_script_setup_true_lang-DESMBqxz.js",
|
"_AppLayout.vue_vue_type_script_setup_true_lang-86gE95Fg.js",
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js",
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js",
|
||||||
"_useForwardExpose-BhawR5VU.js",
|
"_useForwardExpose-Djbxsgaa.js",
|
||||||
"_index-C4J_hXM0.js",
|
"_index-C4J_hXM0.js",
|
||||||
"_index--H2rh_A_.js",
|
"_index--H2rh_A_.js",
|
||||||
"_VisuallyHidden-Cu70tzB6.js",
|
"_VisuallyHidden-BvthYHr5.js",
|
||||||
"_RovingFocusGroup-CNFroA6Y.js",
|
"_RovingFocusGroup-dmigQ6Dy.js",
|
||||||
"_useArrowNavigation-C6Y-ieo6.js"
|
"_useArrowNavigation-C6Y-ieo6.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"resources/js/pages/settings/Password.vue": {
|
"resources/js/pages/settings/Password.vue": {
|
||||||
"file": "assets/Password-Cz_oOx7m.js",
|
"file": "assets/Password-DawXCzGr.js",
|
||||||
"name": "Password",
|
"name": "Password",
|
||||||
"src": "resources/js/pages/settings/Password.vue",
|
"src": "resources/js/pages/settings/Password.vue",
|
||||||
"isDynamicEntry": true,
|
"isDynamicEntry": true,
|
||||||
"imports": [
|
"imports": [
|
||||||
"resources/js/app.ts",
|
"resources/js/app.ts",
|
||||||
"_index-C4J_hXM0.js",
|
"_index-C4J_hXM0.js",
|
||||||
"_InputError.vue_vue_type_script_setup_true_lang-DxwKzEqx.js",
|
"_InputError.vue_vue_type_script_setup_true_lang-CQ06D4fO.js",
|
||||||
"_AppLayout.vue_vue_type_script_setup_true_lang-DESMBqxz.js",
|
"_AppLayout.vue_vue_type_script_setup_true_lang-86gE95Fg.js",
|
||||||
"_Layout.vue_vue_type_script_setup_true_lang-ROf3tZlv.js",
|
"_Layout.vue_vue_type_script_setup_true_lang-CqO9sNxz.js",
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js",
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js",
|
||||||
"_Input.vue_vue_type_script_setup_true_lang-BcBrC1ED.js",
|
"_Input.vue_vue_type_script_setup_true_lang-Caepq1Nz.js",
|
||||||
"_Label.vue_vue_type_script_setup_true_lang-Dbqibcwo.js",
|
"_Label.vue_vue_type_script_setup_true_lang-CLMgeKfL.js",
|
||||||
"_useForwardExpose-BhawR5VU.js",
|
"_useForwardExpose-Djbxsgaa.js",
|
||||||
"_VisuallyHidden-Cu70tzB6.js",
|
"_VisuallyHidden-BvthYHr5.js",
|
||||||
"_RovingFocusGroup-CNFroA6Y.js",
|
"_RovingFocusGroup-dmigQ6Dy.js",
|
||||||
"_useArrowNavigation-C6Y-ieo6.js",
|
"_useArrowNavigation-C6Y-ieo6.js",
|
||||||
"_createLucideIcon-ZFd4jktC.js",
|
"_createLucideIcon-BlA39rtn.js",
|
||||||
"_index--H2rh_A_.js"
|
"_index--H2rh_A_.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"resources/js/pages/settings/Profile.vue": {
|
"resources/js/pages/settings/Profile.vue": {
|
||||||
"file": "assets/Profile-DvBzD9G7.js",
|
"file": "assets/Profile-D53Bi8OH.js",
|
||||||
"name": "Profile",
|
"name": "Profile",
|
||||||
"src": "resources/js/pages/settings/Profile.vue",
|
"src": "resources/js/pages/settings/Profile.vue",
|
||||||
"isDynamicEntry": true,
|
"isDynamicEntry": true,
|
||||||
"imports": [
|
"imports": [
|
||||||
"resources/js/app.ts",
|
"resources/js/app.ts",
|
||||||
"_index-C4J_hXM0.js",
|
"_index-C4J_hXM0.js",
|
||||||
"_AppLayout.vue_vue_type_script_setup_true_lang-DESMBqxz.js",
|
"_AppLayout.vue_vue_type_script_setup_true_lang-86gE95Fg.js",
|
||||||
"_index-DZxzsgmi.js",
|
"_index-DZxzsgmi.js",
|
||||||
"_Layout.vue_vue_type_script_setup_true_lang-ROf3tZlv.js",
|
"_Layout.vue_vue_type_script_setup_true_lang-CqO9sNxz.js",
|
||||||
"_InputError.vue_vue_type_script_setup_true_lang-DxwKzEqx.js",
|
"_InputError.vue_vue_type_script_setup_true_lang-CQ06D4fO.js",
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js",
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js",
|
||||||
"_DialogTitle.vue_vue_type_script_setup_true_lang-Dg2xd9QK.js",
|
"_DialogTitle.vue_vue_type_script_setup_true_lang-BKahKO_t.js",
|
||||||
"_useForwardExpose-BhawR5VU.js",
|
"_useForwardExpose-Djbxsgaa.js",
|
||||||
"_RovingFocusGroup-CNFroA6Y.js",
|
"_RovingFocusGroup-dmigQ6Dy.js",
|
||||||
"_Input.vue_vue_type_script_setup_true_lang-BcBrC1ED.js",
|
"_Input.vue_vue_type_script_setup_true_lang-Caepq1Nz.js",
|
||||||
"_Label.vue_vue_type_script_setup_true_lang-Dbqibcwo.js",
|
"_Label.vue_vue_type_script_setup_true_lang-CLMgeKfL.js",
|
||||||
"_VisuallyHidden-Cu70tzB6.js",
|
"_VisuallyHidden-BvthYHr5.js",
|
||||||
"_useArrowNavigation-C6Y-ieo6.js",
|
"_useArrowNavigation-C6Y-ieo6.js",
|
||||||
"_createLucideIcon-ZFd4jktC.js",
|
"_createLucideIcon-BlA39rtn.js",
|
||||||
"_index--H2rh_A_.js"
|
"_index--H2rh_A_.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"resources/js/pages/settings/TwoFactor.vue": {
|
"resources/js/pages/settings/TwoFactor.vue": {
|
||||||
"file": "assets/TwoFactor-CEzdBq7S.js",
|
"file": "assets/TwoFactor-CVXaGPyO.js",
|
||||||
"name": "TwoFactor",
|
"name": "TwoFactor",
|
||||||
"src": "resources/js/pages/settings/TwoFactor.vue",
|
"src": "resources/js/pages/settings/TwoFactor.vue",
|
||||||
"isDynamicEntry": true,
|
"isDynamicEntry": true,
|
||||||
"imports": [
|
"imports": [
|
||||||
"_Layout.vue_vue_type_script_setup_true_lang-ROf3tZlv.js",
|
"_Layout.vue_vue_type_script_setup_true_lang-CqO9sNxz.js",
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js",
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js",
|
||||||
"resources/js/app.ts",
|
"resources/js/app.ts",
|
||||||
"_createLucideIcon-ZFd4jktC.js",
|
"_createLucideIcon-BlA39rtn.js",
|
||||||
"_InputError.vue_vue_type_script_setup_true_lang-DxwKzEqx.js",
|
"_InputError.vue_vue_type_script_setup_true_lang-CQ06D4fO.js",
|
||||||
"_Spinner.vue_vue_type_script_setup_true_lang-BPOcqWqa.js",
|
"_Spinner.vue_vue_type_script_setup_true_lang-NJl11ITg.js",
|
||||||
"_DialogTitle.vue_vue_type_script_setup_true_lang-Dg2xd9QK.js",
|
"_DialogTitle.vue_vue_type_script_setup_true_lang-BKahKO_t.js",
|
||||||
"_PinInputSlot.vue_vue_type_script_setup_true_lang-D_qQ1GfR.js",
|
"_PinInputSlot.vue_vue_type_script_setup_true_lang-D1xXx8BE.js",
|
||||||
"_useForwardExpose-BhawR5VU.js",
|
"_useForwardExpose-Djbxsgaa.js",
|
||||||
"_check-BNffy8wt.js",
|
"_check-DM1YWYaE.js",
|
||||||
"_AppLayout.vue_vue_type_script_setup_true_lang-DESMBqxz.js",
|
"_AppLayout.vue_vue_type_script_setup_true_lang-86gE95Fg.js",
|
||||||
"_index-C4J_hXM0.js",
|
"_index-C4J_hXM0.js",
|
||||||
"_index--H2rh_A_.js",
|
"_index--H2rh_A_.js",
|
||||||
"_VisuallyHidden-Cu70tzB6.js",
|
"_VisuallyHidden-BvthYHr5.js",
|
||||||
"_useArrowNavigation-C6Y-ieo6.js",
|
"_useArrowNavigation-C6Y-ieo6.js",
|
||||||
"_VisuallyHiddenInput-Drd3EMOd.js",
|
"_VisuallyHiddenInput-BVzeYF-P.js",
|
||||||
"_RovingFocusGroup-CNFroA6Y.js"
|
"_RovingFocusGroup-dmigQ6Dy.js"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"resources/js/pages/studios/Show.vue": {
|
"resources/js/pages/studios/Show.vue": {
|
||||||
"file": "assets/Show-BGTgh0m1.js",
|
"file": "assets/Show-D_R328ht.js",
|
||||||
"name": "Show",
|
"name": "Show",
|
||||||
"src": "resources/js/pages/studios/Show.vue",
|
"src": "resources/js/pages/studios/Show.vue",
|
||||||
"isDynamicEntry": true,
|
"isDynamicEntry": true,
|
||||||
"imports": [
|
"imports": [
|
||||||
"resources/js/app.ts",
|
"resources/js/app.ts",
|
||||||
"_AppLayout.vue_vue_type_script_setup_true_lang-DESMBqxz.js",
|
"_AppLayout.vue_vue_type_script_setup_true_lang-86gE95Fg.js",
|
||||||
"__plugin-vue_export-helper-DlAUqK2U.js",
|
"__plugin-vue_export-helper-DlAUqK2U.js",
|
||||||
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-7XZAfK5W.js",
|
"_AppLogoIcon.vue_vue_type_script_setup_true_lang-BzXwPo6R.js",
|
||||||
"_useForwardExpose-BhawR5VU.js",
|
"_useForwardExpose-Djbxsgaa.js",
|
||||||
"_VisuallyHidden-Cu70tzB6.js",
|
"_VisuallyHidden-BvthYHr5.js",
|
||||||
"_RovingFocusGroup-CNFroA6Y.js",
|
"_RovingFocusGroup-dmigQ6Dy.js",
|
||||||
"_useArrowNavigation-C6Y-ieo6.js",
|
"_useArrowNavigation-C6Y-ieo6.js",
|
||||||
"_index-C4J_hXM0.js",
|
"_index-C4J_hXM0.js",
|
||||||
"_createLucideIcon-ZFd4jktC.js"
|
"_createLucideIcon-BlA39rtn.js"
|
||||||
],
|
],
|
||||||
"css": [
|
"css": [
|
||||||
"assets/Show-Csw6sC-4.css"
|
"assets/Show-Csw6sC-4.css"
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ type MoviesPage = {
|
||||||
}
|
}
|
||||||
|
|
||||||
type ApiResponse = {
|
type ApiResponse = {
|
||||||
entity: { id: number; name: string }
|
entity: { id: number; name: string; profile_path: string | null }
|
||||||
movies: MoviesPage
|
movies: MoviesPage
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -38,7 +38,7 @@ const loading = ref(false)
|
||||||
const error = ref<string | null>(null)
|
const error = ref<string | null>(null)
|
||||||
const showToast = ref(false)
|
const showToast = ref(false)
|
||||||
const toastText = ref('')
|
const toastText = ref('')
|
||||||
const entity = ref<{ id: number; name: string } | null>(null)
|
const entity = ref<{ id: number; name: string; profile_path: string | null } | null>(null)
|
||||||
|
|
||||||
let debounceTimer: any = null
|
let debounceTimer: any = null
|
||||||
|
|
||||||
|
|
@ -142,8 +142,16 @@ watch(sentinel, (el, prev) => {
|
||||||
<div class="h-4 w-40 rounded bg-muted animate-pulse"></div>
|
<div class="h-4 w-40 rounded bg-muted animate-pulse"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center gap-3">
|
<div class="flex items-center gap-3">
|
||||||
<!-- Neutral placeholder for person -->
|
<!-- Actor avatar -->
|
||||||
<div class="h-12 w-12 shrink-0 rounded-full bg-muted"></div>
|
<div class="h-12 w-12 shrink-0 overflow-hidden rounded-full bg-muted">
|
||||||
|
<img
|
||||||
|
v-if="entity?.profile_path"
|
||||||
|
:src="entity.profile_path"
|
||||||
|
:alt="entity?.name ? `${entity.name} profile photo` : 'Actor profile photo'"
|
||||||
|
loading="lazy"
|
||||||
|
class="h-full w-full object-cover"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
<div class="min-w-0 flex-1">
|
<div class="min-w-0 flex-1">
|
||||||
<h1 class="truncate text-lg font-semibold">{{ entity?.name ?? '…' }}</h1>
|
<h1 class="truncate text-lg font-semibold">{{ entity?.name ?? '…' }}</h1>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -72,7 +72,7 @@ async function fetchPage(reset = false) {
|
||||||
|
|
||||||
function onSearchInput() {
|
function onSearchInput() {
|
||||||
// Only trigger search when length is divisible by 3 (3, 6, 9, ...)
|
// Only trigger search when length is divisible by 3 (3, 6, 9, ...)
|
||||||
// Per request, we do not hit OMDb otherwise (unless Enter is pressed)
|
// Per request, we do not hit TMDb otherwise (unless Enter is pressed)
|
||||||
clearTimeout(debounceTimer)
|
clearTimeout(debounceTimer)
|
||||||
const len = q.value.trim().length
|
const len = q.value.trim().length
|
||||||
if (len >= 3 && len % 3 === 0) {
|
if (len >= 3 && len % 3 === 0) {
|
||||||
|
|
|
||||||
|
|
@ -38,11 +38,11 @@ class AdminExistsMovieTest extends TestCase
|
||||||
{
|
{
|
||||||
$this->signIn();
|
$this->signIn();
|
||||||
$movie = Movie::factory()->create([
|
$movie = Movie::factory()->create([
|
||||||
'provider' => 'omdb',
|
'provider' => 'tmdb',
|
||||||
'provider_id' => 'tt1234567',
|
'provider_id' => '1234567',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$res = $this->getJson('/admin/movies/exists?provider_id=tt1234567');
|
$res = $this->getJson('/admin/movies/exists?provider_id=1234567');
|
||||||
$res->assertOk()
|
$res->assertOk()
|
||||||
->assertJson([
|
->assertJson([
|
||||||
'exists' => true,
|
'exists' => true,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue