Compare commits

..

1 Commits

Author SHA1 Message Date
ta264
0e05d86a58 Fixed: Handle wonky timestamps from Orpheus 2022-04-08 04:14:26 +01:00
367 changed files with 7863 additions and 11415 deletions

View File

@@ -19,10 +19,10 @@ indent_size = 4
dotnet_sort_system_directives_first = true
# Avoid "this." and "Me." if not necessary
dotnet_style_qualification_for_field = false:warning
dotnet_style_qualification_for_property = false:warning
dotnet_style_qualification_for_method = false:warning
dotnet_style_qualification_for_event = false:warning
dotnet_style_qualification_for_field = false:refactoring
dotnet_style_qualification_for_property = false:refactoring
dotnet_style_qualification_for_method = false:refactoring
dotnet_style_qualification_for_event = false:refactoring
# Indentation preferences
csharp_indent_block_contents = true
@@ -32,6 +32,10 @@ csharp_indent_case_contents_when_block = true
csharp_indent_switch_labels = true
csharp_indent_labels = flush_left
dotnet_style_qualification_for_field = false:suggestion
dotnet_style_qualification_for_property = false:suggestion
dotnet_style_qualification_for_method = false:suggestion
dotnet_style_qualification_for_event = false:suggestion
dotnet_naming_style.instance_field_style.capitalization = camel_case
dotnet_naming_style.instance_field_style.required_prefix = _

View File

@@ -7,20 +7,16 @@ variables:
outputFolder: './_output'
artifactsFolder: './_artifacts'
testsFolder: './_tests'
yarnCacheFolder: $(Pipeline.Workspace)/.yarn
nugetCacheFolder: $(Pipeline.Workspace)/.nuget/packages
majorVersion: '0.4.2'
majorVersion: '0.2.0'
minorVersion: $[counter('minorVersion', 1)]
prowlarrVersion: '$(majorVersion).$(minorVersion)'
buildName: '$(Build.SourceBranchName).$(prowlarrVersion)'
sentryOrg: 'servarr'
sentryUrl: 'https://sentry.servarr.com'
dotnetVersion: '6.0.301'
dotnetVersion: '6.0.201'
innoVersion: '6.2.0'
nodeVersion: '16.x'
windowsImage: 'windows-2022'
linuxImage: 'ubuntu-20.04'
macImage: 'macOS-11'
yarnCacheFolder: $(Pipeline.Workspace)/.yarn
trigger:
branches:
@@ -44,7 +40,7 @@ stages:
- job:
displayName: Build Variables
pool:
vmImage: ${{ variables.linuxImage }}
vmImage: 'ubuntu-18.04'
steps:
# Set the build name properly. The 'name' property won't recursively expand so hack here:
- bash: echo "##vso[build.updatebuildnumber]$PROWLARRVERSION"
@@ -70,15 +66,15 @@ stages:
matrix:
Linux:
osName: 'Linux'
imageName: ${{ variables.linuxImage }}
imageName: 'ubuntu-18.04'
enableAnalysis: 'true'
Mac:
osName: 'Mac'
imageName: ${{ variables.macImage }}
imageName: 'macos-10.15'
enableAnalysis: 'false'
Windows:
osName: 'Windows'
imageName: ${{ variables.windowsImage }}
imageName: 'windows-2019'
enableAnalysis: 'false'
pool:
@@ -148,13 +144,13 @@ stages:
matrix:
Linux:
osName: 'Linux'
imageName: ${{ variables.linuxImage }}
imageName: 'ubuntu-18.04'
Mac:
osName: 'Mac'
imageName: ${{ variables.macImage }}
imageName: 'macos-10.15'
Windows:
osName: 'Windows'
imageName: ${{ variables.windowsImage }}
imageName: 'windows-2019'
pool:
vmImage: $(imageName)
steps:
@@ -190,7 +186,7 @@ stages:
- job: Windows_Installer
displayName: Create Installer
pool:
vmImage: ${{ variables.windowsImage }}
vmImage: 'windows-2019'
steps:
- checkout: self
fetchDepth: 1
@@ -223,7 +219,7 @@ stages:
- job: Other_Packages
displayName: Create Standard Packages
pool:
vmImage: ${{ variables.linuxImage }}
vmImage: 'ubuntu-18.04'
steps:
- checkout: self
fetchDepth: 1
@@ -383,7 +379,7 @@ stages:
jobs:
- job: Prepare
pool:
vmImage: ${{ variables.linuxImage }}
vmImage: 'ubuntu-18.04'
steps:
- checkout: none
- task: DownloadPipelineArtifact@2
@@ -407,17 +403,17 @@ stages:
osName: 'Mac'
testName: 'MacCore'
poolName: 'Azure Pipelines'
imageName: ${{ variables.macImage }}
imageName: 'macos-10.15'
WindowsCore:
osName: 'Windows'
testName: 'WindowsCore'
poolName: 'Azure Pipelines'
imageName: ${{ variables.windowsImage }}
imageName: 'windows-2019'
LinuxCore:
osName: 'Linux'
testName: 'LinuxCore'
poolName: 'Azure Pipelines'
imageName: ${{ variables.linuxImage }}
imageName: 'ubuntu-18.04'
FreebsdCore:
osName: 'Linux'
testName: 'FreebsdCore'
@@ -473,7 +469,7 @@ stages:
containerImage: ghcr.io/servarr/testimages:alpine
pool:
vmImage: ${{ variables.linuxImage }}
vmImage: 'ubuntu-18.04'
container: $[ variables['containerImage'] ]
@@ -506,58 +502,6 @@ stages:
testResultsFiles: '**/TestResult.xml'
testRunTitle: '$(testName) Unit Tests'
failTaskOnFailedTests: true
- job: Unit_LinuxCore_Postgres
displayName: Unit Native LinuxCore with Postgres Database
dependsOn: Prepare
condition: and(succeeded(), eq(dependencies.Prepare.outputs['setVar.backendNotUpdated'], '0'))
variables:
pattern: 'Prowlarr.*.linux-core-x64.tar.gz'
artifactName: LinuxCoreTests
Prowlarr__Postgres__Host: 'localhost'
Prowlarr__Postgres__Port: '5432'
Prowlarr__Postgres__User: 'prowlarr'
Prowlarr__Postgres__Password: 'prowlarr'
pool:
vmImage: 'ubuntu-18.04'
timeoutInMinutes: 10
steps:
- task: UseDotNet@2
displayName: 'Install .net core'
inputs:
version: $(dotnetVersion)
- checkout: none
- task: DownloadPipelineArtifact@2
displayName: Download Test Artifact
inputs:
buildType: 'current'
artifactName: $(artifactName)
targetPath: $(testsFolder)
- bash: find ${TESTSFOLDER} -name "Prowlarr.Test.Dummy" -exec chmod a+x {} \;
displayName: Make Test Dummy Executable
condition: and(succeeded(), ne(variables['osName'], 'Windows'))
- bash: |
docker run -d --name=postgres14 \
-e POSTGRES_PASSWORD=prowlarr \
-e POSTGRES_USER=prowlarr \
-p 5432:5432/tcp \
postgres:14
displayName: Start postgres
- bash: |
chmod a+x ${TESTSFOLDER}/test.sh
ls -lR ${TESTSFOLDER}
${TESTSFOLDER}/test.sh Linux Unit Test
displayName: Run Tests
- task: PublishTestResults@2
displayName: Publish Test Results
inputs:
testResultsFormat: 'NUnit'
testResultsFiles: '**/TestResult.xml'
testRunTitle: 'LinuxCore Postgres Unit Tests'
failTaskOnFailedTests: true
- stage: Integration
displayName: Integration
@@ -566,7 +510,7 @@ stages:
jobs:
- job: Prepare
pool:
vmImage: ${{ variables.linuxImage }}
vmImage: 'ubuntu-18.04'
steps:
- checkout: none
- task: DownloadPipelineArtifact@2
@@ -586,17 +530,17 @@ stages:
MacCore:
osName: 'Mac'
testName: 'MacCore'
imageName: ${{ variables.macImage }}
imageName: 'macos-10.15'
pattern: 'Prowlarr.*.osx-core-x64.tar.gz'
WindowsCore:
osName: 'Windows'
testName: 'WindowsCore'
imageName: ${{ variables.windowsImage }}
imageName: 'windows-2019'
pattern: 'Prowlarr.*.windows-core-x64.zip'
LinuxCore:
osName: 'Linux'
testName: 'LinuxCore'
imageName: ${{ variables.linuxImage }}
imageName: 'ubuntu-18.04'
pattern: 'Prowlarr.*.linux-core-x64.tar.gz'
pool:
@@ -642,67 +586,6 @@ stages:
failTaskOnFailedTests: true
displayName: Publish Test Results
- job: Integration_LinuxCore_Postgres
displayName: Integration Native LinuxCore with Postgres Database
dependsOn: Prepare
condition: and(succeeded(), eq(dependencies.Prepare.outputs['setVar.backendNotUpdated'], '0'))
variables:
pattern: 'Prowlarr.*.linux-core-x64.tar.gz'
Prowlarr__Postgres__Host: 'localhost'
Prowlarr__Postgres__Port: '5432'
Prowlarr__Postgres__User: 'prowlarr'
Prowlarr__Postgres__Password: 'prowlarr'
pool:
vmImage: 'ubuntu-18.04'
steps:
- task: UseDotNet@2
displayName: 'Install .net core'
inputs:
version: $(dotnetVersion)
- checkout: none
- task: DownloadPipelineArtifact@2
displayName: Download Test Artifact
inputs:
buildType: 'current'
artifactName: 'LinuxCoreTests'
targetPath: $(testsFolder)
- task: DownloadPipelineArtifact@2
displayName: Download Build Artifact
inputs:
buildType: 'current'
artifactName: Packages
itemPattern: '**/$(pattern)'
targetPath: $(Build.ArtifactStagingDirectory)
- task: ExtractFiles@1
inputs:
archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/**/$(pattern)'
destinationFolder: '$(Build.ArtifactStagingDirectory)/bin'
displayName: Extract Package
- bash: |
mkdir -p ./bin/
cp -r -v ${BUILD_ARTIFACTSTAGINGDIRECTORY}/bin/Prowlarr/. ./bin/
displayName: Move Package Contents
- bash: |
docker run -d --name=postgres14 \
-e POSTGRES_PASSWORD=prowlarr \
-e POSTGRES_USER=prowlarr \
-p 5432:5432/tcp \
postgres:14
displayName: Start postgres
- bash: |
chmod a+x ${TESTSFOLDER}/test.sh
${TESTSFOLDER}/test.sh Linux Integration Test
displayName: Run Integration Tests
- task: PublishTestResults@2
inputs:
testResultsFormat: 'NUnit'
testResultsFiles: '**/TestResult.xml'
testRunTitle: 'Integration LinuxCore Postgres Database Integration Tests'
failTaskOnFailedTests: true
displayName: Publish Test Results
- job: Integration_FreeBSD
displayName: Integration Native FreeBSD
dependsOn: Prepare
@@ -762,7 +645,7 @@ stages:
pattern: 'Prowlarr.*.linux-musl-core-x64.tar.gz'
pool:
vmImage: ${{ variables.linuxImage }}
vmImage: 'ubuntu-18.04'
container: $[ variables['containerImage'] ]
@@ -818,17 +701,17 @@ stages:
matrix:
Linux:
osName: 'Linux'
imageName: ${{ variables.linuxImage }}
imageName: 'ubuntu-18.04'
pattern: 'Prowlarr.*.linux-core-x64.tar.gz'
failBuild: true
Mac:
osName: 'Mac'
imageName: ${{ variables.macImage }}
imageName: 'macos-10.15'
pattern: 'Prowlarr.*.osx-core-x64.tar.gz'
failBuild: true
Windows:
osName: 'Windows'
imageName: ${{ variables.windowsImage }}
imageName: 'windows-2019'
pattern: 'Prowlarr.*.windows-core-x64.zip'
failBuild: true
@@ -894,7 +777,7 @@ stages:
jobs:
- job: Prepare
pool:
vmImage: ${{ variables.linuxImage }}
vmImage: 'ubuntu-18.04'
steps:
- checkout: none
- task: DownloadPipelineArtifact@2
@@ -911,10 +794,10 @@ stages:
matrix:
Linux:
osName: 'Linux'
imageName: ${{ variables.linuxImage }}
imageName: 'ubuntu-18.04'
Windows:
osName: 'Windows'
imageName: ${{ variables.windowsImage }}
imageName: 'windows-2019'
pool:
vmImage: $(imageName)
steps:
@@ -949,7 +832,7 @@ stages:
)
pool:
vmImage: ${{ variables.windowsImage }}
vmImage: windows-2019
steps:
- task: UseDotNet@2
@@ -1001,7 +884,7 @@ stages:
EnableAnalyzers: 'false'
pool:
vmImage: ${{ variables.windowsImage }}
vmImage: windows-2019
steps:
- task: UseDotNet@2
@@ -1058,7 +941,7 @@ stages:
- job:
displayName: Discord Notification
pool:
vmImage: ${{ variables.linuxImage }}
vmImage: 'ubuntu-18.04'
steps:
- task: DownloadPipelineArtifact@2
continueOnError: true

View File

@@ -1,6 +1,7 @@
const reload = require('require-nocache')(module);
const cssVarsFiles = [
'./src/Styles/Variables/colors',
'./src/Styles/Variables/dimensions',
'./src/Styles/Variables/fonts',
'./src/Styles/Variables/animations',
@@ -28,4 +29,4 @@ module.exports = {
'postcss-color-function',
'postcss-nested'
]
};
};

View File

@@ -4,19 +4,16 @@ import React from 'react';
import DocumentTitle from 'react-document-title';
import { Provider } from 'react-redux';
import PageConnector from 'Components/Page/PageConnector';
import ApplyTheme from './ApplyTheme';
import AppRoutes from './AppRoutes';
function App({ store, history }) {
return (
<DocumentTitle title={window.Prowlarr.instanceName}>
<DocumentTitle title="Prowlarr">
<Provider store={store}>
<ConnectedRouter history={history}>
<ApplyTheme>
<PageConnector>
<AppRoutes app={App} />
</PageConnector>
</ApplyTheme>
<PageConnector>
<AppRoutes app={App} />
</PageConnector>
</ConnectedRouter>
</Provider>
</DocumentTitle>

View File

@@ -1,49 +0,0 @@
import PropTypes from 'prop-types';
import React, { Fragment, useEffect } from 'react';
import { connect } from 'react-redux';
import { createSelector } from 'reselect';
import themes from 'Styles/Themes';
function createMapStateToProps() {
return createSelector(
(state) => state.settings.ui.item.theme || window.Prowlarr.theme,
(
theme
) => {
return {
theme
};
}
);
}
function ApplyTheme({ theme, children }) {
// Update the CSS Variables
function updateCSSVariables() {
const arrayOfVariableKeys = Object.keys(themes[theme]);
const arrayOfVariableValues = Object.values(themes[theme]);
// Loop through each array key and set the CSS Variables
arrayOfVariableKeys.forEach((cssVariableKey, index) => {
// Based on our snippet from MDN
document.documentElement.style.setProperty(
`--${cssVariableKey}`,
arrayOfVariableValues[index]
);
});
}
// On Component Mount and Component Update
useEffect(() => {
updateCSSVariables(theme);
}, [theme]);
return <Fragment>{children}</Fragment>;
}
ApplyTheme.propTypes = {
theme: PropTypes.string.isRequired,
children: PropTypes.object.isRequired
};
export default connect(createMapStateToProps)(ApplyTheme);

View File

@@ -7,25 +7,25 @@
}
.danger {
border-color: var(--alertDangerBorderColor);
background-color: var(--alertDangerBackgroundColor);
color: var(--alertDangerColor);
border-color: $alertDangerBorderColor;
background-color: $alertDangerBackgroundColor;
color: $alertDangerColor;
}
.info {
border-color: var(--alertInfoBorderColor);
background-color: var(--alertInfoBackgroundColor);
color: var(--alertInfoColor);
border-color: $alertInfoBorderColor;
background-color: $alertInfoBackgroundColor;
color: $alertInfoColor;
}
.success {
border-color: var(--alertSuccessBorderColor);
background-color: var(--alertSuccessBackgroundColor);
color: var(--alertSuccessColor);
border-color: $alertSuccessBorderColor;
background-color: $alertSuccessBackgroundColor;
color: $alertSuccessColor;
}
.warning {
border-color: var(--alertWarningBorderColor);
background-color: var(--alertWarningBackgroundColor);
color: var(--alertWarningColor);
border-color: $alertWarningBorderColor;
background-color: $alertWarningBackgroundColor;
color: $alertWarningColor;
}

View File

@@ -3,9 +3,9 @@
margin: 10px;
padding: 10px;
border-radius: 3px;
background-color: var(--cardBackgroundColor);
box-shadow: 0 0 10px 1px var(--cardShadowColor);
color: var(--defaultColor);
background-color: $white;
box-shadow: 0 0 10px 1px $cardShadowColor;
color: $defaultColor;
}
.underlay {

View File

@@ -2,16 +2,15 @@ import Chart from 'chart.js/auto';
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import { kinds } from 'Helpers/Props';
import colors from 'Styles/Variables/colors';
function getColors(kind) {
const style = getComputedStyle(document.body);
if (kind === kinds.WARNING) {
return style.getPropertyValue('--failedColors').split(',');
return colors.failedColors.reverse();
}
return style.getPropertyValue('--chartColors').split(',');
return colors.chartColors;
}
class BarChart extends Component {

View File

@@ -1,12 +1,7 @@
import Chart from 'chart.js/auto';
import PropTypes from 'prop-types';
import React, { Component } from 'react';
function getColors(kind) {
const style = getComputedStyle(document.body);
return style.getPropertyValue('--chartColorsDiversified').split(',');
}
import colors from 'Styles/Variables/colors';
class DoughnutChart extends Component {
constructor(props) {
@@ -34,7 +29,7 @@ class DoughnutChart extends Component {
datasets: [{
label: this.props.title,
data: this.props.data.map((d) => d.value),
backgroundColor: getColors()
backgroundColor: colors.chartColors
}]
}
});

View File

@@ -1,12 +1,7 @@
import Chart from 'chart.js/auto';
import PropTypes from 'prop-types';
import React, { Component } from 'react';
function getColors(index) {
const style = getComputedStyle(document.body);
return style.getPropertyValue('--chartColorsDiversified').split(',')[index];
}
import colors from 'Styles/Variables/colors';
class StackedBarChart extends Component {
constructor(props) {
@@ -46,7 +41,7 @@ class StackedBarChart extends Component {
return {
label: d.label,
data: d.data,
backgroundColor: getColors(index)
backgroundColor: colors.chartColors[index]
};
})
}
@@ -59,7 +54,7 @@ class StackedBarChart extends Component {
return {
label: d.label,
data: d.data,
backgroundColor: getColors(index)
backgroundColor: colors.chartColors[index]
};
});
this.myChart.update();

View File

@@ -13,7 +13,7 @@
width: 100%;
border: 0;
border-bottom: 1px solid #e5e5e5;
color: var(--textColor);
color: #3a3f51;
font-size: 21px;
line-height: inherit;
}

View File

@@ -13,7 +13,7 @@
}
.faqLink {
color: var(--alertWarningColor);
color: $alertWarningColor;
font-weight: bold;
}

View File

@@ -160,7 +160,6 @@ class DateFilterBuilderRowValue extends Component {
<TextInput
name={NAME}
value={filterValue}
type="date"
placeholder="yyyy-mm-dd"
onChange={this.onValueChange}
/>

View File

@@ -3,7 +3,7 @@
margin-bottom: 5px;
&:hover {
background-color: var(--tableRowHoverBackgroundColor);
background-color: $tableRowHoverBackgroundColor;
}
}

View File

@@ -17,5 +17,5 @@
.or {
margin: 0 3px;
color: var(--themeDarkColor);
color: $themeDarkColor;
}

View File

@@ -4,7 +4,7 @@
padding: 5px;
&:hover {
background-color: var(--tableRowHoverBackgroundColor);
background-color: $tableRowHoverBackgroundColor;
}
}

View File

@@ -27,10 +27,10 @@
overflow-y: auto;
max-height: 200px;
width: 100%;
border: 1px solid var(--inputBorderColor);
border: 1px solid $inputBorderColor;
border-radius: 4px;
background-color: var(--inputBackgroundColor);
box-shadow: inset 0 1px 1px var(--inputBoxShadowColor);
background-color: $white;
box-shadow: inset 0 1px 1px $inputBoxShadowColor;
}
}
@@ -46,5 +46,5 @@
}
.suggestionHighlighted {
background-color: var(--menuItemHoverBackgroundColor);
background-color: $menuItemHoverBackgroundColor;
}

View File

@@ -32,21 +32,21 @@
height: 20px;
border: 1px solid #ccc;
border-radius: 2px;
background-color: var(--white);
color: var(--white);
background-color: $white;
color: $white;
text-align: center;
line-height: 20px;
}
.checkbox:focus + .input {
outline: 0;
border-color: var(--inputFocusBorderColor);
box-shadow: inset 0 1px 1px var(--inputBoxShadowColor), 0 0 8px var(--inputFocusBoxShadowColor);
border-color: $inputFocusBorderColor;
box-shadow: inset 0 1px 1px $inputBoxShadowColor, 0 0 8px $inputFocusBoxShadowColor;
}
.dangerIsChecked {
border-color: var(--dangerColor);
background-color: var(--dangerColor);
border-color: $dangerColor;
background-color: $dangerColor;
&.isDisabled {
opacity: 0.7;
@@ -54,8 +54,8 @@
}
.primaryIsChecked {
border-color: var(--primaryColor);
background-color: var(--primaryColor);
border-color: $primaryColor;
background-color: $primaryColor;
&.isDisabled {
opacity: 0.7;
@@ -63,8 +63,8 @@
}
.successIsChecked {
border-color: var(--successColor);
background-color: var(--successColor);
border-color: $successColor;
background-color: $successColor;
&.isDisabled {
opacity: 0.7;
@@ -72,8 +72,8 @@
}
.warningIsChecked {
border-color: var(--warningColor);
background-color: var(--warningColor);
border-color: $warningColor;
background-color: $warningColor;
&.isDisabled {
opacity: 0.7;
@@ -82,15 +82,15 @@
.isNotChecked {
&.isDisabled {
border-color: var(--disabledCheckInputColor);
background-color: var(--disabledCheckInputColor);
border-color: $disabledCheckInputColor;
background-color: $disabledCheckInputColor;
opacity: 0.7;
}
}
.isIndeterminate {
border-color: var(--gray);
background-color: var(--gray);
border-color: $gray;
background-color: $gray;
}
.helpText {

View File

@@ -39,7 +39,7 @@
.dropdownArrowContainerDisabled {
composes: dropdownArrowContainer;
color: var(--disabledInputColor);
color: $disabledInputColor;
}
.optionsContainer {
@@ -50,9 +50,9 @@
.options {
composes: scroller from '~Components/Scroller/Scroller.css';
border: 1px solid var(--inputBorderColor);
border: 1px solid $inputBorderColor;
border-radius: 4px;
background-color: var(--inputBackgroundColor);
background-color: $white;
}
.optionsModal {
@@ -76,9 +76,9 @@
.optionsModalScroller {
composes: scroller from '~Components/Scroller/Scroller.css';
border: 1px solid var(--inputBorderColor);
border: 1px solid $inputBorderColor;
border-radius: 4px;
background-color: var(--inputBackgroundColor);
background-color: $white;
}
.loading {
@@ -90,7 +90,7 @@
display: flex;
justify-content: flex-end;
height: 40px;
border-bottom: 1px solid var(--borderColor);
border-bottom: 1px solid $borderColor;
}
.mobileCloseButton {
@@ -100,6 +100,6 @@
line-height: 40px;
&:hover {
color: var(--modalCloseButtonHoverColor);
color: $modalCloseButtonHoverColor;
}
}

View File

@@ -7,7 +7,7 @@
cursor: default;
&:hover {
background-color: var(--inputHoverBackgroundColor);
background-color: #f8f8f8;
}
}
@@ -24,17 +24,17 @@
}
.isSelected {
background-color: var(--inputSelectedBackgroundColor);
background-color: #e2e2e2;
&:hover {
background-color: var(--inputSelectedBackgroundColor);
background-color: #e2e2e2;
}
&.isMobile {
background-color: inherit;
.iconContainer {
color: var(--primaryColor);
color: $primaryColor;
}
}
}
@@ -49,7 +49,7 @@
.isMobile {
height: 50px;
border-bottom: 1px solid var(--borderColor);
border-bottom: 1px solid $borderColor;
&:last-child {
border: none;

View File

@@ -3,5 +3,5 @@
}
.isDisabled {
color: var(--disabledInputColor);
color: $disabledInputColor;
}

View File

@@ -40,7 +40,7 @@
}
.pendingChangesIcon {
color: var(--warningColor);
color: $warningColor;
font-size: 20px;
line-height: 35px;
}

View File

@@ -1,14 +1,14 @@
.helpText {
margin-top: 5px;
color: var(--helpTextColor);
color: $helpTextColor;
line-height: 20px;
}
.isError {
color: var(--dangerColor);
color: $dangerColor;
.link {
color: var(--dangerColor);
color: $dangerColor;
&:hover {
color: #e01313;
@@ -17,10 +17,10 @@
}
.isWarning {
color: var(--warningColor);
color: $warningColor;
.link {
color: var(--warningColor);
color: $warningColor;
&:hover {
color: #e36c00;

View File

@@ -7,11 +7,11 @@
}
.hasError {
color: var(--dangerColor);
color: $dangerColor;
}
.isAdvanced {
color: var(--advancedFormLabelColor);
color: $advancedFormLabelColor;
}
@media only screen and (max-width: $breakpointLarge) {

View File

@@ -18,6 +18,6 @@
@add-mixin truncate;
margin-left: 15px;
color: var(--darkGray);
color: $darkGray;
font-size: $smallFontSize;
}

View File

@@ -18,7 +18,7 @@
flex: 1 10 0;
margin-left: 15px;
color: var(--gray);
color: $gray;
text-align: right;
font-size: $smallFontSize;
}

View File

@@ -2,27 +2,26 @@
padding: 6px 16px;
width: 100%;
height: 35px;
border: 1px solid var(--inputBorderColor);
border: 1px solid $inputBorderColor;
border-radius: 4px;
background-color: var(--inputBackgroundColor);
box-shadow: inset 0 1px 1px var(--inputBoxShadowColor);
color: var(--textColor);
background-color: $white;
box-shadow: inset 0 1px 1px $inputBoxShadowColor;
&:focus {
outline: 0;
border-color: var(--inputFocusBorderColor);
box-shadow: inset 0 1px 1px var(--inputBoxShadowColor), 0 0 8px var(--inputFocusBoxShadowColor);
border-color: $inputFocusBorderColor;
box-shadow: inset 0 1px 1px $inputBoxShadowColor, 0 0 8px $inputFocusBoxShadowColor;
}
}
.hasError {
border-color: var(--inputErrorBorderColor);
box-shadow: inset 0 1px 1px var(--inputBoxShadowColor), 0 0 8px var(--inputErrorBoxShadowColor);
border-color: $inputErrorBorderColor;
box-shadow: inset 0 1px 1px $inputBoxShadowColor, 0 0 8px $inputErrorBoxShadowColor;
}
.hasWarning {
border-color: var(--inputWarningBorderColor);
box-shadow: inset 0 1px 1px var(--inputBoxShadowColor), 0 0 8px var(--inputWarningBoxShadowColor);
border-color: $inputWarningBorderColor;
box-shadow: inset 0 1px 1px $inputBoxShadowColor, 0 0 8px $inputWarningBoxShadowColor;
}
.hasButton {

View File

@@ -7,8 +7,8 @@
&.isFocused {
outline: 0;
border-color: var(--inputFocusBorderColor);
box-shadow: inset 0 1px 1px var(--inputBoxShadowColor), 0 0 8px var(--inputFocusBoxShadowColor);
border-color: $inputFocusBorderColor;
box-shadow: inset 0 1px 1px $inputBoxShadowColor, 0 0 8px $inputFocusBoxShadowColor;
}
}

View File

@@ -1,7 +1,7 @@
.itemContainer {
display: flex;
margin-bottom: 3px;
border-bottom: 1px solid var(--inputBorderColor);
border-bottom: 1px solid $inputBorderColor;
&:last-child {
margin-bottom: 0;

View File

@@ -7,8 +7,8 @@
&.isFocused {
outline: 0;
border-color: var(--inputFocusBorderColor);
box-shadow: inset 0 1px 1px var(--inputBoxShadowColor), 0 0 8px var(--inputFocusBoxShadowColor);
border-color: $inputFocusBorderColor;
box-shadow: inset 0 1px 1px $inputBoxShadowColor, 0 0 8px $inputFocusBoxShadowColor;
}
}
@@ -20,6 +20,4 @@
width: 0%;
height: 31px;
border: none;
background-color: var(--inputBackground);
color: var(--textColor);
}

View File

@@ -7,7 +7,7 @@
}
.readOnly {
background-color: var(--inputReadOnlyBackgroundColor);
background-color: #eee;
}
.hasError {

View File

@@ -3,7 +3,7 @@
}
.readOnly {
background-color: var(--inputReadOnlyBackgroundColor);
background-color: #eee;
}
.hasError {

View File

@@ -1,5 +1,5 @@
.danger {
color: var(--dangerColor);
color: $dangerColor;
}
.default {
@@ -7,21 +7,25 @@
}
.disabled {
color: var(--disabledColor);
color: $disabledColor;
}
.info {
color: var(--infoColor);
color: $infoColor;
}
.pink {
color: $pink;
}
.success {
color: var(--successColor);
color: $successColor;
}
.warning {
color: var(--warningColor);
color: $warningColor;
}
.purple {
color: var(--purple);
color: $purple;
}

View File

@@ -1,7 +1,7 @@
.label {
display: inline-block;
margin: 2px;
color: var(--white);
color: $white;
/** text-align: center; **/
white-space: nowrap;
line-height: 1;
@@ -10,7 +10,7 @@
.title {
margin-bottom: 2px;
color: var(--helpTextColor);
color: $helpTextColor;
font-size: 10px;
}
@@ -36,5 +36,5 @@
/** Outline **/
.outline {
background-color: var(--white);
background-color: $white;
}

View File

@@ -3,7 +3,7 @@
margin: 2px;
border: 1px solid;
border-radius: 2px;
color: var(--white);
color: $white;
text-align: center;
white-space: nowrap;
line-height: 1;
@@ -13,77 +13,86 @@
/** Kinds **/
.danger {
border-color: var(--dangerColor);
background-color: var(--dangerColor);
border-color: $dangerColor;
background-color: $dangerColor;
&.outline {
color: var(--dangerColor);
color: $dangerColor;
}
}
.default {
border-color: var(--themeLightColor);
background-color: var(--themeLightColor);
border-color: $themeLightColor;
background-color: $themeLightColor;
&.outline {
color: var(--themeLightColor);
color: $themeLightColor;
}
}
.disabled {
border-color: var(--disabledColor);
background-color: var(--disabledColor);
border-color: $disabledColor;
background-color: $disabledColor;
&.outline {
color: var(--disabledColor);
color: $disabledColor;
}
}
.info {
border-color: var(--infoColor);
background-color: var(--infoColor);
border-color: $infoColor;
background-color: $infoColor;
&.outline {
color: var(--infoColor);
color: $infoColor;
}
}
.inverse {
border-color: var(--inverseLabelColor);
background-color: var(--inverseLabelColor);
color: var(--inverseLabelTextColor);
border-color: $lightGray;
background-color: $lightGray;
color: $defaultColor;
&.outline {
background-color: var(--inverseLabelTextColor) !important;
color: var(--inverseLabelColor);
background-color: $defaultColor !important;
color: $lightGray;
}
}
.primary {
border-color: var(--primaryColor);
background-color: var(--primaryColor);
border-color: $primaryColor;
background-color: $primaryColor;
&.outline {
color: var(--primaryColor);
color: $primaryColor;
}
}
.success {
border-color: var(--successColor);
background-color: var(--successColor);
border-color: $successColor;
background-color: $successColor;
color: #eee;
&.outline {
color: var(--successColor);
color: $successColor;
}
}
.warning {
border-color: var(--warningColor);
background-color: var(--warningColor);
border-color: $warningColor;
background-color: $warningColor;
&.outline {
color: var(--warningColor);
color: $warningColor;
}
}
.queue {
border-color: $queueColor;
background-color: $queueColor;
&.outline {
color: $queueColor;
}
}
@@ -108,5 +117,5 @@
/** Outline **/
.outline {
background-color: var(--white);
background-color: $white;
}

View File

@@ -19,62 +19,62 @@
}
.danger {
border-color: var(--dangerBorderColor);
background-color: var(--dangerBackgroundColor);
color: var(--white);
border-color: $dangerBorderColor;
background-color: $dangerBackgroundColor;
color: $white;
&:hover {
border-color: var(--dangerHoverBorderColor);
background-color: var(--dangerHoverBackgroundColor);
color: var(--white);
border-color: $dangerHoverBorderColor;
background-color: $dangerHoverBackgroundColor;
color: $white;
}
}
.default {
border-color: var(--defaultBorderColor);
background-color: var(--defaultButtonBackgroundColor);
color: var(--defaultButtonTextColor);
border-color: $defaultBorderColor;
background-color: $defaultBackgroundColor;
color: $defaultColor;
&:hover {
border-color: var(--defaultHoverBorderColor);
background-color: var(--defaultHoverBackgroundColor);
color: var(--defaultButtonTextColor);
border-color: $defaultHoverBorderColor;
background-color: $defaultHoverBackgroundColor;
color: $defaultColor;
}
}
.primary {
border-color: var(--primaryBorderColor);
background-color: var(--primaryBackgroundColor);
color: var(--white);
border-color: $primaryBorderColor;
background-color: $primaryBackgroundColor;
color: $white;
&:hover {
border-color: var(--primaryHoverBorderColor);
background-color: var(--primaryHoverBackgroundColor);
color: var(--white);
border-color: $primaryHoverBorderColor;
background-color: $primaryHoverBackgroundColor;
color: $white;
}
}
.success {
border-color: var(--successBorderColor);
background-color: var(--successBackgroundColor);
color: var(--white);
border-color: $successBorderColor;
background-color: $successBackgroundColor;
color: $white;
&:hover {
border-color: var(--successHoverBorderColor);
background-color: var(--successHoverBackgroundColor);
color: var(--white);
border-color: $successHoverBorderColor;
background-color: $successHoverBackgroundColor;
color: $white;
}
}
.warning {
border-color: var(--warningBorderColor);
background-color: var(--warningBackgroundColor);
color: var(--white);
border-color: $warningBorderColor;
background-color: $warningBackgroundColor;
color: $white;
&:hover {
border-color: var(--warningHoverBorderColor);
background-color: var(--warningHoverBackgroundColor);
color: var(--white);
border-color: $warningHoverBorderColor;
background-color: $warningHoverBackgroundColor;
color: $white;
}
}

View File

@@ -12,10 +12,10 @@
&:hover {
border: none;
background-color: inherit;
color: var(--iconButtonHoverColor);
color: $iconButtonHoverColor;
}
&.isDisabled {
color: var(--iconButtonDisabledColor);
color: $iconButtonDisabledColor;
}
}

View File

@@ -15,10 +15,10 @@
}
.to {
color: var(--linkColor);
color: $linkColor;
&:hover {
color: var(--linkHoverColor);
color: $linkHoverColor;
text-decoration: underline;
}
}

View File

@@ -26,7 +26,7 @@
.ripple {
position: absolute;
border: 2px solid var(--themeDarkColor);
border: 2px solid #3a3f51;
border-radius: 100%;
animation: rippleContainer 1.25s 0s infinite cubic-bezier(0.21, 0.53, 0.56, 0.8);
animation-fill-mode: both;

View File

@@ -10,12 +10,12 @@
}
&:hover {
color: var(--toobarButtonHoverColor);
color: $toobarButtonHoverColor;
}
}
.isDisabled {
color: var(--disabledColor);
color: $disabledColor;
pointer-events: none;
}

View File

@@ -2,7 +2,7 @@
z-index: $popperZIndex;
display: flex;
flex-direction: column;
background-color: var(--toolbarMenuItemBackgroundColor);
background-color: $toolbarMenuItemBackgroundColor;
line-height: 20px;
}

View File

@@ -5,19 +5,19 @@
padding: 10px 20px;
min-width: 150px;
max-width: 250px;
background-color: var(--toolbarMenuItemBackgroundColor);
color: var(--menuItemColor);
background-color: $toolbarMenuItemBackgroundColor;
color: $menuItemColor;
line-height: 20px;
&:hover,
&:focus {
background-color: var(--toolbarMenuItemHoverBackgroundColor);
color: var(--menuItemHoverColor);
background-color: $toolbarMenuItemHoverBackgroundColor;
color: $menuItemHoverColor;
text-decoration: none;
}
}
.isDisabled {
color: var(--disabledColor);
color: $disabledColor;
pointer-events: none;
}

View File

@@ -2,5 +2,5 @@
overflow: hidden;
min-height: 1px;
height: 1px;
background-color: var(--themeDarkColor);
background-color: $themeDarkColor;
}

View File

@@ -12,7 +12,7 @@
justify-content: center;
width: 100%;
height: 100%;
background-color: var(--modalBackdropBackgroundColor);
background-color: $modalBackdropBackgroundColor;
opacity: 1;
}

View File

@@ -4,7 +4,7 @@
flex-direction: column;
flex-grow: 1;
width: 100%;
background-color: var(--modalBackgroundColor);
background-color: $modalBackgroundColor;
}
.closeButton {
@@ -18,6 +18,6 @@
line-height: 60px;
&:hover {
color: var(--modalCloseButtonHoverColor);
color: $modalCloseButtonHoverColor;
}
}

View File

@@ -4,7 +4,7 @@
justify-content: flex-end;
flex-shrink: 0;
padding: 15px 30px;
border-top: 1px solid var(--borderColor);
border-top: 1px solid $borderColor;
a,
button {

View File

@@ -3,6 +3,6 @@
flex-shrink: 0;
padding: 15px 50px 15px 30px;
border-bottom: 1px solid var(--borderColor);
border-bottom: 1px solid $borderColor;
font-size: 18px;
}

View File

@@ -12,22 +12,22 @@
.ripple {
composes: ripple from '~Components/Loading/LoadingIndicator.css';
border: 1px solid var(--toolbarColor);
border: 1px solid $toolbarColor;
}
.input {
margin-left: 8px;
width: 200px;
border: none;
border-bottom: solid 1px var(--white);
border-bottom: solid 1px $white;
border-radius: 0;
background-color: transparent;
box-shadow: none;
color: var(--white);
color: $white;
transition: border 0.3s ease-out;
&::placeholder {
color: var(--white);
color: $white;
transition: color 0.3s ease-out;
}
@@ -60,13 +60,13 @@
overflow-y: auto;
min-width: 100%;
max-height: 230px;
border: 1px solid var(--themeDarkColor);
border: 1px solid $themeDarkColor;
border-radius: 4px;
border-top-left-radius: 0;
border-top-right-radius: 0;
background-color: var(--themeDarkColor);
box-shadow: inset 0 1px 1px var(--inputBoxShadowColor);
color: var(--menuItemColor);
background-color: $themeDarkColor;
box-shadow: inset 0 1px 1px $inputBoxShadowColor;
color: $menuItemColor;
}
}
@@ -82,12 +82,12 @@
}
.highlighted {
background-color: var(--themeLightColor);
background-color: $themeLightColor;
}
.sectionTitle {
padding: 5px 8px;
color: var(--disabledColor);
color: $disabledColor;
}
.addNewMovieSuggestion {

View File

@@ -21,7 +21,7 @@
.alternateTitle {
composes: title;
color: var(--disabledColor);
color: $disabledColor;
font-size: $smallFontSize;
}

View File

@@ -8,8 +8,8 @@
.key {
padding: 2px 4px;
border-radius: 3px;
background-color: var(--defaultColor);
background-color: $defaultColor;
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
color: var(--white);
color: $white;
font-size: 16px;
}

View File

@@ -4,9 +4,9 @@
align-items: center;
flex: 0 0 auto;
height: $headerHeight;
background-color: var(--pageHeaderBackgroundColor);
background-color: $prowlarrOrange;
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
color: var(--white);
color: $white;
}
.logoContainer {
@@ -80,7 +80,7 @@
align-items: center;
justify-content: center;
width: 30px;
color: var(--themeRed);
color: $themeRed;
text-align: center;
line-height: 60px;

View File

@@ -74,7 +74,7 @@ class PageHeader extends Component {
<IconButton
className={styles.donate}
name={icons.HEART}
to="https://prowlarr.com/donate"
to="https://opencollective.com/prowlarr"
size={14}
/>
<IconButton

View File

@@ -5,7 +5,7 @@
text-align: center;
&:hover {
color: var(--toobarButtonHoverColor);
color: $toobarButtonHoverColor;
}
}

View File

@@ -1,7 +1,5 @@
.page {
composes: page from '~./Page.css';
background-color: var(--pageBackground);
}
.logoFull {

View File

@@ -14,7 +14,7 @@ function PageContent(props) {
return (
<ErrorBoundary errorComponent={PageContentError}>
<DocumentTitle title={title ? `${title} - ${window.Prowlarr.instanceName}` : window.Prowlarr.instanceName}>
<DocumentTitle title={title ? `${title} - Prowlarr` : 'Prowlarr'}>
<div className={className}>
{children}
</div>

View File

@@ -2,7 +2,7 @@
display: flex;
flex: 0 0 auto;
padding: 20px;
background-color: var(--pageFooterBackground);
background-color: #f1f1f1;
}
@media only screen and (max-width: $breakpointSmall) {

View File

@@ -1,6 +1,6 @@
.jumpBarItem {
flex: 1 1 $jumpBarItemHeight;
border-bottom: 1px solid var(--borderColor);
border-bottom: 1px solid $borderColor;
text-align: center;
font-weight: bold;

View File

@@ -1,6 +1,6 @@
.message {
display: flex;
border-left: 3px solid var(--infoColor);
border-left: 3px solid $infoColor;
}
.iconContainer,
@@ -9,7 +9,7 @@
justify-content: center;
flex-direction: column;
padding: 2px 0;
color: var(--sidebarColor);
color: $sidebarColor;
}
.iconContainer {
@@ -26,17 +26,17 @@
/* Types */
.error {
border-left-color: var(--dangerColor);
border-left-color: $dangerColor;
}
.info {
border-left-color: var(--infoColor);
border-left-color: $infoColor;
}
.success {
border-left-color: var(--successColor);
border-left-color: $successColor;
}
.warning {
border-left-color: var(--warningColor);
border-left-color: $warningColor;
}

View File

@@ -2,7 +2,7 @@
flex: 0 0 $sidebarWidth;
overflow: hidden;
width: $sidebarWidth;
background-color: var(--sidebarBackgroundColor);
background-color: $sidebarBackgroundColor;
transition: transform 300ms ease-in-out;
transform: translateX(0);
}
@@ -11,8 +11,8 @@
display: flex;
flex-direction: column;
overflow: hidden;
background-color: var(--sidebarBackgroundColor);
color: var(--white);
background-color: $sidebarBackgroundColor;
color: $white;
}
@media only screen and (max-width: $breakpointSmall) {

View File

@@ -1,21 +1,21 @@
.item {
border-left: 3px solid transparent;
color: var(--sidebarColor);
color: $sidebarColor;
transition: border-left 0.3s ease-in-out;
}
.isActiveItem {
border-left: 3px solid var(--themeBlue);
border-left: 3px solid $themeBlue;
}
.link {
display: block;
padding: 12px 24px;
color: var(--sidebarColor);
color: $sidebarColor;
&:hover,
&:focus {
color: var(--themeBlue);
color: $themeBlue;
text-decoration: none;
}
}
@@ -27,11 +27,11 @@
}
.isActiveLink {
color: var(--themeBlue);
color: $themeBlue;
}
.isActiveParentLink {
background-color: var(--sidebarActiveBackgroundColor);
background-color: $sidebarActiveBackgroundColor;
}
.iconContainer {

View File

@@ -4,8 +4,8 @@
flex: 0 0 auto;
padding: 0 20px;
height: $toolbarHeight;
background-color: var(--toolbarBackgroundColor);
color: var(--toolbarColor);
background-color: $toolbarBackgroundColor;
color: $toolbarColor;
line-height: 60px;
}

View File

@@ -6,16 +6,16 @@
text-align: center;
&:hover {
color: var(--toobarButtonHoverColor);
color: $toobarButtonHoverColor;
}
&.isDisabled {
color: var(--disabledColor);
color: $disabledColor;
}
}
.isDisabled {
color: var(--disabledColor);
color: $disabledColor;
}
.labelContainer {
@@ -27,7 +27,7 @@
.label {
padding: 0 3px;
color: var(--toolbarLabelColor);
color: $toolbarLabelColor;
font-size: $extraSmallFontSize;
line-height: calc($extraSmallFontSize + 1px);
}

View File

@@ -14,13 +14,13 @@
width: 0;
height: 100%;
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
color: var(--white);
color: $white;
transition: width 0.6s ease;
}
.frontTextContainer {
z-index: 1;
color: var(--white);
color: $white;
}
.backTextContainer,
@@ -42,35 +42,39 @@
}
.primary {
background-color: var(--primaryColor);
background-color: $primaryColor;
}
.danger {
background-color: var(--dangerColor);
background-color: $dangerColor;
&:global(.colorImpaired) {
background: repeating-linear-gradient(90deg, color(var(--dangerColor) shade(5%)), color(var(--dangerColor) shade(5%)) 5px, color(var(--dangerColor) shade(15%)) 5px, color(var(--dangerColor) shade(15%)) 10px);
background: repeating-linear-gradient(90deg, color($dangerColor shade(5%)), color($dangerColor shade(5%)) 5px, color($dangerColor shade(15%)) 5px, color($dangerColor shade(15%)) 10px);
}
}
.success {
background-color: var(--successColor);
background-color: $successColor;
}
.purple {
background-color: var(--purple);
background-color: $purple;
}
.warning {
background-color: var(--warningColor);
background-color: $warningColor;
&:global(.colorImpaired) {
background: repeating-linear-gradient(45deg, var(--warningColor), var(--warningColor) 5px, color(var(--warningColor) tint(15%)) 5px, color(var(--warningColor) tint(15%)) 10px);
background: repeating-linear-gradient(45deg, $warningColor, $warningColor 5px, color($warningColor tint(15%)) 5px, color($warningColor tint(15%)) 10px);
}
}
.info {
background-color: var(--infoColor);
background-color: $infoColor;
}
.queue {
background-color: $queueColor;
}
.small {

View File

@@ -10,10 +10,10 @@
min-height: 100px;
border: 1px solid transparent;
border-radius: 5px;
background-color: var(--scrollbarBackgroundColor);
background-color: $scrollbarBackgroundColor;
background-clip: padding-box;
&:hover {
background-color: var(--scrollbarHoverBackgroundColor);
background-color: $scrollbarHoverBackgroundColor;
}
}

View File

@@ -4,7 +4,7 @@
width: 100%;
border: 1px solid #aaa;
border-radius: 4px;
background: var(--inputBackgroundColor);
background: #fafafa;
}
.checkContainer {

View File

@@ -46,11 +46,11 @@
}
.records {
color: var(--disabledColor);
color: $disabledColor;
}
.disabledPageButton {
color: var(--disabledColor);
color: $disabledColor;
}
.pageSelect {

View File

@@ -2,6 +2,6 @@
transition: background-color 500ms;
&:hover {
background-color: var(--tableRowHoverBackgroundColor);
background-color: $tableRowHoverBackgroundColor;
}
}

View File

@@ -3,7 +3,7 @@
transition: background-color 500ms;
&:hover {
background-color: var(--tableRowHoverBackgroundColor);
background-color: #fafbfc;
}
}

View File

@@ -1,7 +1,7 @@
.title {
padding: 10px 20px;
border-bottom: 1px solid var(--popoverTitleBorderColor);
background-color: var(--popoverTitleBackgroundColor);
border-bottom: 1px solid $popoverTitleBorderColor;
background-color: $popoverTitleBackgroundColor;
font-size: 16px;
}

View File

@@ -7,13 +7,13 @@
position: relative;
&.default {
background-color: var(--popoverBodyBackgroundColor);
box-shadow: 0 5px 10px var(--popoverShadowColor);
background-color: $white;
box-shadow: 0 5px 10px $popoverShadowColor;
}
&.inverse {
background-color: var(--themeDarkColor);
box-shadow: 0 5px 10px var(--popoverShadowInverseColor);
background-color: $themeDarkColor;
box-shadow: 0 5px 10px $popoverShadowInverseColor;
}
}
@@ -49,20 +49,20 @@
content: ' ';
&.default {
border-top-color: var(--popoverArrowBorderColor);
border-top-color: $popoverArrowBorderColor;
}
&.inverse {
border-top-color: var(--popoverArrowBorderInverseColor);
border-top-color: $popoverArrowBorderInverseColor;
}
}
&.default {
border-top-color: var(--popoverArrowBorderColor);
border-top-color: $popoverArrowBorderColor;
}
&.inverse {
border-top-color: var(--popoverArrowBorderInverseColor);
border-top-color: $popoverArrowBorderInverseColor;
}
}
@@ -78,20 +78,20 @@
content: ' ';
&.default {
border-right-color: var(--popoverArrowBorderColor);
border-right-color: $popoverArrowBorderColor;
}
&.inverse {
border-right-color: var(--popoverArrowBorderInverseColor);
border-right-color: $popoverArrowBorderInverseColor;
}
}
&.default {
border-right-color: var(--popoverArrowBorderColor);
border-right-color: $popoverArrowBorderColor;
}
&.inverse {
border-right-color: var(--popoverArrowBorderInverseColor);
border-right-color: $popoverArrowBorderInverseColor;
}
}
@@ -107,20 +107,20 @@
content: ' ';
&.default {
border-bottom-color: var(--popoverArrowBorderColor);
border-bottom-color: $popoverArrowBorderColor;
}
&.inverse {
border-bottom-color: var(--popoverArrowBorderInverseColor);
border-bottom-color: $popoverArrowBorderInverseColor;
}
}
&.default {
border-bottom-color: var(--popoverArrowBorderColor);
border-bottom-color: $popoverArrowBorderColor;
}
&.inverse {
border-bottom-color: var(--popoverArrowBorderInverseColor);
border-bottom-color: $popoverArrowBorderInverseColor;
}
}
@@ -136,20 +136,20 @@
content: ' ';
&.default {
border-left-color: var(--popoverArrowBorderColor);
border-left-color: $popoverArrowBorderColor;
}
&.inverse {
border-left-color: var(--popoverArrowBorderInverseColor);
border-left-color: $popoverArrowBorderInverseColor;
}
}
&.default {
border-left-color: var(--popoverArrowBorderColor);
border-left-color: $popoverArrowBorderColor;
}
&.inverse {
border-left-color: var(--popoverArrowBorderInverseColor);
border-left-color: $popoverArrowBorderInverseColor;
}
}

View File

@@ -3,6 +3,7 @@ export const DEFAULT = 'default';
export const DISABLED = 'disabled';
export const INFO = 'info';
export const INVERSE = 'inverse';
export const PINK = 'pink';
export const PRIMARY = 'primary';
export const PURPLE = 'purple';
export const SUCCESS = 'success';
@@ -15,6 +16,7 @@ export const all = [
DISABLED,
INFO,
INVERSE,
PINK,
PRIMARY,
PURPLE,
SUCCESS,

View File

@@ -3,9 +3,9 @@
align-items: stretch;
overflow: hidden;
margin: 2px 4px;
border: 1px solid var(--borderColor);
border: 1px solid $borderColor;
border-radius: 4px;
background-color: var(--defaultHoverBackgroundColor);
background-color: #eee;
cursor: default;
}
@@ -16,7 +16,7 @@
.value {
padding: 0 4px;
background-color: var(--defaultButtonBackgroundColor);
color: var(--defaultColor);
background-color: $white;
color: $defaultColor;
white-space: nowrap;
}

View File

@@ -112,7 +112,7 @@ function EditIndexerModalContent(props) {
</FormGroup>
<FormGroup>
<FormLabel>{translate('SyncProfile')}</FormLabel>
<FormLabel>{translate('AppProfile')}</FormLabel>
<FormInputGroup
type={inputTypes.APP_PROFILE_SELECT}

View File

@@ -9,5 +9,5 @@
.path {
margin-left: 5px;
color: var(--dangerColor);
color: $dangerColor;
}

View File

@@ -133,7 +133,7 @@ class IndexerEditorFooter extends Component {
<div className={styles.inputContainer}>
<IndexerEditorFooterLabel
label={translate('SyncProfile')}
label={translate('AppProfile')}
isSaving={isSaving && appProfileId !== NO_CHANGE}
/>

View File

@@ -21,28 +21,28 @@
.disabled {
composes: legendItemColor;
background-color: var(--darkGray);
background-color: $darkGray;
}
.enabled {
composes: legendItemColor;
background-color: var(--successColor);
background-color: $successColor;
}
.redirected {
composes: legendItemColor;
background-color: var(--infoColor);
background-color: $infoColor;
}
.error {
composes: legendItemColor;
background-color: var(--dangerColor);
background-color: $dangerColor;
&:global(.colorImpaired) {
background: repeating-linear-gradient(90deg, color(var(--dangerColor) shade(5%)), color(var(--dangerColor) shade(5%)) 5px, color(var(--dangerColor) shade(15%)) 5px, color(var(--dangerColor) shade(15%)) 10px);
background: repeating-linear-gradient(90deg, color($dangerColor shade(5%)), color($dangerColor shade(5%)) 5px, color($dangerColor shade(15%)) 5px, color($dangerColor shade(15%)) 10px);
}
}

View File

@@ -53,7 +53,7 @@ function IndexerIndexSortMenu(props) {
sortDirection={sortDirection}
onPress={onSortSelect}
>
{translate('SyncProfile')}
{translate('AppProfile')}
</SortMenuItem>
<SortMenuItem

View File

@@ -65,5 +65,5 @@
.externalLink {
composes: link from '~Components/Link/Link.css';
color: var(--textColor);
color: $textColor;
}

View File

@@ -190,7 +190,7 @@ class IndexerIndexRow extends Component {
key={name}
className={styles[column.name]}
>
{appProfile?.name || ''}
{appProfile.name}
</VirtualTableRowCell>
);
}

View File

@@ -1,13 +1,13 @@
.torrent {
composes: label from '~Components/Label.css';
border-color: var(--torrentColor);
background-color: var(--torrentColor);
border-color: $torrentColor;
background-color: $torrentColor;
}
.usenet {
composes: label from '~Components/Label.css';
border-color: var(--usenetColor);
background-color: var(--usenetColor);
border-color: $usenetColor;
background-color: $usenetColor;
}

View File

@@ -19,7 +19,7 @@
.footNote {
display: flex;
color: var(--helpTextColor);
color: $helpTextColor;
.icon {
margin-top: 3px;
@@ -29,7 +29,7 @@
code {
padding: 0 1px;
border: 1px solid var(--borderColor);
border: 1px solid $borderColor;
background-color: #f7f7f7;
}
}

View File

@@ -24,7 +24,6 @@ const searchOptions = [
const seriesTokens = [
{ token: '{ImdbId:tt1234567}', example: 'tt12345' },
{ token: '{TvdbId:12345}', example: '12345' },
{ token: '{TmdbId:12345}', example: '12345' },
{ token: '{TvMazeId:12345}', example: '54321' },
{ token: '{Season:00}', example: '01' },
{ token: '{Episode:00}', example: '01' }

View File

@@ -3,15 +3,15 @@
align-items: stretch;
flex-wrap: wrap;
margin: 3px;
border: 1px solid var(--borderColor);
border: 1px solid $borderColor;
&:hover {
.token {
background-color: rgba(0, 0, 0, 0.01);
background-color: #ddd;
}
.example {
background-color: rgba(0, 0, 0, 0.01);
background-color: #ccc;
}
}
}
@@ -27,7 +27,7 @@
.token {
flex: 0 0 50%;
padding: 6px 16px;
background-color: var(--defaultButtonBackgroundColor);
background-color: #eee;
font-family: $monoSpaceFontFamily;
}
@@ -37,7 +37,7 @@
justify-content: space-between;
flex: 0 0 50%;
padding: 6px 16px;
background-color: var(--defaultHoverBackgroundColor);
background-color: #ddd;
.footNote {
padding: 2px;

View File

@@ -1,13 +1,13 @@
.torrent {
composes: label from '~Components/Label.css';
border-color: var(--torrentColor);
background-color: var(--torrentColor);
border-color: $torrentColor;
background-color: $torrentColor;
}
.usenet {
composes: label from '~Components/Label.css';
border-color: var(--usenetColor);
background-color: var(--usenetColor);
border-color: $usenetColor;
background-color: $usenetColor;
}

View File

@@ -58,7 +58,7 @@
margin: 0 2px;
width: 22px;
color: var(--textColor);
color: $textColor;
}
.externalLinks {

View File

@@ -19,13 +19,13 @@
}
.indicatorBackground {
color: var(--themeDarkColor);
color: $themeDarkColor;
}
.enabled {
color: var(--successColor);
color: $successColor;
}
.disabled {
color: var(--dangerColor);
color: $dangerColor;
}

View File

@@ -6,15 +6,15 @@
.addApplication {
composes: application from '~./Application.css';
background-color: var(--cardAlternateBackgroundColor);
color: var(--gray);
background-color: $cardAlternateBackgroundColor;
color: $gray;
text-align: center;
}
.center {
display: inline-block;
padding: 5px 20px 0;
border: 1px solid var(--borderColor);
border: 1px solid $borderColor;
border-radius: 4px;
background-color: var(--cardCenterBackgroundColor);
background-color: $white;
}

View File

@@ -6,15 +6,15 @@
.addDownloadClient {
composes: downloadClient from '~./DownloadClient.css';
background-color: var(--cardAlternateBackgroundColor);
color: var(--gray);
background-color: $cardAlternateBackgroundColor;
color: $gray;
text-align: center;
}
.center {
display: inline-block;
padding: 5px 20px 0;
border: 1px solid var(--borderColor);
border: 1px solid $borderColor;
border-radius: 4px;
background-color: var(--cardCenterBackgroundColor);
background-color: $white;
}

View File

@@ -20,7 +20,6 @@ function HostSettings(props) {
bindAddress,
port,
urlBase,
instanceName,
enableSsl,
sslPort,
sslCertPath,
@@ -73,22 +72,6 @@ function HostSettings(props) {
/>
</FormGroup>
<FormGroup
advancedSettings={advancedSettings}
isAdvanced={true}
>
<FormLabel>{translate('InstanceName')}</FormLabel>
<FormInputGroup
type={inputTypes.TEXT}
name="instanceName"
helpText={translate('InstanceNameHelpText')}
helpTextWarning={translate('RestartRequiredHelpTextWarning')}
onChange={onInputChange}
{...instanceName}
/>
</FormGroup>
<FormGroup
advancedSettings={advancedSettings}
isAdvanced={true}

View File

@@ -6,15 +6,15 @@
.addIndexerProxy {
composes: indexerProxy from '~./IndexerProxy.css';
background-color: var(--cardAlternateBackgroundColor);
color: var(--gray);
background-color: $cardAlternateBackgroundColor;
color: $gray;
text-align: center;
}
.center {
display: inline-block;
padding: 5px 20px 0;
border: 1px solid var(--borderColor);
border: 1px solid $borderColor;
border-radius: 4px;
background-color: var(--cardCenterBackgroundColor);
background-color: $white;
}

View File

@@ -6,15 +6,15 @@
.addNotification {
composes: notification from '~./Notification.css';
background-color: var(--cardAlternateBackgroundColor);
color: var(--gray);
background-color: $cardAlternateBackgroundColor;
color: $gray;
text-align: center;
}
.center {
display: inline-block;
padding: 5px 20px 0;
border: 1px solid var(--borderColor);
border: 1px solid $borderColor;
border-radius: 4px;
background-color: var(--cardCenterBackgroundColor);
background-color: $white;
}

View File

@@ -6,8 +6,8 @@
.addAppProfile {
composes: appProfile from '~./AppProfile.css';
background-color: var(--cardAlternateBackgroundColor);
color: var(--gray);
background-color: $cardAlternateBackgroundColor;
color: $gray;
text-align: center;
font-size: 45px;
}
@@ -15,7 +15,7 @@
.center {
display: inline-block;
padding: 5px 20px 0;
border: 1px solid var(--borderColor);
border: 1px solid $borderColor;
border-radius: 4px;
background-color: var(--cardCenterBackgroundColor);
background-color: $white;
}

View File

@@ -52,7 +52,7 @@ class AppProfiles extends Component {
} = this.props;
return (
<FieldSet legend={translate('SyncProfiles')}>
<FieldSet legend={translate('AppProfiles')}>
<PageSectionContent
errorMessage={translate('UnableToLoadAppProfiles')}
{...otherProps}c={true}

View File

@@ -40,15 +40,14 @@ class EditAppProfileModalContent extends Component {
name,
enableRss,
enableInteractiveSearch,
enableAutomaticSearch,
minimumSeeders
enableAutomaticSearch
} = item;
return (
<ModalContent onModalClose={onModalClose}>
<ModalHeader>
{id ? translate('EditSyncProfile') : translate('AddSyncProfile')}
{id ? translate('EditAppProfile') : translate('AddAppProfile')}
</ModalHeader>
<ModalBody>
@@ -124,20 +123,6 @@ class EditAppProfileModalContent extends Component {
onChange={onInputChange}
/>
</FormGroup>
<FormGroup>
<FormLabel>
{translate('MinimumSeeders')}
</FormLabel>
<FormInputGroup
type={inputTypes.NUMBER}
name="minimumSeeders"
{...minimumSeeders}
helpText={translate('MinimumSeedersHelpText')}
onChange={onInputChange}
/>
</FormGroup>
</Form>
}
</div>

View File

@@ -2,7 +2,7 @@
composes: link from '~Components/Link/Link.css';
border-bottom: 1px solid #e5e5e5;
color: var(--textColor);
color: #3a3f51;
font-size: 21px;
&:hover {
@@ -14,5 +14,5 @@
.summary {
margin-top: 10px;
margin-bottom: 30px;
color: var(--helpTextColor);
color: $dimColor;
}

View File

@@ -10,7 +10,7 @@
.restriction {
margin-bottom: 5px;
padding-bottom: 5px;
border-bottom: 1px solid var(--borderColor);
border-bottom: 1px solid $borderColor;
&:last-child {
margin: 0;

View File

@@ -10,8 +10,6 @@ import PageContent from 'Components/Page/PageContent';
import PageContentBody from 'Components/Page/PageContentBody';
import { inputTypes } from 'Helpers/Props';
import SettingsToolbarConnector from 'Settings/SettingsToolbarConnector';
import themes from 'Styles/Themes';
import titleCase from 'Utilities/String/titleCase';
import translate from 'Utilities/String/translate';
export const firstDayOfWeekOptions = [
@@ -64,9 +62,6 @@ class UISettings extends Component {
const uiLanguages = languages.filter((item) => item.value !== 'Original');
const themeOptions = Object.keys(themes)
.map((theme) => ({ key: theme, value: titleCase(theme) }));
return (
<PageContent title={translate('UISettings')}>
<SettingsToolbarConnector
@@ -143,17 +138,6 @@ class UISettings extends Component {
</FieldSet>
<FieldSet legend={translate('Style')}>
<FormGroup>
<FormLabel>{translate('Theme')}</FormLabel>
<FormInputGroup
type={inputTypes.SELECT}
name="theme"
helpText={translate('ThemeHelpText', ['Theme.Park'])}
values={themeOptions}
onChange={onInputChange}
{...settings.theme}
/>
</FormGroup>
<FormGroup>
<FormLabel>{translate('SettingsEnableColorImpairedMode')}</FormLabel>
<FormInputGroup

View File

@@ -76,7 +76,7 @@ export const defaultState = {
},
{
name: 'appProfileId',
label: translate('SyncProfile'),
label: translate('AppProfile'),
isSortable: true,
isVisible: true
},
@@ -152,7 +152,7 @@ export const defaultState = {
},
{
name: 'appProfileId',
label: translate('SyncProfile'),
label: translate('AppProfile'),
type: filterBuilderTypes.EXACT,
valueType: filterBuilderValueTypes.APP_PROFILE
},

View File

@@ -16,11 +16,11 @@
min-height: 100px;
border: 1px solid transparent;
border-radius: 5px;
background-color: var(--scrollbarBackgroundColor);
background-color: $scrollbarBackgroundColor;
background-clip: padding-box;
&:hover {
background-color: var(--scrollbarHoverBackgroundColor);
background-color: $scrollbarHoverBackgroundColor;
}
}
}

View File

@@ -1,193 +0,0 @@
const prowlarrOrange = '#e66000';
module.exports = {
textColor: '#ccc',
defaultColor: '#ccc',
disabledColor: '#999',
dimColor: '#555',
black: '#000',
white: '#fff',
primaryColor: '#5d9cec',
selectedColor: '#f9be03',
successColor: '#00853d',
dangerColor: '#f05050',
warningColor: '#ffa500',
infoColor: '#5d9cec',
purple: '#7a43b6',
prowlarrOrange,
helpTextColor: '#909293',
darkGray: '#888',
gray: '#adadad',
// Theme Colors
themeBlue: prowlarrOrange,
themeRed: '#c4273c',
themeDarkColor: '#595959',
themeLightColor: prowlarrOrange,
pageBackground: '#202020',
pageFooterBackgroud: 'rgba(0, 0, 0, .25)',
torrentColor: '#00853d',
usenetColor: '#17b1d9',
// Labels
inverseLabelColor: '#ddd',
inverseLabelTextColor: prowlarrOrange,
// Links
defaultLinkHoverColor: '#fff',
linkColor: '#rgb(230, 96, 0)',
linkHoverColor: '#rgb(230, 96, 0, .8)',
// Header
pageHeaderBackgroundColor: '#2a2a2a',
// Sidebar
sidebarColor: '#e1e2e3',
sidebarBackgroundColor: '#2a2a2a',
sidebarActiveBackgroundColor: '#333333',
// Toolbar
toolbarColor: '#e1e2e3',
toolbarBackgroundColor: '#262626',
toolbarMenuItemBackgroundColor: '#333',
toolbarMenuItemHoverBackgroundColor: '#414141',
toolbarLabelColor: '#e1e2e3',
// Accents
borderColor: '#e5e5e5',
inputBorderColor: '#dde6e9',
inputBoxShadowColor: 'rgba(0, 0, 0, 0.075)',
inputFocusBorderColor: '#66afe9',
inputFocusBoxShadowColor: 'rgba(102, 175, 233, 0.6)',
inputErrorBorderColor: '#f05050',
inputErrorBoxShadowColor: 'rgba(240, 80, 80, 0.6)',
inputWarningBorderColor: '#ffa500',
inputWarningBoxShadowColor: 'rgba(255, 165, 0, 0.6)',
colorImpairedGradient: '#ffffff',
colorImpairedGradientDark: '#f4f5f6',
//
// Buttons
defaultButtonTextColor: '#eee',
defaultButtonBackgroundColor: '#333',
defaultBorderColor: '#eaeaea',
defaultHoverBackgroundColor: '#444',
defaultHoverBorderColor: '#d6d6d6;',
primaryBackgroundColor: '#5d9cec',
primaryBorderColor: '#5899eb',
primaryHoverBackgroundColor: '#4b91ea',
primaryHoverBorderColor: '#3483e7;',
successBackgroundColor: '#27c24c',
successBorderColor: '#26be4a',
successHoverBackgroundColor: '#24b145',
successHoverBorderColor: '#1f9c3d;',
warningBackgroundColor: '#ff902b',
warningBorderColor: '#ff8d26',
warningHoverBackgroundColor: '#ff8517',
warningHoverBorderColor: '#fc7800;',
dangerBackgroundColor: '#f05050',
dangerBorderColor: '#f04b4b',
dangerHoverBackgroundColor: '#ee3d3d',
dangerHoverBorderColor: '#ec2626;',
iconButtonDisabledColor: '#7a7a7a',
iconButtonHoverColor: '#666',
iconButtonHoverLightColor: '#ccc',
//
// Modal
modalBackdropBackgroundColor: 'rgba(0, 0, 0, 0.6)',
modalBackgroundColor: '#2a2a2a',
modalCloseButtonHoverColor: '#888',
//
// Menu
menuItemColor: '#e1e2e3',
menuItemHoverColor: '#e66000',
menuItemHoverBackgroundColor: '#606060',
//
// Toolbar
toobarButtonHoverColor: '#e66000',
toobarButtonSelectedColor: '#e66000',
//
// Scroller
scrollbarBackgroundColor: '#707070',
scrollbarHoverBackgroundColor: '#606060',
//
// Card
cardBackgroundColor: '#333333',
cardShadowColor: '#111',
cardAlternateBackgroundColor: '#333333',
cardCenterBackgroundColor: '#2a2a2a',
//
// Alert
alertDangerBorderColor: '#a94442',
alertDangerBackgroundColor: 'rgba(255,0,0,0.1)',
alertDangerColor: '#ccc',
alertInfoBorderColor: '#31708f',
alertInfoBackgroundColor: 'rgba(0,0,255,0.1)',
alertInfoColor: '#ccc',
alertSuccessBorderColor: '#3c763d',
alertSuccessBackgroundColor: 'rgba(0,255,0,0.1)',
alertSuccessColor: '#ccc',
alertWarningBorderColor: '#8a6d3b',
alertWarningBackgroundColor: 'rgba(255,255,0,0.1)',
alertWarningColor: '#ccc',
//
// Form
inputBackgroundColor: '#333',
inputReadOnlyBackgroundColor: '#222',
inputHoverBackgroundColor: 'rgba(255, 255, 255, 0.20)',
inputSelectedBackgroundColor: 'rgba(255, 255, 255, 0.05)',
advancedFormLabelColor: '#ff902b',
disabledCheckInputColor: '#ddd',
disabledInputColor: '#808080',
//
// Popover
popoverTitleBackgroundColor: '#424242',
popoverTitleBorderColor: '#2a2a2a',
popoverBodyBackgroundColor: '#2a2a2a',
popoverShadowColor: 'rgba(0, 0, 0, 0.2)',
popoverArrowBorderColor: '#2a2a2a',
popoverTitleBackgroundInverseColor: '#595959',
popoverTitleBorderInverseColor: '#707070',
popoverShadowInverseColor: 'rgba(0, 0, 0, 0.2)',
popoverArrowBorderInverseColor: 'rgba(58, 63, 81, 0.75)',
//
// Table
tableRowHoverBackgroundColor: 'rgba(255, 255, 255, 0.08)',
//
// Charts
failedColors: ['#ffbeb2', '#feb4a6', '#fdab9b', '#fca290', '#fb9984', '#fa8f79', '#f9856e', '#f77b66', '#f5715d', '#f36754', '#f05c4d', '#ec5049', '#e74545', '#e13b42', '#da323f', '#d3293d', '#ca223c', '#c11a3b', '#b8163a', '#ae123a'],
chartColorsDiversified: ['#90caf9', '#f4d166', '#ff8a65', '#ce93d8', '#80cba9', '#ffab91', '#8097ea', '#bcaaa4', '#a57583', '#e4e498', '#9e96af', '#c6ab81', '#6972c6', '#619fc6', '#81ad81', '#f48fb1', '#82afca', '#b5b071', '#8b959b', '#7ec0b4'],
chartColors: ['#f4d166', '#f6c760', '#f8bc58', '#f8b252', '#f7a84a', '#f69e41', '#f49538', '#f38b2f', '#f28026', '#f0751e', '#eb6c1c', '#e4641e', '#de5d1f', '#d75521', '#cf4f22', '#c64a22', '#bc4623', '#b24223', '#a83e24', '#9e3a26']
};

Some files were not shown because too many files have changed in this diff Show More