ani-web 2.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +220 -0
- package/client/dist/assets/AnimeInfo-B88ZA3gl.js +1 -0
- package/client/dist/assets/AnimeInfo-R63luGTP.css +1 -0
- package/client/dist/assets/AnimeInfoPage-xGVarrXG.js +2 -0
- package/client/dist/assets/Button-Fq9KaUOg.css +1 -0
- package/client/dist/assets/Button-lkEUHIDS.js +1 -0
- package/client/dist/assets/ErrorMessage-BVWNgHMx.css +1 -0
- package/client/dist/assets/ErrorMessage-BXKDLzn8.js +1 -0
- package/client/dist/assets/Home-O1FbN8t_.js +1 -0
- package/client/dist/assets/Home-r0eYbWNc.css +1 -0
- package/client/dist/assets/Insights-CF4K-oO5.css +1 -0
- package/client/dist/assets/Insights-opcB-aTo.js +1 -0
- package/client/dist/assets/MAL-BGM33N5c.js +1 -0
- package/client/dist/assets/MAL-DeQNXXPx.css +1 -0
- package/client/dist/assets/Player-BarbgKjI.css +1 -0
- package/client/dist/assets/Player-CSyGax33.js +9 -0
- package/client/dist/assets/PlayerSettings-BaCVQyw6.js +1 -0
- package/client/dist/assets/PlayerSettings-l6aLKrHh.css +1 -0
- package/client/dist/assets/QueueRail-Cxn5U8kE.js +1 -0
- package/client/dist/assets/QueueRail-DOM_pWkE.css +1 -0
- package/client/dist/assets/RemoveConfirmationModal-BBiogSdf.css +1 -0
- package/client/dist/assets/RemoveConfirmationModal-DatCZQKq.js +1 -0
- package/client/dist/assets/Search-BzO-aRP7.css +1 -0
- package/client/dist/assets/Search-DJxo3BYH.js +1 -0
- package/client/dist/assets/SearchableSelect-BkCrf6E8.css +1 -0
- package/client/dist/assets/SearchableSelect-BzYsMz8B.js +1 -0
- package/client/dist/assets/Settings-Bv9fX-x3.css +1 -0
- package/client/dist/assets/Settings-C5adinOe.js +1 -0
- package/client/dist/assets/SynopsisText-C3AK-aRc.js +1 -0
- package/client/dist/assets/SynopsisText-DsI3mW5v.css +1 -0
- package/client/dist/assets/ToggleSwitch-BIlQxIjg.css +1 -0
- package/client/dist/assets/ToggleSwitch-CrXim14A.js +1 -0
- package/client/dist/assets/Watchlist-CXw0vbNx.js +1 -0
- package/client/dist/assets/Watchlist-a2RHQogs.css +1 -0
- package/client/dist/assets/hls.light-DcbkToIY.js +27 -0
- package/client/dist/assets/index-BzX_xmnf.css +1 -0
- package/client/dist/assets/index-Ciivz6fh.js +178 -0
- package/client/dist/assets/useAnimeInfoData-Dqthchpa.js +1 -0
- package/client/dist/assets/useIsMobile-BviODivc.js +1 -0
- package/client/dist/assets/vendor-Bc4EraM_.js +3 -0
- package/client/dist/favicon.ico +0 -0
- package/client/dist/index.html +35 -0
- package/client/dist/logo.png +0 -0
- package/client/dist/placeholder.svg +4 -0
- package/client/dist/robots.txt +3 -0
- package/client/package.json +58 -0
- package/orchestrator.js +323 -0
- package/package.json +88 -0
- package/server/.env +1 -0
- package/server/dist/config.js +89 -0
- package/server/dist/constants.json +1359 -0
- package/server/dist/controllers/auth.controller.js +215 -0
- package/server/dist/controllers/data.controller.js +232 -0
- package/server/dist/controllers/insights.controller.js +200 -0
- package/server/dist/controllers/proxy.controller.js +353 -0
- package/server/dist/controllers/settings.controller.js +159 -0
- package/server/dist/controllers/watchlist.controller.js +749 -0
- package/server/dist/db.js +152 -0
- package/server/dist/discord-rpc.js +279 -0
- package/server/dist/github-sync.js +342 -0
- package/server/dist/google.js +310 -0
- package/server/dist/logger.js +21 -0
- package/server/dist/providers/123anime.provider.js +226 -0
- package/server/dist/providers/allanime.provider.js +736 -0
- package/server/dist/providers/animepahe.provider.js +457 -0
- package/server/dist/providers/animeya.provider.js +787 -0
- package/server/dist/providers/megaplay.provider.js +264 -0
- package/server/dist/providers/provider.interface.js +2 -0
- package/server/dist/rclone.js +126 -0
- package/server/dist/repositories/insights.repository.js +42 -0
- package/server/dist/repositories/notifications.repository.js +30 -0
- package/server/dist/repositories/queue.repository.js +38 -0
- package/server/dist/repositories/settings.repository.js +14 -0
- package/server/dist/repositories/shows-meta.repository.js +41 -0
- package/server/dist/repositories/watched-episodes.repository.js +67 -0
- package/server/dist/repositories/watchlist.repository.js +80 -0
- package/server/dist/routes/auth.routes.js +26 -0
- package/server/dist/routes/data.routes.js +42 -0
- package/server/dist/routes/insights.routes.js +12 -0
- package/server/dist/routes/proxy.routes.js +14 -0
- package/server/dist/routes/settings.routes.js +27 -0
- package/server/dist/routes/watchlist.routes.js +46 -0
- package/server/dist/server.js +229 -0
- package/server/dist/sync-config.js +28 -0
- package/server/dist/sync.js +427 -0
- package/server/dist/utils/db-utils.js +15 -0
- package/server/dist/utils/env.utils.js +79 -0
- package/server/dist/utils/machine-id.js +46 -0
- package/server/dist/utils/request-context.js +5 -0
- package/server/package.json +19 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 serifpersia
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
<img src="client/public/logo.png" alt="ani-web logo" width="400"/>
|
|
4
|
+
|
|
5
|
+
_A local-first anime media client focused on performance, privacy, and personal library tracking._
|
|
6
|
+
|
|
7
|
+
[](https://opensource.org/licenses/MIT)
|
|
8
|
+

|
|
9
|
+
[](https://github.com/serifpersia/ani-web)
|
|
10
|
+
|
|
11
|
+

|
|
12
|
+
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
**ani-web** is a lightweight Node.js application for browsing anime metadata, managing a personal
|
|
18
|
+
watchlist, and tracking viewing progress through a clean frontend running on your own machine.
|
|
19
|
+
|
|
20
|
+
<div align="center">
|
|
21
|
+
<sub>If ani-web is useful to you, consider giving the repo a ⭐. It helps others find the project.</sub>
|
|
22
|
+
</div>
|
|
23
|
+
|
|
24
|
+
## Features
|
|
25
|
+
|
|
26
|
+
Based on a lightweight architecture, ani-web includes:
|
|
27
|
+
|
|
28
|
+
- **Performance First:** Designed specifically to run smoothly on low-end hardware.
|
|
29
|
+
- **Built-in Search & Discovery:** Explore trending and popular anime metadata.
|
|
30
|
+
- **Watchlist Management:** Keep track of current, completed, and planned titles.
|
|
31
|
+
- **User Insights:** View personal library and progress statistics.
|
|
32
|
+
- **MAL Integration:** Seamlessly import your lists from MyAnimeList.
|
|
33
|
+
|
|
34
|
+
## Join ani-web Discord server
|
|
35
|
+
|
|
36
|
+
Be part of the ani-web Discord Server Community where you can connect with fellow users, ask questions, and share your experiences:
|
|
37
|
+
|
|
38
|
+
## [](https://discord.gg/2FTSPXCsvn)
|
|
39
|
+
|
|
40
|
+
## Getting Started
|
|
41
|
+
|
|
42
|
+
### Prerequisites
|
|
43
|
+
|
|
44
|
+
- **Node.js**: Version 22.5.0 or higher ([Download here](https://nodejs.org/)).
|
|
45
|
+
|
|
46
|
+
### ⚡ Quick Install
|
|
47
|
+
|
|
48
|
+
Open a terminal and run:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
npm install -g ani-web
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
> **Note:** After the one-time setup, you can start the application anytime, from any directory, by simply opening a terminal and typing `ani-web`.
|
|
55
|
+
|
|
56
|
+
### 📱 Android Installation (Termux)
|
|
57
|
+
|
|
58
|
+
You can run **ani-web** on your Android device using the [Termux](https://termux.dev/) app. No root is required.
|
|
59
|
+
|
|
60
|
+
1. **Install Termux:** Download and install it from [F-Droid](https://f-droid.org/en/packages/com.termux/) or the [Termux website](https://termux.dev/).
|
|
61
|
+
2. **Update packages:**
|
|
62
|
+
```bash
|
|
63
|
+
pkg update && pkg upgrade
|
|
64
|
+
```
|
|
65
|
+
_Press `y` and `Enter` when prompted to confirm updates._
|
|
66
|
+
3. **Install Node.js:**
|
|
67
|
+
```bash
|
|
68
|
+
pkg install nodejs
|
|
69
|
+
```
|
|
70
|
+
_Press `y` and `Enter` when prompted._
|
|
71
|
+
4. **Install ani-web:**
|
|
72
|
+
```bash
|
|
73
|
+
npm install -g ani-web
|
|
74
|
+
```
|
|
75
|
+
5. **Run the app:**
|
|
76
|
+
```bash
|
|
77
|
+
ani-web
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Once running, you can access the interface by navigating to `http://localhost:3000/` in your mobile browser.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Uninstalling
|
|
85
|
+
|
|
86
|
+
If you need to remove the application from your system, simply open a terminal and run:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
npm uninstall -g ani-web
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
_This safely deletes the application files and removes the `ani-web` command from your system's PATH._
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Manual Installation (For Developers)
|
|
97
|
+
|
|
98
|
+
Want to poke around the source code or contribute? You can build the project manually.
|
|
99
|
+
|
|
100
|
+
**1. Clone the repository:**
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
git clone https://github.com/serifpersia/ani-web.git
|
|
104
|
+
cd ani-web
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**2. Install, Build, and Run:**
|
|
108
|
+
Use provided run scripts that offer a menu to choose between a **Development** or **Production** setup. To run a development environment manually:
|
|
109
|
+
|
|
110
|
+
1. Run `npm install` to install core dependencies.
|
|
111
|
+
2. Run `npm run install:client` to install frontend tools (Vite, React, etc).
|
|
112
|
+
3. Run `npm run build` to build the source code.
|
|
113
|
+
|
|
114
|
+
**On Linux / macOS:**
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
chmod +x run.sh
|
|
118
|
+
./run.sh
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**On Windows:**
|
|
122
|
+
|
|
123
|
+
```bat
|
|
124
|
+
run.bat
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Commands
|
|
128
|
+
|
|
129
|
+
Once installed globally, you can use the following commands:
|
|
130
|
+
|
|
131
|
+
- `ani-web` - Start the application.
|
|
132
|
+
- `ani-web --version` (or `-v`) - Check your installed version.
|
|
133
|
+
|
|
134
|
+
### Data Location
|
|
135
|
+
|
|
136
|
+
ani-web stores your persistent files in your OS app-data folder instead of inside the globally installed npm package:
|
|
137
|
+
|
|
138
|
+
- **Windows:** `%APPDATA%\ani-web`
|
|
139
|
+
- **macOS:** `~/Library/Application Support/ani-web`
|
|
140
|
+
- **Linux:** `$XDG_DATA_HOME/ani-web` or `~/.local/share/ani-web`
|
|
141
|
+
|
|
142
|
+
This folder contains your `.env`, database files, sync manifests, and Google token file. Existing installs will automatically migrate legacy files from the old `server/` folder on first launch when those files are still present.
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## Cloud Sync (Optional)
|
|
147
|
+
|
|
148
|
+
**ani-web** can automatically sync your local data to the cloud. The app stays local-first: your
|
|
149
|
+
main database is a local SQLite file, and cloud sync exports/imports the app data as JSON when
|
|
150
|
+
needed.
|
|
151
|
+
|
|
152
|
+
Sync provider priority is:
|
|
153
|
+
|
|
154
|
+
1. **GitHub Cloud Sync**
|
|
155
|
+
2. **Google Drive Sync**
|
|
156
|
+
3. **Rclone Sync**
|
|
157
|
+
|
|
158
|
+
If GitHub is connected, it is used first. Google Drive and Rclone remain available as fallback or
|
|
159
|
+
legacy sync options.
|
|
160
|
+
|
|
161
|
+
### 1. GitHub Cloud Sync
|
|
162
|
+
|
|
163
|
+
GitHub Cloud Sync is the recommended setup. It uses GitHub's device login flow, so users do not
|
|
164
|
+
need to create a Google Cloud project, manage client secrets, or install external sync tools.
|
|
165
|
+
|
|
166
|
+
1. Open **ani-web**.
|
|
167
|
+
2. Go to **Settings** -> **Synchronization**.
|
|
168
|
+
3. Click **Sign in with GitHub**.
|
|
169
|
+
4. Open the shown GitHub device URL, enter the code, and approve access.
|
|
170
|
+
|
|
171
|
+
ani-web will create a private GitHub repository named `aniweb-sync-data` in your account and store
|
|
172
|
+
your sync data in JSON:
|
|
173
|
+
|
|
174
|
+
- Production mode uses `sync.json`.
|
|
175
|
+
- Development mode uses `sync.dev.json`.
|
|
176
|
+
|
|
177
|
+
The app requests GitHub repository access because it needs to create and update this private sync
|
|
178
|
+
repository. The GitHub token is stored locally in your ani-web app-data `.env` file.
|
|
179
|
+
|
|
180
|
+
### 2. Google Drive Sync
|
|
181
|
+
|
|
182
|
+
Google Drive sync is still supported. To use it, you need to provide your own Google Cloud
|
|
183
|
+
credentials:
|
|
184
|
+
|
|
185
|
+
1. Go to the [Google Cloud Console](https://console.cloud.google.com/).
|
|
186
|
+
2. Create a new project and enable the **Google Drive API**.
|
|
187
|
+
3. Configure the **OAuth Consent Screen** (set it to "External" and add yourself as a test user).
|
|
188
|
+
4. Create **OAuth 2.0 Client IDs** (Application type: "Web application").
|
|
189
|
+
5. Add `http://localhost:3000/api/auth/google/callback` to the **Authorized redirect URIs**.
|
|
190
|
+
6. Open **ani-web**, go to **Settings** -> **Synchronization**, and enter your **Client ID** and
|
|
191
|
+
**Client Secret** in the Google authentication section.
|
|
192
|
+
|
|
193
|
+
### 3. Rclone Sync
|
|
194
|
+
|
|
195
|
+
If you prefer using **Mega**, **Dropbox**, or other providers, you can use [Rclone](https://rclone.org/):
|
|
196
|
+
|
|
197
|
+
1. Install Rclone on your system and ensure it's in your PATH.
|
|
198
|
+
2. Configure a remote using `rclone config`.
|
|
199
|
+
3. In **ani-web**, go to **Settings** -> **Synchronization** and select your remote name from the
|
|
200
|
+
Rclone dropdown.
|
|
201
|
+
|
|
202
|
+
Rclone is used only when GitHub and Google Drive sync are not active.
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## Disclaimer
|
|
207
|
+
|
|
208
|
+
ani-web is a local-first media client. It does not host, upload, store, or distribute copyrighted
|
|
209
|
+
video content.
|
|
210
|
+
|
|
211
|
+
Users are responsible for configuring and using the application in compliance with applicable laws
|
|
212
|
+
in their jurisdiction. All trademarks, titles, artwork, metadata, and copyrighted material belong to
|
|
213
|
+
their respective owners.
|
|
214
|
+
|
|
215
|
+
This project is provided for personal library management, metadata browsing, and local application
|
|
216
|
+
experimentation. The maintainers do not endorse or encourage copyright infringement.
|
|
217
|
+
|
|
218
|
+
## License
|
|
219
|
+
|
|
220
|
+
This project is open-source and licensed under the **MIT License** - see the [LICENSE](LICENSE) file for details.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{m as B,f as D,d as u,a as M,T as p,u as e}from"./vendor-Bc4EraM_.js";import{e as Q,j as A,a3 as F,k as P,f as _,g as q,Q as x,ar as G,P as U,a7 as g,a8 as v,b as W,c as $}from"./index-Ciivz6fh.js";import{u as z}from"./useAnimeInfoData-Dqthchpa.js";import{g as N}from"./useIsMobile-BviODivc.js";import{S as O,A as E}from"./SynopsisText-C3AK-aRc.js";const V="_container_1jehd_1",H="_heroSection_1jehd_11",K="_bannerContainer_1jehd_17",L="_banner_1jehd_17",R="_bannerOverlay_1jehd_37",J="_heroContent_1jehd_49",X="_posterContainer_1jehd_62",Y="_floatIn_1jehd_1",Z="_poster_1jehd_62",ee="_infoGlass_1jehd_86",ne="_slideUpIn_1jehd_1",te="_title_1jehd_100",se="_quickMeta_1jehd_109",ae="_metaItem_1jehd_117",oe="_iconStar_1jehd_126",ie="_iconTv_1jehd_129",ce="_iconType_1jehd_132",le="_iconClock_1jehd_135",re="_genres_1jehd_139",de="_genre_1jehd_139",_e="_synopsisSection_1jehd_165",he="_sectionTitleSmall_1jehd_170",me="_description_1jehd_178",ue="_actions_1jehd_186",pe="_watchBtn_1jehd_192",ge="_watchlistBtn_1jehd_214",ve="_active_1jehd_234",Ne="_detailsSection_1jehd_241",ke="_detailsToggleBtn_1jehd_247",je="_expandedContent_1jehd_270",fe="_fadeIn_1jehd_1",be="_detailsGridContainer_1jehd_274",Ce="_detailItem_1jehd_284",Ie="_airingValue_1jehd_303",Se="_loadingDetails_1jehd_308",Te="_spinner_1jehd_317",ye="_spin_1jehd_317",we="_heroSkeleton_1jehd_332",Be="_skeletonBanner_1jehd_336",De="_pulse_1jehd_1",Me="_skeletonContent_1jehd_342",Qe="_skeletonPoster_1jehd_351",Ae="_skeletonInfo_1jehd_358",Fe="_skeletonTitle_1jehd_367",Pe="_skeletonMeta_1jehd_374",qe="_skeletonDesc_1jehd_381",xe="_skeletonActions_1jehd_388",n={container:V,heroSection:H,bannerContainer:K,banner:L,bannerOverlay:R,heroContent:J,posterContainer:X,floatIn:Y,poster:Z,infoGlass:ee,slideUpIn:ne,title:te,quickMeta:se,metaItem:ae,iconStar:oe,iconTv:ie,iconType:ce,iconClock:le,genres:re,genre:de,synopsisSection:_e,sectionTitleSmall:he,description:me,actions:ue,watchBtn:pe,watchlistBtn:ge,active:ve,detailsSection:Ne,detailsToggleBtn:ke,expandedContent:je,fadeIn:fe,detailsGridContainer:be,detailItem:Ce,airingValue:Ie,loadingDetails:Se,spinner:Te,spin:ye,heroSkeleton:we,skeletonBanner:Be,pulse:De,skeletonContent:Me,skeletonPoster:Qe,skeletonInfo:Ae,skeletonTitle:Fe,skeletonMeta:Pe,skeletonDesc:qe,skeletonActions:xe};function Oe(){const{id:s}=B(),k=D(),{titlePreference:l}=Q(),[i,j]=u(!1),[r,h]=u(!1),{showMeta:t,loadingMeta:f,toggleWatchlist:b,inWatchlist:d}=z(s),{data:m=[]}=A(),C=F(),I=P(),{data:c}=M({queryKey:["suggestedEpisode",s],queryFn:()=>N(s),enabled:!!s}),S=()=>t?.name?l==="name"?t.name:l==="nativeName"?t.names?.native||t.name:l==="englishName"&&t.names?.english||t.name:"",T=()=>{s&&k(`/watch/${s}`)},o=p(()=>{if(!(!s||!c))return m.find(a=>a.showId===s&&a.episodeNumber===c.episodeNumber)},[m,s,c]),y=async()=>{if(!s||!t)return;const a=c||await N(s);if(o){I.mutate({showId:s,episodeNumber:o.episodeNumber});return}h(!0),C.mutate({showId:s,episodeNumber:a.episodeNumber,showName:t.name||t.names?.romaji,showThumbnail:t.thumbnail,nativeName:t.names?.native,englishName:t.names?.english,type:t.type}),window.setTimeout(()=>h(!1),1e3)},w=p(()=>t?.bannerImage?_(t.bannerImage):t?.thumbnail?_(t.thumbnail,1200,450):"",[t?.bannerImage,t?.thumbnail]);return f||!t?.name?e("div",{className:n.container,children:e("div",{className:n.heroSkeleton,children:[e("div",{className:n.skeletonBanner}),e("div",{className:n.skeletonContent,children:[e("div",{className:n.skeletonPoster}),e("div",{className:n.skeletonInfo,children:[e("div",{className:n.skeletonTitle}),e("div",{className:n.skeletonMeta}),e("div",{className:n.skeletonDesc}),e("div",{className:n.skeletonActions})]})]})]})}):e("div",{className:n.container,children:[e("div",{className:n.heroSection,children:[e("div",{className:n.bannerContainer,children:[e("div",{className:n.banner,style:{backgroundImage:`url(${w})`}}),e("div",{className:n.bannerOverlay})]}),e("div",{className:n.heroContent,children:[e("div",{className:n.posterContainer,children:e("img",{src:_(t.thumbnail||"",320,480),alt:t.name,className:n.poster})}),e("div",{className:n.infoGlass,children:[e("div",{className:n.topInfo,children:[e("h1",{className:n.title,children:S()}),e("div",{className:n.quickMeta,children:[t.score&&e("div",{className:n.metaItem,children:[e(q,{className:n.iconStar}),e("span",{children:t.score})]}),t.status&&e("div",{className:n.metaItem,children:[e(x,{className:n.iconTv}),e("span",{children:t.status})]}),t.type&&e("div",{className:n.metaItem,children:[e(G,{className:n.iconType}),e("span",{children:t.type})]})]}),t.genres&&t.genres.length>0&&e("div",{className:n.genres,children:t.genres.slice(0,5).map(a=>e("span",{className:n.genre,children:a.name},a.name))})]}),e("div",{className:n.synopsisSection,children:[e("h2",{className:n.sectionTitleSmall,children:"Synopsis"}),e(O,{text:t.description?t.description.replace(/<[^>]*>?/gm,""):"",emptyText:"No description available."})]}),e("div",{className:n.actions,children:[e("button",{className:n.watchBtn,onClick:T,children:[e(U,{size:14}),"Start Watching"]}),e("button",{className:`${n.watchlistBtn} ${d?n.active:""}`,onClick:b,children:[d?e(g,{size:14}):e(v,{size:14}),d?"In Watchlist":"Add to Watchlist"]}),e("button",{className:`${n.watchlistBtn} ${o||r?n.active:""}`,onClick:y,children:[o||r?e(g,{size:14}):e(v,{size:14}),o||r?"Queued":"Queue"]})]})]})]})]}),e("div",{className:n.detailsSection,children:[e("button",{className:n.detailsToggleBtn,onClick:()=>{j(!i)},children:[i?e(W,{}):e($,{}),i?"Hide Details":"Show Details"]}),i&&e("div",{className:n.expandedContent,children:e(E,{showMeta:t,styles:n})})]})]})}export{Oe as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._container_1jehd_1{max-width:var(--max-width);margin:0 auto;padding:0;min-height:100vh;background:var(--bg-main);overflow-x:hidden}._heroSection_1jehd_11{position:relative;width:100%;padding-bottom:var(--space-12)}._bannerContainer_1jehd_17{position:absolute;top:0;left:0;right:0;height:500px;overflow:hidden;z-index:0}._banner_1jehd_17{width:100%;height:100%;background-size:cover;background-position:center 20%;filter:brightness(.3) saturate(1.1);transform:scale(1.05);transition:transform var(--transition-slow)}._bannerOverlay_1jehd_37{position:absolute;inset:0;background:linear-gradient(to bottom,rgba(5,5,5,.4) 0%,rgba(5,5,5,.7) 40%,var(--bg-main) 100%);box-shadow:inset 0 -100px 100px -20px var(--bg-main)}._heroContent_1jehd_49{position:relative;z-index:1;display:grid;grid-template-columns:320px 1fr;gap:var(--space-10);max-width:1200px;margin:0 auto;padding:var(--space-16) var(--space-6) 0;align-items:flex-start}._posterContainer_1jehd_62{position:sticky;top:120px;border-radius:var(--radius-lg);overflow:hidden;box-shadow:0 20px 50px #00000080;transform:translateY(0);animation:_floatIn_1jehd_1 .8s var(--ease-spring);border:1px solid var(--border-secondary)}._poster_1jehd_62{width:100%;display:block;object-fit:cover;aspect-ratio:2 / 3;transition:transform var(--transition-base)}._posterContainer_1jehd_62:hover ._poster_1jehd_62{transform:scale(1.05)}._infoGlass_1jehd_86{background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);border-radius:var(--radius-xl);padding:var(--space-8);box-shadow:var(--glass-shadow);animation:_slideUpIn_1jehd_1 .8s var(--ease-smooth);display:flex;flex-direction:column;gap:var(--space-8)}._title_1jehd_100{font-size:clamp(1.5rem,4vw,2.5rem);font-weight:800;color:var(--text-primary);line-height:1.1;margin:0 0 var(--space-4);letter-spacing:-.02em}._quickMeta_1jehd_109{display:flex;flex-wrap:wrap;gap:var(--space-6);align-items:center;margin-bottom:var(--space-2)}._metaItem_1jehd_117{display:flex;align-items:center;gap:var(--space-2);color:var(--text-secondary);font-size:var(--font-size-sm);font-weight:500}._iconStar_1jehd_126{color:#fbbf24}._iconTv_1jehd_129{color:var(--accent)}._iconType_1jehd_132{color:#10b981}._iconClock_1jehd_135{color:#60a5fa}._genres_1jehd_139{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-4)}._genre_1jehd_139{background:#ffffff0d;padding:.4rem 1rem;border-radius:var(--radius-full);font-size:var(--font-size-xs);color:var(--text-secondary);border:1px solid var(--border-primary);transition:all var(--transition-fast);font-weight:500}._genre_1jehd_139:hover{background:var(--accent);border-color:var(--accent);color:#fff;transform:translateY(-2px)}._synopsisSection_1jehd_165{border-top:1px solid var(--border-primary);padding-top:var(--space-6)}._sectionTitleSmall_1jehd_170{font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.1em;color:var(--text-tertiary);margin-bottom:var(--space-3)}._description_1jehd_178{font-size:var(--font-size-base);color:var(--text-secondary);line-height:1.7;max-width:800px}._actions_1jehd_186{display:flex;gap:var(--space-4);margin-top:auto}._watchBtn_1jehd_192{display:inline-flex;align-items:center;gap:var(--space-3);background:linear-gradient(135deg,var(--accent) 0%,var(--accent-dark) 100%);color:#fff;padding:.8rem 1.8rem;border-radius:var(--radius-md);font-weight:600;font-size:var(--font-size-sm);border:none;cursor:pointer;transition:all var(--transition-base);box-shadow:0 4px 15px var(--accent-glow)}._watchBtn_1jehd_192:hover{transform:translateY(-2px);box-shadow:0 8px 25px var(--accent-glow);opacity:.95}._watchlistBtn_1jehd_214{display:inline-flex;align-items:center;gap:var(--space-3);background:#ffffff0d;color:var(--text-primary);border:1px solid var(--border-secondary);padding:.8rem 1.8rem;border-radius:var(--radius-md);font-weight:600;font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-base)}._watchlistBtn_1jehd_214:hover{background:#ffffff1a;border-color:var(--text-secondary)}._watchlistBtn_1jehd_214._active_1jehd_234{background:#10b9811a;border-color:#10b981;color:#10b981}._detailsSection_1jehd_241{max-width:1200px;margin:0 auto var(--space-16);padding:0 var(--space-6)}._detailsToggleBtn_1jehd_247{display:flex;align-items:center;justify-content:center;gap:var(--space-3);width:100%;padding:var(--space-4);background:var(--bg-secondary);color:var(--text-secondary);border:1px solid var(--border-primary);border-radius:var(--radius-lg);font-weight:600;cursor:pointer;transition:all var(--transition-base);margin-bottom:var(--space-6)}._detailsToggleBtn_1jehd_247:hover{background:var(--bg-tertiary);color:var(--text-primary);border-color:var(--border-secondary)}._expandedContent_1jehd_270{animation:_fadeIn_1jehd_1 .5s var(--ease-smooth)}._detailsGridContainer_1jehd_274{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--space-6);padding:var(--space-8);background:var(--bg-secondary);border-radius:var(--radius-xl);border:1px solid var(--border-primary)}._detailItem_1jehd_284{display:flex;flex-direction:column;gap:var(--space-1)}._detailItem_1jehd_284 strong{font-size:.7rem;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.1em}._detailItem_1jehd_284 span{font-size:var(--font-size-sm);color:var(--text-primary);font-weight:500}._airingValue_1jehd_303{color:var(--accent-light)!important}._loadingDetails_1jehd_308{display:flex;flex-direction:column;align-items:center;gap:var(--space-4);padding:var(--space-12);color:var(--text-tertiary)}._spinner_1jehd_317{width:30px;height:30px;border:3px solid rgba(255,255,255,.1);border-top-color:var(--accent);border-radius:50%;animation:_spin_1jehd_317 .8s linear infinite}@keyframes _spin_1jehd_317{to{transform:rotate(360deg)}}._heroSkeleton_1jehd_332{width:100%}._skeletonBanner_1jehd_336{height:400px;background:var(--bg-tertiary);animation:_pulse_1jehd_1 1.5s infinite}._skeletonContent_1jehd_342{max-width:1200px;margin:-100px auto 0;padding:0 var(--space-6);display:grid;grid-template-columns:320px 1fr;gap:var(--space-10)}._skeletonPoster_1jehd_351{height:480px;background:var(--bg-tertiary);border-radius:var(--radius-lg);animation:_pulse_1jehd_1 1.5s infinite}._skeletonInfo_1jehd_358{background:var(--bg-secondary);border-radius:var(--radius-xl);padding:var(--space-8);display:flex;flex-direction:column;gap:var(--space-6)}._skeletonTitle_1jehd_367{height:40px;width:60%;background:var(--bg-tertiary);border-radius:var(--radius-sm);animation:_pulse_1jehd_1 1.5s infinite}._skeletonMeta_1jehd_374{height:24px;width:40%;background:var(--bg-tertiary);border-radius:var(--radius-sm);animation:_pulse_1jehd_1 1.5s infinite}._skeletonDesc_1jehd_381{height:160px;width:100%;background:var(--bg-tertiary);border-radius:var(--radius-sm);animation:_pulse_1jehd_1 1.5s infinite}._skeletonActions_1jehd_388{height:50px;width:50%;background:var(--bg-tertiary);border-radius:var(--radius-sm);animation:_pulse_1jehd_1 1.5s infinite}@keyframes _pulse_1jehd_1{0%,to{opacity:1}50%{opacity:.4}}@keyframes _floatIn_1jehd_1{0%{opacity:0;transform:translateY(30px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes _slideUpIn_1jehd_1{0%{opacity:0;transform:translateY(50px)}to{opacity:1;transform:translateY(0)}}@keyframes _fadeIn_1jehd_1{0%{opacity:0}to{opacity:1}}@media(max-width:1024px){._heroContent_1jehd_49{grid-template-columns:1fr;padding-top:var(--space-12)}._posterContainer_1jehd_62{width:220px;margin:0 auto;position:relative;top:0}._infoGlass_1jehd_86{margin-top:-40px;padding-top:var(--space-12);text-align:center}._quickMeta_1jehd_109,._genres_1jehd_139{justify-content:center}._actions_1jehd_186{flex-direction:column}._watchBtn_1jehd_192,._watchlistBtn_1jehd_214{width:100%;justify-content:center}._skeletonContent_1jehd_342{grid-template-columns:1fr}._skeletonPoster_1jehd_351{width:220px;height:330px;margin:0 auto}}@media(max-width:480px){._infoGlass_1jehd_86{padding:var(--space-6)}._title_1jehd_100{font-size:1.5rem}._quickMeta_1jehd_109{gap:var(--space-3)}._metaItem_1jehd_117 span{font-size:.75rem}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/AnimeInfo-B88ZA3gl.js","assets/vendor-Bc4EraM_.js","assets/index-Ciivz6fh.js","assets/index-BzX_xmnf.css","assets/useAnimeInfoData-Dqthchpa.js","assets/useIsMobile-BviODivc.js","assets/SynopsisText-C3AK-aRc.js","assets/SynopsisText-DsI3mW5v.css","assets/AnimeInfo-R63luGTP.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{as as r,_ as e}from"./index-Ciivz6fh.js";import{u as o,P as a,z as t}from"./vendor-Bc4EraM_.js";const i=t(()=>e(()=>import("./AnimeInfo-B88ZA3gl.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8])));function f(){return o(a,{fallback:o(r,{}),children:o(i,{})})}export{f as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);border-radius:var(--radius-md);font-weight:var(--font-weight-medium);cursor:pointer;border:none;outline:none;font-family:inherit;position:relative;white-space:nowrap;font-size:var(--font-size-base);background:transparent;color:var(--text-primary);padding:var(--space-3) var(--space-6);min-height:44px;transition:background-color .15s ease,color .15s ease,transform .1s ease}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:focus-visible{outline:2px solid var(--accent-light);outline-offset:2px}.btn-primary{background:linear-gradient(135deg,var(--accent) 0%,var(--accent-dark) 100%);color:#fff;box-shadow:0 4px 12px #8b5cf640}.btn-primary:hover:not(:disabled){background:linear-gradient(135deg,var(--accent-light) 0%,var(--accent) 100%);transform:translateY(-1px);box-shadow:0 6px 16px #8b5cf659}.btn-primary:active:not(:disabled){transform:translateY(0)}.btn-secondary{background:#ffffff14;border:1px solid var(--border-secondary);color:var(--text-primary)}.btn-secondary:hover:not(:disabled){background:#ffffff1f;border-color:#ffffff40}.btn-ghost{background:transparent;color:var(--text-secondary)}.btn-ghost:hover:not(:disabled){background:#ffffff14;color:var(--text-primary)}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover:not(:disabled){background:#dc2626}.btn-sm{min-height:36px;padding:var(--space-2) var(--space-4);font-size:var(--font-size-sm);border-radius:var(--radius-sm)}.btn-lg{min-height:52px;padding:var(--space-4) var(--space-8);font-size:var(--font-size-md);border-radius:var(--radius-lg)}.btn-block{width:100%}.btn-loading{color:transparent;pointer-events:none}.btn-spinner{position:absolute;width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{D as l,u as s}from"./vendor-Bc4EraM_.js";const p=l(({variant:r="primary",size:t="md",loading:n,children:a,className:e="",disabled:o,...b},m)=>{const c=["btn",`btn-${r}`,t!=="md"&&`btn-${t}`,n&&"btn-loading",e].filter(Boolean).join(" ");return s("button",{className:c,disabled:o||n,ref:m,...b,children:n?s("span",{className:"btn-spinner"}):a})});export{p as B};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._popupPortal_bouje_1{position:fixed;z-index:9999;pointer-events:none}._popupContent_bouje_7{pointer-events:auto;width:320px;background-color:var(--bg-secondary);border-radius:var(--radius-lg);box-shadow:0 10px 30px #00000080;border:1px solid var(--border-secondary);overflow:hidden;display:flex;flex-direction:column;animation:_fadeIn_bouje_1 .2s ease-out;color:var(--text-primary)}@keyframes _fadeIn_bouje_1{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}._header_bouje_32{padding:var(--space-4);background:linear-gradient(to bottom,rgba(0,0,0,.3),transparent)}._title_bouje_37{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);margin-bottom:var(--space-1);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;color:var(--accent-light)}._altTitle_bouje_48{font-size:var(--font-size-xs);color:var(--text-muted);display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}._body_bouje_57{padding:0 var(--space-4) var(--space-4) var(--space-4);display:flex;flex-direction:column;gap:var(--space-3)}._metaRow_bouje_64{display:flex;align-items:center;gap:var(--space-4);font-size:var(--font-size-sm)}._metaItem_bouje_71{display:flex;align-items:center;gap:var(--space-1)}._scoreIcon_bouje_77{color:#fbbf24}._synopsis_bouje_81{font-size:var(--font-size-sm);color:var(--text-secondary);line-height:1.5;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}._details_bouje_91{display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--font-size-xs);color:var(--text-muted)}._detailItem_bouje_99 strong{color:var(--text-secondary)}._genres_bouje_103{display:flex;flex-wrap:wrap;gap:var(--space-1);margin-top:var(--space-1)}._genre_bouje_103{background:var(--bg-tertiary);padding:2px 8px;border-radius:var(--radius-sm);font-size:10px;color:var(--text-secondary)}._footer_bouje_118{padding:var(--space-4);border-top:1px solid var(--border-secondary);background-color:var(--bg-tertiary);display:flex;flex-direction:column;gap:var(--space-2)}._primaryAction_bouje_127{width:100%}._watchBtn_bouje_131{width:100%;height:48px;background-color:var(--accent);color:#fff;border:none;border-radius:var(--radius-md);font-weight:var(--font-weight-bold);display:flex;align-items:center;justify-content:center;gap:var(--space-2);cursor:pointer;transition:all .2s;text-decoration:none;font-size:var(--font-size-base)}._watchBtn_bouje_131:hover{background-color:var(--accent-dark);transform:translateY(-1px)}._secondaryActions_bouje_154{display:flex;gap:var(--space-2)}._watchlistBtn_bouje_159,._detailsBtn_bouje_160{flex:1;height:36px;display:flex;align-items:center;justify-content:center;gap:var(--space-2);background-color:var(--bg-elevated);color:var(--text-primary);border:1px solid var(--border-secondary);border-radius:var(--radius-md);cursor:pointer;font-size:11px;font-weight:var(--font-weight-semibold);transition:all .2s;text-decoration:none;white-space:nowrap}._watchlistBtn_bouje_159:hover,._detailsBtn_bouje_160:hover{background-color:var(--bg-secondary);border-color:var(--accent);color:var(--accent)}._watchlistBtn_bouje_159._active_bouje_186{background-color:var(--accent);border-color:var(--accent);color:#fff}._watchlistBtn_bouje_159._active_bouje_186:hover{background-color:var(--accent-dark);border-color:var(--accent-dark)}._loading_bouje_197{padding:var(--space-8);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-4);color:var(--text-muted)}._spinner_bouje_207{width:30px;height:30px;border:3px solid rgba(255,255,255,.1);border-top-color:var(--accent);border-radius:50%;animation:_spin_bouje_207 1s linear infinite}@keyframes _spin_bouje_207{to{transform:rotate(360deg)}}._cardWrapper_1rmji_1{position:relative;width:100%;height:100%;min-width:0;transition:transform var(--transition-base),z-index var(--transition-fast);will-change:transform;content-visibility:auto;contain-intrinsic-size:200px 300px}._cardWrapper_1rmji_1:hover{transform:translateY(-6px);z-index:5}._card_1rmji_1{display:flex;flex-direction:column;background-color:var(--bg-secondary);border-radius:var(--radius-md);overflow:hidden;height:100%;min-width:0;box-shadow:none;border:1px solid var(--border-secondary);transition:border-color var(--transition-base),background-color var(--transition-base)}._cardButton_1rmji_34{width:100%;padding:0;text-align:left;font:inherit;border:1px solid var(--border-secondary);cursor:pointer}._cardButton_1rmji_34:focus-visible{outline:2px solid var(--accent);outline-offset:2px}._cardWrapper_1rmji_1:hover ._card_1rmji_1{border-color:var(--border-accent);box-shadow:none;background-color:var(--bg-tertiary)}._posterContainer_1rmji_54{position:relative;width:100%;aspect-ratio:3 / 4;overflow:hidden;background:var(--bg-tertiary)}._posterImg_1rmji_62{width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .4s ease,transform var(--transition-base),filter var(--transition-base)}._posterImg_1rmji_62._blurred_1rmji_73{filter:blur(15px)}._matureOverlay_1rmji_77{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:#00000073;z-index:10;cursor:pointer;flex-direction:column;gap:var(--space-2);padding:var(--space-2);text-align:center;transition:background-color var(--transition-base)}._matureOverlay_1rmji_77._flat_1rmji_96{background-color:#000000f2}._posterImg_1rmji_62._loaded_1rmji_100{opacity:1}._cardWrapper_1rmji_1:hover ._posterImg_1rmji_62{transform:scale(1.08) translateZ(0)}._info_1rmji_108{padding:var(--space-3);display:flex;flex-direction:column;height:100px;gap:var(--space-1)}._title_1rmji_116{font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);line-height:1.3;color:var(--text-primary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;height:2.6em;margin-bottom:0;transition:color var(--transition-base);word-break:break-word;min-width:0}._cardWrapper_1rmji_1:hover ._title_1rmji_116{color:var(--accent-light)}._badge_1rmji_136{position:absolute;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);z-index:2;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}._typeBadge_1rmji_147{top:var(--space-2);left:var(--space-2);background-color:#000000b3;color:#fff;border:1px solid rgba(255,255,255,.1)}._epBadge_1rmji_156{bottom:var(--space-2);left:var(--space-2);background-color:var(--accent);color:#fff}._adultBadge_1rmji_164{bottom:var(--space-2);right:var(--space-2);background-color:var(--color-danger)!important;color:#fff!important;border:none;font-size:14px;padding:5px 10px;z-index:11;box-shadow:0 2px 8px #0006!important}._adultBadge_1rmji_164._gated_1rmji_177{background-color:#000000bf!important;border:1px solid rgba(220,53,69,.45);color:#ff4a5a!important}._rankBadge_1rmji_183{position:absolute;top:6px;left:6px;background:#000000bf;color:gold;font-size:13px;font-weight:var(--font-weight-bold);padding:3px 8px;border-radius:4px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:2}._metaRow_1rmji_197{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-xs);color:var(--text-secondary);margin-top:auto;min-width:0;height:24px}._metaItem_1rmji_208{display:flex;align-items:center;gap:var(--space-1);background-color:var(--bg-tertiary);padding:2px var(--space-2);border-radius:var(--radius-sm);transition:background-color var(--transition-base),color var(--transition-base)}._metaItem_1rmji_208:hover{background-color:var(--bg-elevated);color:var(--text-primary)}._progressContainer_1rmji_225{width:100%;height:4px;background-color:var(--bg-tertiary);border-radius:var(--radius-sm);margin-top:var(--space-2);overflow:hidden}._progressBar_1rmji_234{height:100%;background:var(--accent);border-radius:var(--radius-sm);transition:width .3s ease}._timestamp_1rmji_241{font-size:var(--font-size-xs);color:var(--text-muted);margin-top:var(--space-1)}._removeBtn_1rmji_247,._infoBtn_1rmji_248{position:absolute;top:var(--space-2);right:var(--space-2);width:28px;height:28px;border-radius:50%;background-color:#0009;color:#fff;border:1px solid rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;transition:opacity .15s ease,background-color .15s ease,transform .15s ease;z-index:20;font-size:14px}._removeBtn_1rmji_247:hover{background-color:#ef4444e6!important;border-color:#ef4444e6!important;transform:scale(1.08)}._infoBtn_1rmji_248:hover{background-color:var(--accent);border-color:var(--accent);transform:scale(1.08)}._cardWrapper_1rmji_1:hover ._removeBtn_1rmji_247,._card_1rmji_1:hover ._removeBtn_1rmji_247,._cardWrapper_1rmji_1:hover ._infoBtn_1rmji_248,._card_1rmji_1:hover ._infoBtn_1rmji_248{opacity:1}@media(hover:none),(pointer:coarse){._removeBtn_1rmji_247,._infoBtn_1rmji_248{display:none}}._mobileBadges_1rmji_297{display:flex;flex-wrap:wrap;gap:var(--space-1);margin-bottom:var(--space-1)}._mobileBadgeBase_1rmji_304{font-size:10px;font-weight:var(--font-weight-bold);padding:1px var(--space-1);border-radius:4px;text-transform:uppercase}._mobileType_1rmji_312{background-color:#ffffff1a;color:var(--text-secondary);border:1px solid rgba(255,255,255,.1)}._mobileEp_1rmji_319{background-color:var(--accent);color:#fff}@media(max-width:768px){._cardWrapper_1rmji_1,._card_1rmji_1{height:auto!important}._info_1rmji_108{height:95px!important;padding:6px 8px!important;display:flex;flex-direction:column;justify-content:flex-start}._title_1rmji_116{height:2.5em!important;margin-bottom:2px!important;font-size:.78rem!important;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;text-align:center;overflow:hidden;word-break:break-word;color:var(--text-primary)}._mobileBadges_1rmji_297{justify-content:center;margin-bottom:4px;gap:4px}._metaRow_1rmji_197{margin-top:auto;justify-content:center;height:20px}._typeBadge_1rmji_147{display:none}._removeBtn_1rmji_247{opacity:1!important;background-color:#00000080!important}._card_1rmji_1._horizontal_1rmji_374{flex-direction:row;height:auto;min-height:100px}._card_1rmji_1._horizontal_1rmji_374 ._posterContainer_1rmji_54{width:85px;height:100%;aspect-ratio:auto;flex-shrink:0}._card_1rmji_1._horizontal_1rmji_374 ._info_1rmji_108{padding:var(--space-2) var(--space-3)!important;justify-content:center;flex-grow:1!important}._card_1rmji_1._vertical_1rmji_393 ._posterContainer_1rmji_54{width:100%;aspect-ratio:3 / 4}._card_1rmji_1._vertical_1rmji_393 ._info_1rmji_108{align-items:center;text-align:center}._card_1rmji_1._vertical_1rmji_393 ._mobileBadges_1rmji_297{justify-content:center}._metaRow_1rmji_197{margin-top:2px;justify-content:center}}._placeholder_1rmji_413{width:100%;height:100%;background:var(--bg-tertiary);display:flex;align-items:center;justify-content:center}._placeholderText_1rmji_422{font-size:2.5rem;font-weight:var(--font-weight-bold);color:var(--text-tertiary);opacity:.3}._lowEnd_1rmji_429 ._card_1rmji_1,._lowEnd_1rmji_429 ._posterImg_1rmji_62{transition:none!important}._skeletonCard_1hade_1{display:flex;flex-direction:column;background-color:var(--bg-secondary);border-radius:var(--radius-md);overflow:hidden;height:100%;border:1px solid var(--border-secondary)}._poster_1hade_11{width:100%;aspect-ratio:3 / 4;background-color:var(--bg-tertiary);animation:_pulse_1hade_1 1.5s infinite ease-in-out}._info_1hade_18{padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-2);flex-grow:1}._line_1hade_26{height:18px;border-radius:var(--radius-sm);background-color:var(--bg-tertiary);animation:_pulse_1hade_1 1.5s infinite ease-in-out}._line_1hade_26._short_1hade_33{width:60%;height:14px}@keyframes _pulse_1hade_1{0%{opacity:1}50%{opacity:.5}to{opacity:1}}@media(max-width:768px){._skeletonCard_1hade_1._horizontal_1hade_51{flex-direction:row;height:auto;min-height:100px}._skeletonCard_1hade_1._horizontal_1hade_51 ._poster_1hade_11{width:85px;height:100%;aspect-ratio:auto;flex-shrink:0}._skeletonCard_1hade_1._horizontal_1hade_51 ._info_1hade_18{padding:var(--space-2) var(--space-3);justify-content:center}._skeletonCard_1hade_1._vertical_1hade_69 ._poster_1hade_11{width:100%;aspect-ratio:3 / 4}._skeletonCard_1hade_1._vertical_1hade_69 ._info_1hade_18{padding:var(--space-2);align-items:center}._line_1hade_26{height:16px}._line_1hade_26._short_1hade_33{height:12px}}._skeletonCard_1hade_1._lowEnd_1hade_88{min-height:40px;flex-direction:row}._skeletonCard_1hade_1._lowEnd_1hade_88 ._line_1hade_26{animation:none!important;opacity:.3}._skeletonCard_1hade_1._lowEnd_1hade_88 ._info_1hade_18{padding:var(--space-2)}._errorBox_1n4sy_1{background-color:#e53e3e1a;border:1px solid var(--danger-color);color:var(--danger-color);padding:1rem;border-radius:8px;display:flex;align-items:center;gap:1rem;margin:1rem 0}._icon_1n4sy_13{font-size:1.5rem}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as j,T as R,u as e,S as se,L as q,$ as we,N as ye,f as je,g as C,q as H}from"./vendor-Bc4EraM_.js";import{j as Ce,a3 as $e,k as Ee,e as oe,g as Te,Q as Pe,P as Ie,a7 as K,a8 as X,u as ae,f as Me,ad as Z,ae as Ae,af as ke,ag as xe,a1 as ze,ah as Re,ai as Se}from"./index-Ciivz6fh.js";import{u as De}from"./useAnimeInfoData-Dqthchpa.js";import{g as Fe,u as Le}from"./useIsMobile-BviODivc.js";import{B as ee}from"./Button-lkEUHIDS.js";const Qe="_popupPortal_bouje_1",We="_popupContent_bouje_7",Ve="_header_bouje_32",He="_title_bouje_37",Oe="_body_bouje_57",qe="_metaRow_bouje_64",Ge="_metaItem_bouje_71",Ue="_scoreIcon_bouje_77",Ye="_synopsis_bouje_81",Je="_details_bouje_91",Ke="_detailItem_bouje_99",Xe="_genres_bouje_103",Ze="_genre_bouje_103",et="_footer_bouje_118",tt="_primaryAction_bouje_127",st="_watchBtn_bouje_131",ot="_secondaryActions_bouje_154",at="_watchlistBtn_bouje_159",nt="_detailsBtn_bouje_160",rt="_active_bouje_186",it="_loading_bouje_197",lt="_spinner_bouje_207",a={popupPortal:Qe,popupContent:We,header:Ve,title:He,body:Oe,metaRow:qe,metaItem:Ge,scoreIcon:Ue,synopsis:Ye,details:Je,detailItem:Ke,genres:Xe,genre:Ze,footer:et,primaryAction:tt,watchBtn:st,secondaryActions:ot,watchlistBtn:at,detailsBtn:nt,active:rt,loading:it,spinner:lt},dt=({showId:t,anchorRect:i,onMouseEnter:m,onMouseLeave:$})=>{const{showMeta:s,loadingMeta:S,inWatchlist:f,toggleWatchlist:D}=De(t),{data:d=[]}=Ce(),F=$e(),l=Ee(),[b,E]=j(!1),{titlePreference:B}=oe();R(()=>null,[]);const c=R(()=>d.find(n=>n.showId===t),[d,t]),N=async()=>{if(!s)return;if(c){l.mutate({showId:t,episodeNumber:c.episodeNumber});return}const n=await Fe(t);E(!0),F.mutate({showId:t,episodeNumber:n.episodeNumber,showName:s.name||s.names?.romaji,showThumbnail:s.thumbnail,nativeName:s.names?.native,englishName:s.names?.english,type:s.type}),window.setTimeout(()=>E(!1),1e3)},T=R(()=>s?.name?B==="name"?s.name:B==="nativeName"?s.names?.native||s.name:B==="englishName"&&s.names?.english||s.name:"",[s,B]),w=R(()=>{const Q=window.innerWidth;let _=i.right+10,u=i.top;_+320>Q-20&&(_=i.left-320-10);const I=400;return u+I>window.innerHeight-20&&(u=window.innerHeight-I-20),u<20&&(u=20),{left:_,top:u}},[i]),P=e("div",{className:a.popupPortal,style:{left:w.left,top:w.top},onMouseEnter:m,onMouseLeave:$,children:e("div",{className:a.popupContent,children:S?e("div",{className:a.loading,children:[e("div",{className:a.spinner}),e("span",{children:"Fetching details..."})]}):s?e(se,{children:[e("div",{className:a.header,children:e("div",{className:a.title,children:T})}),e("div",{className:a.body,children:[e("div",{className:a.metaRow,children:[s.score&&e("div",{className:a.metaItem,children:[e(Te,{className:a.scoreIcon,size:14}),e("span",{children:s.score})]}),s.status&&e("div",{className:a.metaItem,children:[e(Pe,{size:14}),e("span",{children:s.status})]})]}),e("div",{className:a.synopsis,children:s.description?s.description.replace(/<[^>]*>?/gm,""):"No synopsis available."}),e("div",{className:a.details,children:[s.nextEpisodeAirDate&&e("div",{className:a.detailItem,children:[e("strong",{children:"Aired:"})," ",s.nextEpisodeAirDate]}),s.genres&&s.genres.length>0&&e("div",{className:a.genres,children:s.genres.slice(0,4).map(n=>e("span",{className:a.genre,children:n.name},n.name))})]})]}),e("div",{className:a.footer,children:[e("div",{className:a.primaryAction,children:e(q,{to:`/watch/${t}`,className:a.watchBtn,children:[e(Ie,{size:14}),"Watch now"]})}),e("div",{className:a.secondaryActions,children:[e("button",{className:`${a.watchlistBtn} ${f?a.active:""}`,onClick:n=>{n.preventDefault(),n.stopPropagation(),D()},children:[f?e(K,{size:12}):e(X,{size:12}),e("span",{children:f?"Remove":"Watchlist"})]}),e("button",{className:`${a.watchlistBtn} ${c||b?a.active:""}`,onClick:n=>{n.preventDefault(),n.stopPropagation(),N()},children:[c||b?e(K,{size:12}):e(X,{size:12}),e("span",{children:c||b?"Queued":"Queue"})]}),e(q,{to:`/anime/${t}`,className:a.detailsBtn,children:"Read more"})]})]})]}):e("div",{className:a.loading,children:"Failed to load info."})})});return we(P,document.body)},ct="_cardWrapper_1rmji_1",ut="_card_1rmji_1",pt="_cardButton_1rmji_34",mt="_posterContainer_1rmji_54",_t="_posterImg_1rmji_62",ht="_blurred_1rmji_73",gt="_matureOverlay_1rmji_77",ft="_flat_1rmji_96",vt="_loaded_1rmji_100",bt="_info_1rmji_108",Bt="_title_1rmji_116",Nt="_badge_1rmji_136",wt="_typeBadge_1rmji_147 _badge_1rmji_136",yt="_epBadge_1rmji_156 _badge_1rmji_136",jt="_adultBadge_1rmji_164 _badge_1rmji_136",Ct="_gated_1rmji_177",$t="_rankBadge_1rmji_183",Et="_metaRow_1rmji_197",Tt="_metaItem_1rmji_208",Pt="_progressContainer_1rmji_225",It="_progressBar_1rmji_234",Mt="_timestamp_1rmji_241",At="_removeBtn_1rmji_247",kt="_infoBtn_1rmji_248",xt="_mobileBadges_1rmji_297",zt="_mobileBadgeBase_1rmji_304",Rt="_mobileType_1rmji_312 _mobileBadgeBase_1rmji_304",St="_mobileEp_1rmji_319 _mobileBadgeBase_1rmji_304",Dt="_horizontal_1rmji_374",Ft="_vertical_1rmji_393",Lt="_placeholder_1rmji_413",Qt="_placeholderText_1rmji_422",Wt="_lowEnd_1rmji_429",o={cardWrapper:ct,card:ut,cardButton:pt,posterContainer:mt,posterImg:_t,blurred:ht,matureOverlay:gt,flat:ft,loaded:vt,info:bt,title:Bt,badge:Nt,typeBadge:wt,epBadge:yt,adultBadge:jt,gated:Ct,rankBadge:$t,metaRow:Et,metaItem:Tt,progressContainer:Pt,progressBar:It,timestamp:Mt,removeBtn:At,infoBtn:kt,mobileBadges:xt,mobileBadgeBase:zt,mobileType:Rt,mobileEp:St,horizontal:Dt,vertical:Ft,placeholder:Lt,placeholderText:Qt,lowEnd:Wt},O={elements:{poster:{typeBadge:!0,episodeBadge:!0,adultBadge:!0},info:{title:!0,mobileBadges:!0,progress:!0,meta:!0}}},is=ye(({anime:t,continueWatching:i=!1,onRemove:m,isLCP:$=!1,config:s,layout:S="vertical",rank:f})=>{const D=je(),d=Le(),{titlePreference:F}=oe(),{lowEndMode:l}=ae(),[b,E]=j(!1),[B,c]=j(!1),[N,T]=j(!1),[w,P]=j(null),n=C.useRef(null),L=r=>{n.current&&clearTimeout(n.current),P(r),T(!0)},Q=()=>{T(!1),P(null)},_=H(()=>{n.current&&clearTimeout(n.current),n.current=setTimeout(()=>{Q()},300)},[]),u=H(()=>{n.current&&(clearTimeout(n.current),n.current=null)},[]),I=r=>{if(d)return;const g=r.currentTarget.getBoundingClientRect();L(g)},ne=()=>{_()},re=()=>{u()},ie=()=>{_()},le=r=>{h||d||(r.preventDefault(),r.stopPropagation(),L(r.currentTarget.getBoundingClientRect()))},G={...s,elements:{...O.elements,...s?.elements||{},poster:{...O.elements?.poster,...s?.elements?.poster||{}},info:{...O.elements?.info,...s?.elements?.info||{}}}};(t.newEpisodesCount||0)>0;const W=(t.currentTime||0)>0&&(t.duration||0)>0,V=t[F]||t.name;(t.currentTime||0)/(t.duration||1);const M=t.episodeNumber??t.nextEpisodeToWatch,U=i?M?`/watch/${t._id}/${M}`:`/watch/${t._id}`:M&&t.episodeNumber?`/watch/${t._id}/${t.episodeNumber}`:W?`/watch/${t._id}/${t.episodeNumber}`:`/anime/${t._id}`,de=W?(t.currentTime||0)/(t.duration||1)*100:0,ce=H(r=>{r.preventDefault(),r.stopPropagation();const g=t.id||t.showId||t._id;m&&m(g)},[m,t.id,t.showId,t._id]),A=(()=>{const r=t.episodeCount??0,g=t.watchedCount??0;return r&&r>=g?r:g>0?g:r||void 0})(),v=(()=>{const r=t.relativeEpisodeNumber??M;return i&&r?A?`EP ${r} / ${A}`:`EP ${r}`:t.watchedCount!==void 0&&(A||t.watchedCount)?`EP ${t.watchedCount} / ${A??t.watchedCount}`:null})(),y=G.elements?.poster,k=G.elements?.info,ue=y?.typeBadge??!i,pe=y?.episodeBadge??!0,me=y?.removeButton===void 0?i&&!!m:y.removeButton,_e=y?.adultBadge??!0,he=k?.mobileBadges??!0,ge=k?.progress??!0,fe=k?.meta??!0,Y=t.isAdult||t.rating==="R+"||t.rating==="Rx"||t.rating?.includes("17+"),[ve,be]=C.useState(localStorage.getItem("agreedToViewMature")==="true"),[J,x]=C.useState(!1),z=C.useRef(null),Be=()=>{localStorage.setItem("agreedToViewMature","true"),be(!0),x(!1),z.current&&(D(z.current),z.current=null)},h=Y&&!ve,Ne=r=>{h&&(r.preventDefault(),r.stopPropagation(),z.current=U,x(!0))};return e("div",{className:`${o.cardWrapper} ${l?o.lowEnd:""}`,onMouseEnter:()=>{c(!0),N&&u()},onMouseLeave:()=>{c(!1),N&&_()},children:[e(q,{to:U,className:`${o.card} ${o[S]} ${h?o.cardButton:""}`,onClick:Ne,onContextMenu:le,children:[e("div",{className:o.posterContainer,children:[h&&e("div",{className:`${o.matureOverlay} ${l?o.flat:""}`}),e("img",{src:Me(t.thumbnail,l?100:150,l?150:200),alt:V,className:`${o.posterImg} ${b?o.loaded:""} ${h&&!l?o.blurred:""}`,loading:"lazy",decoding:"async",onLoad:()=>E(!0)}),!d&&e(se,{children:[ue&&e("div",{className:o.typeBadge,children:t.type||"TV"}),pe&&(v||t.episodeNumber)&&e("div",{className:o.epBadge,children:v||`EP ${t.episodeNumber}`})]}),_e&&Y&&e("div",{className:`${o.adultBadge} ${h?o.gated:""}`,children:"18+"}),f!==void 0&&e("div",{className:o.rankBadge,children:["#",f]})]}),e("div",{className:o.info,children:[k?.title!==!1&&e("div",{className:o.title,title:V,children:V}),d&&he&&e("div",{className:o.mobileBadges,children:[e("span",{className:o.mobileType,children:t.type||"TV"}),(v||t.episodeNumber)&&e("span",{className:o.mobileEp,children:v||`EP ${t.episodeNumber}`})]}),ge&&(i||l)&&W&&e("div",{children:[e("div",{className:o.progressContainer,children:e("div",{className:o.progressBar,style:{width:`${de}%`}})}),!l&&e("div",{className:o.timestamp,children:[Z(t.currentTime||0)," / ",Z(t.duration||0)]})]}),fe&&e("div",{className:o.metaRow,children:[(t.availableEpisodesDetail?.sub||t.availableEpisodes?.sub)&&e("div",{className:o.metaItem,children:[e(Ae,{size:10}),t.availableEpisodesDetail?.sub?.length??t.availableEpisodes?.sub]}),(t.availableEpisodesDetail?.dub||t.availableEpisodes?.dub)&&e("div",{className:o.metaItem,children:[e(ke,{size:10}),t.availableEpisodesDetail?.dub?.length??t.availableEpisodes?.dub]})]})]})]}),J&&e(xe,{isOpen:J,title:"Content Warning",onClose:()=>x(!1),children:e("div",{style:{padding:"1rem",textAlign:"center"},children:[e("p",{children:"This title contains mature content intended for adult audiences."}),e("p",{children:"By proceeding, you confirm that you are of legal age and wish to view this content."}),e("p",{style:{fontSize:"0.8rem",color:"var(--text-secondary)",marginTop:"1rem"},children:["You can reset this preference at any time in the ",e("strong",{children:"Settings"})," page."]}),e("div",{style:{marginTop:"1rem",display:"flex",gap:"10px",justifyContent:"center"},children:[e(ee,{variant:"secondary",onClick:()=>x(!1),children:"Go Back"}),e(ee,{onClick:Be,children:"I Agree"})]})]})}),me&&e("button",{className:o.removeBtn,onClick:ce,"aria-label":"Remove",children:e(ze,{size:10})}),!i&&!d&&!h&&e("button",{className:o.infoBtn,onMouseEnter:I,onMouseLeave:ne,"aria-label":"Info",children:e(Re,{size:11})}),N&&w&&e(dt,{showId:t._id,anchorRect:w,onMouseEnter:re,onMouseLeave:ie})]})}),Vt="_skeletonCard_1hade_1",Ht="_poster_1hade_11",Ot="_pulse_1hade_1",qt="_info_1hade_18",Gt="_line_1hade_26",Ut="_short_1hade_33",Yt="_horizontal_1hade_51",Jt="_vertical_1hade_69",Kt="_lowEnd_1hade_88",p={skeletonCard:Vt,poster:Ht,pulse:Ot,info:qt,line:Gt,short:Ut,horizontal:Yt,vertical:Jt,lowEnd:Kt},Xt=({layout:t="vertical"})=>{const{lowEndMode:i}=ae();return e("div",{className:`${p.skeletonCard} ${p[t]} ${i?p.lowEnd:""}`,children:[!i&&e("div",{className:p.poster}),e("div",{className:p.info,children:[e("div",{className:p.line}),!i&&e("div",{className:`${p.line} ${p.short}`})]})]})},Zt=({count:t=14,layout:i="vertical"})=>e("div",{className:"grid-container",children:Array.from({length:t}).map((m,$)=>e(Xt,{layout:i},$))}),ls=C.memo(Zt),es="_errorBox_1n4sy_1",ts="_icon_1n4sy_13",te={errorBox:es,icon:ts},ds=({message:t})=>e("div",{className:te.errorBox,children:[e(Se,{className:te.icon}),e("span",{children:t})]});export{Xt as A,ds as E,ls as S,is as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{g as Q,A as O,u as e,L as ce,d as A,T as Z,y as M,q as D,f as ye,r as be,b as Ne,c as we}from"./vendor-Bc4EraM_.js";import{u as ae,F as j,a as K,b as Se,c as Ce,d as Te,e as ue,f as ie,g as ke,h as de,i as Ie,j as We,k as Le,l as xe,m as Re,n as qe,o as Ae,p as De,q as Pe,r as Be}from"./index-Ciivz6fh.js";import{B as ee}from"./Button-lkEUHIDS.js";import{A as te,a as G,S as me,E as he}from"./ErrorMessage-BXKDLzn8.js";import{R as Me}from"./RemoveConfirmationModal-DatCZQKq.js";import{u as $e}from"./useIsMobile-BviODivc.js";import{Q as Ee}from"./QueueRail-Cxn5U8kE.js";import"./useAnimeInfoData-Dqthchpa.js";const Fe="_carousel_kvtvx_111",L={"section-header":"_section-header_kvtvx_1","title-wrapper":"_title-wrapper_kvtvx_9","header-controls":"_header-controls_kvtvx_16","collapse-button":"_collapse-button_kvtvx_22","title-link":"_title-link_kvtvx_41","nav-arrows":"_nav-arrows_kvtvx_79","nav-button":"_nav-button_kvtvx_88","carousel-container":"_carousel-container_kvtvx_111",carousel:Fe,"carousel-card":"_carousel-card_kvtvx_131"},ze=({title:_,animeList:s,continueWatching:f,titleLink:p,onRemove:y,loading:i,showSeeMore:b,emptyState:v,carousel:c,cardConfig:C,layout:R,onScroll:r,isFetchingNextPage:h,collapsible:o,defaultExpanded:l=!0})=>{const{lowEndMode:t}=ae(),d=O(null),[u,x]=Q.useState(l);if(Q.useEffect(()=>{x(l)},[l]),!!(!i&&s.length===0&&!v&&!o))return null;const T=c,B=R||"vertical",$=g=>{if(!d.current)return;const{scrollLeft:k,clientWidth:z}=d.current,E=z*.8;d.current.scrollTo({left:g==="left"?k-E:k+E,behavior:t?"auto":"smooth"})};return!i&&s.length===0&&!v?null:e("section",{style:{marginBottom:"2.5rem"},children:[e("div",{className:L["section-header"],children:[e("div",{className:L["title-wrapper"],children:[p?e(ce,{to:p,className:L["title-link"],children:e("div",{className:"section-title",style:{marginBottom:0},children:_})}):e("div",{className:"section-title",style:{marginBottom:0},children:_}),c&&s.length>0&&u&&e("div",{className:L["nav-arrows"],children:[e("button",{className:L["nav-button"],type:"button",onClick:g=>{g.preventDefault(),$("left")},children:e(j,{})}),e("button",{className:L["nav-button"],type:"button",onClick:g=>{g.preventDefault(),$("right")},children:e(K,{})})]})]}),e("div",{className:L["header-controls"],children:[b&&e("div",{className:L["header-actions"],children:e(ce,{to:"/watchlist/Continue Watching",className:"btn-secondary",style:{fontSize:"0.8rem",padding:"0.4rem 0.8rem"},children:"View All"})}),o&&e("button",{className:L["collapse-button"],type:"button",onClick:()=>x(g=>!g),"aria-expanded":u,"aria-label":u?`Collapse ${_}`:`Expand ${_}`,children:u?e(Se,{}):e(Ce,{})})]})]}),u&&(T?!i&&s.length===0&&v?e("div",{children:v}):e("div",{className:L["carousel-container"],children:e("div",{className:L.carousel,ref:d,onScroll:r,children:[i&&s.length===0?Array.from({length:7}).map((g,k)=>e("div",{className:L["carousel-card"],children:e(te,{layout:B})},k)):s.map((g,k)=>e("div",{className:L["carousel-card"],children:e(G,{anime:g,continueWatching:f,onRemove:y,isLCP:k<4&&_==="Latest Releases",config:C,layout:B})},g._id)),h&&e("div",{className:L["carousel-card"],children:e(te,{layout:B})})]})}):e("div",{className:"grid-container",children:i&&s.length===0?e(me,{count:6,layout:B}):s.length>0?s.map((g,k)=>e(G,{anime:g,continueWatching:f,onRemove:y,isLCP:k<4&&_==="Latest Releases",config:C,layout:B},g._id)):i?null:e("div",{style:{gridColumn:"1 / -1"},children:v})}))]})},X=Q.memo(ze),Qe="_timeSelect_wruhh_65",Ye="_carouselContainer_wruhh_96",Ge="_carousel_wruhh_96",He="_carouselItem_wruhh_118",Oe="_skeletonPoster_wruhh_158",je="_skeletonText_wruhh_172",w={"section-header":"_section-header_wruhh_2","title-wrapper":"_title-wrapper_wruhh_10","nav-arrows":"_nav-arrows_wruhh_32","nav-button":"_nav-button_wruhh_41",timeSelect:Qe,carouselContainer:Ye,carousel:Ge,carouselItem:He,skeletonPoster:Oe,skeletonText:je},Ke=[{value:"all",label:"All Time"},{value:"monthly",label:"Monthly"},{value:"weekly",label:"Weekly"},{value:"daily",label:"Daily"}],Ue=10;function Je({title:_}){const{lowEndMode:s}=ae(),[f,p]=A(()=>localStorage.getItem("trending_timeframe")||"all"),y=O(null),{data:i,fetchNextPage:b,hasNextPage:v,isFetchingNextPage:c,isLoading:C,isError:R,error:r}=Te(f,Ue),h=Z(()=>i?.pages.flatMap(t=>t)||[],[i]);M(()=>{localStorage.setItem("trending_timeframe",f)},[f]);const o=D(()=>{if(!y.current||!v||c||C)return;const{scrollLeft:t,clientWidth:d,scrollWidth:u}=y.current;t+d>u*.6&&b()},[v,c,C,b]),l=D(t=>{const d=y.current;if(!d)return;const{scrollLeft:u,clientWidth:x,scrollWidth:P}=d,T=x*.8;t==="right"&&v&&!c&&u+x>P-100&&b(),d.scrollTo({left:t==="left"?u-T:u+T,behavior:s?"auto":"smooth"})},[s,v,c,b]);return e("section",{style:{marginBottom:"2.5rem"},children:[e("div",{className:w["section-header"],children:[e("div",{className:w["title-wrapper"],children:[e("div",{className:"section-title",style:{marginBottom:0},children:_}),e("div",{className:w["nav-arrows"],children:[e("button",{className:w["nav-button"],type:"button",onClick:t=>{t.preventDefault(),l("left")},"aria-label":"Scroll left",children:e(j,{})}),e("button",{className:w["nav-button"],type:"button",onClick:t=>{t.preventDefault(),l("right")},"aria-label":"Scroll right",children:e(K,{})})]})]}),e("div",{className:w["header-actions"],children:e("select",{className:w.timeSelect,value:f,onChange:t=>p(t.currentTarget.value),children:Ke.map(t=>e("option",{value:t.value,children:t.label},t.value))})})]}),C?e("div",{className:w.carousel,children:Array.from({length:7}).map((t,d)=>e("div",{className:w.carouselItem,children:[e("div",{className:w.skeletonPoster}),e("div",{className:w.skeletonText})]},d))}):R?e(he,{message:r instanceof Error?r.message:"An unknown error occurred"}):e("div",{className:w.carouselContainer,children:e("div",{className:w.carousel,ref:y,onScroll:o,children:[h.map((t,d)=>e("div",{className:w.carouselItem,children:e(G,{anime:t,rank:d+1})},t._id)),c&&e("div",{className:w.carouselItem,style:{minWidth:"150px",display:"flex",alignItems:"center",justifyContent:"center"},children:e("div",{className:w.skeletonPoster})})]})})]})}const Ve="_scheduleSection_1eb6m_1",Xe="_sectionHeader_1eb6m_5",Ze="_daySelectorContainer_1eb6m_16",et="_daySelector_1eb6m_16",tt="_dayBtn_1eb6m_47",at="_dayMonth_1eb6m_53",nt="_dayNum_1eb6m_57",st="_dayName_1eb6m_61",ot="_active_1eb6m_65",rt="_navArrows_1eb6m_128",lt="_navButton_1eb6m_137",ct="_carouselContainer_1eb6m_161",it="_carousel_1eb6m_161",dt="_carouselCard_1eb6m_181",S={scheduleSection:Ve,sectionHeader:Xe,daySelectorContainer:Ze,daySelector:et,dayBtn:tt,dayMonth:at,dayNum:nt,dayName:st,active:ot,navArrows:rt,navButton:lt,carouselContainer:ct,carousel:it,carouselCard:dt},ut=()=>{const[_,s]=A([]),[f,p]=A(!0),[y,i]=A(null),[b,v]=A(new Date().toISOString().split("T")[0]),c=O(null);M(()=>{(async h=>{p(!0),i(null);try{const o=await fetch(`/api/schedule/${h}`);if(!o.ok)throw new Error("Failed to fetch episode schedule");const l=await o.json();s(l)}catch(o){i(o instanceof Error?o.message:"An unknown error occurred"),console.error("Error fetching episode schedule:",o)}finally{p(!1)}})(b)},[b]);const C=r=>{if(!c.current)return;const{scrollLeft:h,clientWidth:o}=c.current,l=o*.8;c.current.scrollTo({left:r==="left"?h-l:h+l,behavior:"smooth"})},R=()=>{const r=[],h=new Date,o=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];for(let l=-6;l<=0;l++){const t=new Date;t.setDate(h.getDate()+l),r.push(t)}return r.map(l=>{const t=l.toISOString().split("T")[0],d=t===h.toISOString().split("T")[0],u=t===new Date(h.getTime()-864e5).toISOString().split("T")[0],x=d?"Today":u?"Yest":o[l.getDay()],P=l.getDate(),T=new Intl.DateTimeFormat("en-US",{month:"short"}).format(l);return{dateString:t,dayLabel:x,dayNum:P,monthName:T}})};return M(()=>{c.current&&(c.current.scrollLeft=0)},[b]),e("div",{className:S.scheduleSection,children:[e("div",{className:S.sectionHeader,children:e("div",{style:{display:"flex",alignItems:"center",gap:"1rem"},children:[e("h2",{className:"section-title",style:{marginBottom:0},children:"Episode Schedule"}),_.length>0&&e("div",{className:S.navArrows,children:[e("button",{className:S.navButton,onClick:()=>C("left"),"aria-label":"Scroll left",children:e(j,{})}),e("button",{className:S.navButton,onClick:()=>C("right"),"aria-label":"Scroll right",children:e(K,{})})]})]})}),e("div",{className:S.daySelectorContainer,children:e("div",{className:S.daySelector,children:R().map(r=>e("button",{type:"button",className:`${S.dayBtn} ${b===r.dateString?S.active:""}`,onClick:()=>v(r.dateString),children:[e("span",{className:S.dayMonth,children:r.monthName}),e("span",{className:S.dayNum,children:r.dayNum}),e("span",{className:S.dayName,children:r.dayLabel})]},r.dateString))})}),e("div",{className:S.carouselContainer,children:e("div",{className:S.carousel,ref:c,children:f?Array.from({length:7}).map((r,h)=>e("div",{className:S.carouselCard,children:e(te,{layout:"vertical"})},h)):y?e("div",{style:{width:"100%"},children:e(he,{message:y})}):_.length===0?e("p",{style:{textAlign:"center",marginTop:"1rem",width:"100%"},children:"No episodes scheduled for this day."}):_.map(r=>e("div",{className:S.carouselCard,children:e(G,{anime:r,continueWatching:!1,layout:"vertical"},r._id)},r._id))})})]})},mt="_bannerContainer_1qci0_1",ht="_bannerAtTop_1qci0_14",_t="_posterWrapper_1qci0_18",gt="_posterImage_1qci0_26",pt="_overlay_1qci0_34",vt="_content_1qci0_50",ft="_badgeRow_1qci0_64",yt="_featureLabel_1qci0_70",bt="_metaRow_1qci0_82",Nt="_metaItem_1qci0_92",wt="_metaDivider_1qci0_98",St="_title_1qci0_105",Ct="_genres_1qci0_129",Tt="_genreTag_1qci0_135",kt="_summary_1qci0_148",It="_actions_1qci0_161",Wt="_dotRow_1qci0_167",Lt="_activeDot_1qci0_189",m={bannerContainer:mt,bannerAtTop:ht,posterWrapper:_t,posterImage:gt,overlay:pt,content:vt,badgeRow:ft,featureLabel:yt,metaRow:bt,metaItem:Nt,metaDivider:wt,title:St,genres:Ct,genreTag:Tt,summary:kt,actions:It,dotRow:Wt,activeDot:Lt},xt=async _=>{try{const s=await fetch(`/api/show-meta/${_}`);return s.ok?await s.json():{}}catch{return{}}},Rt=({animeList:_})=>{const[s,f]=A(0),[p,y]=A(0),[i,b]=A(0),[v,c]=A(()=>typeof window<"u"&&window.scrollY===0),{lowEndMode:C}=ae(),R=$e(),{titlePreference:r}=ue(),h=ye(),o=_.slice(0,6),l=a=>{switch(r){case"nativeName":return a.nativeName||a.name;case"englishName":return a.englishName||a.name;default:return a.name}},t=D(()=>{y(a=>a+1)},[]),d=D(a=>{t(),f(a)},[t]),u=D(()=>{f(a=>(a+1)%o.length)},[o.length]),x=D(()=>{f(a=>(a-1+o.length)%o.length)},[o.length]);M(()=>{if(o.length===0)return;const a=setTimeout(u,1e4);return()=>clearTimeout(a)},[s,u,o.length,p]),M(()=>{const a=()=>{c(window.scrollY===0)};return a(),window.addEventListener("scroll",a,{passive:!0}),()=>window.removeEventListener("scroll",a)},[]);const P=be({queries:o.map(a=>({queryKey:["spotlight-meta",a._id],queryFn:()=>xt(a._id),enabled:!!a._id,staleTime:1e3*60*5,gcTime:1e3*60*10}))});if(o.length===0)return null;const T=o[s],N=P[s]?.data??{},$=(N.description??"").replace(/<[^>]*>?/gm,"").trim(),k=(N.genres??[]).slice(0,R?2:4),z=N.bannerImage?ie(N.bannerImage,1920,840):ie(T.thumbnail,1280,450),E=()=>{h(`/watch/${T._id}`)},Y=a=>{if(Math.abs(a.deltaY)>Math.abs(a.deltaX)&&Math.abs(a.deltaY)>5){a.preventDefault(),a.stopPropagation();const I=Date.now();if(I-i<300)return;b(I),t(),a.deltaY>0?u():x()}},H=[N.type||"Anime",N.status,N.episodeCount?`${N.episodeCount} Episodes`:void 0,N.rating].filter(Boolean);return R?null:e("div",{className:`${m.bannerContainer} ${v?m.bannerAtTop:""}`,children:e("div",{className:m.posterWrapper,children:[e("img",{src:z,alt:l(T),className:`${m.posterImage} ${C?"":m.fadeIn}`},`${s}-${p}`),e("div",{className:m.overlay,children:[e("div",{className:m.content,children:[e("div",{className:m.badgeRow,children:[e("span",{className:m.featureLabel,children:"Featured"}),N.score&&e("div",{className:m.metaRow,style:{color:"#fbbf24"},children:[e(ke,{size:14}),e("span",{children:N.score})]})]}),e("h1",{className:m.title,onClick:()=>h(`/anime/${T._id}`),children:l(T)}),e("div",{className:m.metaRow,children:H.map((a,I)=>e(Q.Fragment,{children:[e("span",{className:m.metaItem,children:a}),I<H.length-1&&e("div",{className:m.metaDivider})]},I))}),k.length>0&&e("div",{className:m.genres,children:k.map(a=>e("span",{className:m.genreTag,children:a.name},a.name))}),$&&e("p",{className:m.summary,children:$}),e("div",{className:m.actions,children:e(ee,{variant:"primary",size:"md",onClick:E,children:"Watch Now"})})]}),o.length>1&&e("div",{className:m.dotRow,onWheel:Y,children:o.map((a,I)=>e("button",{className:I===s?m.activeDot:"",onClick:()=>d(I),"aria-label":`Go to slide ${I+1}`},I))})]})]})})},qt="_seasonGrid_ft4zq_69",At="_tabBar_ft4zq_101",Dt="_tabButton_ft4zq_112",Pt="_tabActive_ft4zq_127",Bt="_emptyState_ft4zq_159",Mt="_emptyStateIcon_ft4zq_174",$t="_emptyStateTitle_ft4zq_181",Et="_emptyStateText_ft4zq_188",W={"section-header":"_section-header_ft4zq_1","title-wrapper":"_title-wrapper_ft4zq_8","pagination-controls":"_pagination-controls_ft4zq_14","nav-button":"_nav-button_ft4zq_24","page-info":"_page-info_ft4zq_48",seasonGrid:qt,tabBar:At,tabButton:Dt,tabActive:Pt,emptyState:Bt,emptyStateIcon:Mt,emptyStateTitle:$t,emptyStateText:Et},Kt=()=>{const _=Ne(),[s,f]=Q.useState(1),[p,y]=A(()=>localStorage.getItem("home_activeTab")||"latest"),i=O(null),{data:b}=de(s+1),{titlePreference:v}=ue(),[c,C]=Q.useState(null),R=Ie(),{data:r=[]}=We(),h=Le(),o=xe(),l=Re();M(()=>{document.title="Home - ani-web"},[]);const{data:t,isLoading:d}=qe();M(()=>{localStorage.setItem("home_activeTab",p)},[p]),M(()=>{t!==void 0&&t.length===0&&p==="week"&&y("latest")},[t,p]);const{data:u,isLoading:x,fetchNextPage:P,hasNextPage:T,isFetchingNextPage:N}=Ae(14),B=Z(()=>u?.pages.flatMap(n=>n)||[],[u]),$=D(n=>{if(!T||N||x)return;const{scrollLeft:q,clientWidth:F,scrollWidth:V}=n.currentTarget;q+F>V*.7&&P()},[T,N,x,P]),{data:g,isLoading:k,fetchNextPage:z,hasNextPage:E,isFetchingNextPage:Y}=De(),H=D(n=>{if(!E||Y||k)return;const{scrollLeft:q,clientWidth:F,scrollWidth:V}=n.currentTarget;q+F>V*.7&&z()},[E,Y,k,z]),{data:a}=Pe("weekly"),I=Z(()=>g?.pages||[],[g]),{data:U,isLoading:_e}=de(s),ne=14,se=U&&U.length>=14&&b&&b.length>0,oe=we({mutationFn:async n=>{await fetch("/api/continue-watching/remove",{method:"POST",body:JSON.stringify({showId:n}),headers:{"Content-Type":"application/json"}})},onSuccess:()=>{_.invalidateQueries({queryKey:["allContinueWatching"]})}}),ge=D(n=>{const q=I?.find(F=>String(F.id)===String(n));if(q){const F=q[v]||q.name;C({id:n,name:F})}},[I,v]),pe=D(n=>{c&&(oe.mutate(c.id),n.removeFromWatchlist&&R.mutate(c.id),C(null))},[c,oe,R]),re=[{key:"latest",label:"Latest Releases"},{key:"season",label:"Current Season"},{key:"popular",label:"Trending"}],le=t!==void 0&&t.length>0,ve=le?[{key:"week",label:"This Week"},...re]:re,J=p==="week"&&!le?"latest":p,fe=()=>{switch(J){case"latest":return e(X,{title:"Latest Releases",animeList:B,loading:x,carousel:!0,onScroll:$,isFetchingNextPage:N});case"season":return e("section",{style:{marginBottom:"2.5rem"},children:[e("div",{className:W["section-header"],ref:i,children:e("div",{className:W["title-wrapper"],children:[e("div",{className:"section-title",style:{marginBottom:0},children:"Current Season"}),e("div",{className:W["pagination-controls"],children:[e("button",{className:W["nav-button"],onClick:()=>{if(s>1&&(f(n=>n-1),i.current)){const n=i.current.getBoundingClientRect().top+window.scrollY-120;window.scrollTo({top:n,behavior:"smooth"})}},disabled:s===1,style:{opacity:s===1?.3:1},children:e(j,{size:14})}),e("span",{className:W["page-info"],children:s}),e("button",{className:W["nav-button"],onClick:()=>{if(f(n=>n+1),i.current){const n=i.current.getBoundingClientRect().top+window.scrollY-120;window.scrollTo({top:n,behavior:"smooth"})}},disabled:!se,style:{opacity:se?1:.3},children:e(K,{size:14})})]})]})}),e("div",{className:`grid-container ${W.seasonGrid}`,style:{minHeight:"300px",alignContent:"start"},children:_e?e(me,{count:ne}):U?.slice(0,ne).map(n=>e(G,{anime:n},n._id))})]});case"popular":return e(Je,{title:"Trending"});case"week":return e(X,{title:"This Week",animeList:t||[],continueWatching:!1,carousel:!0,onScroll:()=>{},loading:d});default:return null}};return e("div",{style:{paddingBottom:"2rem"},children:[e(Rt,{animeList:a||[]}),e(Ee,{title:"Queue",items:r,onRemove:n=>h.mutate({showId:n.showId,episodeNumber:n.episodeNumber}),showClearAll:!0,onClear:()=>o.mutate(),onReorder:n=>l.mutate(n.map(q=>({id:q.id,showId:q.showId,episodeNumber:q.episodeNumber})))}),e(X,{title:"Continue Watching",titleLink:"/watchlist/Continue Watching",animeList:I,continueWatching:!0,carousel:!0,collapsible:!0,defaultExpanded:I.length>0,onRemove:ge,loading:k,onScroll:H,isFetchingNextPage:Y,emptyState:e("div",{className:W.emptyState,children:[e(Be,{size:48,className:W.emptyStateIcon}),e("div",{children:[e("h3",{className:W.emptyStateTitle,children:"Nothing is here..."}),e("p",{className:W.emptyStateText,children:"You haven't watched anything yet. Start exploring and watch something first!"})]}),e(ee,{variant:"primary",size:"sm",onClick:()=>y("popular"),style:{marginTop:"1rem"},children:"Explore Trending"})]})}),e("div",{className:W.tabBar,children:ve.map(n=>e(ee,{variant:J===n.key?"primary":"secondary",size:"sm",className:`${W.tabButton} ${J===n.key?W.tabActive:""}`,onClick:()=>y(n.key),children:n.label},n.key))}),e("div",{className:W.tabContent,children:fe()}),e(ut,{}),e(Me,{isOpen:!!c,onClose:()=>C(null),onConfirm:pe,animeName:c?.name||"",scenario:"continueWatching"})]})};export{Kt as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._section-header_kvtvx_1{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:var(--space-8);gap:var(--space-4)}._title-wrapper_kvtvx_9{display:flex;align-items:center;gap:var(--space-6);flex:1}._header-controls_kvtvx_16{display:flex;align-items:center;gap:var(--space-2)}._collapse-button_kvtvx_22{width:40px;height:40px;border:1px solid var(--border-primary);background:var(--bg-secondary);color:var(--text-secondary);border-radius:var(--radius-md);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-base)}._collapse-button_kvtvx_22:hover{background:var(--bg-elevated);color:var(--text-primary)}._title-link_kvtvx_41{color:inherit;text-decoration:none;display:inline-flex;align-items:center;transition:all var(--transition-base)}._title-link_kvtvx_41 ._section-title_kvtvx_49{position:relative;font-size:1.5rem;font-weight:800;letter-spacing:-.01em}._title-link_kvtvx_41:hover{color:var(--accent);transform:translate(4px)}@media(max-width:600px){._section-header_kvtvx_1{flex-direction:column;align-items:flex-start;gap:var(--space-4);margin-bottom:var(--space-6)}._title-wrapper_kvtvx_9{width:100%;justify-content:space-between}._title-link_kvtvx_41 ._section-title_kvtvx_49{font-size:1.25rem}}._nav-arrows_kvtvx_79{display:flex;gap:8px;background:var(--bg-tertiary);padding:4px;border-radius:var(--radius-md);border:1px solid var(--border-primary)}._nav-button_kvtvx_88{background:transparent;border:none;color:var(--text-secondary);width:32px;height:32px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-base)}._nav-button_kvtvx_88:hover{background:var(--bg-elevated);color:var(--accent)}._nav-button_kvtvx_88:active{transform:scale(.9)}._carousel-container_kvtvx_111{position:relative;width:100%}._carousel_kvtvx_111{display:flex;gap:20px;overflow-x:auto;scrollbar-width:none;padding:4px;margin:-4px;scroll-snap-type:x mandatory;overflow-anchor:none}._carousel_kvtvx_111::-webkit-scrollbar{display:none}._carousel-card_kvtvx_131{flex:0 0 calc((100% - (6 * 20px)) / 7);min-width:150px;scroll-snap-align:start}@media(max-width:1400px){._carousel-card_kvtvx_131{flex:0 0 calc((100% - (5 * 20px)) / 6)}}@media(max-width:1200px){._carousel-card_kvtvx_131{flex:0 0 calc((100% - 80px)/5)}}@media(max-width:900px){._carousel-card_kvtvx_131{flex:0 0 calc((100% - 60px)/4)}}@media(max-width:768px){._carousel_kvtvx_111{gap:12px}._carousel-card_kvtvx_131{flex:0 0 calc((100% - (2 * 12px)) / 3);min-width:0}}@media(max-width:480px){._carousel-card_kvtvx_131{flex:0 0 calc((100% - (1 * 12px)) / 2.2)}}._section-header_wruhh_2{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:var(--space-8);gap:var(--space-4)}._title-wrapper_wruhh_10{display:flex;align-items:center;gap:var(--space-6);flex:1}@media(max-width:600px){._section-header_wruhh_2{flex-direction:column;align-items:flex-start;gap:var(--space-4);margin-bottom:var(--space-6)}._title-wrapper_wruhh_10{width:100%;justify-content:space-between}}._nav-arrows_wruhh_32{display:flex;gap:8px;background:var(--bg-tertiary);padding:4px;border-radius:var(--radius-md);border:1px solid var(--border-primary)}._nav-button_wruhh_41{background:transparent;border:none;color:var(--text-secondary);width:32px;height:32px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-base)}._nav-button_wruhh_41:hover{background:var(--bg-elevated);color:var(--accent)}._nav-button_wruhh_41:active{transform:scale(.9)}._timeSelect_wruhh_65{width:120px;height:34px;padding:0 var(--space-3);padding-right:2rem;background-color:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:var(--radius-sm);color:var(--text-primary);font-size:var(--font-size-sm);font-weight:700;cursor:pointer;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23a1a1aa' stroke-width='2' viewBox='0 0 12 12'%3E%3Cpolyline points='3 5 6 8 9 5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .5rem center;transition:all var(--transition-base)}._timeSelect_wruhh_65:hover{border-color:var(--border-secondary);background-color:var(--bg-elevated)}._timeSelect_wruhh_65:focus{outline:none;border-color:var(--accent)}._carouselContainer_wruhh_96{position:relative;width:100%}._carousel_wruhh_96{display:flex;gap:15px;overflow-x:auto;width:100%;scrollbar-width:none;padding:10px 0;margin:-10px 0;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory;overflow-anchor:none}._carousel_wruhh_96::-webkit-scrollbar{display:none}._carouselItem_wruhh_118{flex:0 0 calc((100% - (6 * 15px)) / 7);min-width:120px;display:flex;flex-direction:column;position:relative;scroll-snap-align:start}@media(max-width:1200px){._carouselItem_wruhh_118{flex:0 0 calc((100% - (5 * 15px)) / 6)}}@media(max-width:1024px){._carouselItem_wruhh_118{flex:0 0 calc((100% - 60px)/5)}}@media(max-width:768px){._carouselItem_wruhh_118{flex:0 0 calc((100% - (2 * 15px)) / 3)}}@media(max-width:480px){._carouselItem_wruhh_118{flex:0 0 calc((100% - (2 * 10px)) / 3);min-width:100px}._carousel_wruhh_96{gap:10px;align-items:flex-start}}._skeletonPoster_wruhh_158{width:100%;aspect-ratio:3 / 4;background:linear-gradient(90deg,var(--bg-tertiary) 0%,var(--bg-elevated) 50%,var(--bg-tertiary) 100%);background-size:200% 100%;animation:_skeleton-pulse_wruhh_1 1.5s ease-in-out infinite;border-radius:var(--radius-sm)}._skeletonText_wruhh_172{width:80%;height:12px;margin-top:var(--space-2);background:linear-gradient(90deg,var(--bg-tertiary) 0%,var(--bg-elevated) 50%,var(--bg-tertiary) 100%);background-size:200% 100%;animation:_skeleton-pulse_wruhh_1 1.5s ease-in-out infinite;border-radius:var(--radius-sm)}@keyframes _skeleton-pulse_wruhh_1{0%{background-position:200% 0}to{background-position:-200% 0}}._scheduleSection_1eb6m_1{margin-bottom:2.5rem}._sectionHeader_1eb6m_5{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-6);gap:var(--space-4);flex-wrap:wrap;row-gap:var(--space-3)}._daySelectorContainer_1eb6m_16{margin-bottom:var(--space-8);width:100%;overflow:hidden;position:relative}._daySelector_1eb6m_16{display:flex;gap:var(--space-2);overflow-x:auto;padding:var(--space-2) 0;scrollbar-width:none;-webkit-overflow-scrolling:touch;justify-content:center;width:100%}._daySelector_1eb6m_16::-webkit-scrollbar{display:none}@media(max-width:600px){._daySelector_1eb6m_16{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;overflow-x:hidden;padding:var(--space-1) 0}._dayBtn_1eb6m_47{min-width:0!important;padding:var(--space-1) 2px!important;border-radius:var(--radius-md)!important}._dayMonth_1eb6m_53{font-size:8px!important}._dayNum_1eb6m_57{font-size:1rem!important}._dayName_1eb6m_61{font-size:8px!important}._dayBtn_1eb6m_47._active_1eb6m_65{transform:translateY(-2px)!important}}._dayBtn_1eb6m_47{background:#ffffff08;border:1px solid var(--border-primary);color:var(--text-secondary);padding:var(--space-2) var(--space-4);border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-base);min-width:70px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;flex-shrink:0}._dayBtn_1eb6m_47:hover{background:#ffffff14;border-color:var(--border-secondary);transform:translateY(-2px)}._dayBtn_1eb6m_47._active_1eb6m_65{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 8px 20px var(--accent-glow);transform:translateY(-4px)}._dayMonth_1eb6m_53{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;opacity:.8}._dayNum_1eb6m_57{font-size:1.25rem;font-weight:800;line-height:1}._dayName_1eb6m_61{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.02em}._dayBtn_1eb6m_47._active_1eb6m_65 ._dayMonth_1eb6m_53,._dayBtn_1eb6m_47._active_1eb6m_65 ._dayName_1eb6m_61{opacity:1}._navArrows_1eb6m_128{display:flex;gap:8px;background:var(--bg-tertiary);padding:4px;border-radius:var(--radius-md);border:1px solid var(--border-primary)}._navButton_1eb6m_137{background:transparent;border:none;color:var(--text-secondary);width:32px;height:32px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-base)}._navButton_1eb6m_137:hover{background:var(--bg-elevated);color:var(--accent)}._navButton_1eb6m_137:active{transform:scale(.9)}._carouselContainer_1eb6m_161{position:relative;width:100%;min-height:280px}._carousel_1eb6m_161{display:flex;gap:15px;overflow-x:auto;scroll-behavior:smooth;scrollbar-width:none;padding-bottom:10px;min-height:260px}._carousel_1eb6m_161::-webkit-scrollbar{display:none}._carouselCard_1eb6m_181{flex:0 0 calc((100% - (6 * 15px)) / 7);min-width:150px}@media(max-width:1200px){._carouselCard_1eb6m_181{flex:0 0 calc((100% - (5 * 15px)) / 6)}}@media(max-width:1024px){._carouselCard_1eb6m_181{flex:0 0 calc((100% - 60px)/5)}}@media(max-width:768px){._carouselCard_1eb6m_181{flex:0 0 calc((100% - (2 * 15px)) / 3);min-width:0}._daySelector_1eb6m_16{justify-content:flex-start;padding-left:var(--space-4);padding-right:var(--space-4)}._dayBtn_1eb6m_47{min-width:60px;padding:var(--space-2) var(--space-3)}}@media(max-width:480px){._carouselCard_1eb6m_181{flex:0 0 calc((100% - (2 * 10px)) / 3);min-width:0}._carousel_1eb6m_161{gap:10px;align-items:flex-start}}._bannerContainer_1qci0_1{width:100vw;position:relative;left:50%;right:50%;margin-left:-50vw;margin-right:-50vw;margin-top:calc(-1 * var(--header-height));margin-bottom:3rem;overflow:hidden;transition:margin-top var(--transition-fast)}._bannerAtTop_1qci0_14{margin-top:0}._posterWrapper_1qci0_18{position:relative;width:100%;height:520px;overflow:hidden;background-color:#000}._posterImage_1qci0_26{width:100%;height:100%;object-fit:cover;object-position:center 20%;transition:opacity .5s ease-in-out}._overlay_1qci0_34{position:absolute;inset:0;background:linear-gradient(to right,rgba(5,5,5,.95) 0%,rgba(5,5,5,.8) 30%,rgba(5,5,5,.2) 60%,transparent 100%);display:flex;flex-direction:column;justify-content:center;z-index:3}._content_1qci0_50{width:100%;max-width:var(--max-width);margin:0 auto;padding:var(--space-6) var(--space-8) var(--space-8);display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;min-height:100%;gap:1.25rem;z-index:4}._badgeRow_1qci0_64{display:flex;align-items:center;gap:.75rem}._featureLabel_1qci0_70{padding:.3rem .75rem;background:#8a4fff26;border:1px solid rgba(138,79,255,.3);color:var(--accent-light);font-size:.75rem;font-weight:700;text-transform:uppercase;border-radius:var(--radius-sm);letter-spacing:.05em}._metaRow_1qci0_82{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem;color:#ffffffb3;font-size:.9rem;font-weight:600}._metaItem_1qci0_92{display:flex;align-items:center;gap:4px}._metaDivider_1qci0_98{width:4px;height:4px;background:#ffffff4d;border-radius:50%}._title_1qci0_105{font-size:3rem;line-height:1.1;cursor:pointer;max-width:800px;text-shadow:0 4px 12px rgba(0,0,0,.5);animation:_slideRight_1qci0_1 .8s var(--ease-smooth) both}@keyframes _slideRight_1qci0_1{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}._title_1qci0_105:hover{color:var(--accent-light)}._genres_1qci0_129{display:flex;flex-wrap:wrap;gap:.6rem}._genreTag_1qci0_135{background:#ffffff1a;border:1px solid rgba(255,255,255,.2);color:#fff;font-size:.8rem;font-weight:600;padding:.25rem .75rem;border-radius:var(--radius-full);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);letter-spacing:.03em;text-transform:uppercase}._summary_1qci0_148{font-size:1.15rem;line-height:1.6;margin:0;opacity:.9;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden;max-width:750px;text-shadow:0 1px 5px rgba(0,0,0,.5)}._actions_1qci0_161{display:flex;gap:1rem;margin-top:.5rem}._dotRow_1qci0_167{position:absolute;bottom:2rem;left:50%;transform:translate(-50%);display:flex;gap:.5rem;z-index:10;padding:10px}._dotRow_1qci0_167 button{width:10px;height:10px;border-radius:var(--radius-full);background:#ffffff4d;border:none;cursor:pointer;padding:0;transition:all .3s cubic-bezier(.4,0,.2,1)}._dotRow_1qci0_167 ._activeDot_1qci0_189{width:32px;background:var(--accent);box-shadow:0 0 10px var(--accent-glow)}@media(max-width:1200px){._title_1qci0_105{font-size:3rem}}@media(max-width:768px){._bannerContainer_1qci0_1{margin-top:calc(-1 * var(--space-3));margin-bottom:2rem}._posterWrapper_1qci0_18{height:380px}._overlay_1qci0_34{padding:0;justify-content:flex-end;background:linear-gradient(to top,#050505fa,#050505cc 40%,#05050533)}._content_1qci0_50{padding:0 var(--space-4) 4.5rem;gap:.75rem;max-width:100%}._title_1qci0_105{font-size:2.25rem;text-shadow:none}._summary_1qci0_148{-webkit-line-clamp:2;font-size:.95rem;line-height:1.5;max-width:100%;text-shadow:none}}._section-header_ft4zq_1{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-8)}._title-wrapper_ft4zq_8{display:flex;align-items:center;gap:var(--space-6)}._pagination-controls_ft4zq_14{display:flex;gap:8px;align-items:center;background:var(--bg-tertiary);padding:4px;border-radius:var(--radius-md);border:1px solid var(--border-primary)}._nav-button_ft4zq_24{background:transparent;border:none;color:var(--text-secondary);width:32px;height:32px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-base)}._nav-button_ft4zq_24:hover:not(:disabled){background:var(--bg-elevated);color:var(--accent)}._nav-button_ft4zq_24:disabled{opacity:.2;cursor:not-allowed}._page-info_ft4zq_48{font-size:.9rem;font-weight:800;min-width:32px;text-align:center;color:var(--text-primary)}@media(max-width:600px){._section-header_ft4zq_1{flex-direction:column;align-items:flex-start;gap:var(--space-4)}._title-wrapper_ft4zq_8{width:100%;justify-content:space-between}}._seasonGrid_ft4zq_69{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--space-4)}@media(max-width:1200px){._seasonGrid_ft4zq_69{grid-template-columns:repeat(6,1fr)}}@media(max-width:1024px){._seasonGrid_ft4zq_69{grid-template-columns:repeat(5,1fr)}}@media(max-width:768px){._seasonGrid_ft4zq_69{grid-template-columns:repeat(3,1fr);gap:var(--space-2)}}@media(max-width:480px){._seasonGrid_ft4zq_69{grid-template-columns:repeat(3,1fr);gap:8px}}._tabBar_ft4zq_101{display:flex;gap:var(--space-3);margin-bottom:var(--space-8);padding:6px;background:var(--bg-tertiary);width:fit-content;border-radius:var(--radius-lg);border:1px solid var(--border-primary)}._tabButton_ft4zq_112{border-radius:var(--radius-md)!important;font-weight:700!important;letter-spacing:.02em;transition:all var(--transition-base)!important;border:none!important;background:transparent!important;color:var(--text-secondary)!important}._tabButton_ft4zq_112:hover{color:var(--text-primary)!important;background:var(--bg-elevated)!important}._tabActive_ft4zq_127{background:var(--accent)!important;border-color:var(--accent)!important;color:#fff!important}@media(max-width:600px){._tabBar_ft4zq_101{width:100%;flex-direction:column;gap:8px;background:transparent;border:none;padding:0}._tabButton_ft4zq_112{width:100%;justify-content:flex-start!important;padding:0 1.5rem!important;height:48px!important;background:var(--bg-tertiary)!important;border:1px solid var(--border-primary)!important}._tabActive_ft4zq_127{background:var(--accent)!important;border-color:var(--accent)!important;color:#fff!important}}._emptyState_ft4zq_159{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-16) var(--space-8);background:linear-gradient(to bottom,var(--bg-tertiary),var(--bg-main));border-radius:var(--radius-lg);border:1px solid var(--border-primary);text-align:center;gap:var(--space-4);width:100%;min-height:320px}._emptyStateIcon_ft4zq_174{color:var(--accent);opacity:.4;margin-bottom:var(--space-2);filter:drop-shadow(0 0 20px var(--accent-glow))}._emptyStateTitle_ft4zq_181{font-size:1.5rem;font-weight:800;margin:0;color:var(--text-primary)}._emptyStateText_ft4zq_188{font-size:1rem;color:var(--text-secondary);max-width:340px;line-height:1.6}._quickQueue_ft4zq_195{margin:0 0 2.5rem;border:1px solid var(--border-secondary);border-radius:var(--radius-md);background:var(--bg-secondary);overflow:hidden}._quickQueueHeader_ft4zq_203{width:100%;border:none;background:transparent;color:var(--text-primary);padding:var(--space-4) var(--space-5);display:flex;align-items:center;justify-content:space-between;cursor:pointer}._quickQueueTitle_ft4zq_215{display:flex;align-items:center;gap:var(--space-3);font-weight:800}._queueBadge_ft4zq_222{min-width:24px;height:24px;padding:0 8px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:var(--accent);color:#fff;font-size:.78rem;font-weight:800}._quickQueueList_ft4zq_236{display:flex;gap:var(--space-3);overflow-x:auto;padding:0 var(--space-5) var(--space-5);-webkit-user-select:none;user-select:none}._quickQueueItem_ft4zq_244._dragging_ft4zq_244{opacity:.5;background:var(--bg-secondary);border-style:dashed}._quickQueueItem_ft4zq_244{width:240px;flex:0 0 240px;display:grid;grid-template-columns:24px 54px minmax(0,1fr) 32px;align-items:center;gap:var(--space-2);padding:var(--space-2);border:1px solid var(--border-secondary);border-radius:var(--radius-md);background:var(--bg-primary)}._quickQueueDrag_ft4zq_263{display:inline-flex;align-items:center;justify-content:center;color:var(--text-muted);cursor:grab;border:none;background:transparent}._quickQueueThumb_ft4zq_273{width:54px;height:72px;object-fit:cover;border-radius:var(--radius-sm);background:var(--bg-tertiary)}._quickQueueMeta_ft4zq_281{min-width:0}._quickQueueName_ft4zq_285{display:block;width:100%;border:none;background:transparent;padding:0;text-align:left;color:var(--text-primary);font-weight:700;font-size:.85rem;text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}._quickQueueEpisode_ft4zq_302{margin-top:.25rem;color:var(--text-secondary);font-size:.75rem}._quickQueueRemove_ft4zq_308{width:30px;height:30px;border:1px solid var(--border-secondary);background:var(--bg-tertiary);color:var(--text-secondary);border-radius:var(--radius-sm);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}._quickQueueRemove_ft4zq_308:hover{color:var(--color-danger);border-color:var(--color-danger)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._header_1bfjc_1{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-8);animation:_fadeIn_1bfjc_1 .8s var(--ease-smooth)}._personaBadge_1bfjc_9{display:flex;align-items:center;gap:var(--space-4);background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);color:var(--accent-light);padding:var(--space-3) var(--space-6);border-radius:var(--radius-lg);font-weight:700;border:1px solid var(--border-accent);box-shadow:var(--glass-shadow);cursor:default;transition:all var(--transition-base)}._personaBadge_1bfjc_9:hover{transform:translateY(-2px);border-color:var(--accent);box-shadow:0 0 20px var(--accent-glow)}._personaBadge_1bfjc_9 svg{font-size:1.5rem;color:var(--accent)}._personaInfo_1bfjc_37{display:flex;flex-direction:column}._personaLabel_1bfjc_42{font-size:.65rem;text-transform:uppercase;letter-spacing:1.5px;color:var(--text-tertiary);margin-bottom:2px;font-weight:800}._personaValue_1bfjc_51{font-size:1.1rem;color:var(--text-primary);letter-spacing:-.01em}._statsGrid_1bfjc_57{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--space-6);margin-bottom:var(--space-10);animation:_slideUpIn_1bfjc_1 .8s var(--ease-smooth)}._statCard_1bfjc_65{background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);border-radius:var(--radius-xl);padding:var(--space-6);display:flex;align-items:center;gap:var(--space-5);transition:all var(--transition-base);box-shadow:var(--glass-shadow)}._statCard_1bfjc_65:hover{transform:translateY(-5px);border-color:var(--border-accent);background:#ffffff0d;box-shadow:0 20px 40px -10px #00000080}._statIcon_1bfjc_86{width:54px;height:54px;border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:center;font-size:1.5rem;flex-shrink:0;transition:transform var(--transition-base)}._statCard_1bfjc_65:hover ._statIcon_1bfjc_86{transform:scale(1.1) rotate(-5deg)}._statInfo_1bfjc_102{display:flex;flex-direction:column}._statValue_1bfjc_107{font-size:1.75rem;font-weight:800;color:var(--text-primary);line-height:1;margin-bottom:4px;letter-spacing:-.02em}._statLabel_1bfjc_116{color:var(--text-tertiary);font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:1px}._wideSection_1bfjc_124{background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);border-radius:var(--radius-xl);padding:var(--space-8);margin-bottom:var(--space-10);box-shadow:var(--glass-shadow);animation:_slideUpIn_1bfjc_1 .8s var(--ease-smooth) .1s both}._sectionHeader_1bfjc_136{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-8);gap:var(--space-4)}._sectionHeader_1bfjc_136 h3{font-size:1.5rem;font-weight:800;color:var(--text-primary);letter-spacing:-.02em}._yearSelect_1bfjc_151{width:130px;height:44px;padding:0 var(--space-4);background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-primary);border-radius:var(--radius-lg);font-size:var(--font-size-sm);font-weight:600;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%2371717a' stroke-width='2' viewBox='0 0 12 12'%3E%3Cpolyline points='3 5 6 8 9 5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1rem center;transition:all var(--transition-fast)}._yearSelect_1bfjc_151:hover{border-color:var(--border-secondary);background-color:var(--bg-elevated)}._yearSelect_1bfjc_151:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}._heatmapLayout_1bfjc_180{display:flex;gap:var(--space-8);align-items:flex-start;justify-content:center}._dayLabels_1bfjc_187{display:grid;grid-template-rows:repeat(7,14px);gap:4px;font-size:.65rem;color:var(--text-tertiary);align-items:center;padding-right:6px;margin-top:24px;font-weight:700}._heatmapWrapper_1bfjc_199{overflow-x:auto;padding:var(--space-2) var(--space-3);max-width:100%}._heatmapMonthLabels_1bfjc_205{display:grid;grid-auto-flow:column;grid-auto-columns:18px;margin-bottom:8px;font-size:.7rem;color:var(--text-tertiary);font-weight:700;text-transform:uppercase}._heatmapGrid_1bfjc_216{display:grid;grid-auto-flow:column;grid-template-rows:repeat(7,14px);gap:4px;width:fit-content}._heatBox_1bfjc_224{width:14px;height:14px;border-radius:3px;background:#ffffff0d;border:1px solid rgba(255,255,255,.08);transition:all .2s var(--ease-smooth)}._heatBox_1bfjc_224._hiddenBox_1bfjc_233{opacity:0;pointer-events:none}._heatBox_1bfjc_224:hover{transform:scale(1.6);z-index:10;border-color:#fff;box-shadow:0 0 10px #ffffff4d}._level0_1bfjc_245{background:#ffffff0d}._level1_1bfjc_248{background:#8a4fff40;border-color:#8a4fff4d}._level2_1bfjc_252{background:#8a4fff80;border-color:#8a4fff99}._level3_1bfjc_256{background:#8a4fffbf;border-color:#8a4fffe6}._level4_1bfjc_260{background:var(--accent);border-color:var(--accent-light);box-shadow:0 0 10px var(--accent-glow)}._heatmapFooter_1bfjc_266{display:flex;justify-content:flex-end;margin-top:var(--space-6);padding-right:var(--space-2)}._heatLegend_1bfjc_273{display:flex;align-items:center;gap:6px;font-size:.7rem;color:var(--text-tertiary);font-weight:700;text-transform:uppercase}._chartsContainer_1bfjc_283{display:grid;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));gap:var(--space-8);margin-bottom:var(--space-10);animation:_slideUpIn_1bfjc_1 .8s var(--ease-smooth) .2s both}._chartWrapper_1bfjc_291{background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);border-radius:var(--radius-xl);padding:var(--space-8);display:flex;flex-direction:column;box-shadow:var(--glass-shadow);transition:transform var(--transition-base)}._chartWrapper_1bfjc_291:hover{transform:translateY(-4px)}._chartWrapper_1bfjc_291 h3{margin-bottom:var(--space-8);font-size:1.25rem;font-weight:800;color:var(--text-primary);border-left:4px solid var(--accent);padding-left:var(--space-4);letter-spacing:-.01em}._hourlyChart_1bfjc_318{display:flex;align-items:flex-end;height:160px;gap:2px;padding-top:var(--space-4)}._hourlyBarContainer_1bfjc_326{flex:1;display:flex;flex-direction:column;align-items:center;height:100%;min-width:0}._hourlyBar_1bfjc_326{width:100%;max-width:12px;background:linear-gradient(to top,var(--accent),var(--accent-light));border-radius:4px 4px 2px 2px;opacity:.7;transition:all var(--transition-fast);min-height:4px}._hourlyBar_1bfjc_326:hover{opacity:1;transform:scaleY(1.05);filter:brightness(1.2);box-shadow:0 0 10px var(--accent-glow)}._hourlyLabel_1bfjc_352{font-size:.65rem;color:var(--text-tertiary);margin-top:8px;font-weight:700}._chartSubtext_1bfjc_359{margin-top:var(--space-8);padding:var(--space-4);background:#8a4fff1a;border:1px solid var(--border-accent);border-radius:var(--radius-lg);font-size:.9rem;color:var(--accent-light);font-weight:600;text-align:center}._popScale_1bfjc_371{padding:var(--space-8) 0}._popTrack_1bfjc_375{height:14px;background:linear-gradient(to right,#10b981,#f59e0b,#ef4444);border-radius:var(--radius-full);position:relative;margin-bottom:var(--space-6);box-shadow:inset 0 2px 4px #0006}._popThumb_1bfjc_384{width:26px;height:26px;background:#fff;border:5px solid var(--bg-secondary);border-radius:50%;position:absolute;top:50%;transform:translate(-50%,-50%);box-shadow:0 0 20px #0009;transition:left 1s var(--ease-spring)}._popDescription_1bfjc_397{font-size:.95rem;color:var(--text-secondary);line-height:1.6;background:#ffffff08;padding:var(--space-5);border-radius:var(--radius-lg);border:1px solid var(--border-primary)}._popDescription_1bfjc_397 strong{color:var(--text-primary);font-weight:800}._seasonalChart_1bfjc_412{display:flex;align-items:flex-end;height:160px;gap:8px;padding-top:var(--space-4)}._seasonalBarContainer_1bfjc_420{flex:1;display:flex;flex-direction:column;align-items:center;height:100%;min-width:0}._seasonalBar_1bfjc_420{width:100%;background:linear-gradient(to top,#3b82f6,#60a5fa);border-radius:6px 6px 2px 2px;box-shadow:0 4px 15px #3b82f633;opacity:.8;transition:all var(--transition-fast)}._seasonalBar_1bfjc_420:hover{opacity:1;transform:scaleY(1.03)}._seasonalLabel_1bfjc_443{font-size:.65rem;color:var(--text-tertiary);margin-top:10px;font-weight:700;text-transform:uppercase}._genreList_1bfjc_451{display:flex;flex-direction:column;gap:var(--space-6);padding-top:var(--space-2)}._genreRow_1bfjc_458{display:flex;flex-direction:column;gap:var(--space-2)}._genreInfo_1bfjc_464{display:flex;justify-content:space-between;align-items:center;margin-bottom:2px}._genreName_1bfjc_471{font-weight:800;font-size:1rem;color:var(--text-primary);letter-spacing:-.01em}._genreCount_1bfjc_478{font-size:.8rem;color:var(--text-tertiary);font-weight:700;text-transform:uppercase}._genreBarBg_1bfjc_485{height:12px;background:#ffffff0d;border-radius:var(--radius-full);overflow:hidden;border:1px solid rgba(255,255,255,.03)}._genreBar_1bfjc_485{height:100%;border-radius:var(--radius-full);transition:width 1.5s var(--ease-smooth);box-shadow:4px 0 15px #0000004d}._warningSection_1bfjc_500{background:#ef444408;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(239,68,68,.2);border-radius:var(--radius-xl);padding:var(--space-10);box-shadow:0 20px 50px -20px #ef444426;animation:_slideUpIn_1bfjc_1 .8s var(--ease-smooth) .3s both}._warningHeader_1bfjc_511{display:flex;align-items:center;gap:var(--space-4);margin-bottom:var(--space-8);color:#ef4444}._warningHeader_1bfjc_511 h3{font-size:1.5rem;font-weight:800;margin:0;letter-spacing:-.03em;text-transform:uppercase}._droppedGrid_1bfjc_527{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--space-5)}._droppedCard_1bfjc_533{background:#ffffff08;border:1px solid rgba(255,255,255,.06);padding:var(--space-6);border-radius:var(--radius-lg);display:flex;flex-direction:column;gap:8px;transition:all var(--transition-base)}._droppedCard_1bfjc_533:hover{transform:translateY(-4px) scale(1.02);background:#ffffff0f;border-color:#ef444466;box-shadow:0 10px 30px -10px #00000080}._droppedName_1bfjc_551{font-weight:800;color:var(--text-primary);font-size:1.1rem;letter-spacing:-.01em}._droppedDate_1bfjc_558{font-size:.85rem;color:var(--text-tertiary);font-weight:600}@keyframes _fadeIn_1bfjc_1{0%{opacity:0}to{opacity:1}}@keyframes _slideUpIn_1bfjc_1{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){._header_1bfjc_1{flex-direction:column;align-items:flex-start;gap:var(--space-6)}._statsGrid_1bfjc_57,._chartsContainer_1bfjc_283{grid-template-columns:1fr}._heatmapLayout_1bfjc_180{flex-direction:column-reverse}._genreGrid_1bfjc_599{grid-template-columns:1fr}}._genreGrid_1bfjc_599{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:1.5rem;margin-bottom:var(--space-10)}._genreCard_1bfjc_611{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-xl);padding:1.5rem;position:relative;box-shadow:var(--glass-shadow)}._rankBadge_1bfjc_620{position:absolute;top:1rem;right:1rem;width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,#22c55e,#16a34a);display:flex;align-items:center;justify-content:center;box-shadow:0 0 10px #22c55e66}._rankNumber_1bfjc_634{color:#fff;font-weight:700;font-size:1.1rem}._genreTitle_1bfjc_640{font-size:1.25rem;font-weight:800;color:var(--text-primary);margin-bottom:.75rem;letter-spacing:-.01em}._genreStats_1bfjc_648{display:flex;gap:1rem;margin-bottom:1rem;font-size:.85rem;color:var(--text-secondary)}._posterRow_1bfjc_656{display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem;margin-top:.5rem}._miniPoster_1bfjc_663{aspect-ratio:2/3;width:100%;border-radius:var(--radius-sm);object-fit:cover;border:1px solid rgba(255,255,255,.1);transition:transform var(--transition-fast)}._miniPoster_1bfjc_663:hover{transform:scale(1.05);border-color:var(--accent);box-shadow:0 4px 15px #8a4fff4d}._genreCardSkeleton_1bfjc_678{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-xl);padding:1.5rem;animation:_pulse_1bfjc_1 1.5s ease-in-out infinite}._skeletonRank_1bfjc_686{width:32px;height:32px;background:linear-gradient(90deg,#ffffff1a 25%,#fff3,#ffffff1a 75%);border-radius:50%;margin-bottom:.5rem}._skeletonTitle_1bfjc_700{height:1.25rem;width:60%;background:linear-gradient(90deg,#ffffff1a 25%,#fff3,#ffffff1a 75%);border-radius:4px;margin-bottom:.75rem}._skeletonStats_1bfjc_713{height:1rem;background:linear-gradient(90deg,#ffffff1a 25%,#fff3,#ffffff1a 75%);border-radius:4px;margin-bottom:1rem}._skeletonPosters_1bfjc_725{display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem}._skeletonPosters_1bfjc_725:before{content:"";display:block;height:100%;background:linear-gradient(90deg,#ffffff1a 25%,#fff3,#ffffff1a 75%);border-radius:4px}@keyframes _pulse_1bfjc_1{0%{opacity:.6}50%{opacity:1}to{opacity:.6}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as B,d as w,T as h,u as e}from"./vendor-Bc4EraM_.js";import{am as D,e as I,an as x,ao as $,ap as R,aq as T,r as G,ar as F,f as M,ai as O}from"./index-Ciivz6fh.js";const W="_header_1bfjc_1",Y="_fadeIn_1bfjc_1",H="_personaBadge_1bfjc_9",P="_personaInfo_1bfjc_37",V="_personaLabel_1bfjc_42",A="_personaValue_1bfjc_51",U="_statsGrid_1bfjc_57",E="_slideUpIn_1bfjc_1",q="_statCard_1bfjc_65",z="_statIcon_1bfjc_86",K="_statInfo_1bfjc_102",Q="_statValue_1bfjc_107",J="_statLabel_1bfjc_116",X="_wideSection_1bfjc_124",Z="_sectionHeader_1bfjc_136",ee="_yearSelect_1bfjc_151",ae="_heatmapLayout_1bfjc_180",te="_dayLabels_1bfjc_187",se="_heatmapWrapper_1bfjc_199",ne="_heatmapMonthLabels_1bfjc_205",re="_heatmapGrid_1bfjc_216",ce="_heatBox_1bfjc_224",oe="_hiddenBox_1bfjc_233",le="_level0_1bfjc_245",ie="_level1_1bfjc_248",de="_level2_1bfjc_252",he="_level3_1bfjc_256",pe="_level4_1bfjc_260",_e="_heatmapFooter_1bfjc_266",me="_heatLegend_1bfjc_273",ue="_chartsContainer_1bfjc_283",ge="_chartWrapper_1bfjc_291",fe="_hourlyChart_1bfjc_318",be="_hourlyBarContainer_1bfjc_326",ve="_hourlyBar_1bfjc_326",Ne="_hourlyLabel_1bfjc_352",ye="_chartSubtext_1bfjc_359",je="_popScale_1bfjc_371",Se="_popTrack_1bfjc_375",Ce="_popThumb_1bfjc_384",Le="_popDescription_1bfjc_397",ke="_seasonalChart_1bfjc_412",Be="_seasonalBarContainer_1bfjc_420",we="_seasonalBar_1bfjc_420",De="_seasonalLabel_1bfjc_443",Ie="_genreList_1bfjc_451",xe="_genreRow_1bfjc_458",$e="_genreInfo_1bfjc_464",Re="_genreName_1bfjc_471",Te="_genreCount_1bfjc_478",Ge="_genreBarBg_1bfjc_485",Fe="_genreBar_1bfjc_485",Me="_warningSection_1bfjc_500",Oe="_warningHeader_1bfjc_511",We="_droppedGrid_1bfjc_527",Ye="_droppedCard_1bfjc_533",He="_droppedName_1bfjc_551",Pe="_droppedDate_1bfjc_558",Ve="_genreGrid_1bfjc_599",Ae="_genreCard_1bfjc_611",Ue="_rankBadge_1bfjc_620",Ee="_rankNumber_1bfjc_634",qe="_genreTitle_1bfjc_640",ze="_genreStats_1bfjc_648",Ke="_posterRow_1bfjc_656",Qe="_miniPoster_1bfjc_663",Je="_genreCardSkeleton_1bfjc_678",Xe="_pulse_1bfjc_1",Ze="_skeletonRank_1bfjc_686",ea="_skeletonTitle_1bfjc_700",aa="_skeletonStats_1bfjc_713",ta="_skeletonPosters_1bfjc_725",a={header:W,fadeIn:Y,personaBadge:H,personaInfo:P,personaLabel:V,personaValue:A,statsGrid:U,slideUpIn:E,statCard:q,statIcon:z,statInfo:K,statValue:Q,statLabel:J,wideSection:X,sectionHeader:Z,yearSelect:ee,heatmapLayout:ae,dayLabels:te,heatmapWrapper:se,heatmapMonthLabels:ne,heatmapGrid:re,heatBox:ce,hiddenBox:oe,level0:le,level1:ie,level2:de,level3:he,level4:pe,heatmapFooter:_e,heatLegend:me,chartsContainer:ue,chartWrapper:ge,hourlyChart:fe,hourlyBarContainer:be,hourlyBar:ve,hourlyLabel:Ne,chartSubtext:ye,popScale:je,popTrack:Se,popThumb:Ce,popDescription:Le,seasonalChart:ke,seasonalBarContainer:Be,seasonalBar:we,seasonalLabel:De,genreList:Ie,genreRow:xe,genreInfo:$e,genreName:Re,genreCount:Te,genreBarBg:Ge,genreBar:Fe,warningSection:Me,warningHeader:Oe,droppedGrid:We,droppedCard:Ye,droppedName:He,droppedDate:Pe,genreGrid:Ve,genreCard:Ae,rankBadge:Ue,rankNumber:Ee,genreTitle:qe,genreStats:ze,posterRow:Ke,miniPoster:Qe,genreCardSkeleton:Je,pulse:Xe,skeletonRank:Ze,skeletonTitle:ea,skeletonStats:aa,skeletonPosters:ta},ra=()=>{const{data:s,isLoading:f,isError:b}=B({queryKey:["insights"],queryFn:async()=>{const t=await fetch("/api/insights");if(!t.ok)throw new Error("Failed to fetch insights");return t.json()}}),{data:v,isLoading:p}=D(),{titlePreference:N}=I(),_=t=>{switch(N){case"nativeName":return t.nativeName||t.name;case"englishName":return t.englishName||t.name;default:return t.name}},[l,y]=w(new Date().getFullYear()),j=h(()=>{if(!s?.activityGrid)return[new Date().getFullYear()];const t=new Set(s.activityGrid.map(n=>parseInt(n.day.split("-")[0])));return t.add(new Date().getFullYear()),Array.from(t).sort((n,r)=>r-n)},[s]),m=h(()=>{if(!s?.activityGrid)return[];const t=new Map(s.activityGrid.map(d=>[d.day,d.count])),n=[],r=new Date(l,0,1),o=new Date(l,11,31),i=r.getDay(),c=new Date(r);for(c.setDate(c.getDate()-i);(c<=o||c.getDay()!==0)&&!(c>o&&c.getDay()===0);){const d=c.getFullYear(),L=String(c.getMonth()+1).padStart(2,"0"),k=String(c.getDate()).padStart(2,"0"),u=`${d}-${L}-${k}`,g=c<r||c>o;n.push({date:u,count:g?0:t.get(u)||0,month:c.getMonth(),isOutOfRange:g}),c.setDate(c.getDate()+1)}return n},[s,l]),S=h(()=>s?.seasonality?.length?Math.max(...s.seasonality.map(t=>t.seconds),1):0,[s]),C=h(()=>s?.hourlyDist?.length?Math.max(...s.hourlyDist.map(t=>t.count),1):0,[s]);return f||p?e("div",{className:a.loading,children:"Analyzing your anime lifestyle..."}):b?e("div",{className:a.error,children:"Could not load insights. Data might be syncing."}):s?e("div",{className:"page-container",children:[e("div",{className:a.header,children:[e("h2",{className:"section-title",children:"Watch Insights"}),e("div",{className:a.personaBadge,children:[e(x,{}),e("div",{className:a.personaInfo,children:[e("span",{className:a.personaLabel,children:"Your Persona"}),e("span",{className:a.personaValue,children:s.persona})]})]})]}),e("div",{className:a.statsGrid,children:[e("div",{className:a.statCard,children:[e("div",{className:a.statIcon,style:{background:"rgba(138, 79, 255, 0.2)",color:"var(--accent)"},children:e($,{})}),e("div",{className:a.statInfo,children:[e("span",{className:a.statValue,children:[s.totalHours,"h"]}),e("span",{className:a.statLabel,children:"Watch Time"})]})]}),e("div",{className:a.statCard,children:[e("div",{className:a.statIcon,style:{background:"rgba(34, 197, 94, 0.2)",color:"#22c55e"},children:e(R,{})}),e("div",{className:a.statInfo,children:[e("span",{className:a.statValue,children:[s.completionRate,"%"]}),e("span",{className:a.statLabel,children:"Completion Rate"})]})]}),e("div",{className:a.statCard,children:[e("div",{className:a.statIcon,style:{background:"rgba(239, 68, 68, 0.2)",color:"#ef4444"},children:e(T,{})}),e("div",{className:a.statInfo,children:[e("span",{className:a.statValue,children:s.bingeFactor}),e("span",{className:a.statLabel,children:"Max Daily Binge"})]})]}),e("div",{className:a.statCard,children:[e("div",{className:a.statIcon,style:{background:"rgba(59, 130, 246, 0.2)",color:"#3b82f6"},children:e(G,{})}),e("div",{className:a.statInfo,children:[e("span",{className:a.statValue,children:[s.avgSessionMinutes,"m"]}),e("span",{className:a.statLabel,children:"Avg. Session"})]})]}),e("div",{className:a.statCard,children:[e("div",{className:a.statIcon,style:{background:"rgba(251, 191, 36, 0.2)",color:"#fbbf24"},children:e(F,{})}),e("div",{className:a.statInfo,children:[e("span",{className:a.statValue,children:[s.avgCompletionDays,"d"]}),e("span",{className:a.statLabel,children:"Avg. Speed"})]})]})]}),e("div",{className:a.wideSection,children:[e("div",{className:a.sectionHeader,children:[e("h3",{children:"Activity"}),e("select",{className:a.yearSelect,value:l,onChange:t=>y(Number(t.currentTarget.value)),children:j.map(t=>e("option",{value:t,children:t},t))})]}),e("div",{className:a.heatmapLayout,children:[e("div",{className:a.dayLabels,children:[e("span",{style:{gridRow:2},children:"Mon"}),e("span",{style:{gridRow:4},children:"Wed"}),e("span",{style:{gridRow:6},children:"Fri"})]}),e("div",{className:a.heatmapWrapper,children:[e("div",{className:a.heatmapMonthLabels,children:(()=>{const t=[];let n=-1;return m.forEach((r,o)=>{if(r.month!==n&&!r.isOutOfRange){const i=Math.floor(o/7)+1;i>(t.length>0?t[t.length-1].props.style.gridColumn+2:-1)&&(t.push(e("span",{style:{gridColumn:i,whiteSpace:"nowrap"},children:new Date(0,r.month).toLocaleString("default",{month:"short"})},o)),n=r.month)}}),t})()}),e("div",{className:a.heatmapGrid,children:m.map((t,n)=>{let r=0;return t.count>0&&!t.isOutOfRange&&(r=1),t.count>2&&!t.isOutOfRange&&(r=2),t.count>5&&!t.isOutOfRange&&(r=3),t.count>10&&!t.isOutOfRange&&(r=4),e("div",{className:`${a.heatBox} ${a[`level${r}`]} ${t.isOutOfRange?a.hiddenBox:""}`,title:t.isOutOfRange?"":`${t.count} episodes on ${t.date}`},n)})}),e("div",{className:a.heatmapFooter,children:e("div",{className:a.heatLegend,children:[e("span",{children:"Less"}),e("div",{className:`${a.heatBox} ${a.level0}`}),e("div",{className:`${a.heatBox} ${a.level1}`}),e("div",{className:`${a.heatBox} ${a.level2}`}),e("div",{className:`${a.heatBox} ${a.level3}`}),e("div",{className:`${a.heatBox} ${a.level4}`}),e("span",{children:"More"})]})})]})]})]}),e("div",{className:a.chartsContainer,children:[e("div",{className:a.chartWrapper,children:[e("h3",{children:"Time Distribution (24h)"}),e("div",{className:a.hourlyChart,children:s.hourlyDist?.map((t,n)=>e("div",{className:a.hourlyBarContainer,children:[e("div",{className:a.hourlyBar,style:{height:`${t.count/C*100||2}%`,width:"100%",maxWidth:"12px"},title:`${t.count} watches at ${t.hour}:00`}),e("span",{className:a.hourlyLabel,style:{visibility:n%4===0?"visible":"hidden"},children:t.hour})]},n))}),e("div",{className:a.chartSubtext,children:(()=>{if(!s.hourlyDist?.length)return"Watch more to see your peak hours!";const t=parseInt([...s.hourlyDist].sort((n,r)=>r.count-n.count)[0].hour);return t>=6&&t<19?"You prefer daytime watching ☀️":"You're a confirmed Night Owl 🦉"})()})]}),e("div",{className:a.chartWrapper,children:[e("h3",{children:"Popularity Bias"}),e("div",{className:a.popScale,children:[e("div",{className:a.popTrack,children:e("div",{className:a.popThumb,style:{left:`${Math.max(0,Math.min(100,100-s.popularityScore*10))}%`}})}),e("div",{className:a.popLabels,children:[e("span",{children:"Mainstream"}),e("span",{children:"Underground"})]})]}),e("p",{className:a.popDescription,children:["Your taste score is ",e("strong",{children:[s.popularityScore,"/10"]}),".",s.popularityScore>=5?" You follow the big hits!":" You're a connoisseur of the obscure!"]})]}),e("div",{className:a.chartWrapper,children:[e("h3",{children:"Monthly Activity"}),e("div",{className:a.seasonalChart,children:s.seasonality?.map((t,n)=>e("div",{className:a.seasonalBarContainer,children:[e("div",{className:a.seasonalBar,style:{height:`${t.seconds/S*100||5}%`,width:"100%",maxWidth:"24px"},title:`${Math.round(t.seconds/3600)}h in ${new Date(0,n).toLocaleString("default",{month:"long"})}`}),e("span",{className:a.seasonalLabel,children:new Date(0,n).toLocaleString("default",{month:"short"})})]},n))})]})]}),e("div",{className:a.genreGrid,children:p?Array.from({length:4}).map((t,n)=>e("div",{className:a.genreCardSkeleton,children:[e("div",{className:a.skeletonRank}),e("div",{className:a.skeletonTitle}),e("div",{className:a.skeletonStats}),e("div",{className:a.skeletonPosters})]},n)):v?.map(t=>e("div",{className:a.genreCard,children:[e("div",{className:a.rankBadge,children:e("span",{className:a.rankNumber,children:t.rank})}),e("h3",{className:a.genreTitle,children:t.name}),e("div",{className:a.genreStats,children:[e("span",{children:[t.count," episodes"]}),e("span",{children:[t.meanScore.toFixed(1)," avg score"]}),e("span",{children:t.timeWatched})]}),e("div",{className:a.posterRow,children:t.topShows.map(n=>e("img",{src:M(n.thumbnail),alt:_(n),className:a.miniPoster,title:_(n)},n.id))})]},t.name))}),s.droppedShows?.length>0&&e("div",{className:a.warningSection,children:[e("div",{className:a.warningHeader,children:[e(O,{}),e("h3",{children:"Dusty Watchlist (Inactive 90+ days)"})]}),e("div",{className:a.droppedGrid,children:s.droppedShows.map(t=>e("div",{className:a.droppedCard,children:[e("span",{className:a.droppedName,children:t.name}),e("span",{className:a.droppedDate,children:["Last watched: ",new Date(t.lastActivity).toLocaleDateString()]})]},t.id))})]})]}):null};export{ra as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{g as b,d as r,u as e}from"./vendor-Bc4EraM_.js";import{aj as N,ak as x,al as y}from"./index-Ciivz6fh.js";import{B as I}from"./Button-lkEUHIDS.js";const k="_header_1l05u_1",w="_pageTitle_1l05u_6",T="_pageSubtitle_1l05u_14",A="_importCard_1l05u_20",C="_cardHeader_1l05u_33",F="_uploadArea_1l05u_51",B="_fileInputWrapper_1l05u_55",M="_fileInput_1l05u_55",S="_fileDisplay_1l05u_83",v="_fileIcon_1l05u_91",L="_fileName_1l05u_96",D="_browseButton_1l05u_105",E="_optionsArea_1l05u_116",W="_checkboxLabel_1l05u_124",$="_checkbox_1l05u_124",H="_checkboxCustom_1l05u_137",j="_optionText_1l05u_165",O="_optionTitle_1l05u_171",X="_optionDesc_1l05u_177",P="_actions_1l05u_183",U="_importBtn_1l05u_190",J="_statusMessage_1l05u_196",R="_success_1l05u_206",q="_error_1l05u_212",t={header:k,pageTitle:w,pageSubtitle:T,importCard:A,cardHeader:C,uploadArea:F,fileInputWrapper:B,fileInput:M,fileDisplay:S,fileIcon:v,fileName:L,browseButton:D,optionsArea:E,checkboxLabel:W,checkbox:$,checkboxCustom:H,optionText:j,optionTitle:O,optionDesc:X,actions:P,importBtn:U,statusMessage:J,success:R,error:q},Q=()=>{const{setIsOpen:d}=N();b.useEffect(()=>{document.title="MyAnimeList Import - ani-web"},[]);const[o,a]=r(""),[n,m]=r(!1),[u,p]=r(""),_=s=>{s.target.files&&s.target.files.length>0?p(s.target.files[0].name):p("")},h=async()=>{const s=document.getElementById("malFile");if(!s.files||s.files.length===0){a("Please select a file first.");return}const f=s.files[0];a("Importing...");const i=new FileReader;i.onload=async g=>{try{const l=await fetch("/api/import/mal-xml",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({xml:g.target?.result,erase:n})}),c=await l.json();if(!l.ok)throw new Error(c.error||"Failed to import watchlist.");a(`Import complete! Imported: ${c.imported}, Skipped: ${c.skipped}.`),d(!1)}catch(l){a(`Error: ${l.message}`)}},i.onerror=()=>{a("Error reading file.")},i.readAsText(f)};return e("div",{className:"page-container",children:[e("div",{className:t.header,children:[e("h1",{className:t.pageTitle,children:"MyAnimeList Import"}),e("p",{className:t.pageSubtitle,children:"Transfer your anime list seamlessly to ani-web"})]}),e("div",{className:t.importCard,children:[e("div",{className:t.cardHeader,children:[e("h3",{children:"Import XML File"}),e("p",{children:"Upload your exported MyAnimeList XML file to sync your watchlist."})]}),e("div",{className:t.uploadArea,children:e("div",{className:t.fileInputWrapper,children:[e("input",{type:"file",id:"malFile",accept:".xml,application/xml",className:t.fileInput,onChange:_}),e("div",{className:t.fileDisplay,children:[e(x,{className:t.fileIcon}),e("span",{className:t.fileName,children:u||"Choose XML file..."})]}),e("label",{htmlFor:"malFile",className:t.browseButton,children:"Browse"})]})}),e("div",{className:t.optionsArea,children:e("label",{className:t.checkboxLabel,children:[e("input",{type:"checkbox",id:"eraseWatchlistToggle",checked:n,onChange:s=>m(s.target.checked),className:t.checkbox}),e("span",{className:t.checkboxCustom}),e("div",{className:t.optionText,children:[e("span",{className:t.optionTitle,children:"Erase current watchlist"}),e("span",{className:t.optionDesc,children:"Warning: This will permanently delete your existing ani-web watchlist before importing."})]})]})}),e("div",{className:t.actions,children:e(I,{onClick:h,className:t.importBtn,children:[e(y,{})," Start Import"]})}),o&&e("div",{className:`${t.statusMessage} ${o.includes("Error")?t.error:t.success}`,children:o})]})]})};export{Q as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._header_1l05u_1{margin-bottom:var(--space-8);animation:_fadeIn_1l05u_1 .8s var(--ease-smooth)}._pageTitle_1l05u_6{font-size:var(--font-size-xl);font-weight:800;color:var(--text-primary);margin:0 0 var(--space-2);letter-spacing:-.02em}._pageSubtitle_1l05u_14{color:var(--text-tertiary);font-size:var(--font-size-sm);margin:0}._importCard_1l05u_20{background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);padding:var(--space-8);border-radius:var(--radius-xl);box-shadow:var(--glass-shadow);max-width:600px;margin:0 auto;animation:_slideUpIn_1l05u_1 .8s var(--ease-smooth)}._cardHeader_1l05u_33{margin-bottom:var(--space-6)}._cardHeader_1l05u_33 h3{margin:0 0 var(--space-2);font-size:var(--font-size-lg);font-weight:700;color:var(--text-primary)}._cardHeader_1l05u_33 p{color:var(--text-secondary);font-size:var(--font-size-sm);margin:0;line-height:1.6}._uploadArea_1l05u_51{margin-bottom:var(--space-6)}._fileInputWrapper_1l05u_55{position:relative;display:flex;align-items:center;gap:var(--space-4);background:var(--bg-tertiary);border:1px dashed var(--border-secondary);border-radius:var(--radius-lg);padding:var(--space-4);transition:all var(--transition-fast)}._fileInputWrapper_1l05u_55:hover{border-color:var(--accent);background:var(--bg-elevated)}._fileInput_1l05u_55{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer;z-index:2}._fileDisplay_1l05u_83{flex:1;display:flex;align-items:center;gap:var(--space-3);overflow:hidden}._fileIcon_1l05u_91{color:var(--text-tertiary);font-size:1.5rem}._fileName_1l05u_96{color:var(--text-primary);font-size:var(--font-size-sm);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._browseButton_1l05u_105{background:#ffffff0d;border:1px solid var(--border-primary);color:var(--text-secondary);padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:600;pointer-events:none}._optionsArea_1l05u_116{margin-bottom:var(--space-6);padding:var(--space-4);background:#f59e0b0d;border:1px solid rgba(245,158,11,.1);border-radius:var(--radius-lg)}._checkboxLabel_1l05u_124{display:flex;align-items:flex-start;gap:var(--space-3);cursor:pointer;position:relative}._checkbox_1l05u_124{opacity:0;position:absolute}._checkboxCustom_1l05u_137{width:20px;height:20px;border:2px solid var(--border-secondary);border-radius:4px;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:2px;transition:all var(--transition-fast)}._checkbox_1l05u_124:checked+._checkboxCustom_1l05u_137{background:#f59e0b;border-color:#f59e0b}._checkbox_1l05u_124:checked+._checkboxCustom_1l05u_137:after{content:"";width:5px;height:10px;border:solid white;border-width:0 2px 2px 0;transform:rotate(45deg);margin-bottom:2px}._optionText_1l05u_165{display:flex;flex-direction:column;gap:4px}._optionTitle_1l05u_171{color:#f59e0b;font-weight:600;font-size:var(--font-size-sm)}._optionDesc_1l05u_177{color:var(--text-tertiary);font-size:.8rem;line-height:1.4}._actions_1l05u_183{display:flex;justify-content:flex-end;border-top:1px solid var(--border-primary);padding-top:var(--space-6)}._importBtn_1l05u_190{display:flex;align-items:center;gap:var(--space-2)}._statusMessage_1l05u_196{margin-top:var(--space-6);padding:var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;text-align:center;animation:_fadeIn_1l05u_1 .3s ease}._statusMessage_1l05u_196._success_1l05u_206{background:#10b9811a;color:#10b981;border:1px solid rgba(16,185,129,.2)}._statusMessage_1l05u_196._error_1l05u_212{background:#ef44441a;color:#ef4444;border:1px solid rgba(239,68,68,.2)}@keyframes _fadeIn_1l05u_1{0%{opacity:0}to{opacity:1}}@keyframes _slideUpIn_1l05u_1{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@media(max-width:600px){._importCard_1l05u_20{padding:var(--space-6)}._fileInputWrapper_1l05u_55{flex-direction:column;align-items:stretch;text-align:center}._fileDisplay_1l05u_83{flex-direction:column}._browseButton_1l05u_105{text-align:center}}
|