This commit is contained in:
Pas 2025-11-07 16:50:35 -07:00
parent 2017cb2f26
commit cd4daea6f3
66 changed files with 20917 additions and 18070 deletions

View file

@ -3,18 +3,18 @@ const a11yOff = Object.keys(require("eslint-plugin-jsx-a11y").rules).reduce(
acc[`jsx-a11y/${rule}`] = "off";
return acc;
},
{}
{},
);
module.exports = {
env: {
browser: true
browser: true,
},
extends: [
"airbnb",
"airbnb/hooks",
"plugin:@typescript-eslint/recommended",
"plugin:prettier/recommended"
"plugin:prettier/recommended",
],
ignorePatterns: [
"public/*",
@ -24,19 +24,19 @@ module.exports = {
"/*.mts",
"/plugins/*.ts",
"/plugins/*.mjs",
"/themes/**/*.ts"
"/themes/**/*.ts",
],
parser: "@typescript-eslint/parser",
parserOptions: {
project: "./tsconfig.json",
tsconfigRootDir: "./"
tsconfigRootDir: "./",
},
settings: {
"import/resolver": {
typescript: {
project: "./tsconfig.json"
}
}
project: "./tsconfig.json",
},
},
},
plugins: ["@typescript-eslint", "import", "prettier"],
rules: {
@ -62,18 +62,21 @@ module.exports = {
"no-nested-ternary": "off",
"prefer-destructuring": "off",
"no-param-reassign": "off",
"@typescript-eslint/no-unused-vars": ["warn", { argsIgnorePattern: "^_", varsIgnorePattern: "^_" }],
"@typescript-eslint/no-unused-vars": [
"warn",
{ argsIgnorePattern: "^_", varsIgnorePattern: "^_" },
],
"react/jsx-filename-extension": [
"error",
{ extensions: [".js", ".tsx", ".jsx"] }
{ extensions: [".js", ".tsx", ".jsx"] },
],
"import/extensions": [
"error",
"ignorePackages",
{
ts: "never",
tsx: "never"
}
tsx: "never",
},
],
"import/order": [
"error",
@ -84,14 +87,14 @@ module.exports = {
"internal",
["sibling", "parent"],
"index",
"unknown"
"unknown",
],
"newlines-between": "always",
alphabetize: {
order: "asc",
caseInsensitive: true
}
}
caseInsensitive: true,
},
},
],
"sort-imports": [
"error",
@ -100,9 +103,9 @@ module.exports = {
ignoreDeclarationSort: true,
ignoreMemberSort: false,
memberSyntaxSortOrder: ["none", "all", "multiple", "single"],
allowSeparatedGroups: true
}
allowSeparatedGroups: true,
},
],
...a11yOff
}
...a11yOff,
},
};

View file

@ -17,23 +17,23 @@ diverse, inclusive, and healthy community.
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
- Focusing on what is best not just for us as individuals, but for the
overall community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or
- The use of sexualized language or imagery, and sexual attention or
advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or email
address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
- Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities

View file

@ -5,12 +5,13 @@ Thank you for investing your time in contributing to our project! Your contribut
Please read our [Code of Conduct](./CODE_OF_CONDUCT.md) to keep our community approachable and respectable.
## Contents
- [New Contributor Guide](#new-contributor-guide)
- [Requesting a feature or reporting a bug](#requesting-a-feature-or-reporting-a-bug)
- [New Contributor Guide](#new-contributor-guide)
- [Requesting a feature or reporting a bug](#requesting-a-feature-or-reporting-a-bug)
- [Discord Server](#discord-server)
- [GitHub Issues](#github-issues)
- [Before you start](#before-you-start)
- [Contributing](#before-you-start)
- [Before you start](#before-you-start)
- [Contributing](#before-you-start)
- [Recommended Development Environment](#recommended-development-environment)
- [Tips](#tips)
- [Language Contributions](#language-contributions)
@ -24,18 +25,21 @@ To get an overview of the project, read the [README](README.md). Here are some r
- [GitHub flow](https://docs.github.com/en/get-started/quickstart/github-flow)
- [Collaborating with pull requests](https://docs.github.com/en/github/collaborating-with-pull-requests)
## Requesting a feature or reporting a bug
There are two places where to request features or report bugs:
- The P-Stream Discord server
- GitHub Issues
- The P-Stream Discord server
- GitHub Issues
### Discord Server
If you do not have a GitHub account or want to discuss a feature or bug with us before making an issue, you can join our Discord server.
<a href="https://docs.pstream.mov/links/discord"><img src="https://discord.com/api/guilds/1267558147682205738/widget.png?style=banner2" alt="Discord Server"></a>
### GitHub Issues
To make a GitHub issue for P-Stream, please visit the [new issue page](https://github.com/p-stream/p-stream/issues/new/choose) where you can pick either the "Bug Report" or "Feature Request" template.
When filling out an issue template, please include as much detail as possible and any screenshots or console logs as appropriate.
@ -43,6 +47,7 @@ When filling out an issue template, please include as much detail as possible an
After an issue is created, it will be assigned either the https://github.com/p-stream/p-stream/labels/bug or https://github.com/p-stream/p-stream/labels/feature label, along with https://github.com/p-stream/p-stream/labels/awaiting-approval. One of our maintainers will review your issue and, if it's accepted, will set the https://github.com/p-stream/p-stream/labels/approved label.
## Before you start!
Before starting a contribution, please check your contribution is part of an open issue on [our issues page](https://github.com/p-stream/p-stream/issues?q=is%3Aopen+is%3Aissue+label%3Aapproved).
GitHub issues are how we track our bugs and feature requests that will be implemented into P-Stream - all contributions **must** have an issue and be approved by a maintainer before a pull request can be worked on.
@ -55,6 +60,7 @@ If a pull request is opened before an issue is created and accepted, you may ris
Also, make sure that the issue you would like to work on has been given the https://github.com/p-stream/p-stream/labels/approved label by a maintainer. Otherwise, if we reject the issue, it means your work will have gone to waste!
## Contributing
If you're here because you'd like to work on an issue, amazing! Thank you for even considering contributing to P-Stream; it means a lot :heart:
Firstly, make sure you've read the [Before you start!](#before-you-start) section!
@ -64,7 +70,9 @@ When you have found a GitHub issue you would like to work on, you can request to
If you are assigned to an issue but can't complete it for whatever reason, no problem! Just let us know, and we will open up the issue to have someone else assigned.
### Recommended Development Environment
Our recommended development environment to work on P-Stream is:
- [Visual Studio Code](https://code.visualstudio.com/)
- [ESLint Extension](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)
- [EditorConfig Extension](https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig)
@ -74,6 +82,7 @@ When opening Visual Studio Code, you will be prompted to install our recommended
Our project is set up to enforce formatting and code style standards using ESLint.
### Tips
Here are some tips to make sure that your pull requests are :pinched_fingers: first time:
- KISS - Keep It Simple Soldier! - Simple code makes readable and efficient code!
@ -83,11 +92,11 @@ Here are some tips to make sure that your pull requests are :pinched_fingers: fi
- Test, test, test! Make sure you thoroughly test the features you are contributing.
### Language Contributions
Language contributions help P-Stream massively, allowing people worldwide to use our app!
We use Weblate for crowdsourcing our translations. [Click here to go to our translation tool.](https://docs.pstream.mov/links/weblate)
1. First make sure you make an account. (click the link above)
2. Click the language you want to help translate, if it's not listed you can click the plus top left to add a new language.
3. In the top right of the screen, click "translate"

View file

@ -47,4 +47,3 @@ body:
Tip: You can attach files by clicking this textbox and dragging in files
validations:
required: false

3
.github/SECURITY.md vendored
View file

@ -7,4 +7,5 @@ The latest version of P-Stream is the only version that is supported, as it is t
## Reporting a Vulnerability
You can contact the P-Stream maintainers to report a vulnerability:
- Report the vulnerability in the [P-Stream Discord server](https://docs.pstream.mov/links/discord)
- Report the vulnerability in the [P-Stream Discord server](https://docs.pstream.mov/links/discord)

View file

@ -1,6 +1,6 @@
This pull request resolves #XXX
- [ ] I have read and agreed to the [code of conduct](https://github.com/p-stream/p-stream/blob/dev/.github/CODE_OF_CONDUCT.md).
- [ ] I have read and complied with the [contributing guidelines](https://github.com/p-stream/p-stream/blob/dev/.github/CONTRIBUTING.md).
- [ ] What I'm implementing was assigned to me and is an [approved issue](https://github.com/p-stream/p-stream/issues?q=is%3Aopen+is%3Aissue+label%3Aapproved). For reference, please take a look at our [GitHub projects](https://github.com/p-stream/p-stream/projects).
- [ ] I have tested all of my changes.
- [ ] I have read and agreed to the [code of conduct](https://github.com/p-stream/p-stream/blob/dev/.github/CODE_OF_CONDUCT.md).
- [ ] I have read and complied with the [contributing guidelines](https://github.com/p-stream/p-stream/blob/dev/.github/CONTRIBUTING.md).
- [ ] What I'm implementing was assigned to me and is an [approved issue](https://github.com/p-stream/p-stream/issues?q=is%3Aopen+is%3Aissue+label%3Aapproved). For reference, please take a look at our [GitHub projects](https://github.com/p-stream/p-stream/projects).
- [ ] I have tested all of my changes.

View file

@ -22,7 +22,7 @@ jobs:
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
cache: "pnpm"
- name: Install pnpm packages
run: pnpm install
@ -52,7 +52,7 @@ jobs:
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
cache: "pnpm"
- name: Install pnpm packages
run: pnpm install

View file

@ -23,7 +23,7 @@ jobs:
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
cache: "pnpm"
- name: Install pnpm packages
run: pnpm install

View file

@ -1,6 +1,3 @@
{
"recommendations": [
"dbaeumer.vscode-eslint",
"editorconfig.editorconfig"
]
"recommendations": ["dbaeumer.vscode-eslint", "editorconfig.editorconfig"]
}

View file

@ -1,8 +1,8 @@
# P-Stream
[![P-Stream Image](.github/P-Stream.png)](https://docs.pstream.mov)
**I *do not* endorse piracy of any kind I simply enjoy programming and large user counts.**
**I _do not_ endorse piracy of any kind I simply enjoy programming and large user counts.**
## Quick Deploy
@ -12,10 +12,10 @@
**NOTE: To self-host, more setup is required. Check the [docs](https://docs.pstream.mov) to properly set up!!!!**
## Links And Resources
| Service | Link | Source Code |
|----------------|------------------------------------------------------------------|----------------------------------------------------------|
| ------------- | ----------------------------------------------- | ------------------------------------------------------ |
| P-Stream Docs | [docs](https://docs.pstream.mov) | [source code](https://github.com/p-stream/docs) |
| Extension | [extension](https://docs.pstream.mov/extension) | [source code](https://github.com/p-stream/browser-ext) |
| Proxy | [simple-proxy](https://docs.pstream.mov/proxy) | [source code](https://github.com/p-stream/sudo-proxy) |
@ -23,10 +23,10 @@
| Frontend | [P-Stream](https://docs.pstream.mov/instances) | [source code](https://github.com/p-stream/p-stream) |
| Weblate | [weblate](https://weblate.pstream.mov) | |
***I provide these if you are not able to host yourself, though I do encourage hosting the frontend.***
**_I provide these if you are not able to host yourself, though I do encourage hosting the frontend._**
## Referrers
- [FMHY (Voted as #1 multi-server streaming site of 2024)](https://fmhy.net)
- [Piracy Subreddit Megathread](https://www.reddit.com/r/Piracy/s/iymSloEpXn)
- [Toon's Instances](https://erynith.github.io/movie-web-instances)
@ -34,9 +34,10 @@
- Search Engines: DuckDuckGo, Bing, Google
- Rentry.co
## Running Locally
Type the following commands into your terminal / command line to run P-Stream locally
```bash
git clone https://github.com/p-stream/p-stream.git
cd smov
@ -44,11 +45,13 @@ git pull
pnpm install
pnpm run dev
```
Then you can visit the local instance [here](http://localhost:5173) or, at local host on port 5173.
## Updating a P-Stream Instance
To update a P-Stream instance you can type the below commands into a terminal at the root of your project.
```bash
git remote add upstream https://github.com/p-stream/p-stream.git
git fetch upstream # Grab the contents of the new remote source
@ -60,6 +63,6 @@ git commit -m "Update p-stream instance (merge upstream/production)"
git push # Push to YOUR repository
```
## Contact Me / Discord
[Discord](https://discord.gg/7z6znYgrTG)

View file

@ -1,7 +1,6 @@
version: "3.8"
services:
movieweb:
build:
context: .

View file

@ -1,159 +1,253 @@
<!DOCTYPE html>
<!doctype html>
<html lang="en" dir="ltr">
<!--https://www.youtube.com/watch?v=dQw4w9WgXcQ-->
<!--https://www.youtube.com/watch?v=dQw4w9WgXcQ-->
<head>
<head>
<meta charset="utf-8" />
<link rel="icon" href="/favicon.ico?v=2" />
<meta itemprop="image" content="/android-chrome-192x192.png?v=2">
<meta itemprop="image" content="/android-chrome-192x192.png?v=2" />
<!-- <meta property="og:image" content="/android-chrome-192x192.png?v=2"> -->
<meta name="viewport"
content="width=device-width, initial-scale=1, viewport-fit=cover, maximum-scale=1.0, user-scalable=no" />
<meta name="description" content="Watch your favorite shows and movies for free with no ads ever! (っ'ヮ'c)" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, viewport-fit=cover, maximum-scale=1.0, user-scalable=no"
/>
<meta
name="description"
content="Watch your favorite shows and movies for free with no ads ever! (っ'ヮ'c)"
/>
<link rel="manifest" href="/manifest.json" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png?v=2" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png?v=2" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png?v=2" />
<link
rel="apple-touch-icon"
sizes="180x180"
href="/apple-touch-icon.png?v=2"
/>
<link
rel="icon"
type="image/png"
sizes="32x32"
href="/favicon-32x32.png?v=2"
/>
<link
rel="icon"
type="image/png"
sizes="16x16"
href="/favicon-16x16.png?v=2"
/>
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#120f1d" />
<meta name="msapplication-TileColor" content="#120f1d" />
<meta name="theme-color" content="#000000" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta
name="apple-mobile-web-app-status-bar-style"
content="black-translucent"
/>
<!-- P-Stream Preview Embed -->
<meta property="twitter:card" content="summary_large_image" />
<meta property="twitter:image" content="/embed-preview.png" />
<meta property="og:image" content="/embed-preview.png">
<meta property="og:image" content="/embed-preview.png" />
<link rel="apple-touch-startup-image"
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 430px) and (device-height: 932px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"
href="/splash_screens/iPhone_15_Pro_Max__iPhone_15_Plus__iPhone_14_Pro_Max_landscape.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/iPhone_15_Pro_Max__iPhone_15_Plus__iPhone_14_Pro_Max_landscape.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 393px) and (device-height: 852px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"
href="/splash_screens/iPhone_15_Pro__iPhone_15__iPhone_14_Pro_landscape.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/iPhone_15_Pro__iPhone_15__iPhone_14_Pro_landscape.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"
href="/splash_screens/iPhone_14_Plus__iPhone_13_Pro_Max__iPhone_12_Pro_Max_landscape.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/iPhone_14_Plus__iPhone_13_Pro_Max__iPhone_12_Pro_Max_landscape.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"
href="/splash_screens/iPhone_14__iPhone_13_Pro__iPhone_13__iPhone_12_Pro__iPhone_12_landscape.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/iPhone_14__iPhone_13_Pro__iPhone_13__iPhone_12_Pro__iPhone_12_landscape.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"
href="/splash_screens/iPhone_13_mini__iPhone_12_mini__iPhone_11_Pro__iPhone_XS__iPhone_X_landscape.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/iPhone_13_mini__iPhone_12_mini__iPhone_11_Pro__iPhone_XS__iPhone_X_landscape.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"
href="/splash_screens/iPhone_11_Pro_Max__iPhone_XS_Max_landscape.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/iPhone_11_Pro_Max__iPhone_XS_Max_landscape.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"
href="/splash_screens/iPhone_11__iPhone_XR_landscape.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/iPhone_11__iPhone_XR_landscape.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)"
href="/splash_screens/iPhone_8_Plus__iPhone_7_Plus__iPhone_6s_Plus__iPhone_6_Plus_landscape.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/iPhone_8_Plus__iPhone_7_Plus__iPhone_6s_Plus__iPhone_6_Plus_landscape.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"
href="/splash_screens/iPhone_8__iPhone_7__iPhone_6s__iPhone_6__4.7__iPhone_SE_landscape.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/iPhone_8__iPhone_7__iPhone_6s__iPhone_6__4.7__iPhone_SE_landscape.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"
href="/splash_screens/4__iPhone_SE__iPod_touch_5th_generation_and_later_landscape.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/4__iPhone_SE__iPod_touch_5th_generation_and_later_landscape.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"
href="/splash_screens/12.9__iPad_Pro_landscape.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/12.9__iPad_Pro_landscape.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"
href="/splash_screens/11__iPad_Pro__10.5__iPad_Pro_landscape.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/11__iPad_Pro__10.5__iPad_Pro_landscape.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 820px) and (device-height: 1180px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"
href="/splash_screens/10.9__iPad_Air_landscape.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/10.9__iPad_Air_landscape.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"
href="/splash_screens/10.5__iPad_Air_landscape.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/10.5__iPad_Air_landscape.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"
href="/splash_screens/10.2__iPad_landscape.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/10.2__iPad_landscape.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"
href="/splash_screens/9.7__iPad_Pro__7.9__iPad_mini__9.7__iPad_Air__9.7__iPad_landscape.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/9.7__iPad_Pro__7.9__iPad_mini__9.7__iPad_Air__9.7__iPad_landscape.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 744px) and (device-height: 1133px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)"
href="/splash_screens/8.3__iPad_Mini_landscape.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/8.3__iPad_Mini_landscape.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 430px) and (device-height: 932px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"
href="/splash_screens/iPhone_15_Pro_Max__iPhone_15_Plus__iPhone_14_Pro_Max_portrait.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/iPhone_15_Pro_Max__iPhone_15_Plus__iPhone_14_Pro_Max_portrait.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 393px) and (device-height: 852px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"
href="/splash_screens/iPhone_15_Pro__iPhone_15__iPhone_14_Pro_portrait.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/iPhone_15_Pro__iPhone_15__iPhone_14_Pro_portrait.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"
href="/splash_screens/iPhone_14_Plus__iPhone_13_Pro_Max__iPhone_12_Pro_Max_portrait.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/iPhone_14_Plus__iPhone_13_Pro_Max__iPhone_12_Pro_Max_portrait.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"
href="/splash_screens/iPhone_14__iPhone_13_Pro__iPhone_13__iPhone_12_Pro__iPhone_12_portrait.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/iPhone_14__iPhone_13_Pro__iPhone_13__iPhone_12_Pro__iPhone_12_portrait.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"
href="/splash_screens/iPhone_13_mini__iPhone_12_mini__iPhone_11_Pro__iPhone_XS__iPhone_X_portrait.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/iPhone_13_mini__iPhone_12_mini__iPhone_11_Pro__iPhone_XS__iPhone_X_portrait.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"
href="/splash_screens/iPhone_11_Pro_Max__iPhone_XS_Max_portrait.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/iPhone_11_Pro_Max__iPhone_XS_Max_portrait.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
href="/splash_screens/iPhone_11__iPhone_XR_portrait.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/iPhone_11__iPhone_XR_portrait.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)"
href="/splash_screens/iPhone_8_Plus__iPhone_7_Plus__iPhone_6s_Plus__iPhone_6_Plus_portrait.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/iPhone_8_Plus__iPhone_7_Plus__iPhone_6s_Plus__iPhone_6_Plus_portrait.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
href="/splash_screens/iPhone_8__iPhone_7__iPhone_6s__iPhone_6__4.7__iPhone_SE_portrait.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/iPhone_8__iPhone_7__iPhone_6s__iPhone_6__4.7__iPhone_SE_portrait.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
href="/splash_screens/4__iPhone_SE__iPod_touch_5th_generation_and_later_portrait.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/4__iPhone_SE__iPod_touch_5th_generation_and_later_portrait.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
href="/splash_screens/12.9__iPad_Pro_portrait.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/12.9__iPad_Pro_portrait.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
href="/splash_screens/11__iPad_Pro__10.5__iPad_Pro_portrait.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/11__iPad_Pro__10.5__iPad_Pro_portrait.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 820px) and (device-height: 1180px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
href="/splash_screens/10.9__iPad_Air_portrait.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/10.9__iPad_Air_portrait.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
href="/splash_screens/10.5__iPad_Air_portrait.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/10.5__iPad_Air_portrait.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
href="/splash_screens/10.2__iPad_portrait.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/10.2__iPad_portrait.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
href="/splash_screens/9.7__iPad_Pro__7.9__iPad_mini__9.7__iPad_Air__9.7__iPad_portrait.png">
<link rel="apple-touch-startup-image"
href="/splash_screens/9.7__iPad_Pro__7.9__iPad_mini__9.7__iPad_Air__9.7__iPad_portrait.png"
/>
<link
rel="apple-touch-startup-image"
media="screen and (device-width: 744px) and (device-height: 1133px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)"
href="/splash_screens/8.3__iPad_Mini_portrait.png">
href="/splash_screens/8.3__iPad_Mini_portrait.png"
/>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,100..1000;1,9..40,100..1000&family=Open+Sans:wght@400;500;600;700&display=swap" rel="stylesheet">
<link
href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,100..1000;1,9..40,100..1000&family=Open+Sans:wght@400;500;600;700&display=swap"
rel="stylesheet"
/>
<script src="/config.js"></script>
{{#if env.VITE_TRACK_SCRIPT }}
{{{ env.VITE_TRACK_SCRIPT }}}
{{/if}}
{{#if env.VITE_TRACK_SCRIPT }} {{{ env.VITE_TRACK_SCRIPT }}} {{/if}}
<!-- prevent darkreader extension from messing with our already dark site -->
<meta name="darkreader-lock" />
<!-- disabling referrer can fix some provider problems -->
<!-- <meta name="referrer" content="no-referrer" /> -->
<meta name="referrer" content="always">
<meta name="referrer" content="always" />
<title>P-Stream</title>
{{#if opensearchEnabled }}
<!-- OpenSearch -->
<link rel="search" type="application/opensearchdescription+xml" title="P-Stream" href="/opensearch.xml">
<link
rel="search"
type="application/opensearchdescription+xml"
title="P-Stream"
href="/opensearch.xml"
/>
<!-- Google Sitelinks -->
<script type="application/ld+json">
@ -172,12 +266,11 @@
}
</script>
{{/if}}
</head>
</head>
<body>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
<script type="module" src="/src/index.tsx"></script>
</body>
</body>
</html>

View file

@ -9,7 +9,7 @@ const fileLocation = "./figmaTokens.json";
const theme = "blue";
const fileContents = fs.readFileSync(fileLocation, {
encoding: "utf-8"
encoding: "utf-8",
});
const tokens = JSON.parse(fileContents);

View file

@ -1,10 +1,12 @@
import { globSync } from "glob";
import { viteStaticCopy } from 'vite-plugin-static-copy'
import { viteStaticCopy } from "vite-plugin-static-copy";
import { PluginOption } from "vite";
import Handlebars from "handlebars";
import path from "path";
export const handlebars = (options: { vars?: Record<string, any> } = {}): PluginOption[] => {
export const handlebars = (
options: { vars?: Record<string, any> } = {},
): PluginOption[] => {
const files = globSync("src/assets/**/**.hbs");
function render(content: string): string {
@ -14,28 +16,28 @@ export const handlebars = (options: { vars?: Record<string, any> } = {}): Plugin
return [
{
name: 'hbs-templating',
name: "hbs-templating",
enforce: "pre",
transformIndexHtml: {
order: 'pre',
order: "pre",
handler(html) {
return render(html);
}
},
},
},
viteStaticCopy({
silent: true,
targets: files.map(file => ({
targets: files.map((file) => ({
src: file,
dest: '',
dest: "",
rename: path.basename(file).slice(0, -4), // remove .hbs file extension
transform: {
encoding: 'utf8',
encoding: "utf8",
handler(content: string) {
return render(content);
}
}
}))
})
]
}
},
},
})),
}),
];
};

File diff suppressed because it is too large Load diff

View file

@ -3,4 +3,4 @@ module.exports = {
tailwindcss: {},
autoprefixer: {},
},
}
};

View file

@ -1,4 +1,4 @@
module.exports = {
trailingComma: "all",
singleQuote: true
singleQuote: true,
};

View file

@ -16,5 +16,5 @@ window.__CONFIG__ = {
VITE_BACKEND_URL: null,
// A comma separated list of disallowed IDs in the case of a DMCA claim - in the format "series-<id>" and "movie-<id>"
VITE_DISALLOWED_IDS: ""
VITE_DISALLOWED_IDS: "",
};

View file

@ -3,6 +3,7 @@
Locales are difficult, here is some guidance.
## Process on adding new languages
1. Use [Weblate](https://docs.pstream.mov/links/weblate) to add translations, see contributing guidelines.
2. Add your language to `@/assets/languages.ts`. Must be in ISO format (ISO-639 for language and ISO-3166 for country/region). For joke languages, use any format.
3. If the language code doesn't have a region specified (Such as in `pt-BR`, `BR` being the region), add a default region in `@/utils/language.ts` at `defaultLanguageCodes`

View file

@ -276,33 +276,23 @@
"titles": {
"day": {
"default": "ماذا تريد أن تشاهد في هذه الظهيرة؟",
"extra": [
"يحيا P-Stream!"
]
"extra": ["يحيا P-Stream!"]
},
"morning": {
"default": "ماذا تريد أن تشاهد في هذا الصباح؟",
"extra": [
"تحيا p-stream!"
]
"extra": ["تحيا p-stream!"]
},
"night": {
"default": "ماذا تريد أن تشاهد في هذه الليلة؟",
"extra": [
"تحيا p-stream!"
]
"extra": ["تحيا p-stream!"]
},
"420": {
"default": "ماذا تريد أن تشاهد اليوم؟",
"extra": [
"يوم 4/20 سعيد 🥳!"
]
"extra": ["يوم 4/20 سعيد 🥳!"]
},
"69": {
"default": "هل ترغب في شيء مثير؟",
"extra": [
"يوم 69 سعيد 😘!"
]
"extra": ["يوم 69 سعيد 😘!"]
}
},
"mediaCard": {

View file

@ -160,33 +160,23 @@
"titles": {
"day": {
"default": "Hvad vil du gerne se i eftermiddag?",
"extra": [
"Længe leve P-Stream!"
]
"extra": ["Længe leve P-Stream!"]
},
"morning": {
"default": "Hvad vil du gerne se her til morgen?",
"extra": [
"Længe leve P-Stream!"
]
"extra": ["Længe leve P-Stream!"]
},
"night": {
"extra": [
"Længe leve P-Stream!"
],
"extra": ["Længe leve P-Stream!"],
"default": "Hvad vil du gerne se i aften?"
},
"420": {
"default": "Hvad vil du gerne se denne 4/20?",
"extra": [
"Glædelig 4/20 🥳!"
]
"extra": ["Glædelig 4/20 🥳!"]
},
"69": {
"default": "Har du lyst til at \"hygge\"?",
"extra": [
"Glædelig 69-dag 😘!"
]
"extra": ["Glædelig 69-dag 😘!"]
}
}
},

View file

@ -234,33 +234,23 @@
"titles": {
"day": {
"default": "Was möchtisch a däm schöne nomitag aluege?",
"extra": [
"Viva la P-Stream e ciao Svizzera"
]
"extra": ["Viva la P-Stream e ciao Svizzera"]
},
"morning": {
"default": "Was welsch a däm morge aluege?",
"extra": [
"Viva la P-Stream!"
]
"extra": ["Viva la P-Stream!"]
},
"night": {
"default": "Besch no wach? Was möchtisch luege?",
"extra": [
"Viva la Svizzera!"
]
"extra": ["Viva la Svizzera!"]
},
"69": {
"default": "Hesch loscht of öpis scharfs?",
"extra": [
"Schöne 69. Tag 😘!"
]
"extra": ["Schöne 69. Tag 😘!"]
},
"420": {
"default": "Gets öpis, wodu am 4/20 welsch luege?",
"extra": [
"Fröhleche 4/20 🥳!"
]
"extra": ["Fröhleche 4/20 🥳!"]
}
},
"mediaCard": {

View file

@ -184,27 +184,19 @@
},
"morning": {
"default": "Was würdest du diesen Morgen gerne schauen?",
"extra": [
"Before Sunrise soll gut sein"
]
"extra": ["Before Sunrise soll gut sein"]
},
"night": {
"default": "Was möchtest du diesen Abend gerne schauen?",
"extra": [
"Müde? Ich hab gehört The Exorcist soll gut sein."
]
"extra": ["Müde? Ich hab gehört The Exorcist soll gut sein."]
},
"69": {
"default": "Lust auf etwas scharfes?",
"extra": [
"Schönen 69. Tag 😘!"
]
"extra": ["Schönen 69. Tag 😘!"]
},
"420": {
"default": "Was möchten Sie am 4/20 sehen?",
"extra": [
"Schönen 4/20 🥳!"
]
"extra": ["Schönen 4/20 🥳!"]
}
},
"mediaCard": {

View file

@ -162,33 +162,23 @@
"titles": {
"day": {
"default": "Τι θα θέλατε να παρακολουθήσετε σήμερα το απόγευμα;",
"extra": [
"Ζήτω το P-Stream!"
]
"extra": ["Ζήτω το P-Stream!"]
},
"morning": {
"default": "Τι θα θέλατε να παρακολουθήσετε σήμερα το πρωί;",
"extra": [
"Έχω ακούσει ότι το Before Sunrise είναι καλό!"
]
"extra": ["Έχω ακούσει ότι το Before Sunrise είναι καλό!"]
},
"night": {
"default": "Τι θα θέλατε να παρακολουθήσετε απόψε;",
"extra": [
"Βαρεμάρα; Έχω ακούσει ότι ο Εξορκιστής είναι καλός!"
]
"extra": ["Βαρεμάρα; Έχω ακούσει ότι ο Εξορκιστής είναι καλός!"]
},
"420": {
"default": "Τι θα ήθελες να δεις αυτή τη 4/20 ;",
"extra": [
"Χαρούμενη μέρα 4/20 🥳!"
]
"extra": ["Χαρούμενη μέρα 4/20 🥳!"]
},
"69": {
"default": "Θές να δεις τίποτα πικάντικο;",
"extra": [
"Χαρούμενη μέρα 69 😘!"
]
"extra": ["Χαρούμενη μέρα 69 😘!"]
}
},
"mediaCard": {

View file

@ -167,27 +167,19 @@
},
"morning": {
"default": "¿Qué te gustaría ver esta mañana?",
"extra": [
"Escuché que “Antes del amanecer” es buena"
]
"extra": ["Escuché que “Antes del amanecer” es buena"]
},
"night": {
"default": "¿Qué te gustaría ver esta noche?",
"extra": [
"¿Cansado? Escuché que “El Exorcista” es buena."
]
"extra": ["¿Cansado? Escuché que “El Exorcista” es buena."]
},
"420": {
"default": "¿Qué te gustaría ver este 4/20?",
"extra": [
"¡Feliz 4/20 🥳!"
]
"extra": ["¡Feliz 4/20 🥳!"]
},
"69": {
"default": "¿Te apetece algo picante?",
"extra": [
"¡Feliz día 69 😘!"
]
"extra": ["¡Feliz día 69 😘!"]
}
},
"mediaCard": {

View file

@ -301,15 +301,11 @@
"titles": {
"day": {
"default": "Que voulez-vous regarder cet après-midi ?",
"extra": [
"Viva la P-Stream !"
]
"extra": ["Viva la P-Stream !"]
},
"morning": {
"default": "Que voulez-vous regarder ce matin ?",
"extra": [
"Les films, c'est comme les voyages : ça nous ouvre l'esprit"
]
"extra": ["Les films, c'est comme les voyages : ça nous ouvre l'esprit"]
},
"night": {
"default": "Que voulez-vous regarder ce soir ?",
@ -318,16 +314,12 @@
]
},
"420": {
"extra": [
"Joyeux 4/20 🥳!"
],
"extra": ["Joyeux 4/20 🥳!"],
"default": "Qu'aimeriez-vous regarder ce 20/4?"
},
"69": {
"default": "Partant pour quelque chose de corsé ?",
"extra": [
"Joyeux jour 69 😘 !"
]
"extra": ["Joyeux jour 69 😘 !"]
}
},
"mediaCard": {

View file

@ -276,33 +276,23 @@
"titles": {
"day": {
"default": "במה תרצה לצפות באחר צהריים זה?",
"extra": [
"עם ישראל חיי P-Stream!"
]
"extra": ["עם ישראל חיי P-Stream!"]
},
"morning": {
"default": "אני אוהב את חברה שלי?",
"extra": [
"עם ישראל חיי P-Stream!"
]
"extra": ["עם ישראל חיי P-Stream!"]
},
"night": {
"default": "במה תרצה לצפות הלילה?",
"extra": [
"עם ישראל חיי P-Stream!"
]
"extra": ["עם ישראל חיי P-Stream!"]
},
"420": {
"default": "מה היית רוצה לראות ב-4/20 הזה?",
"extra": [
"4/20 שמח 🥳!"
]
"extra": ["4/20 שמח 🥳!"]
},
"69": {
"default": "באלך משהו חריף?",
"extra": [
"יום 69 שמח 😘!"
]
"extra": ["יום 69 שמח 😘!"]
}
},
"mediaCard": {

View file

@ -163,34 +163,24 @@
},
"titles": {
"day": {
"extra": [
"Viva la P-Stream!"
],
"extra": ["Viva la P-Stream!"],
"default": "Mit szeretnél nézni e délután?"
},
"morning": {
"default": "Mit szeretnél nézni e reggelen?",
"extra": [
"Viva la P-Stream!"
]
"extra": ["Viva la P-Stream!"]
},
"night": {
"default": "Mit szeretnél nézni ezen az estén?",
"extra": [
"Viva la P-Stream!"
]
"extra": ["Viva la P-Stream!"]
},
"420": {
"extra": [
"Boldog 4/20-át!"
],
"extra": ["Boldog 4/20-át!"],
"default": "Mit szeretnél nézni ezen a 4/20-adikán?"
},
"69": {
"default": "Felvagy készülve valami szaftós, tüzes kalandra?",
"extra": [
"Boldog 69 napot!"
]
"extra": ["Boldog 69 napot!"]
}
},
"bookmarks": {

View file

@ -143,15 +143,11 @@
},
"morning": {
"default": "What would you like to banana this banana?",
"extra": [
"Banana! I hear Banana Sunrise is banana"
]
"extra": ["Banana! I hear Banana Sunrise is banana"]
},
"night": {
"default": "What would you like to banana banana?",
"extra": [
"Banana? I hear The Banana is banana."
]
"extra": ["Banana? I hear The Banana is banana."]
}
}
},

View file

@ -270,32 +270,22 @@
"titles": {
"day": {
"default": "Co chciałbyś obejrzeć dziś po południu?",
"extra": [
"Viva la P-Stream!"
]
"extra": ["Viva la P-Stream!"]
},
"morning": {
"default": "Co chciałbyś obejrzeć dziś rano?",
"extra": [
"Viva la P-Stream!"
]
"extra": ["Viva la P-Stream!"]
},
"night": {
"default": "Co chciałbyś obejrzeć dziś wieczorem?",
"extra": [
"Viva la P-Stream!"
]
"extra": ["Viva la P-Stream!"]
},
"69": {
"default": "Masz ochotę na coś pikantnego?",
"extra": [
"Wesołego dnia 69 😘!"
]
"extra": ["Wesołego dnia 69 😘!"]
},
"420": {
"extra": [
"Wesołego 420 🥳!"
],
"extra": ["Wesołego 420 🥳!"],
"default": "Dziś jest 20 kwietnia, co chciałbyś obejrzeć?"
}
},

View file

@ -168,27 +168,19 @@
},
"morning": {
"default": "O que você gostaria de assistir esta manhã?",
"extra": [
"Ouvi dizer que Antes do Amanhecer é bom"
]
"extra": ["Ouvi dizer que Antes do Amanhecer é bom"]
},
"night": {
"default": "O que você gostaria de assistir esta noite?",
"extra": [
"Cansado? Ouvi dizer que O Exorcista é bom."
]
"extra": ["Cansado? Ouvi dizer que O Exorcista é bom."]
},
"69": {
"default": "Que tal algo picante?",
"extra": [
"Feliz dia 69 😘!"
]
"extra": ["Feliz dia 69 😘!"]
},
"420": {
"default": "O que você gostaria de assistir neste 4/20?",
"extra": [
"Feliz 4/20 🥳!"
]
"extra": ["Feliz 4/20 🥳!"]
}
},
"mediaCard": {

View file

@ -201,9 +201,7 @@
},
"morning": {
"default": "Что бы вы хотели посмотреть этим утром?",
"extra": [
"Слышали, что «Перед рассветом» отличный фильм"
]
"extra": ["Слышали, что «Перед рассветом» отличный фильм"]
},
"night": {
"default": "Что бы вы хотели посмотреть этим вечером?",
@ -213,9 +211,7 @@
},
"420": {
"default": "20/4 - день веселья и травки! Что посмотрим?",
"extra": [
"С праздником 20/4! 🥳 Празднуем вместе!"
]
"extra": ["С праздником 20/4! 🥳 Празднуем вместе!"]
}
}
},

View file

@ -302,33 +302,23 @@
"titles": {
"day": {
"default": "Vad vill du titta på i eftermiddag?",
"extra": [
"Viva la P-Stream!"
]
"extra": ["Viva la P-Stream!"]
},
"morning": {
"default": "Vad vill du titta på den här morgonen?",
"extra": [
"Jag hör att Before Sunrise är bra"
]
"extra": ["Jag hör att Before Sunrise är bra"]
},
"night": {
"default": "Vad vill du titta på ikväll?",
"extra": [
"Trött? Jag hör att The Exorcist är bra."
]
"extra": ["Trött? Jag hör att The Exorcist är bra."]
},
"420": {
"default": "Vad vill du titta denna 4/20?",
"extra": [
"Glad 4/20 🥳!"
]
"extra": ["Glad 4/20 🥳!"]
},
"69": {
"default": "Sugen på något hett?",
"extra": [
"Glad 69 dag 😘!"
]
"extra": ["Glad 69 dag 😘!"]
}
},
"mediaCard": {

View file

@ -284,33 +284,23 @@
"titles": {
"day": {
"default": "What w-wouwd you wike t-to watch this aftewnyoon!!11",
"extra": [
" /ᐠ>ヮ<ᐟ\\ฅ"
]
"extra": [" /ᐠ>ヮ<ᐟ\\ฅ"]
},
"morning": {
"default": "What w-wouwd you wike t-to watch this mownying?!! *walks away*",
"extra": [
"\"૮₍ ˶•⤙•˶ ₎ა"
]
"extra": ["\"૮₍ ˶•⤙•˶ ₎ა"]
},
"night": {
"default": "What w-wouwd you wike t-to watch tonyight?!!",
"extra": [
"(づ ᴗ _ᴗ)づ♡"
]
"extra": ["(づ ᴗ _ᴗ)づ♡"]
},
"420": {
"default": "What w-wouwd you wike t-to watch this 4/20!? *cries*",
"extra": [
"(づ ᴗ _ᴗ)づ♡ Weed!"
]
"extra": ["(づ ᴗ _ᴗ)づ♡ Weed!"]
},
"69": {
"default": "up fow something spicy owo?",
"extra": [
"happy 69 day 😘 (* ^ ω ^)!"
]
"extra": ["happy 69 day 😘 (* ^ ω ^)!"]
}
},
"mediaCard": {

View file

@ -282,27 +282,19 @@
},
"morning": {
"default": "Sáng nay bạn muốn coi gì?",
"extra": [
"Tôi nghe nói rằng bộ phim Before Sunrise hay đấy"
]
"extra": ["Tôi nghe nói rằng bộ phim Before Sunrise hay đấy"]
},
"night": {
"default": "Đêm nay bạn muốn coi gì?",
"extra": [
"Cảm thấy mệt? Tôi nghe nói phim The Exorcist hay đấy."
]
"extra": ["Cảm thấy mệt? Tôi nghe nói phim The Exorcist hay đấy."]
},
"420": {
"default": "Bạn muốn xem gì ngày 20/4 này?",
"extra": [
"Chúc mừng ngày 20/4 🥳 !"
]
"extra": ["Chúc mừng ngày 20/4 🥳 !"]
},
"69": {
"default": "Muốn khuấy đảo tí cho đời thêm vui không?",
"extra": [
"Chúc mừng 69 ngày 😘!"
]
"extra": ["Chúc mừng 69 ngày 😘!"]
}
},
"mediaCard": {

View file

@ -2,5 +2,5 @@
<ShortName>P-Stream</ShortName>
<Description>The place for your favorite movies &amp; shows</Description>
<InputEncoding>UTF-8</InputEncoding>
<Url type="text/html" template="{{ routeDomain }}/browse/?q={searchTerms}" />
<Url type="text/html" template="{{routeDomain}}/browse/?q={searchTerms}" />
</OpenSearchDescription>

View file

@ -1,7 +1,7 @@
.spinner {
width: 1em;
height: 1em;
border: 0.12em solid var(--color,white);
border: 0.12em solid var(--color, white);
border-bottom-color: transparent;
border-radius: 50%;
display: inline-block;

View file

@ -3,29 +3,41 @@
Video player is quite a complex component, so here is a rundown of all the parts
# Composable parts
These parts can be used to build any shape of a video player.
- `/atoms`- any ui element that controls the player. (Seekbar, Pause button, quality selection, etc)
- `/base` - base components that are used to build a player. Like the main container
- `/atoms`- any ui element that controls the player. (Seekbar, Pause button, quality selection, etc)
- `/base` - base components that are used to build a player. Like the main container
# internal parts
These parts are internally used, they aren't exported. Do not use them outside of player internals.
### `/display`
The display interface, abstraction on how to actually play the content (e.g Video element, chrome casting, etc)
- It must be completely separate from any react code
- It must not interact with state, pass async data back with events
- It must be completely separate from any react code
- It must not interact with state, pass async data back with events
### `/internals`
Internal components that are always rendered on every player.
- Only components that are always present on the player instance, they must never unmount
- Only components that are always present on the player instance, they must never unmount
### `/utils`
miscellaneous logic, put anything that is unique to the video player internals.
### `/hooks`
Hooks only used for video player.
- only exception is usePlayer, as its used outside of the player to control the player
- only exception is usePlayer, as its used outside of the player to control the player
### `~/src/stores/player`
State for the video player.
- Only parts related to the video player may utilize the state
- Only parts related to the video player may utilize the state

View file

@ -1,4 +1,5 @@
.lightbar, .lightbar-visual {
.lightbar,
.lightbar-visual {
position: absolute;
width: 500vw;
height: 800px;
@ -12,7 +13,8 @@
}
@screen sm {
.lightbar, .lightbar-visual {
.lightbar,
.lightbar-visual {
width: 150vw;
}
@ -20,7 +22,6 @@
left: -25vw;
transform: initial;
}
}
[dir] .lightbar {
@ -28,21 +29,23 @@
justify-content: center;
align-items: center;
--d: 3s;
--animation: cubic-bezier(.75, -0.00, .25, 1);
--animation: cubic-bezier(0.75, -0, 0.25, 1);
animation: boot var(--d) var(--animation) forwards;
}
[dir] .lightbar-visual {
left: 0;
--top: theme('colors.background.main');
--bottom: theme('colors.lightBar.light');
--top: theme("colors.background.main");
--bottom: theme("colors.lightBar.light");
--first: conic-gradient(from 90deg at 80% 50%, var(--top), var(--bottom));
--second: conic-gradient(from 270deg at 20% 50%, var(--bottom), var(--top));
mask-image: radial-gradient(100% 50% at center center, black, transparent);
background-image: var(--first), var(--second);
background-position-x: 1%, 99%;
background-position-y: 0%, 0%;
background-size: 50% 100%, 50% 100%;
background-size:
50% 100%,
50% 100%;
opacity: 1;
transform: rotate(180deg) translateZ(0px) translateY(400px);
transform-origin: center center;

View file

@ -13,14 +13,14 @@ const config: Config = {
screens: {
xs: "350px",
ssm: "400px",
'2xl': '1921px', // Custom breakpoint for screens at least 1920px wide
'3xl': '2650px', // Custom breakpoint for screens at least 2650px wide
'4xl': '3840px', // Custom breakpoint for screens at least 4096px wide
"2xl": "1921px", // Custom breakpoint for screens at least 1920px wide
"3xl": "2650px", // Custom breakpoint for screens at least 2650px wide
"4xl": "3840px", // Custom breakpoint for screens at least 4096px wide
},
/* fonts */
fontFamily: {
"main": "'DM Sans'", // "main": "'Open Sans'",
main: "'DM Sans'", // "main": "'Open Sans'",
},
/* animations */

View file

@ -7,7 +7,7 @@ const tokens = {
c125: "#141414",
c150: "#1a1a1a",
c200: "#262626",
c250: "#333333"
c250: "#333333",
},
white: "#FFFFFF", // General white color
semantic: {
@ -52,7 +52,7 @@ const tokens = {
c600: "#2e2e2e",
c700: "#272727",
c800: "#181818",
c900: "#0f0f0f"
c900: "#0f0f0f",
},
purple: {
c50: "#aaafff",
@ -64,7 +64,7 @@ const tokens = {
c600: "#1f2363",
c700: "#191b4a",
c800: "#111334", // Lightbar
c900: "#0b0d22"
c900: "#0b0d22",
},
ash: {
c50: "#8d8d8d",
@ -76,7 +76,7 @@ const tokens = {
c600: "#252525",
c700: "#1e1e1e",
c800: "#181818",
c900: "#111111"
c900: "#111111",
},
shade: {
c25: "#939393", // Media card hover accent
@ -89,7 +89,7 @@ const tokens = {
c600: "#202020",
c700: "#1a1a1a",
c800: "#151515",
c900: "#0e0e0e"
c900: "#0e0e0e",
},
};
@ -137,7 +137,7 @@ export const defaultTheme = {
purple: tokens.purple.c600,
purpleHover: tokens.purple.c400,
cancel: tokens.black.c100,
cancelHover: tokens.black.c150
cancelHover: tokens.black.c150,
},
// only used for body colors/textures
@ -146,7 +146,7 @@ export const defaultTheme = {
secondary: tokens.black.c75,
secondaryHover: tokens.black.c75,
accentA: tokens.purple.c600,
accentB: tokens.black.c100
accentB: tokens.black.c100,
},
// Modals
@ -165,7 +165,7 @@ export const defaultTheme = {
danger: tokens.semantic.red.c100,
success: tokens.semantic.green.c100,
link: tokens.purple.c100,
linkHover: tokens.purple.c50
linkHover: tokens.purple.c50,
},
// search bar
@ -187,7 +187,7 @@ export const defaultTheme = {
barColor: tokens.ash.c200,
barFillColor: tokens.purple.c100,
badge: tokens.shade.c700,
badgeText: tokens.ash.c100
badgeText: tokens.ash.c100,
},
// Large card
@ -206,7 +206,7 @@ export const defaultTheme = {
text: tokens.shade.c50,
secondary: tokens.shade.c100,
border: tokens.shade.c400,
contentBackground: tokens.black.c50
contentBackground: tokens.black.c50,
},
// Passphrase
@ -231,24 +231,24 @@ export const defaultTheme = {
inactive: tokens.shade.c50,
icon: tokens.black.c200,
iconActivated: tokens.purple.c200,
activated: tokens.purple.c100
activated: tokens.purple.c100,
},
},
card: {
border: tokens.shade.c700,
background: tokens.black.c100,
altBackground: tokens.black.c100
altBackground: tokens.black.c100,
},
saveBar: {
background: tokens.black.c50
background: tokens.black.c50,
},
},
// Utilities
utils: {
divider: tokens.ash.c300
divider: tokens.ash.c300,
},
// Onboarding
@ -277,14 +277,14 @@ export const defaultTheme = {
// About page
about: {
circle: tokens.black.c100,
circleText: tokens.ash.c50
circleText: tokens.ash.c50,
},
// About page
editBadge: {
bg: tokens.ash.c500,
bgHover: tokens.ash.c400,
text: tokens.ash.c50
text: tokens.ash.c50,
},
progress: {
@ -307,7 +307,7 @@ export const defaultTheme = {
error: tokens.semantic.red.c200,
success: tokens.semantic.green.c200,
loading: tokens.purple.c200,
noresult: tokens.black.c200
noresult: tokens.black.c200,
},
audio: {

View file

@ -4,6 +4,6 @@ export { defaultTheme } from "./default";
export { allThemes } from "./all";
export const safeThemeList = allThemes
.flatMap(v=>v.selectors)
.filter(v=>v.startsWith("."))
.map(v=>v.slice(1)); // remove dot from selector
.flatMap((v) => v.selectors)
.filter((v) => v.startsWith("."))
.map((v) => v.slice(1)); // remove dot from selector

View file

@ -84,7 +84,7 @@ const tokens = {
c800: "#0F0F1B", // Background main, settings save bar, onboarding card
c900: "#0A0A12", // Media card hover shadow
},
}
};
export default createTheme({
name: "classic",
@ -340,4 +340,4 @@ export default createTheme({
},
},
},
})
});

View file

@ -10,7 +10,7 @@ const tokens = {
c125: "#141414",
c150: "#1a1a1a",
c200: "#262626",
c250: "#333333"
c250: "#333333",
},
semantic: {
silver: {
@ -43,7 +43,7 @@ const tokens = {
c600: "#202020",
c700: "#1a1a1a",
c800: "#151515",
c900: "#0e0e0e"
c900: "#0e0e0e",
},
ash: {
c50: "#8d8d8d",
@ -55,7 +55,7 @@ const tokens = {
c600: "#252525",
c700: "#1e1e1e",
c800: "#181818",
c900: "#111111"
c900: "#111111",
},
blue: {
c50: "#ccccd6",
@ -67,9 +67,9 @@ const tokens = {
c600: "#2e2e2e",
c700: "#272727",
c800: "#181818",
c900: "#0f0f0f"
}
}
c900: "#0f0f0f",
},
};
export default createTheme({
name: "acid",
@ -89,7 +89,7 @@ export default createTheme({
global: {
accentA: tokens.blue.c200,
accentB: tokens.blue.c300
accentB: tokens.blue.c300,
},
lightBar: {
@ -104,7 +104,7 @@ export default createTheme({
purple: tokens.purple.c600,
purpleHover: tokens.purple.c400,
cancel: tokens.black.c100,
cancelHover: tokens.black.c150
cancelHover: tokens.black.c150,
},
background: {
@ -112,7 +112,7 @@ export default createTheme({
secondary: tokens.black.c75,
secondaryHover: tokens.black.c75,
accentA: tokens.purple.c600,
accentB: tokens.black.c100
accentB: tokens.black.c100,
},
modal: {
@ -126,7 +126,7 @@ export default createTheme({
divider: tokens.ash.c500,
secondary: tokens.ash.c100,
link: tokens.purple.c100,
linkHover: tokens.purple.c50
linkHover: tokens.purple.c50,
},
search: {
@ -134,7 +134,7 @@ export default createTheme({
hoverBackground: tokens.shade.c900,
focused: tokens.black.c125,
placeholder: tokens.shade.c200,
icon: tokens.shade.c500
icon: tokens.shade.c500,
},
mediaCard: {
@ -145,12 +145,12 @@ export default createTheme({
barColor: tokens.ash.c200,
barFillColor: tokens.purple.c100,
badge: tokens.shade.c700,
badgeText: tokens.ash.c100
badgeText: tokens.ash.c100,
},
largeCard: {
background: tokens.black.c100,
icon: tokens.purple.c400
icon: tokens.purple.c400,
},
dropdown: {
@ -160,7 +160,7 @@ export default createTheme({
text: tokens.shade.c50,
secondary: tokens.shade.c100,
border: tokens.shade.c400,
contentBackground: tokens.black.c50
contentBackground: tokens.black.c50,
},
authentication: {
@ -169,7 +169,7 @@ export default createTheme({
inputBgHover: tokens.black.c150,
wordBackground: tokens.shade.c500,
copyText: tokens.shade.c100,
copyTextHover: tokens.ash.c50
copyTextHover: tokens.ash.c50,
},
settings: {
@ -182,23 +182,23 @@ export default createTheme({
inactive: tokens.shade.c50,
icon: tokens.black.c200,
iconActivated: tokens.purple.c200,
activated: tokens.purple.c100
}
activated: tokens.purple.c100,
},
},
card: {
border: tokens.shade.c700,
background: tokens.black.c100,
altBackground: tokens.black.c100
altBackground: tokens.black.c100,
},
saveBar: {
background: tokens.black.c50
}
background: tokens.black.c50,
},
},
utils: {
divider: tokens.ash.c300
divider: tokens.ash.c300,
},
errors: {
@ -206,25 +206,25 @@ export default createTheme({
border: tokens.ash.c500,
type: {
secondary: tokens.ash.c100
}
secondary: tokens.ash.c100,
},
},
about: {
circle: tokens.black.c100,
circleText: tokens.ash.c50
circleText: tokens.ash.c50,
},
editBadge: {
bg: tokens.ash.c500,
bgHover: tokens.ash.c400,
text: tokens.ash.c50
text: tokens.ash.c50,
},
progress: {
background: tokens.ash.c50,
preloaded: tokens.ash.c50,
filled: tokens.purple.c200
filled: tokens.purple.c200,
},
video: {
@ -232,17 +232,17 @@ export default createTheme({
autoPlay: {
background: tokens.ash.c800,
hover: tokens.ash.c600
hover: tokens.ash.c600,
},
scraping: {
card: tokens.black.c50,
loading: tokens.purple.c200,
noresult: tokens.black.c200
noresult: tokens.black.c200,
},
audio: {
set: tokens.purple.c200
set: tokens.purple.c200,
},
context: {
@ -261,7 +261,7 @@ export default createTheme({
buttons: {
list: tokens.ash.c700,
active: tokens.ash.c900
active: tokens.ash.c900,
},
closeHover: tokens.ash.c800,
@ -269,10 +269,10 @@ export default createTheme({
type: {
secondary: tokens.ash.c200,
accent: tokens.purple.c200,
main: tokens.semantic.silver.c300
}
}
}
}
}
main: tokens.semantic.silver.c300,
},
},
},
},
},
});

View file

@ -84,7 +84,7 @@ const tokens = {
c800: "hsla(25, 38%, 8%, 1)", // main bg - lighter
c900: "hsla(25, 35%, 5%, 1)", // hover shadow - lighter
},
}
};
export default createTheme({
name: "autumn",
@ -340,4 +340,4 @@ export default createTheme({
},
},
},
})
});

View file

@ -11,7 +11,7 @@ const tokens = {
c600: "#072c7c",
c700: "#06215d",
c800: "#041741",
c900: "#03102a"
c900: "#03102a",
},
shade: {
c25: "#5d7db3",
@ -24,7 +24,7 @@ const tokens = {
c600: "#1d1728",
c700: "#181322",
c800: "#130f1b",
c900: "#0d0a12"
c900: "#0d0a12",
},
ash: {
c50: "#7f859b",
@ -36,7 +36,7 @@ const tokens = {
c600: "#171d32",
c700: "#131829",
c800: "#101420",
c900: "#0c0f16"
c900: "#0c0f16",
},
blue: {
c50: "#adb4f5",
@ -48,8 +48,8 @@ const tokens = {
c600: "#1b1f41",
c700: "#171b36",
c800: "#101120",
c900: "#0b0c13"
}
c900: "#0b0c13",
},
};
export default createTheme({
@ -58,7 +58,7 @@ export default createTheme({
colors: {
themePreview: {
primary: tokens.blue.c200,
secondary: tokens.shade.c50
secondary: tokens.shade.c50,
},
pill: {
@ -71,11 +71,11 @@ export default createTheme({
global: {
accentA: tokens.blue.c200,
accentB: tokens.blue.c300
accentB: tokens.blue.c300,
},
lightBar: {
light: tokens.blue.c400
light: tokens.blue.c400,
},
buttons: {
@ -87,7 +87,7 @@ export default createTheme({
purple: tokens.purple.c500,
purpleHover: tokens.purple.c400,
cancel: tokens.ash.c500,
cancelHover: tokens.ash.c300
cancelHover: tokens.ash.c300,
},
background: {
@ -95,7 +95,7 @@ export default createTheme({
secondary: tokens.shade.c600,
secondaryHover: tokens.shade.c400,
accentA: tokens.purple.c500,
accentB: tokens.blue.c500
accentB: tokens.blue.c500,
},
modal: {
@ -109,7 +109,7 @@ export default createTheme({
divider: tokens.ash.c500,
secondary: tokens.ash.c100,
link: tokens.purple.c100,
linkHover: tokens.purple.c50
linkHover: tokens.purple.c50,
},
search: {
@ -117,7 +117,7 @@ export default createTheme({
hoverBackground: tokens.shade.c600,
focused: tokens.shade.c400,
placeholder: tokens.shade.c100,
icon: tokens.shade.c100
icon: tokens.shade.c100,
},
mediaCard: {
@ -128,12 +128,12 @@ export default createTheme({
barColor: tokens.ash.c200,
barFillColor: tokens.purple.c100,
badge: tokens.shade.c700,
badgeText: tokens.ash.c100
badgeText: tokens.ash.c100,
},
largeCard: {
background: tokens.shade.c600,
icon: tokens.purple.c400
icon: tokens.purple.c400,
},
dropdown: {
@ -143,7 +143,7 @@ export default createTheme({
text: tokens.shade.c50,
secondary: tokens.shade.c100,
border: tokens.shade.c400,
contentBackground: tokens.shade.c500
contentBackground: tokens.shade.c500,
},
authentication: {
@ -152,7 +152,7 @@ export default createTheme({
inputBgHover: tokens.shade.c500,
wordBackground: tokens.shade.c500,
copyText: tokens.shade.c100,
copyTextHover: tokens.ash.c50
copyTextHover: tokens.ash.c50,
},
settings: {
@ -165,23 +165,23 @@ export default createTheme({
inactive: tokens.shade.c50,
icon: tokens.shade.c50,
iconActivated: tokens.purple.c200,
activated: tokens.purple.c50
}
activated: tokens.purple.c50,
},
},
card: {
border: tokens.shade.c400,
background: tokens.shade.c400,
altBackground: tokens.shade.c400
altBackground: tokens.shade.c400,
},
saveBar: {
background: tokens.shade.c800
}
background: tokens.shade.c800,
},
},
utils: {
divider: tokens.ash.c300
divider: tokens.ash.c300,
},
errors: {
@ -189,25 +189,25 @@ export default createTheme({
border: tokens.ash.c500,
type: {
secondary: tokens.ash.c100
}
secondary: tokens.ash.c100,
},
},
about: {
circle: tokens.ash.c500,
circleText: tokens.ash.c50
circleText: tokens.ash.c50,
},
editBadge: {
bg: tokens.ash.c500,
bgHover: tokens.ash.c400,
text: tokens.ash.c50
text: tokens.ash.c50,
},
progress: {
background: tokens.ash.c50,
preloaded: tokens.ash.c50,
filled: tokens.purple.c200
filled: tokens.purple.c200,
},
video: {
@ -215,17 +215,17 @@ export default createTheme({
autoPlay: {
background: tokens.ash.c700,
hover: tokens.ash.c500
hover: tokens.ash.c500,
},
scraping: {
card: tokens.shade.c700,
loading: tokens.purple.c200,
noresult: tokens.ash.c100
noresult: tokens.ash.c100,
},
audio: {
set: tokens.purple.c200
set: tokens.purple.c200,
},
context: {
@ -244,17 +244,17 @@ export default createTheme({
buttons: {
list: tokens.ash.c700,
active: tokens.ash.c900
active: tokens.ash.c900,
},
closeHover: tokens.ash.c800,
type: {
secondary: tokens.ash.c200,
accent: tokens.purple.c200
}
}
}
}
}
accent: tokens.purple.c200,
},
},
},
},
},
});

View file

@ -84,7 +84,7 @@ const tokens = {
c800: "hsla(240, 30%, 8%, 1)", // Background main, settings save bar, onboarding card
c900: "hsla(240, 29%, 5%, 1)", // Media card hover shadow
},
}
};
export default createTheme({
name: "classic",
@ -340,4 +340,4 @@ export default createTheme({
},
},
},
})
});

View file

@ -10,7 +10,7 @@ const tokens = {
c125: "#141414",
c150: "#1a1a1a",
c200: "#262626",
c250: "#333333"
c250: "#333333",
},
semantic: {
silver: {
@ -43,7 +43,7 @@ const tokens = {
c600: "#202020",
c700: "#1a1a1a",
c800: "#151515",
c900: "#0e0e0e"
c900: "#0e0e0e",
},
ash: {
c50: "#8d8d8d",
@ -55,7 +55,7 @@ const tokens = {
c600: "#252525",
c700: "#1e1e1e",
c800: "#181818",
c900: "#111111"
c900: "#111111",
},
blue: {
c50: "#ccccd6",
@ -67,9 +67,9 @@ const tokens = {
c600: "#2e2e2e",
c700: "#272727",
c800: "#181818",
c900: "#0f0f0f"
}
}
c900: "#0f0f0f",
},
};
export default createTheme({
name: "ember",
@ -89,7 +89,7 @@ export default createTheme({
global: {
accentA: tokens.blue.c200,
accentB: tokens.blue.c300
accentB: tokens.blue.c300,
},
lightBar: {
@ -104,7 +104,7 @@ export default createTheme({
purple: tokens.purple.c600,
purpleHover: tokens.purple.c400,
cancel: tokens.black.c100,
cancelHover: tokens.black.c150
cancelHover: tokens.black.c150,
},
background: {
@ -112,7 +112,7 @@ export default createTheme({
secondary: tokens.black.c75,
secondaryHover: tokens.black.c75,
accentA: tokens.purple.c600,
accentB: tokens.black.c100
accentB: tokens.black.c100,
},
modal: {
@ -126,7 +126,7 @@ export default createTheme({
divider: tokens.ash.c500,
secondary: tokens.ash.c100,
link: tokens.purple.c100,
linkHover: tokens.purple.c50
linkHover: tokens.purple.c50,
},
search: {
@ -134,7 +134,7 @@ export default createTheme({
hoverBackground: tokens.shade.c900,
focused: tokens.black.c125,
placeholder: tokens.shade.c200,
icon: tokens.shade.c500
icon: tokens.shade.c500,
},
mediaCard: {
@ -145,12 +145,12 @@ export default createTheme({
barColor: tokens.ash.c200,
barFillColor: tokens.purple.c100,
badge: tokens.shade.c700,
badgeText: tokens.ash.c100
badgeText: tokens.ash.c100,
},
largeCard: {
background: tokens.black.c100,
icon: tokens.purple.c400
icon: tokens.purple.c400,
},
dropdown: {
@ -160,7 +160,7 @@ export default createTheme({
text: tokens.shade.c50,
secondary: tokens.shade.c100,
border: tokens.shade.c400,
contentBackground: tokens.black.c50
contentBackground: tokens.black.c50,
},
authentication: {
@ -169,7 +169,7 @@ export default createTheme({
inputBgHover: tokens.black.c150,
wordBackground: tokens.shade.c500,
copyText: tokens.shade.c100,
copyTextHover: tokens.ash.c50
copyTextHover: tokens.ash.c50,
},
settings: {
@ -182,23 +182,23 @@ export default createTheme({
inactive: tokens.shade.c50,
icon: tokens.black.c200,
iconActivated: tokens.purple.c200,
activated: tokens.purple.c100
}
activated: tokens.purple.c100,
},
},
card: {
border: tokens.shade.c700,
background: tokens.black.c100,
altBackground: tokens.black.c100
altBackground: tokens.black.c100,
},
saveBar: {
background: tokens.black.c50
}
background: tokens.black.c50,
},
},
utils: {
divider: tokens.ash.c300
divider: tokens.ash.c300,
},
errors: {
@ -206,25 +206,25 @@ export default createTheme({
border: tokens.ash.c500,
type: {
secondary: tokens.ash.c100
}
secondary: tokens.ash.c100,
},
},
about: {
circle: tokens.black.c100,
circleText: tokens.ash.c50
circleText: tokens.ash.c50,
},
editBadge: {
bg: tokens.ash.c500,
bgHover: tokens.ash.c400,
text: tokens.ash.c50
text: tokens.ash.c50,
},
progress: {
background: tokens.ash.c50,
preloaded: tokens.ash.c50,
filled: tokens.purple.c200
filled: tokens.purple.c200,
},
video: {
@ -232,17 +232,17 @@ export default createTheme({
autoPlay: {
background: tokens.ash.c800,
hover: tokens.ash.c600
hover: tokens.ash.c600,
},
scraping: {
card: tokens.black.c50,
loading: tokens.purple.c200,
noresult: tokens.black.c200
noresult: tokens.black.c200,
},
audio: {
set: tokens.purple.c200
set: tokens.purple.c200,
},
context: {
@ -261,7 +261,7 @@ export default createTheme({
buttons: {
list: tokens.ash.c700,
active: tokens.ash.c900
active: tokens.ash.c900,
},
closeHover: tokens.ash.c800,
@ -269,10 +269,10 @@ export default createTheme({
type: {
secondary: tokens.ash.c200,
accent: tokens.purple.c200,
main: tokens.semantic.silver.c300
}
}
}
}
}
main: tokens.semantic.silver.c300,
},
},
},
},
},
});

View file

@ -45,7 +45,7 @@ const tokens = {
c600: "hsla(128, 32%, 15%, 1)",
c700: "hsla(126, 32%, 12%, 1)",
c800: "hsla(124, 32%, 9%, 1)",
c900: "hsla(120, 33%, 6%, 1)"
c900: "hsla(120, 33%, 6%, 1)",
},
purple: {
c50: "hsla(116, 24%, 53%, 1)",
@ -57,7 +57,7 @@ const tokens = {
c600: "hsla(118, 37%, 14%, 1)",
c700: "hsla(120, 37%, 11%, 1)",
c800: "hsla(120, 38%, 8%, 1)",
c900: "hsla(120, 41%, 5%, 1)"
c900: "hsla(120, 41%, 5%, 1)",
},
ash: {
c50: "hsla(144, 11%, 47%, 1)",
@ -69,7 +69,7 @@ const tokens = {
c600: "hsla(145, 20%, 12%, 1)",
c700: "hsla(140, 19%, 9%, 1)",
c800: "hsla(130, 18%, 7%, 1)",
c900: "hsla(120, 18%, 4%, 1)"
c900: "hsla(120, 18%, 4%, 1)",
},
shade: {
c25: "hsla(120, 27%, 40%, 1)",
@ -82,9 +82,9 @@ const tokens = {
c600: "hsla(120, 29%, 9%, 1)",
c700: "hsla(120, 29%, 7%, 1)",
c800: "hsla(120, 39%, 5%, 1)",
c900: "hsla(120, 33%, 2%, 1)"
c900: "hsla(120, 33%, 2%, 1)",
},
}
};
export default createTheme({
name: "forest",
@ -340,4 +340,4 @@ export default createTheme({
},
},
},
})
});

View file

@ -83,8 +83,8 @@ const tokens = {
c700: "#160f1d",
c800: "#110b16",
c900: "#0c0610",
}
}
},
};
export default createTheme({
name: "grape",
@ -340,4 +340,4 @@ export default createTheme({
},
},
},
})
});

View file

@ -11,7 +11,7 @@ const tokens = {
c600: "#1f2363",
c700: "#191b4a",
c800: "#111334",
c900: "#0b0d22"
c900: "#0b0d22",
},
shade: {
c25: "#9c9c9c",
@ -24,7 +24,7 @@ const tokens = {
c600: "#202020",
c700: "#1a1a1a",
c800: "#151515",
c900: "#0e0e0e"
c900: "#0e0e0e",
},
ash: {
c50: "#8d8d8d",
@ -36,7 +36,7 @@ const tokens = {
c600: "#252525",
c700: "#1e1e1e",
c800: "#181818",
c900: "#111111"
c900: "#111111",
},
blue: {
c50: "#ccccd6",
@ -48,8 +48,8 @@ const tokens = {
c600: "#2e2e2e",
c700: "#272727",
c800: "#181818",
c900: "#0f0f0f"
}
c900: "#0f0f0f",
},
};
export default createTheme({
@ -58,7 +58,7 @@ export default createTheme({
colors: {
themePreview: {
primary: tokens.blue.c200,
secondary: tokens.shade.c50
secondary: tokens.shade.c50,
},
pill: {
@ -71,11 +71,11 @@ export default createTheme({
global: {
accentA: tokens.blue.c200,
accentB: tokens.blue.c300
accentB: tokens.blue.c300,
},
lightBar: {
light: tokens.blue.c400
light: tokens.blue.c400,
},
buttons: {
@ -87,7 +87,7 @@ export default createTheme({
purple: tokens.purple.c500,
purpleHover: tokens.purple.c400,
cancel: tokens.ash.c500,
cancelHover: tokens.ash.c300
cancelHover: tokens.ash.c300,
},
background: {
@ -95,7 +95,7 @@ export default createTheme({
secondary: tokens.shade.c600,
secondaryHover: tokens.shade.c400,
accentA: tokens.purple.c500,
accentB: tokens.blue.c500
accentB: tokens.blue.c500,
},
modal: {
@ -109,7 +109,7 @@ export default createTheme({
divider: tokens.ash.c500,
secondary: tokens.ash.c100,
link: tokens.purple.c100,
linkHover: tokens.purple.c50
linkHover: tokens.purple.c50,
},
search: {
@ -117,7 +117,7 @@ export default createTheme({
hoverBackground: tokens.shade.c600,
focused: tokens.shade.c400,
placeholder: tokens.shade.c100,
icon: tokens.shade.c100
icon: tokens.shade.c100,
},
mediaCard: {
@ -128,12 +128,12 @@ export default createTheme({
barColor: tokens.ash.c200,
barFillColor: tokens.purple.c100,
badge: tokens.shade.c700,
badgeText: tokens.ash.c100
badgeText: tokens.ash.c100,
},
largeCard: {
background: tokens.shade.c600,
icon: tokens.purple.c400
icon: tokens.purple.c400,
},
dropdown: {
@ -143,7 +143,7 @@ export default createTheme({
text: tokens.shade.c50,
secondary: tokens.shade.c100,
border: tokens.shade.c400,
contentBackground: tokens.shade.c500
contentBackground: tokens.shade.c500,
},
authentication: {
@ -152,7 +152,7 @@ export default createTheme({
inputBgHover: tokens.shade.c500,
wordBackground: tokens.shade.c500,
copyText: tokens.shade.c100,
copyTextHover: tokens.ash.c50
copyTextHover: tokens.ash.c50,
},
settings: {
@ -165,23 +165,23 @@ export default createTheme({
inactive: tokens.shade.c50,
icon: tokens.shade.c50,
iconActivated: tokens.purple.c200,
activated: tokens.purple.c50
}
activated: tokens.purple.c50,
},
},
card: {
border: tokens.shade.c400,
background: tokens.shade.c400,
altBackground: tokens.shade.c400
altBackground: tokens.shade.c400,
},
saveBar: {
background: tokens.shade.c800
}
background: tokens.shade.c800,
},
},
utils: {
divider: tokens.ash.c300
divider: tokens.ash.c300,
},
errors: {
@ -189,25 +189,25 @@ export default createTheme({
border: tokens.ash.c500,
type: {
secondary: tokens.ash.c100
}
secondary: tokens.ash.c100,
},
},
about: {
circle: tokens.ash.c500,
circleText: tokens.ash.c50
circleText: tokens.ash.c50,
},
editBadge: {
bg: tokens.ash.c500,
bgHover: tokens.ash.c400,
text: tokens.ash.c50
text: tokens.ash.c50,
},
progress: {
background: tokens.ash.c50,
preloaded: tokens.ash.c50,
filled: tokens.purple.c200
filled: tokens.purple.c200,
},
video: {
@ -215,17 +215,17 @@ export default createTheme({
autoPlay: {
background: tokens.ash.c700,
hover: tokens.ash.c500
hover: tokens.ash.c500,
},
scraping: {
card: tokens.shade.c700,
loading: tokens.purple.c200,
noresult: tokens.ash.c100
noresult: tokens.ash.c100,
},
audio: {
set: tokens.purple.c200
set: tokens.purple.c200,
},
context: {
@ -244,17 +244,17 @@ export default createTheme({
buttons: {
list: tokens.ash.c700,
active: tokens.ash.c900
active: tokens.ash.c900,
},
closeHover: tokens.ash.c800,
type: {
secondary: tokens.ash.c200,
accent: tokens.purple.c200
}
}
}
}
}
accent: tokens.purple.c200,
},
},
},
},
},
});

View file

@ -11,7 +11,7 @@ const tokens = {
c600: "#186507FF",
c700: "#044304FF",
c800: "#044109FF",
c900: "#032A03FF"
c900: "#032A03FF",
},
shade: {
c25: "#5DB35DFF",
@ -24,7 +24,7 @@ const tokens = {
c600: "#172818FF",
c700: "#152213FF",
c800: "#0F1B0FFF",
c900: "#0A120BFF"
c900: "#0A120BFF",
},
ash: {
c50: "#7F9B8BFF",
@ -36,7 +36,7 @@ const tokens = {
c600: "#17321DFF",
c700: "#132917FF",
c800: "#102013FF",
c900: "#0C160CFF"
c900: "#0C160CFF",
},
blue: {
c50: "#B5F5ADFF",
@ -48,8 +48,8 @@ const tokens = {
c600: "#1C411BFFFF",
c700: "#17361BFF",
c800: "#102010FF",
c900: "#0B130BFF"
}
c900: "#0B130BFF",
},
};
export default createTheme({
@ -58,7 +58,7 @@ export default createTheme({
colors: {
themePreview: {
primary: tokens.blue.c200,
secondary: tokens.shade.c50
secondary: tokens.shade.c50,
},
pill: {
@ -71,11 +71,11 @@ export default createTheme({
global: {
accentA: tokens.blue.c200,
accentB: tokens.blue.c300
accentB: tokens.blue.c300,
},
lightBar: {
light: tokens.blue.c400
light: tokens.blue.c400,
},
buttons: {
@ -87,7 +87,7 @@ export default createTheme({
purple: tokens.purple.c500,
purpleHover: tokens.purple.c400,
cancel: tokens.ash.c500,
cancelHover: tokens.ash.c300
cancelHover: tokens.ash.c300,
},
background: {
@ -95,7 +95,7 @@ export default createTheme({
secondary: tokens.shade.c600,
secondaryHover: tokens.shade.c400,
accentA: tokens.purple.c500,
accentB: tokens.blue.c500
accentB: tokens.blue.c500,
},
modal: {
@ -109,7 +109,7 @@ export default createTheme({
divider: tokens.ash.c500,
secondary: tokens.ash.c100,
link: tokens.purple.c100,
linkHover: tokens.purple.c50
linkHover: tokens.purple.c50,
},
search: {
@ -117,7 +117,7 @@ export default createTheme({
hoverBackground: tokens.shade.c600,
focused: tokens.shade.c400,
placeholder: tokens.shade.c100,
icon: tokens.shade.c100
icon: tokens.shade.c100,
},
mediaCard: {
@ -128,12 +128,12 @@ export default createTheme({
barColor: tokens.ash.c200,
barFillColor: tokens.purple.c100,
badge: tokens.shade.c700,
badgeText: tokens.ash.c100
badgeText: tokens.ash.c100,
},
largeCard: {
background: tokens.shade.c600,
icon: tokens.purple.c400
icon: tokens.purple.c400,
},
dropdown: {
@ -143,7 +143,7 @@ export default createTheme({
text: tokens.shade.c50,
secondary: tokens.shade.c100,
border: tokens.shade.c400,
contentBackground: tokens.shade.c500
contentBackground: tokens.shade.c500,
},
authentication: {
@ -152,7 +152,7 @@ export default createTheme({
inputBgHover: tokens.shade.c500,
wordBackground: tokens.shade.c500,
copyText: tokens.shade.c100,
copyTextHover: tokens.ash.c50
copyTextHover: tokens.ash.c50,
},
settings: {
@ -165,23 +165,23 @@ export default createTheme({
inactive: tokens.shade.c50,
icon: tokens.shade.c50,
iconActivated: tokens.purple.c200,
activated: tokens.purple.c50
}
activated: tokens.purple.c50,
},
},
card: {
border: tokens.shade.c400,
background: tokens.shade.c400,
altBackground: tokens.shade.c400
altBackground: tokens.shade.c400,
},
saveBar: {
background: tokens.shade.c800
}
background: tokens.shade.c800,
},
},
utils: {
divider: tokens.ash.c300
divider: tokens.ash.c300,
},
errors: {
@ -189,25 +189,25 @@ export default createTheme({
border: tokens.ash.c500,
type: {
secondary: tokens.ash.c100
}
secondary: tokens.ash.c100,
},
},
about: {
circle: tokens.ash.c500,
circleText: tokens.ash.c50
circleText: tokens.ash.c50,
},
editBadge: {
bg: tokens.ash.c500,
bgHover: tokens.ash.c400,
text: tokens.ash.c50
text: tokens.ash.c50,
},
progress: {
background: tokens.ash.c50,
preloaded: tokens.ash.c50,
filled: tokens.purple.c200
filled: tokens.purple.c200,
},
video: {
@ -215,17 +215,17 @@ export default createTheme({
autoPlay: {
background: tokens.ash.c700,
hover: tokens.ash.c500
hover: tokens.ash.c500,
},
scraping: {
card: tokens.shade.c700,
loading: tokens.purple.c200,
noresult: tokens.ash.c100
noresult: tokens.ash.c100,
},
audio: {
set: tokens.purple.c200
set: tokens.purple.c200,
},
context: {
@ -244,17 +244,17 @@ export default createTheme({
buttons: {
list: tokens.ash.c700,
active: tokens.ash.c900
active: tokens.ash.c900,
},
closeHover: tokens.ash.c800,
type: {
secondary: tokens.ash.c200,
accent: tokens.purple.c200
}
}
}
}
}
accent: tokens.purple.c200,
},
},
},
},
},
});

View file

@ -84,7 +84,7 @@ const tokens = {
c800: "hsla(135, 15%, 8%, 1)",
c900: "hsla(135, 14%, 6%, 1)",
},
}
};
export default createTheme({
name: "hulk",
@ -340,4 +340,4 @@ export default createTheme({
},
},
},
})
});

View file

@ -11,7 +11,7 @@ const tokens = {
c600: "#784E1CFF",
c700: "#432A04FF",
c800: "#412604FF",
c900: "#2A1D03FF"
c900: "#2A1D03FF",
},
shade: {
c25: "#B38F5DFF",
@ -24,7 +24,7 @@ const tokens = {
c600: "#281E17FF",
c700: "#221D13FF",
c800: "#1B160FFF",
c900: "#120F0AFF"
c900: "#120F0AFF",
},
ash: {
c50: "#9B877FFF",
@ -36,7 +36,7 @@ const tokens = {
c600: "#322517FF",
c700: "#292113FF",
c800: "#201910FF",
c900: "#16100CFF"
c900: "#16100CFF",
},
blue: {
c50: "#F5DBADFF",
@ -48,8 +48,8 @@ const tokens = {
c600: "#41321BFF",
c700: "#362C17FF",
c800: "#201810FF",
c900: "#13100BFF"
}
c900: "#13100BFF",
},
};
export default createTheme({
@ -58,7 +58,7 @@ export default createTheme({
colors: {
themePreview: {
primary: tokens.blue.c200,
secondary: tokens.shade.c50
secondary: tokens.shade.c50,
},
pill: {
@ -71,11 +71,11 @@ export default createTheme({
global: {
accentA: tokens.blue.c200,
accentB: tokens.blue.c300
accentB: tokens.blue.c300,
},
lightBar: {
light: tokens.blue.c400
light: tokens.blue.c400,
},
buttons: {
@ -87,7 +87,7 @@ export default createTheme({
purple: tokens.purple.c500,
purpleHover: tokens.purple.c400,
cancel: tokens.ash.c500,
cancelHover: tokens.ash.c300
cancelHover: tokens.ash.c300,
},
background: {
@ -95,7 +95,7 @@ export default createTheme({
secondary: tokens.shade.c600,
secondaryHover: tokens.shade.c400,
accentA: tokens.purple.c500,
accentB: tokens.blue.c500
accentB: tokens.blue.c500,
},
modal: {
@ -109,7 +109,7 @@ export default createTheme({
divider: tokens.ash.c500,
secondary: tokens.ash.c100,
link: tokens.purple.c100,
linkHover: tokens.purple.c50
linkHover: tokens.purple.c50,
},
search: {
@ -117,7 +117,7 @@ export default createTheme({
hoverBackground: tokens.shade.c600,
focused: tokens.shade.c400,
placeholder: tokens.shade.c100,
icon: tokens.shade.c100
icon: tokens.shade.c100,
},
mediaCard: {
@ -128,12 +128,12 @@ export default createTheme({
barColor: tokens.ash.c200,
barFillColor: tokens.purple.c100,
badge: tokens.shade.c700,
badgeText: tokens.ash.c100
badgeText: tokens.ash.c100,
},
largeCard: {
background: tokens.shade.c600,
icon: tokens.purple.c400
icon: tokens.purple.c400,
},
dropdown: {
@ -143,7 +143,7 @@ export default createTheme({
text: tokens.shade.c50,
secondary: tokens.shade.c100,
border: tokens.shade.c400,
contentBackground: tokens.shade.c500
contentBackground: tokens.shade.c500,
},
authentication: {
@ -152,7 +152,7 @@ export default createTheme({
inputBgHover: tokens.shade.c500,
wordBackground: tokens.shade.c500,
copyText: tokens.shade.c100,
copyTextHover: tokens.ash.c50
copyTextHover: tokens.ash.c50,
},
settings: {
@ -165,23 +165,23 @@ export default createTheme({
inactive: tokens.shade.c50,
icon: tokens.shade.c50,
iconActivated: tokens.purple.c200,
activated: tokens.purple.c50
}
activated: tokens.purple.c50,
},
},
card: {
border: tokens.shade.c400,
background: tokens.shade.c400,
altBackground: tokens.shade.c400
altBackground: tokens.shade.c400,
},
saveBar: {
background: tokens.shade.c800
}
background: tokens.shade.c800,
},
},
utils: {
divider: tokens.ash.c300
divider: tokens.ash.c300,
},
errors: {
@ -189,25 +189,25 @@ export default createTheme({
border: tokens.ash.c500,
type: {
secondary: tokens.ash.c100
}
secondary: tokens.ash.c100,
},
},
about: {
circle: tokens.ash.c500,
circleText: tokens.ash.c50
circleText: tokens.ash.c50,
},
editBadge: {
bg: tokens.ash.c500,
bgHover: tokens.ash.c400,
text: tokens.ash.c50
text: tokens.ash.c50,
},
progress: {
background: tokens.ash.c50,
preloaded: tokens.ash.c50,
filled: tokens.purple.c200
filled: tokens.purple.c200,
},
video: {
@ -215,17 +215,17 @@ export default createTheme({
autoPlay: {
background: tokens.ash.c700,
hover: tokens.ash.c500
hover: tokens.ash.c500,
},
scraping: {
card: tokens.shade.c700,
loading: tokens.purple.c200,
noresult: tokens.ash.c100
noresult: tokens.ash.c100,
},
audio: {
set: tokens.purple.c200
set: tokens.purple.c200,
},
context: {
@ -244,17 +244,17 @@ export default createTheme({
buttons: {
list: tokens.ash.c700,
active: tokens.ash.c900
active: tokens.ash.c900,
},
closeHover: tokens.ash.c800,
type: {
secondary: tokens.ash.c200,
accent: tokens.purple.c200
}
}
}
}
}
accent: tokens.purple.c200,
},
},
},
},
},
});

View file

@ -10,7 +10,7 @@ const tokens = {
c125: "#141414",
c150: "#1a1a1a",
c200: "#262626",
c250: "#333333"
c250: "#333333",
},
semantic: {
silver: {
@ -30,7 +30,7 @@ const tokens = {
c600: "#2c2c2c",
c700: "#202020",
c800: "#151515",
c900: "#0a0a0a"
c900: "#0a0a0a",
},
shade: {
c50: "#7c7c7c",
@ -42,7 +42,7 @@ const tokens = {
c600: "#202020",
c700: "#1a1a1a",
c800: "#151515",
c900: "#0e0e0e"
c900: "#0e0e0e",
},
ash: {
c50: "#8d8d8d",
@ -54,7 +54,7 @@ const tokens = {
c600: "#252525",
c700: "#1e1e1e",
c800: "#181818",
c900: "#111111"
c900: "#111111",
},
blue: {
c50: "#ccccd6",
@ -66,9 +66,9 @@ const tokens = {
c600: "#2e2e2e",
c700: "#272727",
c800: "#181818",
c900: "#0f0f0f"
}
}
c900: "#0f0f0f",
},
};
export default createTheme({
name: "noir",
@ -76,7 +76,7 @@ export default createTheme({
colors: {
themePreview: {
primary: tokens.black.c80,
secondary: tokens.black.c100
secondary: tokens.black.c100,
},
pill: {
@ -88,7 +88,7 @@ export default createTheme({
global: {
accentA: tokens.blue.c200,
accentB: tokens.blue.c300
accentB: tokens.blue.c300,
},
lightBar: {
@ -103,7 +103,7 @@ export default createTheme({
purple: tokens.purple.c600,
purpleHover: tokens.purple.c400,
cancel: tokens.black.c100,
cancelHover: tokens.black.c150
cancelHover: tokens.black.c150,
},
background: {
@ -111,7 +111,7 @@ export default createTheme({
secondary: tokens.black.c75,
secondaryHover: tokens.black.c75,
accentA: tokens.purple.c600,
accentB: tokens.black.c100
accentB: tokens.black.c100,
},
modal: {
@ -125,7 +125,7 @@ export default createTheme({
divider: tokens.ash.c500,
secondary: tokens.ash.c100,
link: tokens.purple.c100,
linkHover: tokens.purple.c50
linkHover: tokens.purple.c50,
},
search: {
@ -133,7 +133,7 @@ export default createTheme({
hoverBackground: tokens.shade.c900,
focused: tokens.black.c125,
placeholder: tokens.shade.c200,
icon: tokens.shade.c500
icon: tokens.shade.c500,
},
mediaCard: {
@ -144,12 +144,12 @@ export default createTheme({
barColor: tokens.shade.c200,
barFillColor: tokens.shade.c50,
badge: tokens.shade.c700,
badgeText: tokens.ash.c100
badgeText: tokens.ash.c100,
},
largeCard: {
background: tokens.black.c100,
icon: tokens.purple.c400
icon: tokens.purple.c400,
},
dropdown: {
@ -159,7 +159,7 @@ export default createTheme({
text: tokens.shade.c50,
secondary: tokens.shade.c100,
border: tokens.shade.c400,
contentBackground: tokens.black.c50
contentBackground: tokens.black.c50,
},
authentication: {
@ -168,7 +168,7 @@ export default createTheme({
inputBgHover: tokens.black.c150,
wordBackground: tokens.shade.c500,
copyText: tokens.shade.c100,
copyTextHover: tokens.ash.c50
copyTextHover: tokens.ash.c50,
},
settings: {
@ -181,23 +181,23 @@ export default createTheme({
inactive: tokens.shade.c50,
icon: tokens.black.c200,
iconActivated: tokens.purple.c200,
activated: tokens.purple.c100
}
activated: tokens.purple.c100,
},
},
card: {
border: tokens.shade.c700,
background: tokens.black.c100,
altBackground: tokens.black.c100
altBackground: tokens.black.c100,
},
saveBar: {
background: tokens.black.c50
}
background: tokens.black.c50,
},
},
utils: {
divider: tokens.ash.c300
divider: tokens.ash.c300,
},
errors: {
@ -205,25 +205,25 @@ export default createTheme({
border: tokens.ash.c500,
type: {
secondary: tokens.ash.c100
}
secondary: tokens.ash.c100,
},
},
about: {
circle: tokens.black.c100,
circleText: tokens.ash.c50
circleText: tokens.ash.c50,
},
editBadge: {
bg: tokens.ash.c500,
bgHover: tokens.ash.c400,
text: tokens.ash.c50
text: tokens.ash.c50,
},
progress: {
background: tokens.ash.c50,
preloaded: tokens.ash.c50,
filled: tokens.purple.c200
filled: tokens.purple.c200,
},
video: {
@ -231,17 +231,17 @@ export default createTheme({
autoPlay: {
background: tokens.ash.c800,
hover: tokens.ash.c600
hover: tokens.ash.c600,
},
scraping: {
card: tokens.black.c50,
loading: tokens.purple.c200,
noresult: tokens.black.c200
noresult: tokens.black.c200,
},
audio: {
set: tokens.purple.c200
set: tokens.purple.c200,
},
context: {
@ -260,7 +260,7 @@ export default createTheme({
buttons: {
list: tokens.ash.c700,
active: tokens.ash.c900
active: tokens.ash.c900,
},
closeHover: tokens.ash.c800,
@ -268,10 +268,10 @@ export default createTheme({
type: {
secondary: tokens.ash.c200,
accent: tokens.purple.c200,
main: tokens.semantic.silver.c300
}
}
}
}
}
main: tokens.semantic.silver.c300,
},
},
},
},
},
});

View file

@ -11,7 +11,7 @@ const tokens = {
c600: "#7D0E6CFF",
c700: "#430431FF",
c800: "#410440FF",
c900: "#2A0324FF"
c900: "#2A0324FF",
},
shade: {
c25: "#B35DA5FF",
@ -24,7 +24,7 @@ const tokens = {
c600: "#281726FF",
c700: "#211322FF",
c800: "#1B0F1AFF",
c900: "#120A11FF"
c900: "#120A11FF",
},
ash: {
c50: "#9B7F95FF",
@ -36,7 +36,7 @@ const tokens = {
c600: "#32172DFF",
c700: "#291328FF",
c800: "#1E1020FF",
c900: "#150C16FF"
c900: "#150C16FF",
},
blue: {
c50: "#F5ADEEFF",
@ -48,8 +48,8 @@ const tokens = {
c600: "#411B3AFF",
c700: "#361736FF",
c800: "#20101EFF",
c900: "#130B12FF"
}
c900: "#130B12FF",
},
};
export default createTheme({
@ -58,7 +58,7 @@ export default createTheme({
colors: {
themePreview: {
primary: tokens.blue.c200,
secondary: tokens.shade.c50
secondary: tokens.shade.c50,
},
pill: {
@ -71,11 +71,11 @@ export default createTheme({
global: {
accentA: tokens.blue.c200,
accentB: tokens.blue.c300
accentB: tokens.blue.c300,
},
lightBar: {
light: tokens.blue.c400
light: tokens.blue.c400,
},
buttons: {
@ -87,7 +87,7 @@ export default createTheme({
purple: tokens.purple.c500,
purpleHover: tokens.purple.c400,
cancel: tokens.ash.c500,
cancelHover: tokens.ash.c300
cancelHover: tokens.ash.c300,
},
background: {
@ -95,7 +95,7 @@ export default createTheme({
secondary: tokens.shade.c600,
secondaryHover: tokens.shade.c400,
accentA: tokens.purple.c500,
accentB: tokens.blue.c500
accentB: tokens.blue.c500,
},
modal: {
@ -109,7 +109,7 @@ export default createTheme({
divider: tokens.ash.c500,
secondary: tokens.ash.c100,
link: tokens.purple.c100,
linkHover: tokens.purple.c50
linkHover: tokens.purple.c50,
},
search: {
@ -117,7 +117,7 @@ export default createTheme({
hoverBackground: tokens.shade.c600,
focused: tokens.shade.c400,
placeholder: tokens.shade.c100,
icon: tokens.shade.c100
icon: tokens.shade.c100,
},
mediaCard: {
@ -128,12 +128,12 @@ export default createTheme({
barColor: tokens.ash.c200,
barFillColor: tokens.purple.c100,
badge: tokens.shade.c700,
badgeText: tokens.ash.c100
badgeText: tokens.ash.c100,
},
largeCard: {
background: tokens.shade.c600,
icon: tokens.purple.c400
icon: tokens.purple.c400,
},
dropdown: {
@ -143,7 +143,7 @@ export default createTheme({
text: tokens.shade.c50,
secondary: tokens.shade.c100,
border: tokens.shade.c400,
contentBackground: tokens.shade.c500
contentBackground: tokens.shade.c500,
},
authentication: {
@ -152,7 +152,7 @@ export default createTheme({
inputBgHover: tokens.shade.c500,
wordBackground: tokens.shade.c500,
copyText: tokens.shade.c100,
copyTextHover: tokens.ash.c50
copyTextHover: tokens.ash.c50,
},
settings: {
@ -165,23 +165,23 @@ export default createTheme({
inactive: tokens.shade.c50,
icon: tokens.shade.c50,
iconActivated: tokens.purple.c200,
activated: tokens.purple.c50
}
activated: tokens.purple.c50,
},
},
card: {
border: tokens.shade.c400,
background: tokens.shade.c400,
altBackground: tokens.shade.c400
altBackground: tokens.shade.c400,
},
saveBar: {
background: tokens.shade.c800
}
background: tokens.shade.c800,
},
},
utils: {
divider: tokens.ash.c300
divider: tokens.ash.c300,
},
errors: {
@ -189,25 +189,25 @@ export default createTheme({
border: tokens.ash.c500,
type: {
secondary: tokens.ash.c100
}
secondary: tokens.ash.c100,
},
},
about: {
circle: tokens.ash.c500,
circleText: tokens.ash.c50
circleText: tokens.ash.c50,
},
editBadge: {
bg: tokens.ash.c500,
bgHover: tokens.ash.c400,
text: tokens.ash.c50
text: tokens.ash.c50,
},
progress: {
background: tokens.ash.c50,
preloaded: tokens.ash.c50,
filled: tokens.purple.c200
filled: tokens.purple.c200,
},
video: {
@ -215,17 +215,17 @@ export default createTheme({
autoPlay: {
background: tokens.ash.c700,
hover: tokens.ash.c500
hover: tokens.ash.c500,
},
scraping: {
card: tokens.shade.c700,
loading: tokens.purple.c200,
noresult: tokens.ash.c100
noresult: tokens.ash.c100,
},
audio: {
set: tokens.purple.c200
set: tokens.purple.c200,
},
context: {
@ -244,17 +244,17 @@ export default createTheme({
buttons: {
list: tokens.ash.c700,
active: tokens.ash.c900
active: tokens.ash.c900,
},
closeHover: tokens.ash.c800,
type: {
secondary: tokens.ash.c200,
accent: tokens.purple.c200
}
}
}
}
}
accent: tokens.purple.c200,
},
},
},
},
},
});

View file

@ -84,7 +84,7 @@ const tokens = {
c800: "hsla(30, 38%, 9%, 1)", // main bg
c900: "hsla(30, 35%, 6%, 1)", // hover shadow
},
}
};
export default createTheme({
name: "popsicle",
@ -340,4 +340,4 @@ export default createTheme({
},
},
},
})
});

View file

@ -11,7 +11,7 @@ const tokens = {
c600: "#632021",
c700: "#49191a",
c800: "#331112",
c900: "#220c0c"
c900: "#220c0c",
},
shade: {
c25: "#b3675d",
@ -24,7 +24,7 @@ const tokens = {
c600: "#2b1614",
c700: "#241210",
c800: "#1c0e0d",
c900: "#130909"
c900: "#130909",
},
ash: {
c50: "#ac6e6f",
@ -36,7 +36,7 @@ const tokens = {
c600: "#371212",
c700: "#2e0e0f",
c800: "#230c0d",
c900: "#19090b"
c900: "#19090b",
},
blue: {
c50: "#f5adb4",
@ -48,8 +48,8 @@ const tokens = {
c600: "#411b1f",
c700: "#36171b",
c800: "#201011",
c900: "#130b0c"
}
c900: "#130b0c",
},
};
export default createTheme({
@ -58,7 +58,7 @@ export default createTheme({
colors: {
themePreview: {
primary: tokens.blue.c200,
secondary: tokens.shade.c50
secondary: tokens.shade.c50,
},
pill: {
@ -71,11 +71,11 @@ export default createTheme({
global: {
accentA: tokens.blue.c200,
accentB: tokens.blue.c300
accentB: tokens.blue.c300,
},
lightBar: {
light: tokens.blue.c400
light: tokens.blue.c400,
},
buttons: {
@ -87,7 +87,7 @@ export default createTheme({
purple: tokens.purple.c500,
purpleHover: tokens.purple.c400,
cancel: tokens.ash.c500,
cancelHover: tokens.ash.c300
cancelHover: tokens.ash.c300,
},
background: {
@ -95,7 +95,7 @@ export default createTheme({
secondary: tokens.shade.c600,
secondaryHover: tokens.shade.c400,
accentA: tokens.purple.c500,
accentB: tokens.blue.c500
accentB: tokens.blue.c500,
},
modal: {
@ -109,7 +109,7 @@ export default createTheme({
divider: tokens.ash.c500,
secondary: tokens.ash.c100,
link: tokens.purple.c100,
linkHover: tokens.purple.c50
linkHover: tokens.purple.c50,
},
search: {
@ -117,7 +117,7 @@ export default createTheme({
hoverBackground: tokens.shade.c600,
focused: tokens.shade.c400,
placeholder: tokens.shade.c100,
icon: tokens.shade.c100
icon: tokens.shade.c100,
},
mediaCard: {
@ -128,12 +128,12 @@ export default createTheme({
barColor: tokens.ash.c200,
barFillColor: tokens.purple.c100,
badge: tokens.shade.c700,
badgeText: tokens.ash.c100
badgeText: tokens.ash.c100,
},
largeCard: {
background: tokens.shade.c600,
icon: tokens.purple.c400
icon: tokens.purple.c400,
},
dropdown: {
@ -143,7 +143,7 @@ export default createTheme({
text: tokens.shade.c50,
secondary: tokens.shade.c100,
border: tokens.shade.c400,
contentBackground: tokens.shade.c500
contentBackground: tokens.shade.c500,
},
authentication: {
@ -152,7 +152,7 @@ export default createTheme({
inputBgHover: tokens.shade.c500,
wordBackground: tokens.shade.c500,
copyText: tokens.shade.c100,
copyTextHover: tokens.ash.c50
copyTextHover: tokens.ash.c50,
},
settings: {
@ -165,23 +165,23 @@ export default createTheme({
inactive: tokens.shade.c50,
icon: tokens.shade.c50,
iconActivated: tokens.purple.c200,
activated: tokens.purple.c50
}
activated: tokens.purple.c50,
},
},
card: {
border: tokens.shade.c400,
background: tokens.shade.c400,
altBackground: tokens.shade.c400
altBackground: tokens.shade.c400,
},
saveBar: {
background: tokens.shade.c800
}
background: tokens.shade.c800,
},
},
utils: {
divider: tokens.ash.c300
divider: tokens.ash.c300,
},
errors: {
@ -189,25 +189,25 @@ export default createTheme({
border: tokens.ash.c500,
type: {
secondary: tokens.ash.c100
}
secondary: tokens.ash.c100,
},
},
about: {
circle: tokens.ash.c500,
circleText: tokens.ash.c50
circleText: tokens.ash.c50,
},
editBadge: {
bg: tokens.ash.c500,
bgHover: tokens.ash.c400,
text: tokens.ash.c50
text: tokens.ash.c50,
},
progress: {
background: tokens.ash.c50,
preloaded: tokens.ash.c50,
filled: tokens.purple.c200
filled: tokens.purple.c200,
},
video: {
@ -215,17 +215,17 @@ export default createTheme({
autoPlay: {
background: tokens.ash.c700,
hover: tokens.ash.c500
hover: tokens.ash.c500,
},
scraping: {
card: tokens.shade.c700,
loading: tokens.purple.c200,
noresult: tokens.ash.c100
noresult: tokens.ash.c100,
},
audio: {
set: tokens.purple.c200
set: tokens.purple.c200,
},
context: {
@ -244,17 +244,17 @@ export default createTheme({
buttons: {
list: tokens.ash.c700,
active: tokens.ash.c900
active: tokens.ash.c900,
},
closeHover: tokens.ash.c800,
type: {
secondary: tokens.ash.c200,
accent: tokens.purple.c200
}
}
}
}
}
accent: tokens.purple.c200,
},
},
},
},
},
});

View file

@ -10,7 +10,7 @@ const tokens = {
c125: "#141414",
c150: "#1a1a1a",
c200: "#262626",
c250: "#333333"
c250: "#333333",
},
semantic: {
silver: {
@ -43,7 +43,7 @@ const tokens = {
c600: "#202020",
c700: "#1a1a1a",
c800: "#151515",
c900: "#0e0e0e"
c900: "#0e0e0e",
},
ash: {
c50: "#8d8d8d",
@ -55,7 +55,7 @@ const tokens = {
c600: "#252525",
c700: "#1e1e1e",
c800: "#181818",
c900: "#111111"
c900: "#111111",
},
blue: {
c50: "#ccccd6",
@ -67,9 +67,9 @@ const tokens = {
c600: "#2e2e2e",
c700: "#272727",
c800: "#181818",
c900: "#0f0f0f"
}
}
c900: "#0f0f0f",
},
};
export default createTheme({
name: "spark",
@ -89,7 +89,7 @@ export default createTheme({
global: {
accentA: tokens.blue.c200,
accentB: tokens.blue.c300
accentB: tokens.blue.c300,
},
lightBar: {
@ -104,7 +104,7 @@ export default createTheme({
purple: tokens.purple.c600,
purpleHover: tokens.purple.c400,
cancel: tokens.black.c100,
cancelHover: tokens.black.c150
cancelHover: tokens.black.c150,
},
background: {
@ -112,7 +112,7 @@ export default createTheme({
secondary: tokens.black.c75,
secondaryHover: tokens.black.c75,
accentA: tokens.purple.c600,
accentB: tokens.black.c100
accentB: tokens.black.c100,
},
modal: {
@ -126,7 +126,7 @@ export default createTheme({
divider: tokens.ash.c500,
secondary: tokens.ash.c100,
link: tokens.purple.c100,
linkHover: tokens.purple.c50
linkHover: tokens.purple.c50,
},
search: {
@ -134,7 +134,7 @@ export default createTheme({
hoverBackground: tokens.shade.c900,
focused: tokens.black.c125,
placeholder: tokens.shade.c200,
icon: tokens.shade.c500
icon: tokens.shade.c500,
},
mediaCard: {
@ -145,12 +145,12 @@ export default createTheme({
barColor: tokens.ash.c200,
barFillColor: tokens.purple.c100,
badge: tokens.shade.c700,
badgeText: tokens.ash.c100
badgeText: tokens.ash.c100,
},
largeCard: {
background: tokens.black.c100,
icon: tokens.purple.c400
icon: tokens.purple.c400,
},
dropdown: {
@ -160,7 +160,7 @@ export default createTheme({
text: tokens.shade.c50,
secondary: tokens.shade.c100,
border: tokens.shade.c400,
contentBackground: tokens.black.c50
contentBackground: tokens.black.c50,
},
authentication: {
@ -169,7 +169,7 @@ export default createTheme({
inputBgHover: tokens.black.c150,
wordBackground: tokens.shade.c500,
copyText: tokens.shade.c100,
copyTextHover: tokens.ash.c50
copyTextHover: tokens.ash.c50,
},
settings: {
@ -182,23 +182,23 @@ export default createTheme({
inactive: tokens.shade.c50,
icon: tokens.black.c200,
iconActivated: tokens.purple.c200,
activated: tokens.purple.c100
}
activated: tokens.purple.c100,
},
},
card: {
border: tokens.shade.c700,
background: tokens.black.c100,
altBackground: tokens.black.c100
altBackground: tokens.black.c100,
},
saveBar: {
background: tokens.black.c50
}
background: tokens.black.c50,
},
},
utils: {
divider: tokens.ash.c300
divider: tokens.ash.c300,
},
errors: {
@ -206,25 +206,25 @@ export default createTheme({
border: tokens.ash.c500,
type: {
secondary: tokens.ash.c100
}
secondary: tokens.ash.c100,
},
},
about: {
circle: tokens.black.c100,
circleText: tokens.ash.c50
circleText: tokens.ash.c50,
},
editBadge: {
bg: tokens.ash.c500,
bgHover: tokens.ash.c400,
text: tokens.ash.c50
text: tokens.ash.c50,
},
progress: {
background: tokens.ash.c50,
preloaded: tokens.ash.c50,
filled: tokens.purple.c200
filled: tokens.purple.c200,
},
video: {
@ -232,17 +232,17 @@ export default createTheme({
autoPlay: {
background: tokens.ash.c800,
hover: tokens.ash.c600
hover: tokens.ash.c600,
},
scraping: {
card: tokens.black.c50,
loading: tokens.purple.c200,
noresult: tokens.black.c200
noresult: tokens.black.c200,
},
audio: {
set: tokens.purple.c200
set: tokens.purple.c200,
},
context: {
@ -261,7 +261,7 @@ export default createTheme({
buttons: {
list: tokens.ash.c700,
active: tokens.ash.c900
active: tokens.ash.c900,
},
closeHover: tokens.ash.c800,
@ -269,10 +269,10 @@ export default createTheme({
type: {
secondary: tokens.ash.c200,
accent: tokens.purple.c200,
main: tokens.semantic.silver.c300
}
}
}
}
}
main: tokens.semantic.silver.c300,
},
},
},
},
},
});

View file

@ -83,8 +83,8 @@ const tokens = {
c700: "hsla(0, 28%, 10%, 1)",
c800: "hsla(0, 26%, 8%, 1)",
c900: "hsla(0, 24%, 5%, 1)",
}
}
},
};
export default createTheme({
name: "spiderman",
@ -340,4 +340,4 @@ export default createTheme({
},
},
},
})
});

View file

@ -11,7 +11,7 @@ const tokens = {
c600: "#1f4464",
c700: "#18334a",
c800: "#112434",
c900: "#0b1822"
c900: "#0b1822",
},
shade: {
c25: "#5db3a8",
@ -24,7 +24,7 @@ const tokens = {
c600: "#172028",
c700: "#131a22",
c800: "#0f151b",
c900: "#0a0e12"
c900: "#0a0e12",
},
ash: {
c50: "#7f9b9b",
@ -36,7 +36,7 @@ const tokens = {
c600: "#173232",
c700: "#132929",
c800: "#102020",
c900: "#0c1615"
c900: "#0c1615",
},
blue: {
c50: "#adf5d6",
@ -48,8 +48,8 @@ const tokens = {
c600: "#1b4130",
c700: "#173629",
c800: "#102019",
c900: "#0b1310"
}
c900: "#0b1310",
},
};
export default createTheme({
@ -58,7 +58,7 @@ export default createTheme({
colors: {
themePreview: {
primary: tokens.blue.c200,
secondary: tokens.shade.c50
secondary: tokens.shade.c50,
},
pill: {
@ -71,11 +71,11 @@ export default createTheme({
global: {
accentA: tokens.blue.c200,
accentB: tokens.blue.c300
accentB: tokens.blue.c300,
},
lightBar: {
light: tokens.blue.c400
light: tokens.blue.c400,
},
buttons: {
@ -87,7 +87,7 @@ export default createTheme({
purple: tokens.purple.c500,
purpleHover: tokens.purple.c400,
cancel: tokens.ash.c500,
cancelHover: tokens.ash.c300
cancelHover: tokens.ash.c300,
},
background: {
@ -95,7 +95,7 @@ export default createTheme({
secondary: tokens.shade.c600,
secondaryHover: tokens.shade.c400,
accentA: tokens.purple.c500,
accentB: tokens.blue.c500
accentB: tokens.blue.c500,
},
modal: {
@ -109,7 +109,7 @@ export default createTheme({
divider: tokens.ash.c500,
secondary: tokens.ash.c100,
link: tokens.purple.c100,
linkHover: tokens.purple.c50
linkHover: tokens.purple.c50,
},
search: {
@ -117,7 +117,7 @@ export default createTheme({
hoverBackground: tokens.shade.c600,
focused: tokens.shade.c400,
placeholder: tokens.shade.c100,
icon: tokens.shade.c100
icon: tokens.shade.c100,
},
mediaCard: {
@ -128,12 +128,12 @@ export default createTheme({
barColor: tokens.ash.c200,
barFillColor: tokens.purple.c100,
badge: tokens.shade.c700,
badgeText: tokens.ash.c100
badgeText: tokens.ash.c100,
},
largeCard: {
background: tokens.shade.c600,
icon: tokens.purple.c400
icon: tokens.purple.c400,
},
dropdown: {
@ -143,7 +143,7 @@ export default createTheme({
text: tokens.shade.c50,
secondary: tokens.shade.c100,
border: tokens.shade.c400,
contentBackground: tokens.shade.c500
contentBackground: tokens.shade.c500,
},
authentication: {
@ -152,7 +152,7 @@ export default createTheme({
inputBgHover: tokens.shade.c500,
wordBackground: tokens.shade.c500,
copyText: tokens.shade.c100,
copyTextHover: tokens.ash.c50
copyTextHover: tokens.ash.c50,
},
settings: {
@ -165,23 +165,23 @@ export default createTheme({
inactive: tokens.shade.c50,
icon: tokens.shade.c50,
iconActivated: tokens.purple.c200,
activated: tokens.purple.c50
}
activated: tokens.purple.c50,
},
},
card: {
border: tokens.shade.c400,
background: tokens.shade.c400,
altBackground: tokens.shade.c400
altBackground: tokens.shade.c400,
},
saveBar: {
background: tokens.shade.c800
}
background: tokens.shade.c800,
},
},
utils: {
divider: tokens.ash.c300
divider: tokens.ash.c300,
},
errors: {
@ -189,25 +189,25 @@ export default createTheme({
border: tokens.ash.c500,
type: {
secondary: tokens.ash.c100
}
secondary: tokens.ash.c100,
},
},
about: {
circle: tokens.ash.c500,
circleText: tokens.ash.c50
circleText: tokens.ash.c50,
},
editBadge: {
bg: tokens.ash.c500,
bgHover: tokens.ash.c400,
text: tokens.ash.c50
text: tokens.ash.c50,
},
progress: {
background: tokens.ash.c50,
preloaded: tokens.ash.c50,
filled: tokens.purple.c200
filled: tokens.purple.c200,
},
video: {
@ -215,17 +215,17 @@ export default createTheme({
autoPlay: {
background: tokens.ash.c700,
hover: tokens.ash.c500
hover: tokens.ash.c500,
},
scraping: {
card: tokens.shade.c700,
loading: tokens.purple.c200,
noresult: tokens.ash.c100
noresult: tokens.ash.c100,
},
audio: {
set: tokens.purple.c200
set: tokens.purple.c200,
},
context: {
@ -244,17 +244,17 @@ export default createTheme({
buttons: {
list: tokens.ash.c700,
active: tokens.ash.c900
active: tokens.ash.c900,
},
closeHover: tokens.ash.c800,
type: {
secondary: tokens.ash.c200,
accent: tokens.purple.c200
}
}
}
}
}
accent: tokens.purple.c200,
},
},
},
},
},
});

View file

@ -84,7 +84,7 @@ const tokens = {
c800: "hsla(240, 30%, 8%, 1)", // Background main, settings save bar, onboarding card
c900: "hsla(240, 29%, 5%, 1)", // Media card hover shadow
},
}
};
export default createTheme({
name: "wolverine",
@ -340,4 +340,4 @@ export default createTheme({
},
},
},
})
});

View file

@ -3,13 +3,13 @@ import { defaultTheme } from "./default";
export interface Theme {
name: string;
extend: DeepPartial<(typeof defaultTheme)["extend"]>
extend: DeepPartial<(typeof defaultTheme)["extend"]>;
}
export function createTheme(theme: Theme) {
return {
name: theme.name,
selectors: [`.theme-${theme.name}`],
extend: theme.extend
}
extend: theme.extend,
};
}

View file

@ -4,7 +4,7 @@ import loadVersion from "vite-plugin-package-version";
import { VitePWA } from "vite-plugin-pwa";
import checker from "vite-plugin-checker";
import path from "path";
import million from 'million/compiler';
import million from "million/compiler";
import { handlebars } from "./plugins/handlebars";
import { PluginOption, loadEnv, splitVendorChunkPlugin } from "vite";
import { visualizer } from "rollup-plugin-visualizer";
@ -18,13 +18,13 @@ const captioningPackages = [
"subsrt-ts",
"parse5",
"entities",
"fuse"
"fuse",
];
export default defineConfig(({ mode }) => {
const env = loadEnv(mode, process.cwd());
return {
base: env.VITE_BASE_URL || '/',
base: env.VITE_BASE_URL || "/",
plugins: [
million.vite({ auto: true, mute: true }),
handlebars({
@ -69,7 +69,8 @@ export default defineConfig(({ mode }) => {
manifest: {
name: "P-Stream",
short_name: "P-Stream",
description: "Watch your favorite shows and movies for free with no ads ever! (っ'ヮ'c)",
description:
"Watch your favorite shows and movies for free with no ads ever! (っ'ヮ'c)",
theme_color: "#000000",
background_color: "#000000",
display: "standalone",
@ -117,7 +118,7 @@ export default defineConfig(({ mode }) => {
},
}),
splitVendorChunkPlugin(),
visualizer() as PluginOption
visualizer() as PluginOption,
],
build: {
@ -125,7 +126,10 @@ export default defineConfig(({ mode }) => {
rollupOptions: {
output: {
manualChunks(id: string) {
if (id.includes("@sozialhelden+ietf-language-tags") || id.includes("country-language")) {
if (
id.includes("@sozialhelden+ietf-language-tags") ||
id.includes("country-language")
) {
return "language-db";
}
if (id.includes("hls.js")) {
@ -143,13 +147,15 @@ export default defineConfig(({ mode }) => {
if (id.includes("Icon.tsx")) {
return "Icons";
}
const isCaptioningPackage = captioningPackages.some(packageName => id.includes(packageName));
const isCaptioningPackage = captioningPackages.some((packageName) =>
id.includes(packageName),
);
if (isCaptioningPackage) {
return "caption-parsing";
}
}
}
}
},
},
},
},
css: {
postcss: {
@ -162,7 +168,7 @@ export default defineConfig(({ mode }) => {
"@": path.resolve(__dirname, "./src"),
"@sozialhelden/ietf-language-tags": path.resolve(
__dirname,
"./node_modules/@sozialhelden/ietf-language-tags/dist/cjs"
"./node_modules/@sozialhelden/ietf-language-tags/dist/cjs",
),
},
},