mirror of
https://github.com/stashapp/stash.git
synced 2025-12-17 12:24:38 +03:00
Rename component folders, and prune styles
This commit is contained in:
@@ -7,8 +7,8 @@ import { ErrorBoundary } from "./components/ErrorBoundary";
|
|||||||
import Galleries from "./components/Galleries/Galleries";
|
import Galleries from "./components/Galleries/Galleries";
|
||||||
import { MainNavbar } from "./components/MainNavbar";
|
import { MainNavbar } from "./components/MainNavbar";
|
||||||
import { PageNotFound } from "./components/PageNotFound";
|
import { PageNotFound } from "./components/PageNotFound";
|
||||||
import Performers from "./components/performers/performers";
|
import Performers from "./components/Performers/Performers";
|
||||||
import Scenes from "./components/scenes/scenes";
|
import Scenes from "./components/Scenes/Scenes";
|
||||||
import { Settings } from "./components/Settings/Settings";
|
import { Settings } from "./components/Settings/Settings";
|
||||||
import { Stats } from "./components/Stats";
|
import { Stats } from "./components/Stats";
|
||||||
import Studios from "./components/Studios/Studios";
|
import Studios from "./components/Studios/Studios";
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ export const GalleryList: React.FC = () => {
|
|||||||
}
|
}
|
||||||
if (filter.displayMode === DisplayMode.List) {
|
if (filter.displayMode === DisplayMode.List) {
|
||||||
return (
|
return (
|
||||||
<Table className="m-auto">
|
<Table className="col col-sm-6 mx-auto">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Preview</th>
|
<th>Preview</th>
|
||||||
|
|||||||
7
ui/v2.5/src/components/Galleries/styles.scss
Normal file
7
ui/v2.5/src/components/Galleries/styles.scss
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
/* stylelint-disable selector-class-pattern */
|
||||||
|
.react-photo-gallery--gallery {
|
||||||
|
img {
|
||||||
|
object-fit: contain;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* stylelint-enable selector-class-pattern */
|
||||||
@@ -2,7 +2,7 @@ import React from "react";
|
|||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { PerformersCriterion } from "src/models/list-filter/criteria/performers";
|
import { PerformersCriterion } from "src/models/list-filter/criteria/performers";
|
||||||
import { ListFilterModel } from "src/models/list-filter/filter";
|
import { ListFilterModel } from "src/models/list-filter/filter";
|
||||||
import { SceneList } from "../../scenes/SceneList";
|
import { SceneList } from "src/components/Scenes/SceneList";
|
||||||
|
|
||||||
interface IPerformerDetailsProps {
|
interface IPerformerDetailsProps {
|
||||||
performer: Partial<GQL.PerformerDataFragment>;
|
performer: Partial<GQL.PerformerDataFragment>;
|
||||||
@@ -1,17 +1,4 @@
|
|||||||
#performer-details {
|
#performer-details {
|
||||||
td {
|
|
||||||
padding: 2px 0;
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
td:first-child {
|
|
||||||
min-width: 10rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-control {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.scrape-url-button {
|
.scrape-url-button {
|
||||||
color: $text-color;
|
color: $text-color;
|
||||||
float: right;
|
float: right;
|
||||||
@@ -28,7 +15,7 @@
|
|||||||
margin: 10px auto;
|
margin: 10px auto;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|
||||||
.image-container img {
|
.image-container .performer {
|
||||||
max-height: 960px;
|
max-height: 960px;
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
@@ -12,7 +12,7 @@ import {
|
|||||||
} from "src/components/Shared";
|
} from "src/components/Shared";
|
||||||
import { TextUtils } from "src/utils";
|
import { TextUtils } from "src/utils";
|
||||||
import { useToast } from "src/hooks";
|
import { useToast } from "src/hooks";
|
||||||
import { Pagination } from "../list/Pagination";
|
import { Pagination } from "src/components/List/Pagination";
|
||||||
import { IParserInput, ParserInput } from "./ParserInput";
|
import { IParserInput, ParserInput } from "./ParserInput";
|
||||||
import { ParserField } from "./ParserField";
|
import { ParserField } from "./ParserField";
|
||||||
|
|
||||||
@@ -513,7 +513,7 @@ export const SceneFilenameParser: React.FC = () => {
|
|||||||
const ids = items.map(i => i.id);
|
const ids = items.map(i => i.id);
|
||||||
onChangeHandler(ids);
|
onChangeHandler(ids);
|
||||||
}}
|
}}
|
||||||
initialIds={props.parserResult.value}
|
ids={props.parserResult.value}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -591,7 +591,7 @@ export const SceneFilenameParser: React.FC = () => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<tr className="scene-parser-row">
|
<tr className="scene-parser-row">
|
||||||
<td className="text-left">{props.scene.filename}</td>
|
<td className="text-left parser-field-filename">{props.scene.filename}</td>
|
||||||
<SceneParserField
|
<SceneParserField
|
||||||
key="title"
|
key="title"
|
||||||
fieldName="Title"
|
fieldName="Title"
|
||||||
@@ -688,14 +688,14 @@ export const SceneFilenameParser: React.FC = () => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<td className="w-15">
|
<th className="w-15">
|
||||||
<Form.Check
|
<Form.Check
|
||||||
checked={allSet}
|
checked={allSet}
|
||||||
onChange={() => {
|
onChange={() => {
|
||||||
onAllSet(!allSet);
|
onAllSet(!allSet);
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</td>
|
</th>
|
||||||
<th>{fieldName}</th>
|
<th>{fieldName}</th>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
@@ -708,7 +708,6 @@ export const SceneFilenameParser: React.FC = () => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div>
|
|
||||||
<div className="scene-parser-results">
|
<div className="scene-parser-results">
|
||||||
<Table>
|
<Table>
|
||||||
<thead>
|
<thead>
|
||||||
@@ -745,13 +744,12 @@ export const SceneFilenameParser: React.FC = () => {
|
|||||||
<Button variant="primary" onClick={onApply}>
|
<Button variant="primary" onClick={onApply}>
|
||||||
Apply
|
Apply
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Card id="parser-container">
|
<Card id="parser-container" className="col col-sm-9 mx-auto">
|
||||||
<h4>Scene Filename Parser</h4>
|
<h4>Scene Filename Parser</h4>
|
||||||
<ParserInput
|
<ParserInput
|
||||||
input={parserInput}
|
input={parserInput}
|
||||||
|
|||||||
37
ui/v2.5/src/components/SceneFilenameParser/styles.scss
Normal file
37
ui/v2.5/src/components/SceneFilenameParser/styles.scss
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
.scene-parser-results {
|
||||||
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scene-parser-row {
|
||||||
|
.parser-field-filename {
|
||||||
|
width: 10ch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.parser-field-title {
|
||||||
|
width: 40ch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.parser-field-date {
|
||||||
|
width: 13ch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.parser-field-performers {
|
||||||
|
width: 20ch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.parser-field-tags {
|
||||||
|
width: 20ch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.parser-field-studio {
|
||||||
|
width: 15ch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-control {
|
||||||
|
min-width: 10ch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-control + .form-control {
|
||||||
|
margin-top: .5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -205,7 +205,7 @@ export class ScenePlayerImpl extends React.Component<
|
|||||||
|
|
||||||
public render() {
|
public render() {
|
||||||
return (
|
return (
|
||||||
<HotKeys keyMap={KeyMap} handlers={this.KeyHandlers} className="row">
|
<HotKeys keyMap={KeyMap} handlers={this.KeyHandlers} className="row scene-player">
|
||||||
<div
|
<div
|
||||||
id="jwplayer-container"
|
id="jwplayer-container"
|
||||||
className="w-100 col-sm-9 m-sm-auto no-gutter"
|
className="w-100 col-sm-9 m-sm-auto no-gutter"
|
||||||
@@ -346,7 +346,7 @@ export const ScenePlayerScrubber: React.FC<IScenePlayerScrubberProps> = (
|
|||||||
style={getStyleForSprite(index)}
|
style={getStyleForSprite(index)}
|
||||||
{...dataAttrs}
|
{...dataAttrs}
|
||||||
>
|
>
|
||||||
<span>
|
<span className="scrubber-item-time">
|
||||||
{TextUtils.secondsToTimestamp(spriteItem.start)} -{" "}
|
{TextUtils.secondsToTimestamp(spriteItem.start)} -{" "}
|
||||||
{TextUtils.secondsToTimestamp(spriteItem.end)}
|
{TextUtils.secondsToTimestamp(spriteItem.end)}
|
||||||
</span>
|
</span>
|
||||||
1
ui/v2.5/src/components/ScenePlayer/index.ts
Normal file
1
ui/v2.5/src/components/ScenePlayer/index.ts
Normal file
@@ -0,0 +1 @@
|
|||||||
|
export { ScenePlayer } from './ScenePlayer';
|
||||||
@@ -1,3 +1,7 @@
|
|||||||
|
.scene-player:focus {
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
.scrubber-wrapper {
|
.scrubber-wrapper {
|
||||||
margin: 5px 0;
|
margin: 5px 0;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
@@ -13,8 +17,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.scrubber-button {
|
.scrubber-button {
|
||||||
|
background-color: transparent;
|
||||||
border: 1px solid #555;
|
border: 1px solid #555;
|
||||||
color: #fff;
|
color: $link-color;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
font-weight: 800;
|
font-weight: 800;
|
||||||
@@ -35,18 +40,10 @@
|
|||||||
position: relative;
|
position: relative;
|
||||||
-webkit-user-select: none;
|
-webkit-user-select: none;
|
||||||
width: 96%;
|
width: 96%;
|
||||||
}
|
|
||||||
|
|
||||||
.scrubber-content.dragging {
|
&.dragging {
|
||||||
cursor: grabbing;
|
cursor: grabbing;
|
||||||
}
|
}
|
||||||
|
|
||||||
.scrubber-tags-background {
|
|
||||||
background-color: #555;
|
|
||||||
height: 20px;
|
|
||||||
left: 0;
|
|
||||||
position: absolute;
|
|
||||||
right: 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#scrubber-position-indicator {
|
#scrubber-position-indicator {
|
||||||
@@ -85,6 +82,14 @@
|
|||||||
height: 20px;
|
height: 20px;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
|
&-background {
|
||||||
|
background-color: #555;
|
||||||
|
height: 20px;
|
||||||
|
left: 0;
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.scrubber-tag {
|
.scrubber-tag {
|
||||||
@@ -94,14 +99,13 @@
|
|||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
|
||||||
|
|
||||||
.scrubber-tag:hover {
|
&:hover {
|
||||||
background-color: #444;
|
background-color: #444;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.scrubber-tag::after {
|
&::after {
|
||||||
border-left: solid 5px transparent;
|
border-left: solid 5px transparent;
|
||||||
border-right: solid 5px transparent;
|
border-right: solid 5px transparent;
|
||||||
border-top: solid 5px #000;
|
border-top: solid 5px #000;
|
||||||
@@ -111,6 +115,7 @@
|
|||||||
margin-left: -5px;
|
margin-left: -5px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.scrubber-item {
|
.scrubber-item {
|
||||||
color: white;
|
color: white;
|
||||||
@@ -121,10 +126,10 @@
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
text-shadow: 1px 1px black;
|
text-shadow: 1px 1px black;
|
||||||
}
|
|
||||||
|
|
||||||
.scrubber-item span {
|
&-time {
|
||||||
align-self: flex-end;
|
align-self: flex-end;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
@@ -182,7 +182,7 @@ export const SceneCard: React.FC<ISceneCardProps> = (
|
|||||||
>
|
>
|
||||||
<Form.Control
|
<Form.Control
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
className="card-select d-none d-sm-block"
|
className="scene-card-check d-none d-sm-block"
|
||||||
checked={props.selected}
|
checked={props.selected}
|
||||||
onChange={() => props.onSelectedChanged(!props.selected, shiftKey)}
|
onChange={() => props.onSelectedChanged(!props.selected, shiftKey)}
|
||||||
onClick={(event: React.MouseEvent<HTMLInputElement, MouseEvent>) => {
|
onClick={(event: React.MouseEvent<HTMLInputElement, MouseEvent>) => {
|
||||||
@@ -6,7 +6,7 @@ import * as GQL from "src/core/generated-graphql";
|
|||||||
import { StashService } from "src/core/StashService";
|
import { StashService } from "src/core/StashService";
|
||||||
import { GalleryViewer } from "src/components/Galleries/GalleryViewer";
|
import { GalleryViewer } from "src/components/Galleries/GalleryViewer";
|
||||||
import { LoadingIndicator } from "src/components/Shared";
|
import { LoadingIndicator } from "src/components/Shared";
|
||||||
import { ScenePlayer } from "src/components/scenes/ScenePlayer/ScenePlayer";
|
import { ScenePlayer } from "src/components/ScenePlayer";
|
||||||
import { ScenePerformerPanel } from "./ScenePerformerPanel";
|
import { ScenePerformerPanel } from "./ScenePerformerPanel";
|
||||||
import { SceneMarkersPanel } from "./SceneMarkersPanel";
|
import { SceneMarkersPanel } from "./SceneMarkersPanel";
|
||||||
import { SceneFileInfoPanel } from "./SceneFileInfoPanel";
|
import { SceneFileInfoPanel } from "./SceneFileInfoPanel";
|
||||||
@@ -50,7 +50,7 @@ export const Scene: React.FC = () => {
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<ScenePlayer scene={scene} timestamp={timestamp} autoplay={autoplay} />
|
<ScenePlayer scene={scene} timestamp={timestamp} autoplay={autoplay} />
|
||||||
<div id="details-container" className="col col-sm-9 m-sm-auto">
|
<div id="scene-details-container" className="col col-sm-9 m-sm-auto">
|
||||||
<Tabs id="scene-tabs" mountOnEnter>
|
<Tabs id="scene-tabs" mountOnEnter>
|
||||||
<Tab eventKey="scene-details-panel" title="Details">
|
<Tab eventKey="scene-details-panel" title="Details">
|
||||||
<SceneDetailPanel scene={scene} />
|
<SceneDetailPanel scene={scene} />
|
||||||
@@ -49,12 +49,12 @@ export const SceneDetailPanel: React.FC<ISceneDetailProps> = props => {
|
|||||||
<div className="col-4 offset-2">
|
<div className="col-4 offset-2">
|
||||||
{props.scene.studio && (
|
{props.scene.studio && (
|
||||||
<Link
|
<Link
|
||||||
className="studio-logo"
|
|
||||||
to={`/studios/${props.scene.studio.id}`}
|
to={`/studios/${props.scene.studio.id}`}
|
||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
src={props.scene.studio.image_path ?? ""}
|
src={props.scene.studio.image_path ?? ""}
|
||||||
alt={`${props.scene.studio.name} logo`}
|
alt={`${props.scene.studio.name} logo`}
|
||||||
|
className="studio-logo"
|
||||||
/>
|
/>
|
||||||
</Link>
|
</Link>
|
||||||
)}
|
)}
|
||||||
@@ -293,7 +293,7 @@ export const SceneEditPanel: React.FC<IProps> = (props: IProps) => {
|
|||||||
return (
|
return (
|
||||||
<div className="form-container row">
|
<div className="form-container row">
|
||||||
<div className="col-6">
|
<div className="col-6">
|
||||||
<Table id="scene-details">
|
<Table id="scene-edit-details">
|
||||||
<tbody>
|
<tbody>
|
||||||
{TableUtils.renderInputGroup({
|
{TableUtils.renderInputGroup({
|
||||||
title: "Title",
|
title: "Title",
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import React, { FunctionComponent } from "react";
|
import React, { FunctionComponent } from "react";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { PerformerCard } from "src/components/performers/PerformerCard";
|
import { PerformerCard } from "src/components/Performers/PerformerCard";
|
||||||
|
|
||||||
interface IScenePerformerPanelProps {
|
interface IScenePerformerPanelProps {
|
||||||
scene: GQL.SceneDataFragment;
|
scene: GQL.SceneDataFragment;
|
||||||
@@ -55,7 +55,7 @@ export const SceneListTable: React.FC<ISceneListTableProps> = (
|
|||||||
)
|
)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="row justify-content-center table-list">
|
<div className="row table-list col col-lg-8 mx-auto">
|
||||||
<Table striped bordered>
|
<Table striped bordered>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -3,33 +3,22 @@
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
|
|
||||||
button {
|
.btn {
|
||||||
padding-bottom: 3px;
|
padding-bottom: 3px;
|
||||||
padding-top: 3px;
|
padding-top: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
svg {
|
.fa-icon {
|
||||||
margin-right: 7px;
|
margin-right: 7px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.row {
|
|
||||||
.scene-card {
|
|
||||||
overflow: hidden;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.scene-card-link {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-section {
|
.card-section {
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
padding: .5rem 1rem 0 1rem;
|
padding: .5rem 1rem 0 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-select {
|
.scene-card-check {
|
||||||
left: .5rem;
|
left: .5rem;
|
||||||
margin-top: -12px;
|
margin-top: -12px;
|
||||||
opacity: .5;
|
opacity: .5;
|
||||||
@@ -78,17 +67,15 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.studio-logo {
|
.studio-logo {
|
||||||
img {
|
|
||||||
margin-top: 1rem;
|
margin-top: 1rem;
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
.scene-header {
|
.scene-header {
|
||||||
flex-basis: auto;
|
flex-basis: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
#details-container {
|
#scene-details-container {
|
||||||
.tab-content {
|
.tab-content {
|
||||||
min-height: 15rem;
|
min-height: 15rem;
|
||||||
}
|
}
|
||||||
@@ -104,12 +91,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#scene-details {
|
|
||||||
input {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#details {
|
#details {
|
||||||
min-height: 150px;
|
min-height: 150px;
|
||||||
}
|
}
|
||||||
@@ -147,3 +128,85 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.scene-specs-overlay {
|
||||||
|
bottom: 1rem;
|
||||||
|
color: $text-color;
|
||||||
|
display: block;
|
||||||
|
font-weight: 400;
|
||||||
|
letter-spacing: -.03rem;
|
||||||
|
position: absolute;
|
||||||
|
right: .7rem;
|
||||||
|
text-shadow: 0 0 3px #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scene-studio-overlay {
|
||||||
|
display: block;
|
||||||
|
font-weight: 900;
|
||||||
|
height: 10%;
|
||||||
|
max-width: 40%;
|
||||||
|
opacity: .75;
|
||||||
|
position: absolute;
|
||||||
|
right: .7rem;
|
||||||
|
top: .7rem;
|
||||||
|
z-index: 9;
|
||||||
|
|
||||||
|
.image-thumbnail {
|
||||||
|
height: auto;
|
||||||
|
max-height: 50px;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: $text-color;
|
||||||
|
display: inline-block;
|
||||||
|
letter-spacing: -.03rem;
|
||||||
|
text-align: right;
|
||||||
|
text-decoration: none;
|
||||||
|
text-shadow: 0 0 3px #000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.overlay-resolution {
|
||||||
|
font-weight: 900;
|
||||||
|
margin-right: .3rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scene-card {
|
||||||
|
&.card {
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-link {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scene-specs-overlay,
|
||||||
|
.rating-banner,
|
||||||
|
.scene-studio-overlay {
|
||||||
|
transition: opacity .5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
.scene-specs-overlay,
|
||||||
|
.rating-banner,
|
||||||
|
.scene-studio-overlay {
|
||||||
|
opacity: 0;
|
||||||
|
transition: opacity .5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scene-studio-overlay:hover {
|
||||||
|
opacity: .75;
|
||||||
|
transition: opacity .5s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.scene-cover {
|
||||||
|
display: block;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
margin-top: 10px;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
@@ -16,7 +16,7 @@ export const Settings: React.FC = () => {
|
|||||||
const onSelect = (val: string) => history.push(`?tab=${val}`);
|
const onSelect = (val: string) => history.push(`?tab=${val}`);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Card id="details-container">
|
<Card className="col col-lg-9 mx-auto">
|
||||||
<Tab.Container
|
<Tab.Container
|
||||||
defaultActiveKey={defaultTab}
|
defaultActiveKey={defaultTab}
|
||||||
id="configuration-tabs"
|
id="configuration-tabs"
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ interface IIcon {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const Icon: React.FC<IIcon> = ({ icon, className, color }) => (
|
const Icon: React.FC<IIcon> = ({ icon, className, color }) => (
|
||||||
<FontAwesomeIcon icon={icon} className={className} color={color} />
|
<FontAwesomeIcon icon={icon} className={`fa-icon ${className}`} color={color} />
|
||||||
);
|
);
|
||||||
|
|
||||||
export default Icon;
|
export default Icon;
|
||||||
|
|||||||
@@ -159,7 +159,7 @@ export const Studio: React.FC = () => {
|
|||||||
})}
|
})}
|
||||||
>
|
>
|
||||||
{isNew && <h2>Add Studio</h2>}
|
{isNew && <h2>Add Studio</h2>}
|
||||||
<img className="logo" alt={name} src={imagePreview} />
|
<img className="logo w-100" alt={name} src={imagePreview} />
|
||||||
<Table>
|
<Table>
|
||||||
<tbody>
|
<tbody>
|
||||||
{TableUtils.renderInputGroup({
|
{TableUtils.renderInputGroup({
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import React from "react";
|
|||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { StudiosCriterion } from "src/models/list-filter/criteria/studios";
|
import { StudiosCriterion } from "src/models/list-filter/criteria/studios";
|
||||||
import { ListFilterModel } from "src/models/list-filter/filter";
|
import { ListFilterModel } from "src/models/list-filter/filter";
|
||||||
import { SceneList } from "../../scenes/SceneList";
|
import { SceneList } from "src/components/Scenes/SceneList";
|
||||||
|
|
||||||
interface IStudioScenesPanel {
|
interface IStudioScenesPanel {
|
||||||
studio: Partial<GQL.StudioDataFragment>;
|
studio: Partial<GQL.StudioDataFragment>;
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
.studio-details {
|
.studio-details {
|
||||||
.logo {
|
.logo {
|
||||||
margin: 4rem 0;
|
margin: 4rem 0;
|
||||||
width: 100%;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -103,20 +103,20 @@ export const TagList: React.FC = () => {
|
|||||||
{tag.name}
|
{tag.name}
|
||||||
</Button>
|
</Button>
|
||||||
<div className="ml-auto">
|
<div className="ml-auto">
|
||||||
<Button variant="secondary" onClick={() => onAutoTag(tag)}>
|
<Button variant="secondary" className="tag-list-button" onClick={() => onAutoTag(tag)}>
|
||||||
Auto Tag
|
Auto Tag
|
||||||
</Button>
|
</Button>
|
||||||
<Button variant="secondary">
|
<Button variant="secondary" className="tag-list-button">
|
||||||
<Link to={NavUtils.makeTagScenesUrl(tag)}>
|
<Link to={NavUtils.makeTagScenesUrl(tag)} className="tag-list-anchor">
|
||||||
Scenes: {tag.scene_count}
|
Scenes: {tag.scene_count}
|
||||||
</Link>
|
</Link>
|
||||||
</Button>
|
</Button>
|
||||||
<Button variant="secondary">
|
<Button variant="secondary" className="tag-list-button">
|
||||||
<Link to={NavUtils.makeTagSceneMarkersUrl(tag)}>
|
<Link to={NavUtils.makeTagSceneMarkersUrl(tag)} className="tag-list-anchor">
|
||||||
Markers: {tag.scene_marker_count}
|
Markers: {tag.scene_marker_count}
|
||||||
</Link>
|
</Link>
|
||||||
</Button>
|
</Button>
|
||||||
<span>
|
<span className="tag-list-count">
|
||||||
Total: {(tag.scene_count || 0) + (tag.scene_marker_count || 0)}
|
Total: {(tag.scene_count || 0) + (tag.scene_marker_count || 0)}
|
||||||
</span>
|
</span>
|
||||||
<Button variant="danger" onClick={() => setDeletingTag(tag)}>
|
<Button variant="danger" onClick={() => setDeletingTag(tag)}>
|
||||||
@@ -128,7 +128,7 @@ export const TagList: React.FC = () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div id="tag-list-container">
|
<div className="col col-sm-8 m-auto">
|
||||||
<Button
|
<Button
|
||||||
variant="primary"
|
variant="primary"
|
||||||
className="mt-2"
|
className="mt-2"
|
||||||
|
|||||||
@@ -1,25 +1,20 @@
|
|||||||
#tag-list-container {
|
.tag-list {
|
||||||
display: flex;
|
&-row {
|
||||||
flex-direction: column;
|
margin: .5rem 0;
|
||||||
margin: 0 auto;
|
}
|
||||||
width: 50vw;
|
|
||||||
|
|
||||||
a,
|
&-button {
|
||||||
.btn {
|
margin: 0 .5rem;
|
||||||
|
width: 8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&-anchor {
|
||||||
color: $text-color;
|
color: $text-color;
|
||||||
text-decoration: none;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.tag-list-row {
|
&-count {
|
||||||
cursor: pointer;
|
display: inline-block;
|
||||||
margin: 10px;
|
margin: 0 .5rem;
|
||||||
|
min-width: 6rem;
|
||||||
.btn {
|
|
||||||
margin: 0 10px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.tag-list-row:hover {
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -87,10 +87,10 @@ export const WallItem: React.FC<IWallItemProps> = (props: IWallItemProps) => {
|
|||||||
)}`
|
)}`
|
||||||
);
|
);
|
||||||
const thisTags = props.sceneMarker.tags.map(tag => (
|
const thisTags = props.sceneMarker.tags.map(tag => (
|
||||||
<span key={tag.id}>{tag.name}</span>
|
<span key={tag.id} className="wall-tag">{tag.name}</span>
|
||||||
));
|
));
|
||||||
thisTags.unshift(
|
thisTags.unshift(
|
||||||
<span key={props.sceneMarker.primary_tag.id}>
|
<span key={props.sceneMarker.primary_tag.id} className="wall-tag">
|
||||||
{props.sceneMarker.primary_tag.name}
|
{props.sceneMarker.primary_tag.name}
|
||||||
</span>
|
</span>
|
||||||
);
|
);
|
||||||
@@ -130,6 +130,7 @@ export const WallItem: React.FC<IWallItemProps> = (props: IWallItemProps) => {
|
|||||||
<video
|
<video
|
||||||
src={videoPath}
|
src={videoPath}
|
||||||
poster={screenshotPath}
|
poster={screenshotPath}
|
||||||
|
className="scene-wall-video"
|
||||||
style={videoHoverHook.isHovering.current ? {} : { display: "none" }}
|
style={videoHoverHook.isHovering.current ? {} : { display: "none" }}
|
||||||
autoPlay
|
autoPlay
|
||||||
loop
|
loop
|
||||||
@@ -137,6 +138,7 @@ export const WallItem: React.FC<IWallItemProps> = (props: IWallItemProps) => {
|
|||||||
/>
|
/>
|
||||||
<img
|
<img
|
||||||
alt={title}
|
alt={title}
|
||||||
|
className="scene-wall-image"
|
||||||
src={previewPath || screenshotPath}
|
src={previewPath || screenshotPath}
|
||||||
onError={() => previewNotFound()}
|
onError={() => previewNotFound()}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -35,10 +35,17 @@
|
|||||||
z-index: 2;
|
z-index: 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
.double-scale img {
|
.double-scale .scene-wall-image {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.scene-wall-video,
|
||||||
|
.scene-wall-image {
|
||||||
|
height: 100%;
|
||||||
|
object-fit: contain;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
.scene-wall-item-container {
|
.scene-wall-item-container {
|
||||||
display: flex;
|
display: flex;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
@@ -49,7 +56,7 @@
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.scene-wall-item-container video {
|
.scene-wall-item-container .scene-wall-video {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -69,7 +76,7 @@
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
& span {
|
.wall-tag {
|
||||||
font-size: 10px;
|
font-size: 10px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
@@ -97,12 +104,5 @@
|
|||||||
@media (max-width: 576px) {
|
@media (max-width: 576px) {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
video,
|
|
||||||
img {
|
|
||||||
height: 100%;
|
|
||||||
object-fit: contain;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -16,8 +16,8 @@ import {
|
|||||||
FindPerformersQueryResult
|
FindPerformersQueryResult
|
||||||
} from "src/core/generated-graphql";
|
} from "src/core/generated-graphql";
|
||||||
import { LoadingIndicator } from "src/components/Shared";
|
import { LoadingIndicator } from "src/components/Shared";
|
||||||
import { ListFilter } from "src/components/list/ListFilter";
|
import { ListFilter } from "src/components/List/ListFilter";
|
||||||
import { Pagination } from "src/components/list/Pagination";
|
import { Pagination } from "src/components/List/Pagination";
|
||||||
import { StashService } from "src/core/StashService";
|
import { StashService } from "src/core/StashService";
|
||||||
import { Criterion } from "src/models/list-filter/criteria/criterion";
|
import { Criterion } from "src/models/list-filter/criteria/criterion";
|
||||||
import { ListFilterModel } from "src/models/list-filter/filter";
|
import { ListFilterModel } from "src/models/list-filter/filter";
|
||||||
|
|||||||
@@ -1,21 +1,24 @@
|
|||||||
@import "styles/theme";
|
@import "styles/theme";
|
||||||
@import "styles/range";
|
@import "styles/range";
|
||||||
@import "styles/scrollbars";
|
@import "styles/scrollbars";
|
||||||
@import "src/components/Tags/styles.scss";
|
@import "src/components/Galleries/styles.scss";
|
||||||
@import "src/components/performers/styles.scss";
|
@import "src/components/List/styles.scss";
|
||||||
@import "src/components/list/styles.scss";
|
@import "src/components/Performers/styles.scss";
|
||||||
|
@import "src/components/Scenes/styles.scss";
|
||||||
|
@import "src/components/SceneFilenameParser/styles.scss";
|
||||||
|
@import "src/components/ScenePlayer/styles.scss";
|
||||||
@import "src/components/Settings/styles.scss";
|
@import "src/components/Settings/styles.scss";
|
||||||
@import "src/components/Studios/styles.scss";
|
@import "src/components/Studios/styles.scss";
|
||||||
@import "src/components/Shared/styles.scss";
|
@import "src/components/Shared/styles.scss";
|
||||||
@import "src/components/Wall/Wall.scss";
|
@import "src/components/Tags/styles.scss";
|
||||||
@import "src/components/scenes/ScenePlayer/ScenePlayerScrubber.scss";
|
@import "src/components/Wall/styles.scss";
|
||||||
@import "src/components/scenes/styles.scss";
|
|
||||||
|
|
||||||
body {
|
body {
|
||||||
|
color: $text-color;
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: $pt-navbar-height 0 0 0;
|
padding: 4rem 0 0 0;
|
||||||
|
|
||||||
@media (min-width: 600px) {
|
@media (min-width: 600px) {
|
||||||
min-width: 845px;
|
min-width: 845px;
|
||||||
@@ -31,11 +34,6 @@ code {
|
|||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
|
|
||||||
.card {
|
|
||||||
margin: 5px;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (min-width: 576px) {
|
@media (min-width: 576px) {
|
||||||
.zoom-0 {
|
.zoom-0 {
|
||||||
width: 15rem;
|
width: 15rem;
|
||||||
@@ -88,18 +86,13 @@ code {
|
|||||||
width: 20rem;
|
width: 20rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.filter-item,
|
|
||||||
.operation-item {
|
|
||||||
margin: 0 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.edit-button {
|
.edit-button {
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tag-item {
|
.tag-item {
|
||||||
background-color: $muted-gray;
|
background-color: $muted-gray;
|
||||||
color: #182026;
|
color: $dark-text;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
line-height: 16px;
|
line-height: 16px;
|
||||||
@@ -114,7 +107,7 @@ code {
|
|||||||
background: none;
|
background: none;
|
||||||
border: none;
|
border: none;
|
||||||
bottom: 2px;
|
bottom: 2px;
|
||||||
color: #182026;
|
color: $dark-text;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
line-height: 1rem;
|
line-height: 1rem;
|
||||||
margin-left: .5rem;
|
margin-left: .5rem;
|
||||||
@@ -145,6 +138,11 @@ code {
|
|||||||
margin: 10px auto;
|
margin: 10px auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.filter-item,
|
||||||
|
.operation-item {
|
||||||
|
margin: 0 10px;
|
||||||
|
}
|
||||||
|
|
||||||
.rating-5 {
|
.rating-5 {
|
||||||
background: #ff2f39;
|
background: #ff2f39;
|
||||||
}
|
}
|
||||||
@@ -181,180 +179,6 @@ code {
|
|||||||
transform: rotate(-36deg);
|
transform: rotate(-36deg);
|
||||||
}
|
}
|
||||||
|
|
||||||
.scene-specs-overlay {
|
|
||||||
bottom: 1rem;
|
|
||||||
color: $text-color;
|
|
||||||
display: block;
|
|
||||||
font-weight: 400;
|
|
||||||
letter-spacing: -.03rem;
|
|
||||||
position: absolute;
|
|
||||||
right: .7rem;
|
|
||||||
text-shadow: 0 0 3px #000;
|
|
||||||
}
|
|
||||||
|
|
||||||
.scene-studio-overlay {
|
|
||||||
display: block;
|
|
||||||
font-weight: 900;
|
|
||||||
height: 10%;
|
|
||||||
max-width: 40%;
|
|
||||||
opacity: .75;
|
|
||||||
position: absolute;
|
|
||||||
right: .7rem;
|
|
||||||
top: .7rem;
|
|
||||||
z-index: 9;
|
|
||||||
|
|
||||||
.image-thumbnail {
|
|
||||||
height: auto;
|
|
||||||
max-height: 50px;
|
|
||||||
max-width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: $text-color;
|
|
||||||
display: inline-block;
|
|
||||||
letter-spacing: -.03rem;
|
|
||||||
text-align: right;
|
|
||||||
text-decoration: none;
|
|
||||||
text-shadow: 0 0 3px #000;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.overlay-resolution {
|
|
||||||
font-weight: 900;
|
|
||||||
margin-right: .3rem;
|
|
||||||
text-transform: uppercase;
|
|
||||||
}
|
|
||||||
|
|
||||||
.scene-card {
|
|
||||||
.scene-specs-overlay,
|
|
||||||
.rating-banner,
|
|
||||||
.scene-studio-overlay {
|
|
||||||
transition: opacity .5s;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.scene-card:hover {
|
|
||||||
.scene-specs-overlay,
|
|
||||||
.rating-banner,
|
|
||||||
.scene-studio-overlay {
|
|
||||||
opacity: 0;
|
|
||||||
transition: opacity .5s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.scene-studio-overlay:hover {
|
|
||||||
opacity: .75;
|
|
||||||
transition: opacity .5s;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#jwplayer-container {
|
|
||||||
margin: 10px auto;
|
|
||||||
width: 75%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.video-js {
|
|
||||||
height: 90vh;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.pre {
|
|
||||||
white-space: pre-line;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* stylelint-disable selector-class-pattern */
|
|
||||||
.react-photo-gallery--gallery {
|
|
||||||
img {
|
|
||||||
object-fit: contain;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* stylelint-enable selector-class-pattern */
|
|
||||||
|
|
||||||
#parser-container {
|
|
||||||
margin: 10px auto;
|
|
||||||
width: 75%;
|
|
||||||
|
|
||||||
.inputs label {
|
|
||||||
width: 12rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.scene-parser-results {
|
|
||||||
overflow-x: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.scene-parser-row .parser-field-title input {
|
|
||||||
width: 50ch;
|
|
||||||
}
|
|
||||||
|
|
||||||
.scene-parser-row .parser-field-date input {
|
|
||||||
width: 13ch;
|
|
||||||
}
|
|
||||||
|
|
||||||
.scene-parser-row .parser-field-performers input {
|
|
||||||
width: 20ch;
|
|
||||||
}
|
|
||||||
|
|
||||||
.scene-parser-row .parser-field-tags input {
|
|
||||||
width: 20ch;
|
|
||||||
}
|
|
||||||
|
|
||||||
.scene-parser-row .parser-field-studio input {
|
|
||||||
width: 15ch;
|
|
||||||
}
|
|
||||||
|
|
||||||
.scene-parser-row input {
|
|
||||||
min-width: 10ch;
|
|
||||||
}
|
|
||||||
|
|
||||||
.scene-parser-row div:first-child > input {
|
|
||||||
margin-bottom: 5px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.aliases-field > label {
|
|
||||||
font-weight: 300;
|
|
||||||
}
|
|
||||||
|
|
||||||
.scene-cover {
|
|
||||||
display: block;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
margin-top: 10px;
|
|
||||||
max-width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.collapsible-label {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.label-icon {
|
|
||||||
margin-right: .3rem;
|
|
||||||
vertical-align: middle;
|
|
||||||
|
|
||||||
+ span {
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.main {
|
|
||||||
color: $text-color;
|
|
||||||
}
|
|
||||||
|
|
||||||
.table {
|
|
||||||
color: $text-color;
|
|
||||||
width: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
.table td {
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.table-striped tr:nth-child(odd) td {
|
|
||||||
background: rgba(92, 112, 128, .15);
|
|
||||||
}
|
|
||||||
|
|
||||||
.tab-pane {
|
|
||||||
margin-top: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card {
|
.card {
|
||||||
background-color: #30404d;
|
background-color: #30404d;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
@@ -374,64 +198,6 @@ code {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.button-link {
|
|
||||||
background-color: transparent;
|
|
||||||
border-width: 0;
|
|
||||||
color: $link-color;
|
|
||||||
cursor: pointer;
|
|
||||||
display: inline;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.button-link:hover {
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
.scrubber-button {
|
|
||||||
background-color: transparent;
|
|
||||||
color: $link-color;
|
|
||||||
}
|
|
||||||
|
|
||||||
.scrubber-button:hover {
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* BOOTSTRAP OVERRIDES */
|
|
||||||
.form-control {
|
|
||||||
&-plaintext {
|
|
||||||
color: $text-color;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
|
|
||||||
option {
|
|
||||||
color: black;
|
|
||||||
}
|
|
||||||
|
|
||||||
&::placeholder {
|
|
||||||
color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
cursor: default;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.popover {
|
|
||||||
&-body {
|
|
||||||
.btn {
|
|
||||||
color: $text-color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.modal {
|
|
||||||
.modal-body,
|
|
||||||
.modal-footer {
|
|
||||||
background-color: rgb(235, 241, 245);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.image-input {
|
.image-input {
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
margin-left: .5rem;
|
margin-left: .5rem;
|
||||||
@@ -461,21 +227,15 @@ code {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab-content {
|
.fa-icon {
|
||||||
padding-bottom: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* stylelint-disable selector-class-pattern */
|
|
||||||
.svg-inline--fa {
|
|
||||||
margin: 0 .4rem;
|
margin: 0 .4rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn .svg-inline--fa {
|
.btn .fa-icon {
|
||||||
&:last-child:first-child {
|
&:last-child:first-child {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* stylelint-enable */
|
|
||||||
|
|
||||||
.brand-icon {
|
.brand-icon {
|
||||||
padding: 3px 6px;
|
padding: 3px 6px;
|
||||||
@@ -487,7 +247,7 @@ code {
|
|||||||
|
|
||||||
.top-nav {
|
.top-nav {
|
||||||
@media (max-width: 576px) {
|
@media (max-width: 576px) {
|
||||||
a {
|
.btn {
|
||||||
padding: 6px;
|
padding: 6px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
::selection {
|
::selection {
|
||||||
background-color: #cce2ff;
|
background-color: #cce2ff;
|
||||||
color: rgba(0, 0, 0, .87);
|
color: $dark-text;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Form */
|
/* Form */
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
textarea::selection,
|
textarea::selection,
|
||||||
input::selection {
|
input::selection {
|
||||||
background-color: rgba(100, 100, 100, .4);
|
background-color: rgba(100, 100, 100, .4);
|
||||||
color: rgba(0, 0, 0, .87);
|
color: $dark-text;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Force Simple Scrollbars */
|
/* Force Simple Scrollbars */
|
||||||
|
|||||||
@@ -16,11 +16,12 @@ $theme-colors: (
|
|||||||
$body-bg: #202b33;
|
$body-bg: #202b33;
|
||||||
$text-muted: $muted-gray;
|
$text-muted: $muted-gray;
|
||||||
$link-color: #48aff0;
|
$link-color: #48aff0;
|
||||||
$link-hover-color: #48aff0;
|
$link-hover-color: $link-color;
|
||||||
$text-color: #f5f8fa;
|
$text-color: #f5f8fa;
|
||||||
$pre-color: $text-color;
|
$pre-color: $text-color;
|
||||||
$navbar-dark-color: rgb(245, 248, 250);
|
$navbar-dark-color: rgb(245, 248, 250);
|
||||||
$popover-bg: $secondary;
|
$popover-bg: $secondary;
|
||||||
|
$dark-text: #182026;
|
||||||
|
|
||||||
@import "node_modules/bootstrap/scss/bootstrap";
|
@import "node_modules/bootstrap/scss/bootstrap";
|
||||||
|
|
||||||
@@ -30,8 +31,6 @@ $sepia1: #63411e;
|
|||||||
$dark-gray2: #202b33;
|
$dark-gray2: #202b33;
|
||||||
$dark-gray5: #394b59;
|
$dark-gray5: #394b59;
|
||||||
|
|
||||||
$pt-navbar-height: 4rem;
|
|
||||||
|
|
||||||
.btn.active:not(.disabled),
|
.btn.active:not(.disabled),
|
||||||
.btn.active.minimal:not(.disabled) {
|
.btn.active.minimal:not(.disabled) {
|
||||||
background-color: rgba(138, 155, 168, .3);
|
background-color: rgba(138, 155, 168, .3);
|
||||||
@@ -56,6 +55,10 @@ button.minimal {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hr {
|
||||||
|
margin: 5px 0;
|
||||||
|
}
|
||||||
|
|
||||||
.dropdown-toggle::after {
|
.dropdown-toggle::after {
|
||||||
content: none;
|
content: none;
|
||||||
}
|
}
|
||||||
@@ -67,6 +70,7 @@ button.minimal {
|
|||||||
.nav-tabs {
|
.nav-tabs {
|
||||||
border: none;
|
border: none;
|
||||||
margin: auto;
|
margin: auto;
|
||||||
|
margin-bottom: .5rem;
|
||||||
|
|
||||||
.nav-link {
|
.nav-link {
|
||||||
border: none;
|
border: none;
|
||||||
@@ -78,34 +82,38 @@ button.minimal {
|
|||||||
color: $link-color;
|
color: $link-color;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
|
border-bottom-color: $link-color;
|
||||||
cursor: default;
|
cursor: default;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
border-bottom: 2px solid white;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
hr {
|
.tab-content {
|
||||||
margin: 5px 0;
|
padding-bottom: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-striped tr:nth-child(odd) td {
|
||||||
|
background: rgba(92, 112, 128, .15);
|
||||||
}
|
}
|
||||||
|
|
||||||
.table {
|
.table {
|
||||||
border: none;
|
border: none;
|
||||||
|
color: $text-color;
|
||||||
|
|
||||||
thead {
|
thead {
|
||||||
th {
|
th {
|
||||||
|
border-bottom: 1px solid rgba(255, 255, 255, .15);
|
||||||
|
border-top: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
td {
|
||||||
border: none;
|
border: none;
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
td {
|
|
||||||
a {
|
|
||||||
color: $text-color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.table {
|
|
||||||
td {
|
|
||||||
padding: .25rem .75rem;
|
padding: .25rem .75rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -116,4 +124,43 @@ hr {
|
|||||||
|
|
||||||
.card {
|
.card {
|
||||||
border: none;
|
border: none;
|
||||||
|
margin: 5px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-control {
|
||||||
|
&-plaintext {
|
||||||
|
color: $text-color;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
option {
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
&::placeholder {
|
||||||
|
color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.popover {
|
||||||
|
&-body {
|
||||||
|
.btn {
|
||||||
|
color: $text-color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal {
|
||||||
|
color: $dark-text;
|
||||||
|
|
||||||
|
.modal-body,
|
||||||
|
.modal-footer {
|
||||||
|
background-color: rgb(235, 241, 245);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user