mirror of
https://github.com/mmahdium/TBW.git
synced 2026-08-14 16:22:48 +03:30
Improve classes
This commit is contained in:
@@ -3,7 +3,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<router-link
|
<router-link
|
||||||
to="/add"
|
to="/add"
|
||||||
class="card relative w-full h-full flex items-center justify-center aspect-[2/3] bg-white/40 backdrop-blur-md border-2 border-dashed border-gray-300 rounded-lg shadow-sm hover:shadow-md hover:border-gray-400 transition-all duration-300"
|
class="card relative w-full h-full flex items-center justify-center aspect-2/3 bg-white/40 backdrop-blur-md border-2 border-dashed border-gray-300 rounded-lg shadow-sm hover:shadow-md hover:border-gray-400 transition-all duration-300"
|
||||||
v-motion-fade-visible-once
|
v-motion-fade-visible-once
|
||||||
>
|
>
|
||||||
<!-- Plus icon -->
|
<!-- Plus icon -->
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ const imageSource = computed(() => {
|
|||||||
<router-link
|
<router-link
|
||||||
:to="{ name: 'details', params: { type: props.movie.MediaType, id: props.movie.Id } }"
|
:to="{ name: 'details', params: { type: props.movie.MediaType, id: props.movie.Id } }"
|
||||||
>
|
>
|
||||||
<figure class="overflow-hidden flex items-center justify-center aspect-[2/3] bg-gray-50">
|
<figure class="overflow-hidden flex items-center justify-center aspect-2/3 bg-gray-50">
|
||||||
<span v-if="!loaded" class="loading loading-ring loading-lg text-primary"></span>
|
<span v-if="!loaded" class="loading loading-ring loading-lg text-primary"></span>
|
||||||
|
|
||||||
<div v-else-if="imageLoadFailed" class="flex items-center justify-center">
|
<div v-else-if="imageLoadFailed" class="flex items-center justify-center">
|
||||||
@@ -72,7 +72,7 @@ const imageSource = computed(() => {
|
|||||||
:to="{ name: 'details', params: { type: props.movie.MediaType, id: props.movie.Id } }"
|
:to="{ name: 'details', params: { type: props.movie.MediaType, id: props.movie.Id } }"
|
||||||
>
|
>
|
||||||
<h2
|
<h2
|
||||||
class="card-title text-base font-semibold bg-gradient-to-r from-gray-700 to-gray-500 bg-clip-text text-transparent"
|
class="card-title text-base font-semibold bg-linear-to-r from-gray-700 to-gray-500 bg-clip-text text-transparent"
|
||||||
>
|
>
|
||||||
{{ props.movie.Title }}
|
{{ props.movie.Title }}
|
||||||
</h2>
|
</h2>
|
||||||
@@ -83,7 +83,7 @@ const imageSource = computed(() => {
|
|||||||
<button
|
<button
|
||||||
v-motion-fade-visible-once
|
v-motion-fade-visible-once
|
||||||
v-if="!alreadyAdded"
|
v-if="!alreadyAdded"
|
||||||
class="btn btn-sm px-4 bg-gradient-to-r from-gray-100 to-gray-200 border border-gray-300 text-gray-700 hover:from-gray-200 hover:to-gray-300 hover:text-gray-900 transition"
|
class="btn btn-sm px-4 bg-linear-to-r from-gray-100 to-gray-200 border border-gray-300 text-gray-700 hover:from-gray-200 hover:to-gray-300 hover:text-gray-900 transition"
|
||||||
@click="store.addMedia(props.movie)"
|
@click="store.addMedia(props.movie)"
|
||||||
>
|
>
|
||||||
Add
|
Add
|
||||||
@@ -91,7 +91,7 @@ const imageSource = computed(() => {
|
|||||||
<button
|
<button
|
||||||
v-motion-fade-visible-once
|
v-motion-fade-visible-once
|
||||||
v-else
|
v-else
|
||||||
class="btn btn-sm px-4 bg-gradient-to-r from-red-50 to-red-100 border border-red-200 text-red-600 hover:from-red-100 hover:to-red-200 hover:text-red-700 transition"
|
class="btn btn-sm px-4 bg-linear-to-r from-red-50 to-red-100 border border-red-200 text-red-600 hover:from-red-100 hover:to-red-200 hover:text-red-700 transition"
|
||||||
@click="store.removeMedia(props.movie.Id)"
|
@click="store.removeMedia(props.movie.Id)"
|
||||||
>
|
>
|
||||||
Remove
|
Remove
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ const alreadyAdded = computed(() =>
|
|||||||
v-motion-fade-visible-once
|
v-motion-fade-visible-once
|
||||||
>
|
>
|
||||||
<!-- Poster -->
|
<!-- Poster -->
|
||||||
<figure class="flex-shrink-0">
|
<figure class="shrink-0">
|
||||||
<span v-if="!imageLoaded" class="loading loading-ring loading-lg text-primary"></span>
|
<span v-if="!imageLoaded" class="loading loading-ring loading-lg text-primary"></span>
|
||||||
<img
|
<img
|
||||||
v-show="imageLoaded"
|
v-show="imageLoaded"
|
||||||
@@ -85,19 +85,19 @@ const alreadyAdded = computed(() =>
|
|||||||
<span
|
<span
|
||||||
v-for="g in props.type === 'movie' ? props.movie!.Genres : props.tvSeries!.Genres"
|
v-for="g in props.type === 'movie' ? props.movie!.Genres : props.tvSeries!.Genres"
|
||||||
:key="g.id"
|
:key="g.id"
|
||||||
class="px-3 py-1 rounded-md text-sm bg-gradient-to-r from-gray-100 to-gray-200 text-gray-700 border border-gray-300"
|
class="px-3 py-1 rounded-md text-sm bg-linear-to-r from-gray-100 to-gray-200 text-gray-700 border border-gray-300"
|
||||||
>
|
>
|
||||||
{{ g.name }}
|
{{ g.name }}
|
||||||
</span>
|
</span>
|
||||||
<span
|
<span
|
||||||
v-if="props.type === 'movie'"
|
v-if="props.type === 'movie'"
|
||||||
class="px-3 py-1 rounded-md text-sm bg-gradient-to-r from-gray-100 to-gray-200 text-gray-700 border border-gray-300"
|
class="px-3 py-1 rounded-md text-sm bg-linear-to-r from-gray-100 to-gray-200 text-gray-700 border border-gray-300"
|
||||||
>
|
>
|
||||||
Runtime: {{ props.movie!.Runtime }} min
|
Runtime: {{ props.movie!.Runtime }} min
|
||||||
</span>
|
</span>
|
||||||
<span
|
<span
|
||||||
v-if="props.type === 'tv'"
|
v-if="props.type === 'tv'"
|
||||||
class="px-3 py-1 rounded-md text-sm bg-gradient-to-r from-gray-100 to-gray-200 text-gray-700 border border-gray-300"
|
class="px-3 py-1 rounded-md text-sm bg-linear-to-r from-gray-100 to-gray-200 text-gray-700 border border-gray-300"
|
||||||
>
|
>
|
||||||
Seasons: {{ props.tvSeries!.NumberOfSeasons }}
|
Seasons: {{ props.tvSeries!.NumberOfSeasons }}
|
||||||
</span>
|
</span>
|
||||||
@@ -108,14 +108,14 @@ const alreadyAdded = computed(() =>
|
|||||||
<template v-if="(props.movie && props.media) || (props.tvSeries && props.media)">
|
<template v-if="(props.movie && props.media) || (props.tvSeries && props.media)">
|
||||||
<button
|
<button
|
||||||
v-if="!alreadyAdded"
|
v-if="!alreadyAdded"
|
||||||
class="btn px-6 bg-gradient-to-r from-gray-100 to-gray-200 border border-gray-300 text-gray-700 hover:from-gray-200 hover:to-gray-300"
|
class="btn px-6 bg-linear-to-r from-gray-100 to-gray-200 border border-gray-300 text-gray-700 hover:from-gray-200 hover:to-gray-300"
|
||||||
@click="store.addMedia(props.media)"
|
@click="store.addMedia(props.media)"
|
||||||
>
|
>
|
||||||
Add to list
|
Add to list
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
v-else
|
v-else
|
||||||
class="btn px-6 bg-gradient-to-r from-red-50 to-red-100 border border-red-200 text-red-600 hover:from-red-100 hover:to-red-200"
|
class="btn px-6 bg-linear-to-r from-red-50 to-red-100 border border-red-200 text-red-600 hover:from-red-100 hover:to-red-200"
|
||||||
@click="store.removeMedia(props.media.Id)"
|
@click="store.removeMedia(props.media.Id)"
|
||||||
>
|
>
|
||||||
Remove from library
|
Remove from library
|
||||||
@@ -132,7 +132,7 @@ const alreadyAdded = computed(() =>
|
|||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
class="btn relative flex items-center gap-2 px-6 bg-gradient-to-r from-indigo-500 to-violet-500 text-white border-0 shadow-md hover:opacity-90 transition"
|
class="btn relative flex items-center gap-2 px-6 bg-linear-to-r from-indigo-500 to-violet-500 text-white border-0 shadow-md hover:opacity-90 transition"
|
||||||
>
|
>
|
||||||
<svg
|
<svg
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ const emit = defineEmits<{ (e: 'loaded', id: string): void; (e: 'loadMore'): voi
|
|||||||
|
|
||||||
<div v-if="props.isSearch && props.movies.length > 0" class="flex justify-center mt-8">
|
<div v-if="props.isSearch && props.movies.length > 0" class="flex justify-center mt-8">
|
||||||
<button
|
<button
|
||||||
class="btn px-6 bg-gradient-to-r from-gray-100 to-gray-200 border border-gray-300 text-gray-700 hover:from-gray-200 hover:to-gray-300 hover:text-gray-900 disabled:opacity-50"
|
class="btn px-6 bg-linear-to-r from-gray-100 to-gray-200 border border-gray-300 text-gray-700 hover:from-gray-200 hover:to-gray-300 hover:text-gray-900 disabled:opacity-50"
|
||||||
@click="emit('loadMore')"
|
@click="emit('loadMore')"
|
||||||
:disabled="props.loadingMore"
|
:disabled="props.loadingMore"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
<!-- Logo -->
|
<!-- Logo -->
|
||||||
<RouterLink
|
<RouterLink
|
||||||
class="btn btn-ghost normal-case text-2xl font-bold bg-gradient-to-r from-gray-700 to-gray-500 bg-clip-text text-transparent"
|
class="btn btn-ghost normal-case text-2xl font-bold bg-linear-to-r from-gray-700 to-gray-500 bg-clip-text text-transparent"
|
||||||
to="/"
|
to="/"
|
||||||
>
|
>
|
||||||
To Vue
|
To Vue
|
||||||
@@ -65,7 +65,7 @@
|
|||||||
<!-- Right -->
|
<!-- Right -->
|
||||||
<div class="navbar-end">
|
<div class="navbar-end">
|
||||||
<RouterLink
|
<RouterLink
|
||||||
class="btn px-5 bg-gradient-to-r from-gray-100 to-gray-200 border border-gray-300 text-gray-700 hover:from-gray-200 hover:to-gray-300"
|
class="btn px-5 bg-linear-to-r from-gray-100 to-gray-200 border border-gray-300 text-gray-700 hover:from-gray-200 hover:to-gray-300"
|
||||||
to="/list"
|
to="/list"
|
||||||
>
|
>
|
||||||
Go to library
|
Go to library
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ function onSubmit() {
|
|||||||
<!--
|
<!--
|
||||||
<button
|
<button
|
||||||
type="submit"
|
type="submit"
|
||||||
class="px-4 py-2 bg-gradient-to-r from-gray-100 to-gray-200
|
class="px-4 py-2 bg-linear-to-r from-gray-100 to-gray-200
|
||||||
border-l border-gray-200 text-gray-600 hover:text-gray-800
|
border-l border-gray-200 text-gray-600 hover:text-gray-800
|
||||||
transition"
|
transition"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ watch(searchQuery, () => {
|
|||||||
<div class="container mx-auto px-4 py-12" v-motion-fade-visible-once>
|
<div class="container mx-auto px-4 py-12" v-motion-fade-visible-once>
|
||||||
<!-- Title -->
|
<!-- Title -->
|
||||||
<h1
|
<h1
|
||||||
class="text-4xl font-extrabold text-center mb-10 bg-gradient-to-r from-gray-700 to-gray-500 bg-clip-text text-transparent"
|
class="text-4xl font-extrabold text-center mb-10 bg-linear-to-r from-gray-700 to-gray-500 bg-clip-text text-transparent"
|
||||||
>
|
>
|
||||||
Add a Movie
|
Add a Movie
|
||||||
</h1>
|
</h1>
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ onMounted(async () => {
|
|||||||
<!-- Details -->
|
<!-- Details -->
|
||||||
<MediaDetails
|
<MediaDetails
|
||||||
v-else-if="movieDetails || tvSeriesDetails"
|
v-else-if="movieDetails || tvSeriesDetails"
|
||||||
:type="(route.params.type as 'movie' | 'tv')"
|
:type="route.params.type === 'movie' ? 'movie' : 'tv'"
|
||||||
:media="media"
|
:media="media"
|
||||||
:movie="movieDetails"
|
:movie="movieDetails"
|
||||||
:tv-series="tvSeriesDetails"
|
:tv-series="tvSeriesDetails"
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
<RouterLink
|
<RouterLink
|
||||||
to="/add"
|
to="/add"
|
||||||
class="btn px-8 py-3 text-lg font-medium bg-gradient-to-r from-gray-100 to-gray-200 border border-gray-300 text-gray-700 hover:from-gray-200 hover:to-gray-300 hover:text-gray-900 transition"
|
class="btn px-8 py-3 text-lg font-medium bg-linear-to-r from-gray-100 to-gray-200 border border-gray-300 text-gray-700 hover:from-gray-200 hover:to-gray-300 hover:text-gray-900 transition"
|
||||||
>
|
>
|
||||||
Get Started
|
Get Started
|
||||||
</RouterLink>
|
</RouterLink>
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ const store = useMediaStore()
|
|||||||
<template>
|
<template>
|
||||||
<div class="container mx-auto px-4 py-12" v-motion-fade-visible-once>
|
<div class="container mx-auto px-4 py-12" v-motion-fade-visible-once>
|
||||||
<h1
|
<h1
|
||||||
class="text-4xl font-extrabold text-center mb-10 bg-gradient-to-r from-gray-700 to-gray-500 bg-clip-text text-transparent"
|
class="text-4xl font-extrabold text-center mb-10 bg-linear-to-r from-gray-700 to-gray-500 bg-clip-text text-transparent"
|
||||||
>
|
>
|
||||||
Movie Library
|
Movie Library
|
||||||
</h1>
|
</h1>
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div
|
<div
|
||||||
class="min-h-screen flex flex-col items-center justify-center bg-gradient-to-b from-gray-50 to-white px-4"
|
class="min-h-screen flex flex-col items-center justify-center bg-linear-to-b from-gray-50 to-white px-4"
|
||||||
>
|
>
|
||||||
<!-- Big 404 -->
|
<!-- Big 404 -->
|
||||||
<h1
|
<h1
|
||||||
class="text-8xl font-extrabold mb-4 bg-gradient-to-r from-gray-700 to-gray-500 bg-clip-text text-transparent"
|
class="text-8xl font-extrabold mb-4 bg-linear-to-r from-gray-700 to-gray-500 bg-clip-text text-transparent"
|
||||||
>
|
>
|
||||||
404
|
404
|
||||||
</h1>
|
</h1>
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
<!-- Button back home -->
|
<!-- Button back home -->
|
||||||
<RouterLink
|
<RouterLink
|
||||||
to="/"
|
to="/"
|
||||||
class="btn px-6 py-3 bg-gradient-to-r from-gray-100 to-gray-200 border border-gray-300 text-gray-700 hover:from-gray-200 hover:to-gray-300 hover:text-gray-900 transition"
|
class="btn px-6 py-3 bg-linear-to-r from-gray-100 to-gray-200 border border-gray-300 text-gray-700 hover:from-gray-200 hover:to-gray-300 hover:text-gray-900 transition"
|
||||||
>
|
>
|
||||||
Back to Home
|
Back to Home
|
||||||
</RouterLink>
|
</RouterLink>
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ const isLoaded = ref(false)
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="flex justify-center min-h-auto px-4 py-12 bg-gradient-to-b from-gray-50 to-white">
|
<div class="flex justify-center min-h-auto px-4 py-12 bg-linear-to-b from-gray-50 to-white">
|
||||||
<div
|
<div
|
||||||
class="w-full max-w-6xl bg-white/70 backdrop-blur-md border border-gray-200/60 shadow-md rounded-xl p-4 lg:p-8 transition flex flex-col items-center"
|
class="w-full max-w-6xl bg-white/70 backdrop-blur-md border border-gray-200/60 shadow-md rounded-xl p-4 lg:p-8 transition flex flex-col items-center"
|
||||||
v-motion-fade-visible-once
|
v-motion-fade-visible-once
|
||||||
@@ -18,7 +18,7 @@ const isLoaded = ref(false)
|
|||||||
<div class="flex items-center gap-3 mb-6">
|
<div class="flex items-center gap-3 mb-6">
|
||||||
<h1 class="text-3xl font-bold text-gray-700">
|
<h1 class="text-3xl font-bold text-gray-700">
|
||||||
Watch <br />
|
Watch <br />
|
||||||
<span class="bg-gradient-to-r from-indigo-500 to-cyan-400 bg-clip-text text-transparent">
|
<span class="bg-linear-to-r from-indigo-500 to-cyan-400 bg-clip-text text-transparent">
|
||||||
{{ movieName }}
|
{{ movieName }}
|
||||||
</span>
|
</span>
|
||||||
</h1>
|
</h1>
|
||||||
|
|||||||
Reference in New Issue
Block a user