ani-web 1.5.8
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.
Potentially problematic release.
This version of ani-web might be problematic. Click here for more details.
- package/LICENSE +21 -0
- package/README.md +174 -0
- package/client/dist/assets/AnimeInfo-C7DQp7Oo.js +1 -0
- package/client/dist/assets/AnimeInfo-Sb3YiXHJ.css +1 -0
- package/client/dist/assets/AnimeInfoPage-DJA7AJQ8.js +2 -0
- package/client/dist/assets/Button-Fq9KaUOg.css +1 -0
- package/client/dist/assets/Button-o0l9V_NG.js +1 -0
- package/client/dist/assets/ErrorMessage-Ddf2zmRx.js +1 -0
- package/client/dist/assets/ErrorMessage-FOxXyZC9.css +1 -0
- package/client/dist/assets/Home-CKHJA97j.css +1 -0
- package/client/dist/assets/Home-Dey0azy1.js +1 -0
- package/client/dist/assets/Insights-BSRcCkDs.css +1 -0
- package/client/dist/assets/Insights-CogjPOd_.js +1 -0
- package/client/dist/assets/MAL-CYArH4yf.js +1 -0
- package/client/dist/assets/MAL-DeQNXXPx.css +1 -0
- package/client/dist/assets/Player-BWFN9gud.js +9 -0
- package/client/dist/assets/Player-CBCYW7uG.css +1 -0
- package/client/dist/assets/PlayerSettings-BgStUrrP.css +1 -0
- package/client/dist/assets/PlayerSettings-rWZuATQf.js +1 -0
- package/client/dist/assets/RemoveConfirmationModal-BBiogSdf.css +1 -0
- package/client/dist/assets/RemoveConfirmationModal-CLYqyGOv.js +1 -0
- package/client/dist/assets/Search-DZAWgKwq.js +1 -0
- package/client/dist/assets/Search-lWsVQ0Ke.css +1 -0
- package/client/dist/assets/Settings-Bv9fX-x3.css +1 -0
- package/client/dist/assets/Settings-DyisJGeD.js +1 -0
- package/client/dist/assets/ToggleSwitch-CLnWnAuY.js +1 -0
- package/client/dist/assets/ToggleSwitch-DInRb7iM.css +1 -0
- package/client/dist/assets/Watchlist-2dVYksxq.css +1 -0
- package/client/dist/assets/Watchlist-CuqJISI3.js +1 -0
- package/client/dist/assets/hls.light-DcbkToIY.js +27 -0
- package/client/dist/assets/index-BK_Zaqaw.css +1 -0
- package/client/dist/assets/index-CHVF4D4L.js +178 -0
- package/client/dist/assets/useAnimeInfoData-Cr58brCY.js +1 -0
- package/client/dist/assets/useIsMobile-gHo4t6g6.js +1 -0
- package/client/dist/assets/vendor-DdbgYKo4.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 +54 -0
- package/orchestrator.js +302 -0
- package/package.json +69 -0
- package/server/dist/config.js +86 -0
- package/server/dist/constants.json +1359 -0
- package/server/dist/controllers/auth.controller.js +213 -0
- package/server/dist/controllers/data.controller.js +126 -0
- package/server/dist/controllers/insights.controller.js +125 -0
- package/server/dist/controllers/proxy.controller.js +235 -0
- package/server/dist/controllers/settings.controller.js +147 -0
- package/server/dist/controllers/watchlist.controller.js +499 -0
- package/server/dist/db.js +231 -0
- package/server/dist/github-sync.js +279 -0
- package/server/dist/google.js +274 -0
- package/server/dist/logger.js +21 -0
- package/server/dist/providers/123anime.provider.js +229 -0
- package/server/dist/providers/allanime.provider.js +773 -0
- package/server/dist/providers/animepahe.provider.js +313 -0
- package/server/dist/providers/animeya.provider.js +799 -0
- package/server/dist/providers/provider.interface.js +2 -0
- package/server/dist/rclone.js +126 -0
- package/server/dist/repositories/insights.repository.js +30 -0
- package/server/dist/repositories/notifications.repository.js +22 -0
- package/server/dist/repositories/settings.repository.js +13 -0
- package/server/dist/repositories/shows-meta.repository.js +39 -0
- package/server/dist/repositories/watched-episodes.repository.js +60 -0
- package/server/dist/repositories/watchlist.repository.js +49 -0
- package/server/dist/routes/auth.routes.js +23 -0
- package/server/dist/routes/data.routes.js +43 -0
- package/server/dist/routes/insights.routes.js +11 -0
- package/server/dist/routes/proxy.routes.js +13 -0
- package/server/dist/routes/settings.routes.js +26 -0
- package/server/dist/routes/watchlist.routes.js +26 -0
- package/server/dist/server.js +179 -0
- package/server/dist/sync-config.js +28 -0
- package/server/dist/sync.js +383 -0
- package/server/dist/utils/db-utils.js +36 -0
- package/server/dist/utils/env.utils.js +70 -0
- package/server/package.json +54 -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,174 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
<img src="client/public/logo.png" alt="ani-web logo" width="400"/>
|
|
4
|
+
|
|
5
|
+
_Stream anime locally with no ads, no tracking, and smooth performance._
|
|
6
|
+
|
|
7
|
+
[](https://opensource.org/licenses/MIT)
|
|
8
|
+
[](https://github.com/serifpersia/ani-web/stargazers)
|
|
9
|
+
[](https://github.com/serifpersia/ani-web)
|
|
10
|
+
|
|
11
|
+
</div>
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
**ani-web** is a lightweight Node.js application that lets you browse and watch anime through a clean and responsive frontend running entirely on your machine.
|
|
16
|
+
|
|
17
|
+
<div align="center">
|
|
18
|
+
<img
|
|
19
|
+
width="800"
|
|
20
|
+
alt="ani-web user interface"
|
|
21
|
+
src="https://github.com/user-attachments/assets/5a152f3b-ab8e-4303-b416-8fa2a67bb8d9"
|
|
22
|
+
style="border-radius: 8px; box-shadow: 0 4px 8px rgba(0,0,0,0.2); margin: 20px 0;"
|
|
23
|
+
/>
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
## Features
|
|
27
|
+
|
|
28
|
+
Based on a lightweight architecture, ani-web includes:
|
|
29
|
+
|
|
30
|
+
- **Performance First:** Designed specifically to run smoothly on low-end hardware.
|
|
31
|
+
- **Built-in Search & Discovery:** Easily find top trending and popular shows.
|
|
32
|
+
- **Watchlist Management:** Keep track of what you're watching, completed, or planning to watch.
|
|
33
|
+
- **User Insights:** View your personal anime watching statistics.
|
|
34
|
+
- **MAL Integration:** Seamlessly import your lists from MyAnimeList.
|
|
35
|
+
|
|
36
|
+
## Join ani-web Discord server
|
|
37
|
+
|
|
38
|
+
Be part of the ani-web Discord Server Community where you can connect with fellow users, ask questions, and share your experiences:
|
|
39
|
+
|
|
40
|
+
[](https://discord.gg/2FTSPXCsvn)
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Getting Started
|
|
45
|
+
|
|
46
|
+
### Prerequisites
|
|
47
|
+
|
|
48
|
+
- **Node.js**: Version 22.5.0 or higher ([Download here](https://nodejs.org/)).
|
|
49
|
+
|
|
50
|
+
### ⚡ Quick Install
|
|
51
|
+
|
|
52
|
+
Open a terminal and run:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
npm install -g ani-web
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
> **Note:** After the one-time setup, you can start the application anytime, from any directory, by simply opening a terminal and typing `ani-web`.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Uninstalling
|
|
63
|
+
|
|
64
|
+
If you need to remove the application from your system, simply open a terminal and run:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
npm uninstall -g ani-web
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
_This safely deletes the application files and removes the `ani-web` command from your system's PATH._
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Manual Installation (For Developers)
|
|
75
|
+
|
|
76
|
+
Want to poke around the source code or contribute? You can build the project manually.
|
|
77
|
+
|
|
78
|
+
**1. Clone the repository:**
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
git clone https://github.com/serifpersia/ani-web.git
|
|
82
|
+
cd ani-web
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**2. Install, Build, and Run:**
|
|
86
|
+
Use provided run scripts that offer a menu to choose between a **Development** or **Production** setup. To run a development environment manually:
|
|
87
|
+
|
|
88
|
+
1. Run `npm install` to install core dependencies.
|
|
89
|
+
2. Run `npm run setup` to install development tools (Vite, TypeScript, etc).
|
|
90
|
+
3. Run `npm run build` to build the source code.
|
|
91
|
+
|
|
92
|
+
**On Linux / macOS:**
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
chmod +x run.sh
|
|
96
|
+
./run.sh
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**On Windows:**
|
|
100
|
+
|
|
101
|
+
```bat
|
|
102
|
+
run.bat
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Commands
|
|
106
|
+
|
|
107
|
+
Once installed globally, you can use the following commands:
|
|
108
|
+
|
|
109
|
+
- `ani-web` - Start the application.
|
|
110
|
+
- `ani-web --version` (or `-v`) - Check your installed version.
|
|
111
|
+
|
|
112
|
+
### Data Location
|
|
113
|
+
|
|
114
|
+
ani-web stores your persistent files in your OS app-data folder instead of inside the globally installed npm package:
|
|
115
|
+
|
|
116
|
+
- **Windows:** `%APPDATA%\ani-web`
|
|
117
|
+
- **macOS:** `~/Library/Application Support/ani-web`
|
|
118
|
+
- **Linux:** `$XDG_DATA_HOME/ani-web` or `~/.local/share/ani-web`
|
|
119
|
+
|
|
120
|
+
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.
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Cloud Sync (Optional)
|
|
125
|
+
|
|
126
|
+
**ani-web** can automatically sync your watchlist and settings to the cloud. There are two ways to set this up:
|
|
127
|
+
|
|
128
|
+
### 1. Built-in Google Drive Sync
|
|
129
|
+
|
|
130
|
+
To use the native Google Drive integration, you need to provide your own Google Cloud credentials:
|
|
131
|
+
|
|
132
|
+
1. Go to the [Google Cloud Console](https://console.cloud.google.com/).
|
|
133
|
+
2. Create a new project and enable the **Google Drive API**.
|
|
134
|
+
3. Configure the **OAuth Consent Screen** (set it to "External" and add yourself as a test user).
|
|
135
|
+
4. Create **OAuth 2.0 Client IDs** (Application type: "Web application").
|
|
136
|
+
5. Add `http://localhost:3000/api/auth/google/callback` to the **Authorized redirect URIs**.
|
|
137
|
+
6. Open **ani-web**, go to **Settings** -> **Google Drive**, and enter your **Client ID** and **Client Secret**.
|
|
138
|
+
|
|
139
|
+
**ani-web** will automatically handle the rest, including creating your configuration and syncing your data!
|
|
140
|
+
|
|
141
|
+
### 2. Rclone Integration
|
|
142
|
+
|
|
143
|
+
If you prefer using **Mega**, **Dropbox**, or other providers, you can use [Rclone](https://rclone.org/):
|
|
144
|
+
|
|
145
|
+
1. Install Rclone on your system and ensure it's in your PATH.
|
|
146
|
+
2. Configure a remote (any name) using `rclone config`.
|
|
147
|
+
3. In **ani-web** Settings, select your remote name from the dropdown.
|
|
148
|
+
|
|
149
|
+
**Note:** If Google Drive Sync is active, it will always take priority over Rclone.
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Disclaimer
|
|
154
|
+
|
|
155
|
+
**ani-web does not host, upload, or manage any video content.**
|
|
156
|
+
|
|
157
|
+
The core aim of this project is to provide a streamlined, automated interface to extract publicly accessible content from the internet. All media served through this application is hosted by external, non-affiliated third-party sources.
|
|
158
|
+
|
|
159
|
+
<details>
|
|
160
|
+
<summary><b> Click to read the full Legal Disclaimer & DMCA info</b></summary>
|
|
161
|
+
<br>
|
|
162
|
+
|
|
163
|
+
- **The Browser Analogy:** Think of `ani-web` as a specialized web browser. While a standard web browser makes hundreds of requests to download a site's HTML, CSS, ads, and trackers, this project simply makes requests specifically targeted at the media content served by those sites.
|
|
164
|
+
- **User Responsibility:** A browser is merely a tool, and the legality of its use depends entirely on the user. This software is provided "as-is", and it is to be used at the user's own risk, in accordance with their local laws and government regulations. The developer is not responsible for what users choose to access.
|
|
165
|
+
- **DMCA & Copyright:** Because `ani-web` operates entirely via client-side access mechanisms and hosts absolutely zero content, any DMCA takedown notices or copyright infringement claims must be directed to the external, third-party services that actually host the files.
|
|
166
|
+
</details>
|
|
167
|
+
|
|
168
|
+
## License
|
|
169
|
+
|
|
170
|
+
This project is open-source and licensed under the **MIT License** - see the [LICENSE](LICENSE) file for details.
|
|
171
|
+
|
|
172
|
+
<div align="center">
|
|
173
|
+
<i>If you find this project helpful, please consider giving it a ⭐ on GitHub!</i>
|
|
174
|
+
</div>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as f,f as q,d as b,T as S,u as e}from"./vendor-DdbgYKo4.js";import{b as C,f as h,Q as T,R as x,a4 as I,a1 as L,w as y,I as D,J as A,K as B,L as G}from"./index-CHVF4D4L.js";import{u as M}from"./useAnimeInfoData-Cr58brCY.js";const $="_container_l0wq2_1",P="_heroSection_l0wq2_11",F="_bannerContainer_l0wq2_17",W="_banner_l0wq2_17",E="_bannerOverlay_l0wq2_37",O="_heroContent_l0wq2_48",R="_posterContainer_l0wq2_61",U="_poster_l0wq2_61",V="_infoGlass_l0wq2_85",z="_title_l0wq2_99",j="_quickMeta_l0wq2_108",H="_metaItem_l0wq2_116",K="_iconStar_l0wq2_125",J="_iconTv_l0wq2_128",Q="_iconType_l0wq2_131",X="_iconClock_l0wq2_134",Y="_genres_l0wq2_138",Z="_genre_l0wq2_138",ee="_synopsisSection_l0wq2_164",ne="_sectionTitleSmall_l0wq2_169",te="_description_l0wq2_177",se="_actions_l0wq2_185",ie="_watchBtn_l0wq2_191",ae="_watchlistBtn_l0wq2_213",le="_active_l0wq2_233",oe="_detailsSection_l0wq2_240",re="_detailsToggleBtn_l0wq2_246",ce="_expandedContent_l0wq2_269",de="_detailsGridContainer_l0wq2_273",_e="_detailItem_l0wq2_283",me="_airingValue_l0wq2_302",he="_externalLinksSection_l0wq2_307",pe="_externalLinksTitle_l0wq2_315",ke="_externalLinksGrid_l0wq2_321",we="_websiteLink_l0wq2_327",Ne="_loadingDetails_l0wq2_347",ge="_spinner_l0wq2_356",ve="_heroSkeleton_l0wq2_371",ue="_skeletonBanner_l0wq2_375",fe="_skeletonContent_l0wq2_381",qe="_skeletonPoster_l0wq2_390",be="_skeletonInfo_l0wq2_397",Se="_skeletonTitle_l0wq2_406",Ce="_skeletonMeta_l0wq2_413",Te="_skeletonDesc_l0wq2_420",xe="_skeletonActions_l0wq2_427",n={container:$,heroSection:P,bannerContainer:F,banner:W,bannerOverlay:E,heroContent:O,posterContainer:R,poster:U,infoGlass:V,title:z,quickMeta:j,metaItem:H,iconStar:K,iconTv:J,iconType:Q,iconClock:X,genres:Y,genre:Z,synopsisSection:ee,sectionTitleSmall:ne,description:te,actions:se,watchBtn:ie,watchlistBtn:ae,active:le,detailsSection:oe,detailsToggleBtn:re,expandedContent:ce,detailsGridContainer:de,detailItem:_e,airingValue:me,externalLinksSection:he,externalLinksTitle:pe,externalLinksGrid:ke,websiteLink:we,loadingDetails:Ne,spinner:ge,heroSkeleton:ve,skeletonBanner:ue,skeletonContent:fe,skeletonPoster:qe,skeletonInfo:be,skeletonTitle:Se,skeletonMeta:Ce,skeletonDesc:Te,skeletonActions:xe},d=s=>!s||s.startsWith("http://")||s.startsWith("https://")?s:`https://${s}`,p=s=>{if(s.nextEpisodeAirDate)return`Next episode: ${s.nextEpisodeAirDate}`;if(s.nextAiring?.episode){const l=s.nextAiring.timeUntilAiring;if(l<=0)return`Episode ${s.nextAiring.episode}`;const o=Math.floor(l/86400),a=Math.floor(l%86400/3600),r=Math.floor(l%3600/60);return o>0?`Next episode: ${o}d ${a}h`:a>0?`Next episode: ${a}h ${r}m`:`Next episode: ${r}m`}return null};function De(){const{id:s}=f(),l=q(),{titlePreference:o}=C(),[a,r]=b(!1),{showMeta:t,loadingMeta:k,toggleWatchlist:w,inWatchlist:_,allMangaDetails:i,loadingDetails:m,handleToggleDetails:N}=M(s),g=()=>t?.name?o==="name"?t.name:o==="nativeName"?t.names?.native||t.name:o==="englishName"&&t.names?.english||t.name:"",v=()=>{s&&l(`/watch/${s}`)},u=S(()=>t?.thumbnail?h(t.thumbnail,1200,450):"",[t?.thumbnail]);return k||!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(${u})`}}),e("div",{className:n.bannerOverlay})]}),e("div",{className:n.heroContent,children:[e("div",{className:n.posterContainer,children:e("img",{src:h(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:g()}),e("div",{className:n.quickMeta,children:[t.score&&e("div",{className:n.metaItem,children:[e(T,{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.mediaTypes?.[0]&&e("div",{className:n.metaItem,children:[e(I,{className:n.iconType}),e("span",{children:t.mediaTypes[0].name})]}),t.lengthMin&&e("div",{className:n.metaItem,children:[e(L,{className:n.iconClock}),e("span",{children:[t.lengthMin,"m"]})]})]}),t.genres&&t.genres.length>0&&e("div",{className:n.genres,children:t.genres.slice(0,5).map(c=>e("span",{className:n.genre,children:c.name},c.name))})]}),e("div",{className:n.synopsisSection,children:[e("h2",{className:n.sectionTitleSmall,children:"Synopsis"}),e("p",{className:n.description,children:t.description?t.description.replace(/<[^>]*>?/gm,""):"No description available."})]}),e("div",{className:n.actions,children:[e("button",{className:n.watchBtn,onClick:v,children:[e(y,{size:14}),"Start Watching"]}),e("button",{className:`${n.watchlistBtn} ${_?n.active:""}`,onClick:w,children:[_?e(D,{size:14}):e(A,{size:14}),_?"In Watchlist":"Add to Watchlist"]})]})]})]})]}),e("div",{className:n.detailsSection,children:[e("button",{className:n.detailsToggleBtn,onClick:()=>{r(!a),!a&&!i&&!m&&N()},children:[a?e(B,{}):e(G,{}),a?"Hide Details":"Show Details"]}),a&&e("div",{className:n.expandedContent,children:[m&&e("div",{className:n.loadingDetails,children:[e("div",{className:n.spinner}),e("span",{children:"Loading metadata..."})]}),i&&e("div",{className:n.detailsGridContainer,children:[t.studios&&t.studios.length>0&&e("div",{className:n.detailItem,children:[e("strong",{children:"Studios"}),e("span",{children:t.studios.map(c=>c.name).join(", ")})]}),t.sources?.[0]&&e("div",{className:n.detailItem,children:[e("strong",{children:"Source"}),e("span",{children:t.sources[0].name})]}),i.Rating&&e("div",{className:n.detailItem,children:[e("strong",{children:"Rating"}),e("span",{children:i.Rating})]}),(t.season?.title||i.Season)&&e("div",{className:n.detailItem,children:[e("strong",{children:"Season"}),e("span",{children:t.season?.title||i.Season})]}),i.Episodes&&e("div",{className:n.detailItem,children:[e("strong",{children:"Episodes"}),e("span",{children:i.Episodes})]}),i.Date&&e("div",{className:n.detailItem,children:[e("strong",{children:"Aired"}),e("span",{children:i.Date})]}),p(t)&&e("div",{className:n.detailItem,children:[e("strong",{children:"Next Airing"}),e("span",{className:n.airingValue,children:p(t)})]}),t.names?.native&&e("div",{className:n.detailItem,children:[e("strong",{children:"Native Title"}),e("span",{children:t.names.native})]})]}),t.websites&&e("div",{className:n.externalLinksSection,children:[e("h3",{className:n.externalLinksTitle,children:"External Links"}),e("div",{className:n.externalLinksGrid,children:[t.websites.official&&e("a",{href:d(t.websites.official),target:"_blank",rel:"noopener noreferrer",className:n.websiteLink,children:"Official Website"}),t.websites.mal&&e("a",{href:d(t.websites.mal),target:"_blank",rel:"noopener noreferrer",className:n.websiteLink,children:"MyAnimeList"}),t.websites.aniList&&e("a",{href:d(t.websites.aniList),target:"_blank",rel:"noopener noreferrer",className:n.websiteLink,children:"AniList"}),t.websites.kitsu&&e("a",{href:d(t.websites.kitsu),target:"_blank",rel:"noopener noreferrer",className:n.websiteLink,children:"Kitsu"})]})]})]})]})]})}export{De as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._container_l0wq2_1{max-width:var(--max-width);margin:0 auto;padding:0;min-height:100vh;background:var(--bg-main);overflow-x:hidden}._heroSection_l0wq2_11{position:relative;width:100%;padding-bottom:var(--space-12)}._bannerContainer_l0wq2_17{position:absolute;top:0;left:0;right:0;height:500px;overflow:hidden;z-index:0}._banner_l0wq2_17{width:100%;height:100%;background-size:cover;background-position:center 20%;filter:blur(40px) brightness(.4) saturate(1.2);transform:scale(1.1);transition:transform var(--transition-slow)}._bannerOverlay_l0wq2_37{position:absolute;inset:0;background:linear-gradient(to bottom,rgba(5,5,5,.2) 0%,rgba(5,5,5,.6) 50%,var(--bg-main) 100%)}._heroContent_l0wq2_48{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_l0wq2_61{position:sticky;top:120px;border-radius:var(--radius-lg);overflow:hidden;box-shadow:0 20px 50px #00000080;transform:translateY(0);animation:_floatIn_l0wq2_1 .8s var(--ease-spring);border:1px solid var(--border-secondary)}._poster_l0wq2_61{width:100%;display:block;object-fit:cover;aspect-ratio:2 / 3;transition:transform var(--transition-base)}._posterContainer_l0wq2_61:hover ._poster_l0wq2_61{transform:scale(1.05)}._infoGlass_l0wq2_85{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_l0wq2_1 .8s var(--ease-smooth);display:flex;flex-direction:column;gap:var(--space-8)}._title_l0wq2_99{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_l0wq2_108{display:flex;flex-wrap:wrap;gap:var(--space-6);align-items:center;margin-bottom:var(--space-2)}._metaItem_l0wq2_116{display:flex;align-items:center;gap:var(--space-2);color:var(--text-secondary);font-size:var(--font-size-sm);font-weight:500}._iconStar_l0wq2_125{color:#fbbf24}._iconTv_l0wq2_128{color:var(--accent)}._iconType_l0wq2_131{color:#10b981}._iconClock_l0wq2_134{color:#60a5fa}._genres_l0wq2_138{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-4)}._genre_l0wq2_138{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_l0wq2_138:hover{background:var(--accent);border-color:var(--accent);color:#fff;transform:translateY(-2px)}._synopsisSection_l0wq2_164{border-top:1px solid var(--border-primary);padding-top:var(--space-6)}._sectionTitleSmall_l0wq2_169{font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.1em;color:var(--text-tertiary);margin-bottom:var(--space-3)}._description_l0wq2_177{font-size:var(--font-size-base);color:var(--text-secondary);line-height:1.7;max-width:800px}._actions_l0wq2_185{display:flex;gap:var(--space-4);margin-top:auto}._watchBtn_l0wq2_191{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_l0wq2_191:hover{transform:translateY(-2px);box-shadow:0 8px 25px var(--accent-glow);opacity:.95}._watchlistBtn_l0wq2_213{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_l0wq2_213:hover{background:#ffffff1a;border-color:var(--text-secondary)}._watchlistBtn_l0wq2_213._active_l0wq2_233{background:#10b9811a;border-color:#10b981;color:#10b981}._detailsSection_l0wq2_240{max-width:1200px;margin:0 auto var(--space-16);padding:0 var(--space-6)}._detailsToggleBtn_l0wq2_246{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_l0wq2_246:hover{background:var(--bg-tertiary);color:var(--text-primary);border-color:var(--border-secondary)}._expandedContent_l0wq2_269{animation:_fadeIn_l0wq2_1 .5s var(--ease-smooth)}._detailsGridContainer_l0wq2_273{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_l0wq2_283{display:flex;flex-direction:column;gap:var(--space-1)}._detailItem_l0wq2_283 strong{font-size:.7rem;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.1em}._detailItem_l0wq2_283 span{font-size:var(--font-size-sm);color:var(--text-primary);font-weight:500}._airingValue_l0wq2_302{color:var(--accent-light)!important}._externalLinksSection_l0wq2_307{margin-top:var(--space-6);padding:var(--space-8);background:var(--bg-secondary);border-radius:var(--radius-xl);border:1px solid var(--border-primary)}._externalLinksTitle_l0wq2_315{font-size:var(--font-size-md);margin-bottom:var(--space-6);color:var(--text-primary)}._externalLinksGrid_l0wq2_321{display:flex;flex-wrap:wrap;gap:var(--space-4)}._websiteLink_l0wq2_327{padding:.8rem 1.5rem;background:var(--bg-tertiary);color:var(--text-secondary);border:1px solid var(--border-primary);border-radius:var(--radius-md);font-size:var(--font-size-sm);text-decoration:none;transition:all var(--transition-fast);font-weight:600}._websiteLink_l0wq2_327:hover{background:var(--accent);color:#fff;border-color:var(--accent);transform:translateY(-2px)}._loadingDetails_l0wq2_347{display:flex;flex-direction:column;align-items:center;gap:var(--space-4);padding:var(--space-12);color:var(--text-tertiary)}._spinner_l0wq2_356{width:30px;height:30px;border:3px solid rgba(255,255,255,.1);border-top-color:var(--accent);border-radius:50%;animation:_spin_l0wq2_356 .8s linear infinite}@keyframes _spin_l0wq2_356{to{transform:rotate(360deg)}}._heroSkeleton_l0wq2_371{width:100%}._skeletonBanner_l0wq2_375{height:400px;background:var(--bg-tertiary);animation:_pulse_l0wq2_1 1.5s infinite}._skeletonContent_l0wq2_381{max-width:1200px;margin:-100px auto 0;padding:0 var(--space-6);display:grid;grid-template-columns:320px 1fr;gap:var(--space-10)}._skeletonPoster_l0wq2_390{height:480px;background:var(--bg-tertiary);border-radius:var(--radius-lg);animation:_pulse_l0wq2_1 1.5s infinite}._skeletonInfo_l0wq2_397{background:var(--bg-secondary);border-radius:var(--radius-xl);padding:var(--space-8);display:flex;flex-direction:column;gap:var(--space-6)}._skeletonTitle_l0wq2_406{height:40px;width:60%;background:var(--bg-tertiary);border-radius:var(--radius-sm);animation:_pulse_l0wq2_1 1.5s infinite}._skeletonMeta_l0wq2_413{height:24px;width:40%;background:var(--bg-tertiary);border-radius:var(--radius-sm);animation:_pulse_l0wq2_1 1.5s infinite}._skeletonDesc_l0wq2_420{height:160px;width:100%;background:var(--bg-tertiary);border-radius:var(--radius-sm);animation:_pulse_l0wq2_1 1.5s infinite}._skeletonActions_l0wq2_427{height:50px;width:50%;background:var(--bg-tertiary);border-radius:var(--radius-sm);animation:_pulse_l0wq2_1 1.5s infinite}@keyframes _pulse_l0wq2_1{0%,to{opacity:1}50%{opacity:.4}}@keyframes _floatIn_l0wq2_1{0%{opacity:0;transform:translateY(30px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes _slideUpIn_l0wq2_1{0%{opacity:0;transform:translateY(50px)}to{opacity:1;transform:translateY(0)}}@keyframes _fadeIn_l0wq2_1{0%{opacity:0}to{opacity:1}}@media(max-width:1024px){._heroContent_l0wq2_48{grid-template-columns:1fr;padding-top:var(--space-12)}._posterContainer_l0wq2_61{width:220px;margin:0 auto;position:relative;top:0}._infoGlass_l0wq2_85{margin-top:-40px;padding-top:var(--space-12);text-align:center}._quickMeta_l0wq2_108,._genres_l0wq2_138{justify-content:center}._actions_l0wq2_185{flex-direction:column}._watchBtn_l0wq2_191,._watchlistBtn_l0wq2_213{width:100%;justify-content:center}._skeletonContent_l0wq2_381{grid-template-columns:1fr}._skeletonPoster_l0wq2_390{width:220px;height:330px;margin:0 auto}}@media(max-width:480px){._infoGlass_l0wq2_85{padding:var(--space-6)}._title_l0wq2_99{font-size:1.5rem}._quickMeta_l0wq2_108{gap:var(--space-3)}._metaItem_l0wq2_116 span{font-size:.75rem}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/AnimeInfo-C7DQp7Oo.js","assets/vendor-DdbgYKo4.js","assets/index-CHVF4D4L.js","assets/index-BK_Zaqaw.css","assets/useAnimeInfoData-Cr58brCY.js","assets/AnimeInfo-Sb3YiXHJ.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{a5 as r,_ as e}from"./index-CHVF4D4L.js";import{u as o,P as a,z as t}from"./vendor-DdbgYKo4.js";const i=t(()=>e(()=>import("./AnimeInfo-C7DQp7Oo.js"),__vite__mapDeps([0,1,2,3,4,5])));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-DdbgYKo4.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
|
+
import{T as se,u as e,S as k,L as I,$ as te,N as oe,d as f,g as F,q as ae}from"./vendor-DdbgYKo4.js";import{Q as ne,R as ce,w as re,b as le,u as D,f as ie,S as A,T as de,U as pe,V as _e,W as ge,X as me}from"./index-CHVF4D4L.js";import{u as he}from"./useAnimeInfoData-Cr58brCY.js";import{u as ue}from"./useIsMobile-gHo4t6g6.js";const be="_popupPortal_czcpa_1",we="_popupContent_czcpa_7",ve="_header_czcpa_32",Be="_title_czcpa_37",fe="_altTitle_czcpa_48",Ne="_body_czcpa_57",ye="_metaRow_czcpa_64",Ee="_metaItem_czcpa_71",$e="_scoreIcon_czcpa_77",Ce="_synopsis_czcpa_81",ze="_details_czcpa_91",Te="_detailItem_czcpa_99",Ie="_genres_czcpa_103",Me="_genre_czcpa_103",Pe="_footer_czcpa_118",xe="_actions_czcpa_124",Re="_watchBtn_czcpa_129",Ae="_detailsBtn_czcpa_151",Le="_loading_czcpa_173",ke="_spinner_czcpa_183",o={popupPortal:be,popupContent:we,header:ve,title:Be,altTitle:fe,body:Ne,metaRow:ye,metaItem:Ee,scoreIcon:$e,synopsis:Ce,details:ze,detailItem:Te,genres:Ie,genre:Me,footer:Pe,actions:xe,watchBtn:Re,detailsBtn:Ae,loading:Le,spinner:ke},Fe=({showId:s,anchorRect:n,onMouseEnter:d,onMouseLeave:u})=>{const{showMeta:a,loadingMeta:N}=he(s),p=se(()=>{const E=window.innerWidth;let b=n.right+10,l=n.top;b+320>E-20&&(b=n.left-320-10);const w=400;return l+w>window.innerHeight-20&&(l=window.innerHeight-w-20),l<20&&(l=20),{left:b,top:l}},[n]),y=e("div",{className:o.popupPortal,style:{left:p.left,top:p.top},onMouseEnter:d,onMouseLeave:u,children:e("div",{className:o.popupContent,children:N?e("div",{className:o.loading,children:[e("div",{className:o.spinner}),e("span",{children:"Fetching details..."})]}):a?e(k,{children:[e("div",{className:o.header,children:[e("div",{className:o.title,children:a.name}),a.names?.english&&e("div",{className:o.altTitle,children:a.names.english})]}),e("div",{className:o.body,children:[e("div",{className:o.metaRow,children:[a.score&&e("div",{className:o.metaItem,children:[e(ne,{className:o.scoreIcon,size:14}),e("span",{children:a.score})]}),a.status&&e("div",{className:o.metaItem,children:[e(ce,{size:14}),e("span",{children:a.status})]})]}),e("div",{className:o.synopsis,children:a.description?a.description.replace(/<[^>]*>?/gm,""):"No synopsis available."}),e("div",{className:o.details,children:[a.nextEpisodeAirDate&&e("div",{className:o.detailItem,children:[e("strong",{children:"Aired:"})," ",a.nextEpisodeAirDate]}),a.genres&&a.genres.length>0&&e("div",{className:o.genres,children:a.genres.slice(0,4).map(c=>e("span",{className:o.genre,children:c.name},c.name))})]})]}),e("div",{className:o.footer,children:e("div",{className:o.actions,children:[e(I,{to:`/watch/${s}`,className:o.watchBtn,children:[e(re,{size:12}),"Watch now"]}),e(I,{to:`/anime/${s}`,className:o.detailsBtn,children:"Read more"})]})})]}):e("div",{className:o.loading,children:"Failed to load info."})})});return te(y,document.body)},De="_cardWrapper_wbgsc_1",Se="_card_wbgsc_1",We="_posterContainer_wbgsc_38",He="_posterImg_wbgsc_46",Ve="_loaded_wbgsc_56",Ge="_info_wbgsc_64",Ue="_title_wbgsc_72",qe="_badge_wbgsc_89",Qe="_typeBadge_wbgsc_100 _badge_wbgsc_89",Xe="_epBadge_wbgsc_109 _badge_wbgsc_89",je="_adultBadge_wbgsc_117 _badge_wbgsc_89",Je="_metaRow_wbgsc_128",Ke="_metaItem_wbgsc_137",Oe="_progressContainer_wbgsc_154",Ye="_progressBar_wbgsc_163",Ze="_timestamp_wbgsc_170",es="_removeBtn_wbgsc_176",ss="_infoBtn_wbgsc_177",ts="_mobileBadges_wbgsc_226",os="_mobileBadgeBase_wbgsc_233",as="_mobileType_wbgsc_241 _mobileBadgeBase_wbgsc_233",ns="_mobileEp_wbgsc_248 _mobileBadgeBase_wbgsc_233",cs="_horizontal_wbgsc_264",rs="_vertical_wbgsc_282",ls="_placeholder_wbgsc_316",is="_placeholderText_wbgsc_325",ds="_lowEnd_wbgsc_332",t={cardWrapper:De,card:Se,posterContainer:We,posterImg:He,loaded:Ve,info:Ge,title:Ue,badge:qe,typeBadge:Qe,epBadge:Xe,adultBadge:je,metaRow:Je,metaItem:Ke,progressContainer:Oe,progressBar:Ye,timestamp:Ze,removeBtn:es,infoBtn:ss,mobileBadges:ts,mobileBadgeBase:os,mobileType:as,mobileEp:ns,horizontal:cs,vertical:rs,placeholder:ls,placeholderText:is,lowEnd:ds},T={elements:{poster:{typeBadge:!0,episodeBadge:!0,adultBadge:!0},info:{title:!0,mobileBadges:!0,progress:!0,meta:!0}}},Ts=oe(({anime:s,continueWatching:n=!1,onRemove:d,isLCP:u=!1,config:a,layout:N="vertical"})=>{const p=ue(),{titlePreference:y}=le(),{lowEndMode:c}=D(),[M,E]=f(!1),[b,l]=f(!1),[w,$]=f(!1),[P,S]=f(null),g=F.useRef(null),W=r=>{if(p)return;g.current&&clearTimeout(g.current);const _=r.currentTarget.getBoundingClientRect();S(_),$(!0)},H=()=>{g.current=setTimeout(()=>{$(!1)},300)},V=()=>{g.current&&clearTimeout(g.current)},G=()=>{$(!1)},x={...a,elements:{...T.elements,...a?.elements||{},poster:{...T.elements?.poster,...a?.elements?.poster||{}},info:{...T.elements?.info,...a?.elements?.info||{}}}};(s.newEpisodesCount||0)>0;const C=(s.currentTime||0)>0&&(s.duration||0)>0,z=s[y]||s.name;(s.currentTime||0)/(s.duration||1);const m=s.episodeNumber??s.nextEpisodeToWatch,U=n?m?`/watch/${s._id}/${m}`:`/watch/${s._id}`:m&&s.episodeNumber?`/watch/${s._id}/${s.episodeNumber}`:C?`/watch/${s._id}/${s.episodeNumber}`:`/anime/${s._id}`,q=C?(s.currentTime||0)/(s.duration||1)*100:0,Q=ae(r=>{r.preventDefault(),r.stopPropagation();const _=s.id||s.showId||s._id;d&&d(_)},[d,s.id,s.showId,s._id]),R=(()=>{const r=s.episodeCount??0,_=s.watchedCount??0;return r&&r>=_?r:_>0?_:r||void 0})(),v=s.watchedCount!==void 0&&(R||s.watchedCount)?`EP ${s.watchedCount} / ${R??s.watchedCount}`:n&&m?`EP ${m}`:null,h=x.elements?.poster,B=x.elements?.info,X=h?.typeBadge??!n,j=h?.episodeBadge??!0,J=h?.removeButton===void 0?n&&!!d:h.removeButton,K=h?.adultBadge??!0,O=B?.mobileBadges??!0,Y=B?.progress??!0,Z=B?.meta??!0,ee=s.isAdult||s.rating==="R+"||s.rating==="Rx"||s.rating?.includes("17+");return e("div",{className:`${t.cardWrapper} ${c?t.lowEnd:""}`,onMouseEnter:()=>l(!0),onMouseLeave:()=>l(!1),children:[e(I,{to:U,className:`${t.card} ${t[N]}`,children:[e("div",{className:t.posterContainer,children:[e("img",{src:ie(s.thumbnail,c?100:150,c?150:200),alt:z,width:c?"100":"150",height:c?"150":"200",className:`${t.posterImg} ${M?t.loaded:""}`,loading:"lazy",decoding:"async",onLoad:()=>E(!0)}),!p&&e(k,{children:[X&&e("div",{className:t.typeBadge,children:s.type||"TV"}),j&&v&&e("div",{className:t.epBadge,children:v})]}),K&&ee&&!c&&e("div",{className:t.adultBadge,children:"18+"})]}),e("div",{className:t.info,children:[B?.title!==!1&&e("div",{className:t.title,title:z,children:z}),p&&O&&e("div",{className:t.mobileBadges,children:[e("span",{className:t.mobileType,children:s.type||"TV"}),v&&e("span",{className:t.mobileEp,children:v})]}),Y&&(n||c)&&C&&e("div",{children:[e("div",{className:t.progressContainer,children:e("div",{className:t.progressBar,style:{width:`${q}%`}})}),!c&&e("div",{className:t.timestamp,children:[A(s.currentTime||0)," / ",A(s.duration||0)]})]}),Z&&e("div",{className:t.metaRow,children:[s.availableEpisodesDetail?.sub&&e("div",{className:t.metaItem,children:[e(de,{size:10}),s.availableEpisodesDetail.sub.length]}),s.availableEpisodesDetail?.dub&&e("div",{className:t.metaItem,children:[e(pe,{size:10}),s.availableEpisodesDetail.dub.length]})]})]})]}),J&&e("button",{className:t.removeBtn,onClick:Q,"aria-label":"Remove",children:e(_e,{size:10})}),!n&&!p&&e("button",{className:t.infoBtn,onMouseEnter:W,onMouseLeave:H,"aria-label":"Info",children:e(ge,{size:10})}),w&&P&&e(Fe,{showId:s._id,anchorRect:P,onMouseEnter:V,onMouseLeave:G})]})}),ps="_skeletonCard_1hade_1",_s="_poster_1hade_11",gs="_pulse_1hade_1",ms="_info_1hade_18",hs="_line_1hade_26",us="_short_1hade_33",bs="_horizontal_1hade_51",ws="_vertical_1hade_69",vs="_lowEnd_1hade_88",i={skeletonCard:ps,poster:_s,pulse:gs,info:ms,line:hs,short:us,horizontal:bs,vertical:ws,lowEnd:vs},Bs=({layout:s="vertical"})=>{const{lowEndMode:n}=D();return e("div",{className:`${i.skeletonCard} ${i[s]} ${n?i.lowEnd:""}`,children:[!n&&e("div",{className:i.poster}),e("div",{className:i.info,children:[e("div",{className:i.line}),!n&&e("div",{className:`${i.line} ${i.short}`})]})]})},fs=({count:s=14,layout:n="vertical"})=>e("div",{className:"grid-container",children:Array.from({length:s}).map((d,u)=>e(Bs,{layout:n},u))}),Is=F.memo(fs),Ns="_errorBox_1n4sy_1",ys="_icon_1n4sy_13",L={errorBox:Ns,icon:ys},Ms=({message:s})=>e("div",{className:L.errorBox,children:[e(me,{className:L.icon}),e("span",{children:s})]});export{Bs as A,Ms as E,Is as S,Ts as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._popupPortal_czcpa_1{position:fixed;z-index:9999;pointer-events:none}._popupContent_czcpa_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_czcpa_1 .2s ease-out;color:var(--text-primary)}@keyframes _fadeIn_czcpa_1{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}._header_czcpa_32{padding:var(--space-4);background:linear-gradient(to bottom,rgba(0,0,0,.3),transparent)}._title_czcpa_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_czcpa_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_czcpa_57{padding:0 var(--space-4) var(--space-4) var(--space-4);display:flex;flex-direction:column;gap:var(--space-3)}._metaRow_czcpa_64{display:flex;align-items:center;gap:var(--space-4);font-size:var(--font-size-sm)}._metaItem_czcpa_71{display:flex;align-items:center;gap:var(--space-1)}._scoreIcon_czcpa_77{color:#fbbf24}._synopsis_czcpa_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_czcpa_91{display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--font-size-xs);color:var(--text-muted)}._detailItem_czcpa_99 strong{color:var(--text-secondary)}._genres_czcpa_103{display:flex;flex-wrap:wrap;gap:var(--space-1);margin-top:var(--space-1)}._genre_czcpa_103{background:var(--bg-tertiary);padding:2px 8px;border-radius:var(--radius-sm);font-size:10px;color:var(--text-secondary)}._footer_czcpa_118{padding:var(--space-4);border-top:1px solid var(--border-secondary);background-color:var(--bg-tertiary)}._actions_czcpa_124{display:flex;gap:var(--space-2)}._watchBtn_czcpa_129{flex:2;padding:var(--space-2);background-color:var(--accent);color:#fff;border:none;border-radius:var(--radius-full);font-weight:var(--font-weight-bold);display:flex;align-items:center;justify-content:center;gap:var(--space-2);cursor:pointer;transition:background-color .2s;text-decoration:none;font-size:var(--font-size-sm)}._watchBtn_czcpa_129:hover{background-color:var(--accent-dark)}._detailsBtn_czcpa_151{flex:1;padding:var(--space-2);background-color:var(--bg-elevated);color:var(--text-primary);border:1px solid var(--border-secondary);border-radius:var(--radius-full);font-weight:var(--font-weight-semibold);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s;text-decoration:none;font-size:var(--font-size-sm)}._detailsBtn_czcpa_151:hover{background-color:var(--bg-secondary);border-color:var(--accent)}._loading_czcpa_173{padding:var(--space-8);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-4);color:var(--text-muted)}._spinner_czcpa_183{width:30px;height:30px;border:3px solid rgba(255,255,255,.1);border-top-color:var(--accent);border-radius:50%;animation:_spin_czcpa_183 1s linear infinite}@keyframes _spin_czcpa_183{to{transform:rotate(360deg)}}._cardWrapper_wbgsc_1{position:relative;width:100%;height:100%;transition:transform var(--transition-base),z-index var(--transition-fast);will-change:transform;content-visibility:auto;contain-intrinsic-size:200px 300px}._cardWrapper_wbgsc_1:hover{transform:translateY(-6px);z-index:5}._card_wbgsc_1{display:flex;flex-direction:column;background-color:var(--bg-secondary);border-radius:var(--radius-md);overflow:hidden;height:100%;box-shadow:none;border:1px solid var(--border-secondary);transition:border-color var(--transition-base),background-color var(--transition-base)}._cardWrapper_wbgsc_1:hover ._card_wbgsc_1{border-color:var(--border-accent);box-shadow:none;background-color:var(--bg-tertiary)}._posterContainer_wbgsc_38{position:relative;width:100%;aspect-ratio:3 / 4;overflow:hidden;background:var(--bg-tertiary)}._posterImg_wbgsc_46{width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .4s ease,transform var(--transition-base)}._posterImg_wbgsc_46._loaded_wbgsc_56{opacity:1}._cardWrapper_wbgsc_1:hover ._posterImg_wbgsc_46{transform:scale(1.08) translateZ(0)}._info_wbgsc_64{padding:var(--space-3);display:flex;flex-direction:column;flex-grow:1;gap:var(--space-2)}._title_wbgsc_72{font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);line-height:var(--line-height-tight);color:var(--text-primary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:auto;transition:color var(--transition-base)}._cardWrapper_wbgsc_1:hover ._title_wbgsc_72{color:var(--accent-light)}._badge_wbgsc_89{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_wbgsc_100{top:var(--space-2);left:var(--space-2);background-color:#000000b3;color:#fff;border:1px solid rgba(255,255,255,.1)}._epBadge_wbgsc_109{bottom:var(--space-2);left:var(--space-2);background-color:var(--accent);color:#fff}._adultBadge_wbgsc_117{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}._metaRow_wbgsc_128{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-xs);color:var(--text-secondary);margin-top:auto}._metaItem_wbgsc_137{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_wbgsc_137:hover{background-color:var(--bg-elevated);color:var(--text-primary)}._progressContainer_wbgsc_154{width:100%;height:4px;background-color:var(--bg-tertiary);border-radius:var(--radius-sm);margin-top:var(--space-2);overflow:hidden}._progressBar_wbgsc_163{height:100%;background:var(--accent);border-radius:var(--radius-sm);transition:width .3s ease}._timestamp_wbgsc_170{font-size:var(--font-size-xs);color:var(--text-muted);margin-top:var(--space-1)}._removeBtn_wbgsc_176,._infoBtn_wbgsc_177{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:1rem}._removeBtn_wbgsc_176:hover{background-color:#ef4444e6!important;border-color:#ef4444e6!important;transform:scale(1.08)}._infoBtn_wbgsc_177:hover{background-color:var(--accent);border-color:var(--accent);transform:scale(1.08)}._cardWrapper_wbgsc_1:hover ._removeBtn_wbgsc_176,._card_wbgsc_1:hover ._removeBtn_wbgsc_176,._cardWrapper_wbgsc_1:hover ._infoBtn_wbgsc_177,._card_wbgsc_1:hover ._infoBtn_wbgsc_177{opacity:1}@media(hover:none),(pointer:coarse){._removeBtn_wbgsc_176,._infoBtn_wbgsc_177{display:none}}._mobileBadges_wbgsc_226{display:flex;flex-wrap:wrap;gap:var(--space-1);margin-bottom:var(--space-1)}._mobileBadgeBase_wbgsc_233{font-size:10px;font-weight:var(--font-weight-bold);padding:1px var(--space-1);border-radius:4px;text-transform:uppercase}._mobileType_wbgsc_241{background-color:#ffffff1a;color:var(--text-secondary);border:1px solid rgba(255,255,255,.1)}._mobileEp_wbgsc_248{background-color:var(--accent);color:#fff}@media(max-width:768px){._typeBadge_wbgsc_100{display:none}._removeBtn_wbgsc_176{opacity:1!important;background-color:#00000080!important}._card_wbgsc_1._horizontal_wbgsc_264{flex-direction:row;height:auto;min-height:100px}._card_wbgsc_1._horizontal_wbgsc_264 ._posterContainer_wbgsc_38{width:85px;height:100%;aspect-ratio:auto;flex-shrink:0}._card_wbgsc_1._horizontal_wbgsc_264 ._info_wbgsc_64{padding:var(--space-2) var(--space-3);justify-content:center}._card_wbgsc_1._vertical_wbgsc_282 ._posterContainer_wbgsc_38{width:100%;aspect-ratio:3 / 4}._card_wbgsc_1._vertical_wbgsc_282 ._info_wbgsc_64{padding:var(--space-2);align-items:center;text-align:center}._card_wbgsc_1._vertical_wbgsc_282 ._title_wbgsc_72{font-size:var(--font-size-xs);-webkit-line-clamp:2;line-clamp:2;text-align:center}._card_wbgsc_1._vertical_wbgsc_282 ._mobileBadges_wbgsc_226{justify-content:center}._title_wbgsc_72{font-size:var(--font-size-sm);margin-bottom:2px;-webkit-line-clamp:2;line-clamp:2}._metaRow_wbgsc_128{margin-top:var(--space-1)}}._placeholder_wbgsc_316{width:100%;height:100%;background:var(--bg-tertiary);display:flex;align-items:center;justify-content:center}._placeholderText_wbgsc_325{font-size:2.5rem;font-weight:var(--font-weight-bold);color:var(--text-tertiary);opacity:.3}._lowEnd_wbgsc_332 ._card_wbgsc_1,._lowEnd_wbgsc_332 ._posterImg_wbgsc_46{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
|
+
._section-header_ltypa_1{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-6);gap:var(--space-4)}._nav-arrows_ltypa_9{display:flex;gap:10px}._nav-button_ltypa_14{background:var(--bg-secondary);border:1px solid var(--border-secondary);color:var(--text-primary);width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s}._nav-button_ltypa_14:hover{background:var(--accent);color:#fff;border-color:var(--accent)}._carousel-container_ltypa_34{position:relative;width:100%}._carousel_ltypa_34{display:flex;gap:15px;overflow-x:auto;scroll-behavior:smooth;scrollbar-width:none;padding-bottom:10px}._carousel_ltypa_34::-webkit-scrollbar{display:none}._carousel-card_ltypa_52{flex:0 0 calc((100% - (6 * 15px)) / 7);min-width:150px}@media(max-width:1200px){._carousel-card_ltypa_52{flex:0 0 calc((100% - (5 * 15px)) / 6)}}@media(max-width:1024px){._carousel-card_ltypa_52{flex:0 0 calc((100% - 60px)/5)}}@media(max-width:768px){._carousel-card_ltypa_52{flex:0 0 calc((100% - (2 * 15px)) / 3)}}@media(max-width:480px){._carousel-card_ltypa_52{flex:0 0 calc((100% - 15px)/2)}}._see-more-button_ltypa_81{background-color:var(--accent);color:#fff;padding:var(--space-2) var(--space-5);border-radius:var(--radius-md);text-decoration:none;font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);border:none;cursor:pointer;transition:all var(--transition-base);display:inline-flex;align-items:center;justify-content:center;min-height:40px}._see-more-button_ltypa_81:hover{background-color:var(--accent-dark);box-shadow:var(--shadow-md);transform:translateY(-2px)}._see-more-button_ltypa_81:active{transform:translateY(0)}._header_nnbp6_1{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-6)}._header_nnbp6_1 h3{margin:0;font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--text-primary);border-left:3px solid var(--accent);padding-left:var(--space-3)}._headerRight_nnbp6_17{display:flex;align-items:center;gap:var(--space-3)}._timeSelect_nnbp6_23{width:140px;height:42px;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:500;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:border-color .15s ease}._timeSelect_nnbp6_23:hover{background-color:var(--bg-tertiary);border-color:var(--border-secondary)}._timeSelect_nnbp6_23:focus{outline:none;border-color:var(--accent)}._navArrows_nnbp6_53{display:flex;gap:var(--space-2)}._navBtn_nnbp6_58{width:36px;height:36px;border-radius:50%;background:var(--bg-tertiary);border:1px solid var(--border-primary);color:var(--text-primary);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s}._navBtn_nnbp6_58:hover{background:var(--accent);border-color:var(--accent);color:#fff}._container_nnbp6_78{background-color:var(--bg-secondary);padding:var(--space-6);border-radius:var(--card-radius);border:1px solid var(--border-primary)}@media(max-width:768px){._container_nnbp6_78{padding:var(--space-4);min-height:auto}._header_nnbp6_1{flex-direction:column;align-items:flex-start;gap:var(--space-3)}._header_nnbp6_1 h3{font-size:var(--font-size-md);padding-left:var(--space-2)}._headerRight_nnbp6_17{width:100%;justify-content:space-between}._timeSelect_nnbp6_23{width:120px;height:36px}._navBtn_nnbp6_58{width:32px;height:32px}}._list_nnbp6_118{display:flex;flex-direction:column}._item_nnbp6_123{display:flex;align-items:flex-start;gap:var(--space-4);padding:var(--space-3) 0;border-bottom:1px solid var(--border-primary);transition:background-color .2s;text-decoration:none}._item_nnbp6_123:last-child{border-bottom:none}._item_nnbp6_123:hover ._title_nnbp6_137{color:var(--accent)}._rank_nnbp6_141{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);width:40px;text-align:center;flex-shrink:0;color:var(--text-secondary);margin-right:var(--space-2);padding-top:2px}._item_nnbp6_123:nth-child(1) ._rank_nnbp6_141{color:gold}._item_nnbp6_123:nth-child(2) ._rank_nnbp6_141{color:silver}._item_nnbp6_123:nth-child(3) ._rank_nnbp6_141{color:#cd7f32}._poster_nnbp6_164{width:50px;height:70px;aspect-ratio:5 / 7;object-fit:cover;border-radius:var(--radius-sm);flex-shrink:0;background-color:var(--bg-tertiary)}._info_nnbp6_174{flex-grow:1;min-width:0;display:flex;flex-direction:column;gap:var(--space-1)}._title_nnbp6_137{font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);margin-bottom:var(--space-1);color:var(--text-primary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:break-word;word-break:break-word;overflow:hidden;transition:color .2s}._meta_nnbp6_196{font-size:var(--font-size-xs);color:var(--text-secondary);display:flex;gap:var(--space-2)}@media(max-width:768px){._title_nnbp6_137{-webkit-line-clamp:2}._meta_nnbp6_196{font-size:10px}}._skeletonItem_nnbp6_213{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-3) 0}._skeletonRank_nnbp6_220{width:30px;height:30px;background-color:var(--bg-tertiary);border-radius:var(--radius-sm)}._skeletonPoster_nnbp6_227{width:50px;height:70px;background-color:var(--bg-tertiary);border-radius:var(--radius-sm)}._skeletonText_nnbp6_234{flex-grow:1;height:16px;background-color:var(--bg-tertiary);border-radius:var(--radius-sm);width:60%}@media(max-width:768px){._skeletonItem_nnbp6_213{flex:0 0 100px;flex-direction:column;padding:0}._skeletonRank_nnbp6_220{display:none}._skeletonPoster_nnbp6_227{width:100px;height:140px}._skeletonText_nnbp6_234{width:100%;height:12px;margin-top:var(--space-2)}}._carouselContainer_nnbp6_266{position:relative;width:100%;min-height:220px}._carousel_nnbp6_266{display:flex;gap:var(--space-3);overflow-x:auto;scroll-behavior:smooth;scrollbar-width:none;padding-bottom:var(--space-2)}._carousel_nnbp6_266::-webkit-scrollbar{display:none}._carouselItem_nnbp6_285{flex:0 0 100px;display:flex;flex-direction:column;align-items:center;text-decoration:none}._carouselItem_nnbp6_285:hover ._carouselTitle_nnbp6_293{color:var(--accent)}._carouselPoster_nnbp6_297{position:relative;width:100px;height:140px;border-radius:var(--radius-sm);overflow:hidden;background:var(--bg-tertiary);flex-shrink:0}._carouselPoster_nnbp6_297 img{width:100%;height:100%;object-fit:cover}._carouselRank_nnbp6_313{position:absolute;top:4px;left:4px;background:#000000bf;color:gold;font-size:11px;font-weight:var(--font-weight-bold);padding:2px 5px;border-radius:4px}._carouselTitle_nnbp6_293{margin-top:var(--space-2);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--text-primary);text-align:center;width:100%;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:break-word;word-break:break-word;overflow:hidden;min-height:calc(var(--font-size-xs) * var(--line-height-tight) * 2);transition:color .2s}._placeholder_nnbp6_342{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--bg-tertiary)}._rankPlaceholder_nnbp6_351{font-size:2rem;font-weight:var(--font-weight-bold);color:var(--text-tertiary);opacity:.5}._scheduleSection_s59pl_1{padding:var(--space-6)}._daySelector_s59pl_5{display:flex;justify-content:center;gap:var(--space-3);margin-bottom:2rem;flex-wrap:wrap}._dayBtn_s59pl_13{background-color:var(--bg-tertiary);border:1px solid var(--border-primary);color:var(--text-secondary);padding:var(--space-3) var(--space-2);border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-base);min-width:80px;display:flex;flex-direction:column;align-items:center;line-height:1.2;min-height:56px;font-weight:var(--font-weight-medium)}._dayBtn_s59pl_13:hover{background-color:var(--bg-elevated);border-color:var(--accent);color:var(--accent-light);transform:translateY(-2px)}._dayBtn_s59pl_13._active_s59pl_37{background-color:var(--accent);border-color:var(--accent);color:#fff;font-weight:var(--font-weight-bold);box-shadow:0 0 12px var(--accent-glow)}._dayName_s59pl_45{font-size:var(--font-size-sm);color:var(--text-primary)}._dayBtn_s59pl_13._active_s59pl_37 ._dayName_s59pl_45{color:#fff}._dayDate_s59pl_54{font-size:var(--font-size-xs);color:var(--text-secondary)}._dayBtn_s59pl_13._active_s59pl_37 ._dayDate_s59pl_54{color:#ffffffd9}._carouselHeader_s59pl_63{display:flex;justify-content:flex-start;margin-bottom:var(--space-2)}._navArrows_s59pl_69{display:flex;gap:10px}._navButton_s59pl_74{background:var(--bg-secondary);border:1px solid var(--border-secondary);color:var(--text-primary);width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s}._navButton_s59pl_74:hover{background:var(--accent);color:#fff;border-color:var(--accent)}._carouselContainer_s59pl_94{position:relative;width:100%}._carousel_s59pl_63{display:flex;gap:15px;overflow-x:auto;scroll-behavior:smooth;scrollbar-width:none;padding-bottom:10px}._carousel_s59pl_63::-webkit-scrollbar{display:none}._carouselCard_s59pl_112{flex:0 0 calc((100% - (6 * 15px)) / 7);min-width:150px}@media(max-width:1200px){._carouselCard_s59pl_112{flex:0 0 calc((100% - (5 * 15px)) / 6)}}@media(max-width:1024px){._carouselCard_s59pl_112{flex:0 0 calc((100% - 60px)/5)}}@media(max-width:768px){._carouselCard_s59pl_112{flex:0 0 calc((100% - (2 * 15px)) / 3)}}@media(max-width:480px){._carouselCard_s59pl_112{flex:0 0 calc((100% - 15px)/2)}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{g as P,A as E,u as e,L as W,d as T,y as D,S as X,b as Z,T as ee,c as te,q as F}from"./vendor-DdbgYKo4.js";import{u as M,F as B,a as I,b as Y,f as H,c as O,d as ne,e as ae,g as se,h as oe,i as re}from"./index-CHVF4D4L.js";import{A as Q,a as A,S as G,E as K}from"./ErrorMessage-Ddf2zmRx.js";import{R as le}from"./RemoveConfirmationModal-CLYqyGOv.js";import{u as U}from"./useIsMobile-gHo4t6g6.js";import"./useAnimeInfoData-Cr58brCY.js";import"./Button-o0l9V_NG.js";const ce="_carousel_ltypa_34",R={"section-header":"_section-header_ltypa_1","nav-arrows":"_nav-arrows_ltypa_9","nav-button":"_nav-button_ltypa_14","carousel-container":"_carousel-container_ltypa_34",carousel:ce,"carousel-card":"_carousel-card_ltypa_52"},ie=({title:b,animeList:h,continueWatching:m,onRemove:p,loading:v,showSeeMore:_,emptyState:y,carousel:N,cardConfig:w,layout:d})=>{const{lowEndMode:k}=M(),a=E(null),l=N,s=d||(l?"vertical":"horizontal"),u=i=>{if(!a.current)return;const{scrollLeft:f,clientWidth:t}=a.current,o=t*.8;a.current.scrollTo({left:i==="left"?f-o:f+o,behavior:k?"auto":"smooth"})};return!v&&h.length===0&&!y?null:e("section",{style:{marginBottom:"2.5rem"},children:[e("div",{className:R["section-header"],children:[e("div",{style:{display:"flex",alignItems:"center",gap:"1rem"},children:[e("div",{className:"section-title",style:{marginBottom:0},children:b}),N&&h.length>0&&e("div",{className:R["nav-arrows"],children:[e("button",{className:R["nav-button"],onClick:()=>u("left"),children:e(B,{})}),e("button",{className:R["nav-button"],onClick:()=>u("right"),children:e(I,{})})]})]}),_&&e(W,{to:"/watchlist/Continue Watching",className:"btn-secondary",style:{fontSize:"0.8rem",padding:"0.4rem 0.8rem"},children:"View All"})]}),l?e("div",{className:R["carousel-container"],children:e("div",{className:R.carousel,ref:a,children:v&&h.length===0?Array.from({length:7}).map((i,f)=>e("div",{className:R["carousel-card"],children:e(Q,{layout:s})},f)):h.map((i,f)=>e("div",{className:R["carousel-card"],children:e(A,{anime:i,continueWatching:m,onRemove:p,isLCP:f<4&&b==="Latest Releases",config:w,layout:s})},i._id))})}):e("div",{className:"grid-container",children:v&&h.length===0?e(G,{count:6,layout:s}):h.length>0?h.map((i,f)=>e(A,{anime:i,continueWatching:m,onRemove:p,isLCP:f<4&&b==="Latest Releases",config:w,layout:s},i._id)):v?null:e("div",{style:{gridColumn:"1 / -1"},children:y})})]})},j=P.memo(ie),de="_header_nnbp6_1",ue="_headerRight_nnbp6_17",he="_timeSelect_nnbp6_23",me="_navArrows_nnbp6_53",pe="_navBtn_nnbp6_58",ge="_container_nnbp6_78",ve="_list_nnbp6_118",_e="_item_nnbp6_123",ye="_title_nnbp6_137",fe="_rank_nnbp6_141",be="_poster_nnbp6_164",Ne="_info_nnbp6_174",we="_meta_nnbp6_196",Se="_skeletonItem_nnbp6_213",ke="_skeletonRank_nnbp6_220",Ce="_skeletonPoster_nnbp6_227",xe="_skeletonText_nnbp6_234",Te="_carouselContainer_nnbp6_266",Re="_carousel_nnbp6_266",Le="_carouselItem_nnbp6_285",De="_carouselTitle_nnbp6_293",Ae="_carouselPoster_nnbp6_297",Ee="_carouselRank_nnbp6_313",Be="_placeholder_nnbp6_342",Ie="_rankPlaceholder_nnbp6_351",n={header:de,headerRight:ue,timeSelect:he,navArrows:me,navBtn:pe,container:ge,list:ve,item:_e,title:ye,rank:fe,poster:be,info:Ne,meta:we,skeletonItem:Se,skeletonRank:ke,skeletonPoster:Ce,skeletonText:xe,carouselContainer:Te,carousel:Re,carouselItem:Le,carouselTitle:De,carouselPoster:Ae,carouselRank:Ee,placeholder:Be,rankPlaceholder:Ie},Pe=[{value:"all",label:"All Time"},{value:"monthly",label:"Monthly"},{value:"weekly",label:"Weekly"},{value:"daily",label:"Daily"}];function q({title:b}){const[h,m]=T([]),[p,v]=T(!0),[_,y]=T(null),[N,w]=T("all"),[d,k]=T(!1),{titlePreference:a}=Y(),{lowEndMode:l}=M(),c=E(null);D(()=>{const t=()=>k(window.innerWidth<1024);return t(),window.addEventListener("resize",t),()=>window.removeEventListener("resize",t)},[]),D(()=>{(async()=>{v(!0),y(null);try{const o=await fetch(`/api/popular/${N}`);if(!o.ok)throw new Error("Failed to fetch top 10 popular");const C=await o.json();m(C)}catch(o){y(o instanceof Error?o.message:"An unknown error occurred")}finally{v(!1)}})()},[N]);const s=t=>{if(!c.current)return;const{scrollLeft:o,clientWidth:C}=c.current,x=C*.8;c.current.scrollTo({left:t==="left"?o-x:o+x,behavior:l?"auto":"smooth"})},u=t=>a==="name"?t.name:a==="nativeName"?t.nativeName||t.name:a==="englishName"&&t.englishName||t.name,i=()=>e("div",{className:d?n.carousel:n.list,children:Array.from({length:10}).map((t,o)=>e("div",{className:n.skeletonItem,children:[e("div",{className:n.skeletonRank}),e("div",{className:n.skeletonPoster}),e("div",{className:n.skeletonText})]},o))}),f=()=>e("div",{className:d?n.carousel:n.list,children:h.map((t,o)=>e(W,{to:`/anime/${t._id}`,className:n.item,children:[e("div",{className:n.rank,children:["#",o+1]}),!l&&e("img",{src:H(t.thumbnail,130,182),alt:t.name,width:"50",height:"70",className:n.poster,loading:"lazy",decoding:"async",onError:C=>{const x=C.currentTarget;x.src="/placeholder.svg"}}),e("div",{className:n.info,children:[e("div",{className:n.title,title:u(t),children:u(t)}),!l&&e("div",{className:n.meta,children:[t.availableEpisodes.sub&&e("span",{children:["SUB: ",t.availableEpisodes.sub]}),t.availableEpisodes.dub&&e("span",{children:[" DUB: ",t.availableEpisodes.dub]})]})]})]},t._id))});return e("div",{className:n.container,children:[e("div",{className:n.header,children:[e("h3",{children:b}),e("div",{className:n.headerRight,children:[d&&h.length>0&&e("div",{className:n.navArrows,children:[e("button",{className:n.navBtn,onClick:()=>s("left"),children:e(B,{})}),e("button",{className:n.navBtn,onClick:()=>s("right"),children:e(I,{})})]}),e("select",{className:n.timeSelect,value:N,onChange:t=>w(t.currentTarget.value),children:Pe.map(t=>e("option",{value:t.value,children:t.label},t.value))})]})]}),p?i():_?e(K,{message:_}):e(X,{children:d?e("div",{className:n.carouselContainer,children:e("div",{className:n.carousel,ref:c,children:h.map((t,o)=>e(W,{to:`/anime/${t._id}`,className:n.carouselItem,children:[e("div",{className:n.carouselPoster,children:[l?e("div",{className:n.placeholder,children:e("div",{className:n.rankPlaceholder,children:["#",o+1]})}):e("img",{src:H(t.thumbnail,130,182),alt:t.name,width:"100",height:"140",loading:"lazy",decoding:"async",onError:C=>{const x=C.currentTarget;x.src="/placeholder.svg"}}),!l&&e("div",{className:n.carouselRank,children:["#",o+1]})]}),e("div",{className:n.carouselTitle,title:u(t),children:u(t)})]},t._id))})}):f()})]})}const We="_scheduleSection_s59pl_1",Me="_daySelector_s59pl_5",$e="_dayBtn_s59pl_13",ze="_active_s59pl_37",Fe="_dayName_s59pl_45",He="_dayDate_s59pl_54",Oe="_carouselHeader_s59pl_63",Ue="_navArrows_s59pl_69",je="_navButton_s59pl_74",qe="_carouselContainer_s59pl_94",Ye="_carousel_s59pl_63",Qe="_carouselCard_s59pl_112",g={scheduleSection:We,daySelector:Me,dayBtn:$e,active:ze,dayName:Fe,dayDate:He,carouselHeader:Oe,navArrows:Ue,navButton:je,carouselContainer:qe,carousel:Ye,carouselCard:Qe},Ge=()=>{const[b,h]=T([]),[m,p]=T(!0),[v,_]=T(null),[y,N]=T(new Date().toISOString().split("T")[0]),w=E(null);D(()=>{(async l=>{p(!0),_(null);try{const c=await fetch(`/api/schedule/${l}`);if(!c.ok)throw new Error("Failed to fetch episode schedule");const s=await c.json();h(s)}catch(c){_(c instanceof Error?c.message:"An unknown error occurred"),console.error("Error fetching episode schedule:",c)}finally{p(!1)}})(y)},[y]);const d=a=>{if(!w.current)return;const{scrollLeft:l,clientWidth:c}=w.current,s=c*.8;w.current.scrollTo({left:a==="left"?l-s:l+s,behavior:"smooth"})},k=()=>{const a=[],l=new Date,c=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];for(let s=-6;s<=0;s++){const u=new Date;u.setDate(l.getDate()+s),a.push(u)}return a.map(s=>{const u=s.toISOString().split("T")[0];let i=c[s.getDay()];if(u===l.toISOString().split("T")[0])i="Today";else{const t=new Date;t.setDate(l.getDate()-1),u===t.toISOString().split("T")[0]&&(i="Yesterday")}const f=`${String(s.getMonth()+1).padStart(2,"0")}-${String(s.getDate()).padStart(2,"0")}`;return{dateString:u,dayLabel:i,formattedDate:f}})};return e("div",{className:g.scheduleSection,children:[e("h2",{className:"section-title",children:"Episode Schedule"}),e("div",{className:g.daySelector,children:k().map(a=>e("button",{className:`${g.dayBtn} ${y===a.dateString?g.active:""}`,onClick:()=>N(a.dateString),children:[e("span",{className:g.dayName,children:a.dayLabel}),e("span",{className:g.dayDate,children:a.formattedDate})]},a.dateString))}),e("div",{className:g.carouselHeader,children:b.length>0&&e("div",{className:g.navArrows,children:[e("button",{className:g.navButton,onClick:()=>d("left"),"aria-label":"Scroll left",children:e(B,{})}),e("button",{className:g.navButton,onClick:()=>d("right"),"aria-label":"Scroll right",children:e(I,{})})]})}),e("div",{className:g.carouselContainer,children:e("div",{className:g.carousel,ref:w,children:m?Array.from({length:7}).map((a,l)=>e("div",{className:g.carouselCard,children:e(Q,{layout:"vertical"})},l)):v?e("div",{style:{width:"100%"},children:e(K,{message:v})}):b.length===0?e("p",{style:{textAlign:"center",marginTop:"1rem",width:"100%"},children:"No episodes scheduled for this day."}):b.map(a=>e("div",{className:g.carouselCard,children:e(A,{anime:a,continueWatching:!1,layout:"vertical"},a._id)},a._id))},y)})]})},nt=()=>{const b=Z(),h=U(),m=U(1024),[p,v]=P.useState(1),_=E(null),{data:y}=O(p+1),{titlePreference:N}=Y(),{lowEndMode:w}=M(),[d,k]=P.useState(null),a=ne();D(()=>{document.title="Home - ani-web"},[]);const{data:l,isLoading:c}=ae(),{data:s,isLoading:u}=se(14),{data:i,isLoading:f}=oe(),t=ee(()=>{const r=[],L=new Set;if(s)for(const S of s)r.push(S),L.add(S.id);if(i)for(const S of i)L.has(S.id)||(r.push(S),L.add(S.id));return r.length>0?r:s||[]},[s,i]),{data:o,isLoading:C}=O(p),x=14,$=o&&o.length>=14&&y&&y.length>0,z=te({mutationFn:async r=>{await fetch("/api/continue-watching/remove",{method:"POST",body:JSON.stringify({showId:r}),headers:{"Content-Type":"application/json"}})},onSuccess:()=>{b.invalidateQueries({queryKey:["continueWatchingFast"]}),b.invalidateQueries({queryKey:["continueWatchingUpNext"]})}}),J=F(r=>{const L=t?.find(S=>String(S.id)===String(r));if(L){const S=L[N]||L.name;k({id:r,name:S})}},[t,N]),V=F(r=>{d&&(z.mutate(d.id),r.removeFromWatchlist&&a.mutate(d.id),k(null))},[d,z,a]);return e("div",{style:{paddingBottom:"2rem"},children:[e("div",{style:{display:m?"flex":"grid",gridTemplateColumns:m?void 0:"1fr 320px",flexDirection:m?"column":void 0,gap:"2rem",padding:h?"1rem":"1.5rem",alignItems:m?void 0:"start"},children:[m&&e("section",{children:e(q,{title:"Top 10 Popular"})}),e("div",{style:{minWidth:"0"},children:e(j,{title:"Continue Watching",animeList:t||[],continueWatching:!0,onRemove:J,showSeeMore:t!==void 0&&t.length>0,loading:u,emptyState:e("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",padding:"4rem 2rem",backgroundColor:"var(--bg-secondary)",borderRadius:"var(--radius-md)",border:"1px solid var(--border-secondary)",textAlign:"center",gap:"1rem",width:"100%",minHeight:"280px"},children:[e(re,{size:40,style:{color:"var(--accent)",opacity:.6,marginBottom:"0.5rem"}}),e("div",{children:[e("h3",{style:{fontSize:"1.2rem",fontWeight:"var(--font-weight-semibold)",marginBottom:"0.4rem",color:"var(--text-primary)"},children:"Nothing is here..."}),e("p",{style:{fontSize:"0.9rem",color:"var(--text-secondary)",maxWidth:"300px"},children:"You haven't watched anything yet. Start exploring and watch something first!"})]})]})})}),!m&&e("aside",{children:e(q,{title:"Top 10 Popular"})}),e("section",{style:{gridColumn:m?void 0:"1 / -1"},children:[e("div",{style:{marginBottom:"2rem"},children:e(j,{title:"Latest Releases",animeList:l?.slice(0,14)||[],loading:c,carousel:!0})}),e("div",{className:"section-header",style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"var(--space-6)"},ref:_,children:e("div",{style:{display:"flex",alignItems:"center",gap:"1rem"},children:[e("div",{className:"section-title",style:{marginBottom:0},children:"Current Season"}),e("div",{style:{display:"flex",gap:"10px",alignItems:"center",background:"var(--bg-secondary)",padding:"4px 8px",borderRadius:"20px",border:"1px solid var(--border-secondary)"},children:[e("button",{style:{background:"none",border:"none",color:"var(--text-primary)",cursor:"pointer",display:"flex",alignItems:"center",padding:"4px",opacity:p===1?.3:1},onClick:()=>{if(p>1&&(v(r=>r-1),_.current)){const r=_.current.getBoundingClientRect().top+window.scrollY-120;window.scrollTo({top:r,behavior:"smooth"})}},disabled:p===1,children:e(B,{size:14})}),e("span",{style:{fontSize:"0.85rem",fontWeight:"var(--font-weight-bold)",minWidth:"20px",textAlign:"center"},children:p}),e("button",{style:{background:"none",border:"none",color:"var(--text-primary)",cursor:"pointer",display:"flex",alignItems:"center",padding:"4px",opacity:$?1:.3},onClick:()=>{if(v(r=>r+1),_.current){const r=_.current.getBoundingClientRect().top+window.scrollY-120;window.scrollTo({top:r,behavior:"smooth"})}},disabled:!$,children:e(I,{size:14})})]})]})}),e("div",{className:"grid-container",style:{minHeight:"300px",alignContent:"start",gridTemplateColumns:m?void 0:"repeat(7, 1fr)"},children:C?e(G,{count:x,layout:"horizontal"}):o?.slice(0,x).map(r=>e(A,{anime:r,layout:"horizontal"},r._id))})]})]}),e(Ge,{}),e(le,{isOpen:!!d,onClose:()=>k(null),onConfirm:V,animeName:d?.name||"",scenario:"continueWatching"})]})};export{nt as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._header_1hofi_1{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-8);animation:_fadeIn_1hofi_1 .8s var(--ease-smooth)}._personaBadge_1hofi_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_1hofi_9:hover{transform:translateY(-2px);border-color:var(--accent);box-shadow:0 0 20px var(--accent-glow)}._personaBadge_1hofi_9 svg{font-size:1.5rem;color:var(--accent)}._personaInfo_1hofi_37{display:flex;flex-direction:column}._personaLabel_1hofi_42{font-size:.65rem;text-transform:uppercase;letter-spacing:1.5px;color:var(--text-tertiary);margin-bottom:2px;font-weight:800}._personaValue_1hofi_51{font-size:1.1rem;color:var(--text-primary);letter-spacing:-.01em}._statsGrid_1hofi_57{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--space-6);margin-bottom:var(--space-10);animation:_slideUpIn_1hofi_1 .8s var(--ease-smooth)}._statCard_1hofi_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_1hofi_65:hover{transform:translateY(-5px);border-color:var(--border-accent);background:#ffffff0d;box-shadow:0 20px 40px -10px #00000080}._statIcon_1hofi_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_1hofi_65:hover ._statIcon_1hofi_86{transform:scale(1.1) rotate(-5deg)}._statInfo_1hofi_102{display:flex;flex-direction:column}._statValue_1hofi_107{font-size:1.75rem;font-weight:800;color:var(--text-primary);line-height:1;margin-bottom:4px;letter-spacing:-.02em}._statLabel_1hofi_116{color:var(--text-tertiary);font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:1px}._wideSection_1hofi_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_1hofi_1 .8s var(--ease-smooth) .1s both}._sectionHeader_1hofi_136{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-8);gap:var(--space-4)}._sectionHeader_1hofi_136 h3{font-size:1.5rem;font-weight:800;color:var(--text-primary);letter-spacing:-.02em}._yearSelect_1hofi_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_1hofi_151:hover{border-color:var(--border-secondary);background-color:var(--bg-elevated)}._yearSelect_1hofi_151:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}._heatmapLayout_1hofi_180{display:flex;gap:var(--space-8);align-items:flex-start;justify-content:center}._dayLabels_1hofi_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_1hofi_199{overflow-x:auto;padding:var(--space-2) var(--space-3);max-width:100%}._heatmapMonthLabels_1hofi_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_1hofi_216{display:grid;grid-auto-flow:column;grid-template-rows:repeat(7,14px);gap:4px;width:fit-content}._heatBox_1hofi_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_1hofi_224._hiddenBox_1hofi_233{opacity:0;pointer-events:none}._heatBox_1hofi_224:hover{transform:scale(1.6);z-index:10;border-color:#fff;box-shadow:0 0 10px #ffffff4d}._level0_1hofi_245{background:#ffffff0d}._level1_1hofi_248{background:#8a4fff40;border-color:#8a4fff4d}._level2_1hofi_252{background:#8a4fff80;border-color:#8a4fff99}._level3_1hofi_256{background:#8a4fffbf;border-color:#8a4fffe6}._level4_1hofi_260{background:var(--accent);border-color:var(--accent-light);box-shadow:0 0 10px var(--accent-glow)}._heatmapFooter_1hofi_266{display:flex;justify-content:flex-end;margin-top:var(--space-6);padding-right:var(--space-2)}._heatLegend_1hofi_273{display:flex;align-items:center;gap:6px;font-size:.7rem;color:var(--text-tertiary);font-weight:700;text-transform:uppercase}._chartsContainer_1hofi_283{display:grid;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));gap:var(--space-8);margin-bottom:var(--space-10);animation:_slideUpIn_1hofi_1 .8s var(--ease-smooth) .2s both}._chartWrapper_1hofi_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_1hofi_291:hover{transform:translateY(-4px)}._chartWrapper_1hofi_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_1hofi_318{display:flex;align-items:flex-end;height:160px;gap:2px;padding-top:var(--space-4)}._hourlyBarContainer_1hofi_326{flex:1;display:flex;flex-direction:column;align-items:center;height:100%;min-width:0}._hourlyBar_1hofi_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_1hofi_326:hover{opacity:1;transform:scaleY(1.05);filter:brightness(1.2);box-shadow:0 0 10px var(--accent-glow)}._hourlyLabel_1hofi_352{font-size:.65rem;color:var(--text-tertiary);margin-top:8px;font-weight:700}._chartSubtext_1hofi_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_1hofi_371{padding:var(--space-8) 0}._popTrack_1hofi_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_1hofi_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_1hofi_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_1hofi_397 strong{color:var(--text-primary);font-weight:800}._seasonalChart_1hofi_412{display:flex;align-items:flex-end;height:160px;gap:8px;padding-top:var(--space-4)}._seasonalBarContainer_1hofi_420{flex:1;display:flex;flex-direction:column;align-items:center;height:100%;min-width:0}._seasonalBar_1hofi_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_1hofi_420:hover{opacity:1;transform:scaleY(1.03)}._seasonalLabel_1hofi_443{font-size:.65rem;color:var(--text-tertiary);margin-top:10px;font-weight:700;text-transform:uppercase}._genreList_1hofi_451{display:flex;flex-direction:column;gap:var(--space-6);padding-top:var(--space-2)}._genreRow_1hofi_458{display:flex;flex-direction:column;gap:var(--space-2)}._genreInfo_1hofi_464{display:flex;justify-content:space-between;align-items:center;margin-bottom:2px}._genreName_1hofi_471{font-weight:800;font-size:1rem;color:var(--text-primary);letter-spacing:-.01em}._genreCount_1hofi_478{font-size:.8rem;color:var(--text-tertiary);font-weight:700;text-transform:uppercase}._genreBarBg_1hofi_485{height:12px;background:#ffffff0d;border-radius:var(--radius-full);overflow:hidden;border:1px solid rgba(255,255,255,.03)}._genreBar_1hofi_485{height:100%;border-radius:var(--radius-full);transition:width 1.5s var(--ease-smooth);box-shadow:4px 0 15px #0000004d}._warningSection_1hofi_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_1hofi_1 .8s var(--ease-smooth) .3s both}._warningHeader_1hofi_511{display:flex;align-items:center;gap:var(--space-4);margin-bottom:var(--space-8);color:#ef4444}._warningHeader_1hofi_511 h3{font-size:1.5rem;font-weight:800;margin:0;letter-spacing:-.03em;text-transform:uppercase}._droppedGrid_1hofi_527{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--space-5)}._droppedCard_1hofi_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_1hofi_533:hover{transform:translateY(-4px) scale(1.02);background:#ffffff0f;border-color:#ef444466;box-shadow:0 10px 30px -10px #00000080}._droppedName_1hofi_551{font-weight:800;color:var(--text-primary);font-size:1.1rem;letter-spacing:-.01em}._droppedDate_1hofi_558{font-size:.85rem;color:var(--text-tertiary);font-weight:600}@keyframes _fadeIn_1hofi_1{0%{opacity:0}to{opacity:1}}@keyframes _slideUpIn_1hofi_1{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){._header_1hofi_1{flex-direction:column;align-items:flex-start;gap:var(--space-6)}._statsGrid_1hofi_57,._chartsContainer_1hofi_283{grid-template-columns:1fr}._heatmapLayout_1hofi_180{flex-direction:column-reverse}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as B,d as w,T as d,u as e}from"./vendor-DdbgYKo4.js";import{a0 as C,a1 as S,a2 as D,a3 as I,i as x,a4 as $,X as M}from"./index-CHVF4D4L.js";const F="_header_1hofi_1",G="_fadeIn_1hofi_1",O="_personaBadge_1hofi_9",W="_personaInfo_1hofi_37",k="_personaLabel_1hofi_42",R="_personaValue_1hofi_51",T="_statsGrid_1hofi_57",Y="_slideUpIn_1hofi_1",H="_statCard_1hofi_65",V="_statIcon_1hofi_86",A="_statInfo_1hofi_102",U="_statValue_1hofi_107",E="_statLabel_1hofi_116",q="_wideSection_1hofi_124",P="_sectionHeader_1hofi_136",j="_yearSelect_1hofi_151",z="_heatmapLayout_1hofi_180",K="_dayLabels_1hofi_187",Q="_heatmapWrapper_1hofi_199",X="_heatmapMonthLabels_1hofi_205",J="_heatmapGrid_1hofi_216",Z="_heatBox_1hofi_224",ee="_hiddenBox_1hofi_233",ae="_level0_1hofi_245",te="_level1_1hofi_248",se="_level2_1hofi_252",ne="_level3_1hofi_256",re="_level4_1hofi_260",oe="_heatmapFooter_1hofi_266",ie="_heatLegend_1hofi_273",le="_chartsContainer_1hofi_283",ce="_chartWrapper_1hofi_291",he="_hourlyChart_1hofi_318",de="_hourlyBarContainer_1hofi_326",pe="_hourlyBar_1hofi_326",_e="_hourlyLabel_1hofi_352",me="_chartSubtext_1hofi_359",ue="_popScale_1hofi_371",ge="_popTrack_1hofi_375",fe="_popThumb_1hofi_384",ve="_popDescription_1hofi_397",Ne="_seasonalChart_1hofi_412",ye="_seasonalBarContainer_1hofi_420",be="_seasonalBar_1hofi_420",Le="_seasonalLabel_1hofi_443",Be="_genreList_1hofi_451",we="_genreRow_1hofi_458",Ce="_genreInfo_1hofi_464",Se="_genreName_1hofi_471",De="_genreCount_1hofi_478",Ie="_genreBarBg_1hofi_485",xe="_genreBar_1hofi_485",$e="_warningSection_1hofi_500",Me="_warningHeader_1hofi_511",Fe="_droppedGrid_1hofi_527",Ge="_droppedCard_1hofi_533",Oe="_droppedName_1hofi_551",We="_droppedDate_1hofi_558",a={header:F,fadeIn:G,personaBadge:O,personaInfo:W,personaLabel:k,personaValue:R,statsGrid:T,slideUpIn:Y,statCard:H,statIcon:V,statInfo:A,statValue:U,statLabel:E,wideSection:q,sectionHeader:P,yearSelect:j,heatmapLayout:z,dayLabels:K,heatmapWrapper:Q,heatmapMonthLabels:X,heatmapGrid:J,heatBox:Z,hiddenBox:ee,level0:ae,level1:te,level2:se,level3:ne,level4:re,heatmapFooter:oe,heatLegend:ie,chartsContainer:le,chartWrapper:ce,hourlyChart:he,hourlyBarContainer:de,hourlyBar:pe,hourlyLabel:_e,chartSubtext:me,popScale:ue,popTrack:ge,popThumb:fe,popDescription:ve,seasonalChart:Ne,seasonalBarContainer:ye,seasonalBar:be,seasonalLabel:Le,genreList:Be,genreRow:we,genreInfo:Ce,genreName:Se,genreCount:De,genreBarBg:Ie,genreBar:xe,warningSection:$e,warningHeader:Me,droppedGrid:Fe,droppedCard:Ge,droppedName:Oe,droppedDate:We},Te=()=>{const{data:s,isLoading:u,isError:g}=B({queryKey:["insights"],queryFn:async()=>{const t=await fetch("/api/insights");if(!t.ok)throw new Error("Failed to fetch insights");return t.json()}}),[l,f]=w(new Date().getFullYear()),v=d(()=>{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]),p=d(()=>{if(!s?.activityGrid)return[];const t=new Map(s.activityGrid.map(h=>[h.day,h.count])),n=[],r=new Date(l,0,1),i=new Date(l,11,31),c=r.getDay(),o=new Date(r);for(o.setDate(o.getDate()-c);(o<=i||o.getDay()!==0)&&!(o>i&&o.getDay()===0);){const h=o.getFullYear(),b=String(o.getMonth()+1).padStart(2,"0"),L=String(o.getDate()).padStart(2,"0"),_=`${h}-${b}-${L}`,m=o<r||o>i;n.push({date:_,count:m?0:t.get(_)||0,month:o.getMonth(),isOutOfRange:m}),o.setDate(o.getDate()+1)}return n},[s,l]),N=d(()=>s?.seasonality?.length?Math.max(...s.seasonality.map(t=>t.seconds),1):0,[s]),y=d(()=>s?.hourlyDist?.length?Math.max(...s.hourlyDist.map(t=>t.count),1):0,[s]);return u?e("div",{className:a.loading,children:"Analyzing your anime lifestyle..."}):g?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(C,{}),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(S,{})}),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(D,{})}),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(I,{})}),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(x,{})}),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($,{})}),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=>f(Number(t.currentTarget.value)),children:v.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 p.forEach((r,i)=>{if(r.month!==n&&!r.isOutOfRange){const c=Math.floor(i/7)+1;c>(t.length>0?t[t.length-1].props.style.gridColumn+2:-1)&&(t.push(e("span",{style:{gridColumn:c,whiteSpace:"nowrap"},children:new Date(0,r.month).toLocaleString("default",{month:"short"})},i)),n=r.month)}}),t})()}),e("div",{className:a.heatmapGrid,children:p.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/y*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/N*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.chartWrapper,children:[e("h3",{children:"Genre Dominance"}),e("div",{className:a.genreList,children:s.genreSplit?.map((t,n)=>e("div",{className:a.genreRow,children:[e("div",{className:a.genreInfo,children:[e("span",{className:a.genreName,children:t.name}),e("span",{className:a.genreCount,children:[t.count," titles"]})]}),e("div",{className:a.genreBarBg,children:e("div",{className:a.genreBar,style:{width:`${t.count/(s.genreSplit[0]?.count||1)*100}%`,backgroundColor:`hsl(${265-n*15}, 70%, 65%)`}})})]},n))})]})]}),s.droppedShows?.length>0&&e("div",{className:a.warningSection,children:[e("div",{className:a.warningHeader,children:[e(M,{}),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{Te as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{g as b,d as r,u as e}from"./vendor-DdbgYKo4.js";import{Y as N,Z as x,$ as y}from"./index-CHVF4D4L.js";import{B as I}from"./Button-o0l9V_NG.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",O="_optionText_1l05u_165",X="_optionTitle_1l05u_171",j="_optionDesc_1l05u_177",P="_actions_1l05u_183",U="_importBtn_1l05u_190",J="_statusMessage_1l05u_196",R="_success_1l05u_206",Y="_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:O,optionTitle:X,optionDesc:j,actions:P,importBtn:U,statusMessage:J,success:R,error:Y},G=()=>{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{G 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}}
|