Run pnpm format
This commit is contained in:
parent
e17eb02341
commit
13c417fcee
8
theseus_gui/src/app.d.ts
vendored
8
theseus_gui/src/app.d.ts
vendored
@ -3,11 +3,11 @@
|
|||||||
// See https://kit.svelte.dev/docs/typescript
|
// See https://kit.svelte.dev/docs/typescript
|
||||||
// for information about these interfaces
|
// for information about these interfaces
|
||||||
declare namespace App {
|
declare namespace App {
|
||||||
interface Locals {}
|
interface Locals {}
|
||||||
|
|
||||||
interface Platform {}
|
interface Platform {}
|
||||||
|
|
||||||
interface Session {}
|
interface Session {}
|
||||||
|
|
||||||
interface Stuff {}
|
interface Stuff {}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,14 +1,14 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<link rel="preload" href="/fonts/InterRegular.woff2" as="font" type="font/woff2" crossorigin>
|
<link rel="preload" href="/fonts/InterRegular.woff2" as="font" type="font/woff2" crossorigin />
|
||||||
<link rel="preload" href="/fonts/InterBold.woff2" as="font" type="font/woff2" crossorigin>
|
<link rel="preload" href="/fonts/InterBold.woff2" as="font" type="font/woff2" crossorigin />
|
||||||
<link rel="preload" href="/fonts/InterSemiBold.woff2" as="font" type="font/woff2" crossorigin>
|
<link rel="preload" href="/fonts/InterSemiBold.woff2" as="font" type="font/woff2" crossorigin />
|
||||||
%sveltekit.head%
|
%sveltekit.head%
|
||||||
</head>
|
</head>
|
||||||
<body class="base theme-dark" style="background-color: hsl(220, 13%, 15%)">
|
<body class="base theme-dark" style="background-color: hsl(220, 13%, 15%)">
|
||||||
%sveltekit.body%
|
%sveltekit.body%
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@ -1,54 +1,53 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
export let title: string;
|
export let title: string;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="card-row">
|
<div class="card-row">
|
||||||
<div class="card-row__title">{title}</div>
|
<div class="card-row__title">{title}</div>
|
||||||
<div class="card-row__items">
|
<div class="card-row__items">
|
||||||
<slot />
|
<slot />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<style lang="postcss">
|
<style lang="postcss">
|
||||||
.card-row {
|
.card-row {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
padding: 1rem 0;
|
padding: 1rem 0;
|
||||||
grid-gap: 1rem;
|
grid-gap: 1rem;
|
||||||
|
|
||||||
&__title {
|
&__title {
|
||||||
padding: 0 1rem;
|
padding: 0 1rem;
|
||||||
display: flex;
|
display: flex;
|
||||||
grid-gap: 1rem;
|
grid-gap: 1rem;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
&::after {
|
&::after {
|
||||||
flex: 1 1;
|
flex: 1 1;
|
||||||
content: " ";
|
content: ' ';
|
||||||
background-color: hsla(0,0%,100%,0.2);
|
background-color: hsla(0, 0%, 100%, 0.2);
|
||||||
height: 0.2rem;
|
height: 0.2rem;
|
||||||
border-radius: var(--rounded-max);
|
border-radius: var(--rounded-max);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
&__items {
|
|
||||||
display: flex;
|
|
||||||
grid-gap: 1rem;
|
|
||||||
align-items: flex-start;
|
|
||||||
overflow-x: auto;
|
|
||||||
padding: 0 1rem;
|
|
||||||
|
|
||||||
/* Hide scrollbar */
|
|
||||||
-ms-overflow-style: none;
|
|
||||||
scrollbar-width: none;
|
|
||||||
&::-webkit-scrollbar {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&:nth-of-type(even) {
|
|
||||||
background-color: hsla(0,0%,0%,0.2);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
</style>
|
|
||||||
|
&__items {
|
||||||
|
display: flex;
|
||||||
|
grid-gap: 1rem;
|
||||||
|
align-items: flex-start;
|
||||||
|
overflow-x: auto;
|
||||||
|
padding: 0 1rem;
|
||||||
|
|
||||||
|
/* Hide scrollbar */
|
||||||
|
-ms-overflow-style: none;
|
||||||
|
scrollbar-width: none;
|
||||||
|
&::-webkit-scrollbar {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-of-type(even) {
|
||||||
|
background-color: hsla(0, 0%, 0%, 0.2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|||||||
@ -1,58 +1,58 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { Field, Slider, TextInput, Button } from "omorphia"
|
import { Field, Slider, TextInput, Button } from 'omorphia';
|
||||||
import TitledSection from "$components/TitledSection.svelte"
|
import TitledSection from '$components/TitledSection.svelte';
|
||||||
import WindowSettings from "$components/WindowSettings.svelte"
|
import WindowSettings from '$components/WindowSettings.svelte';
|
||||||
|
|
||||||
export let maxConcurrentDownloads: number = 20;
|
export let maxConcurrentDownloads: number = 20;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="section">
|
<div class="section">
|
||||||
<TitledSection title="Downloads">
|
<TitledSection title="Downloads">
|
||||||
<Field label="Max concurrent downloads">
|
<Field label="Max concurrent downloads">
|
||||||
<Slider min=1 max=64 bind:value={maxConcurrentDownloads} />
|
<Slider min="1" max="64" bind:value={maxConcurrentDownloads} />
|
||||||
</Field>
|
</Field>
|
||||||
</TitledSection>
|
</TitledSection>
|
||||||
<TitledSection title="Override game resolution" toggleable=true>
|
<TitledSection title="Override game resolution" toggleable="true">
|
||||||
<WindowSettings />
|
<WindowSettings />
|
||||||
</TitledSection>
|
</TitledSection>
|
||||||
<TitledSection title="Profile hooks">
|
<TitledSection title="Profile hooks">
|
||||||
<Field label="Pre-launch">
|
<Field label="Pre-launch">
|
||||||
<TextInput />
|
<TextInput />
|
||||||
</Field>
|
</Field>
|
||||||
<Field label="Wrapper">
|
<Field label="Wrapper">
|
||||||
<TextInput />
|
<TextInput />
|
||||||
</Field>
|
</Field>
|
||||||
<Field label="Post-exit">
|
<Field label="Post-exit">
|
||||||
<TextInput />
|
<TextInput />
|
||||||
</Field>
|
</Field>
|
||||||
</TitledSection>
|
</TitledSection>
|
||||||
<TitledSection title="Java">
|
<TitledSection title="Java">
|
||||||
<Field label="Java 8 installation">
|
<Field label="Java 8 installation">
|
||||||
<TextInput placeholder="/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home" />
|
<TextInput placeholder="/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home" />
|
||||||
<div class="button-group">
|
<div class="button-group">
|
||||||
<Button>Auto-detect</Button>
|
<Button>Auto-detect</Button>
|
||||||
<Button>Browse installations</Button>
|
<Button>Browse installations</Button>
|
||||||
<Button>Test</Button>
|
<Button>Test</Button>
|
||||||
</div>
|
</div>
|
||||||
</Field>
|
</Field>
|
||||||
<Field label="Java 17 installation">
|
<Field label="Java 17 installation">
|
||||||
<TextInput placeholder="/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home" />
|
<TextInput placeholder="/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home" />
|
||||||
<div class="button-group">
|
<div class="button-group">
|
||||||
<Button>Auto-detect</Button>
|
<Button>Auto-detect</Button>
|
||||||
<Button>Browse installations</Button>
|
<Button>Browse installations</Button>
|
||||||
<Button>Test</Button>
|
<Button>Test</Button>
|
||||||
</div>
|
</div>
|
||||||
</Field>
|
</Field>
|
||||||
<Field label="Minimum memory allocatted (in MB)">
|
<Field label="Minimum memory allocatted (in MB)">
|
||||||
<TextInput />
|
<TextInput />
|
||||||
</Field>
|
</Field>
|
||||||
<Field label="Maximum memory allocatted (in MB)">
|
<Field label="Maximum memory allocatted (in MB)">
|
||||||
<TextInput value="2048" />
|
<TextInput value="2048" />
|
||||||
</Field>
|
</Field>
|
||||||
<Field label="Arguments">
|
<Field label="Arguments">
|
||||||
<TextInput/>
|
<TextInput />
|
||||||
</Field>
|
</Field>
|
||||||
</TitledSection>
|
</TitledSection>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style lang="postcss">
|
<style lang="postcss">
|
||||||
|
|||||||
@ -1,85 +1,90 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import IconPlayFilled from "virtual:icons/carbon/play-filled-alt"
|
import IconPlayFilled from 'virtual:icons/carbon/play-filled-alt';
|
||||||
import IconBadgeCheck from "virtual:icons/heroicons-solid/badge-check"
|
import IconBadgeCheck from 'virtual:icons/heroicons-solid/badge-check';
|
||||||
|
|
||||||
export let title: string;
|
export let title: string;
|
||||||
export let id: string;
|
export let id: string;
|
||||||
export let version: string;
|
export let version: string;
|
||||||
export let modpack = false;
|
export let modpack = false;
|
||||||
export let image: string;
|
export let image: string;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<a class="instance" href="/library/instance/{id}/settings"
|
<a
|
||||||
style:background-image="linear-gradient(5deg, hsla(0,0%,0%,0.8) 0%, hsla(0,0%,0%,0) 100%), url('{image}')">
|
class="instance"
|
||||||
<div class="instance__version">{version}{#if modpack}<IconBadgeCheck />{/if}</div>
|
href="/library/instance/{id}/settings"
|
||||||
<div class="instance__title">{title}</div>
|
style:background-image="linear-gradient(5deg, hsla(0,0%,0%,0.8) 0%, hsla(0,0%,0%,0) 100%), url('{image}')"
|
||||||
<button class="play-button">
|
>
|
||||||
<IconPlayFilled />
|
<div class="instance__version">
|
||||||
</button>
|
{version}{#if modpack}<IconBadgeCheck />{/if}
|
||||||
|
</div>
|
||||||
|
<div class="instance__title">{title}</div>
|
||||||
|
<button class="play-button">
|
||||||
|
<IconPlayFilled />
|
||||||
|
</button>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<style lang="postcss">
|
<style lang="postcss">
|
||||||
.instance {
|
.instance {
|
||||||
--size: 8rem;
|
--size: 8rem;
|
||||||
min-width: var(--size);
|
min-width: var(--size);
|
||||||
min-height: var(--size);
|
min-height: var(--size);
|
||||||
border-radius: var(--rounded);
|
border-radius: var(--rounded);
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
padding: 0.5rem;
|
padding: 0.5rem;
|
||||||
box-shadow: var(--shadow-raised) var(--shadow-inset);
|
box-shadow: var(--shadow-raised) var(--shadow-inset);
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
|
|
||||||
&__title {
|
&__title {
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
|
||||||
|
|
||||||
&__version {
|
|
||||||
color: var(--color-text);
|
|
||||||
font-size: var(--font-size-sm);
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
grid-gap: 0.15rem;
|
|
||||||
:global(svg) {
|
|
||||||
margin-bottom: 0.05rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover .play-button {
|
|
||||||
visibility: visible;
|
|
||||||
opacity: 1;
|
|
||||||
transform: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.play-button {
|
|
||||||
position: absolute;
|
|
||||||
bottom: 0.5rem;
|
|
||||||
right: 0.5rem;
|
|
||||||
background-color: var(--color-brand);
|
|
||||||
width: 2.5rem;
|
|
||||||
aspect-ratio: 1 / 1;
|
|
||||||
border-radius: var(--rounded-max);
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
visibility: hidden;
|
|
||||||
opacity: 0;
|
|
||||||
transition-property: opacity, visibility, transform;
|
|
||||||
transition-duration: 0.2s;
|
|
||||||
transition-timing-function: ease-in-out;
|
|
||||||
transform: translateY(1rem);
|
|
||||||
|
|
||||||
:global(svg) {
|
|
||||||
width: 1.25rem;
|
|
||||||
height: auto;
|
|
||||||
color: black;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&__version {
|
||||||
|
color: var(--color-text);
|
||||||
|
font-size: var(--font-size-sm);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
grid-gap: 0.15rem;
|
||||||
|
:global(svg) {
|
||||||
|
margin-bottom: 0.05rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover .play-button {
|
||||||
|
visibility: visible;
|
||||||
|
opacity: 1;
|
||||||
|
transform: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.play-button {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0.5rem;
|
||||||
|
right: 0.5rem;
|
||||||
|
background-color: var(--color-brand);
|
||||||
|
width: 2.5rem;
|
||||||
|
aspect-ratio: 1 / 1;
|
||||||
|
border-radius: var(--rounded-max);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
visibility: hidden;
|
||||||
|
opacity: 0;
|
||||||
|
transition-property: opacity, visibility, transform;
|
||||||
|
transition-duration: 0.2s;
|
||||||
|
transition-timing-function: ease-in-out;
|
||||||
|
transform: translateY(1rem);
|
||||||
|
|
||||||
|
:global(svg) {
|
||||||
|
width: 1.25rem;
|
||||||
|
height: auto;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -1,49 +1,49 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { Checkbox } from "omorphia"
|
import { Checkbox } from 'omorphia';
|
||||||
|
|
||||||
export let title: string
|
export let title: string;
|
||||||
export let toggleable: boolean = false
|
export let toggleable: boolean = false;
|
||||||
|
|
||||||
export let enabled: boolean = false
|
export let enabled: boolean = false;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="section">
|
<div class="section">
|
||||||
<div class="section__title">
|
<div class="section__title">
|
||||||
{#if toggleable}<Checkbox bind:checked={enabled}>{title}</Checkbox>
|
{#if toggleable}<Checkbox bind:checked={enabled}>{title}</Checkbox>
|
||||||
{:else}{title}
|
{:else}{title}
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
<div class="section__items">
|
<div class="section__items">
|
||||||
{#if !toggleable || enabled}<slot />{/if}
|
{#if !toggleable || enabled}<slot />{/if}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style lang="postcss">
|
<style lang="postcss">
|
||||||
.section {
|
.section {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
grid-gap: 1rem;
|
grid-gap: 1rem;
|
||||||
|
|
||||||
&__title {
|
&__title {
|
||||||
display: flex;
|
display: flex;
|
||||||
grid-gap: 1rem;
|
grid-gap: 1rem;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
&::after {
|
&::after {
|
||||||
flex: 1 1;
|
flex: 1 1;
|
||||||
content: " ";
|
content: ' ';
|
||||||
background-color: hsla(0, 0%, 100%, 0.2);
|
background-color: hsla(0, 0%, 100%, 0.2);
|
||||||
height: 0.2rem;
|
height: 0.2rem;
|
||||||
border-radius: var(--rounded-max);
|
border-radius: var(--rounded-max);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
&__items {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
grid-gap: 1rem;
|
|
||||||
padding: 0 8px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&__items {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
grid-gap: 1rem;
|
||||||
|
padding: 0 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -1,36 +1,34 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { SvelteComponent } from 'svelte'
|
import { SvelteComponent } from 'svelte';
|
||||||
import { page } from "$app/stores";
|
import { page } from '$app/stores';
|
||||||
|
|
||||||
export let items: {
|
export let items: {
|
||||||
label: string,
|
label: string;
|
||||||
/** Page href, without slash prefix */
|
/** Page href, without slash prefix */
|
||||||
href: string,
|
href: string;
|
||||||
icon: SvelteComponent
|
icon: SvelteComponent;
|
||||||
}[];
|
}[];
|
||||||
|
|
||||||
/** Path level in URL, zero-indexed */
|
/** Path level in URL, zero-indexed */
|
||||||
export let level = 0;
|
export let level = 0;
|
||||||
|
|
||||||
let path: string[];
|
let path: string[];
|
||||||
$: path = $page.url.pathname
|
$: path = $page.url.pathname.substring(1).split('/');
|
||||||
.substring(1)
|
|
||||||
.split('/')
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="vertical-nav">
|
<div class="vertical-nav">
|
||||||
{#each items as item (item.href)}
|
{#each items as item (item.href)}
|
||||||
<a class="nav-item" href="/{item.href}" class:active={path[level] === item.href}>
|
<a class="nav-item" href="/{item.href}" class:active={path[level] === item.href}>
|
||||||
<svelte:component this={item.icon} />
|
<svelte:component this={item.icon} />
|
||||||
{item.label}
|
{item.label}
|
||||||
</a>
|
</a>
|
||||||
{/each}
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style lang="postcss">
|
<style lang="postcss">
|
||||||
.vertical-nav {
|
.vertical-nav {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
grid-gap: 0.25rem;
|
grid-gap: 0.25rem;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -1,14 +1,14 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { Field, TextInput } from "omorphia"
|
import { Field, TextInput } from 'omorphia';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="section">
|
<div class="section">
|
||||||
<Field label="Window width">
|
<Field label="Window width">
|
||||||
<TextInput />
|
<TextInput />
|
||||||
</Field>
|
</Field>
|
||||||
<Field label="Window height">
|
<Field label="Window height">
|
||||||
<TextInput />
|
<TextInput />
|
||||||
</Field>
|
</Field>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style lang="postcss">
|
<style lang="postcss">
|
||||||
|
|||||||
10
theseus_gui/src/global.d.ts
vendored
10
theseus_gui/src/global.d.ts
vendored
@ -2,12 +2,12 @@
|
|||||||
/// <reference types="unplugin-icons/types/svelte" />
|
/// <reference types="unplugin-icons/types/svelte" />
|
||||||
|
|
||||||
declare module '$assets/images/*' {
|
declare module '$assets/images/*' {
|
||||||
export { SvelteComponentDev as default } from 'svelte/internal';
|
export { SvelteComponentDev as default } from 'svelte/internal';
|
||||||
}
|
}
|
||||||
declare module '$locales/*';
|
declare module '$locales/*';
|
||||||
|
|
||||||
declare module '*.svg' {
|
declare module '*.svg' {
|
||||||
import { SvelteComponent } from 'svelte';
|
import { SvelteComponent } from 'svelte';
|
||||||
const content: SvelteComponent;
|
const content: SvelteComponent;
|
||||||
export default content;
|
export default content;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/** @type {import('@sveltejs/kit').Handle} */
|
/** @type {import('@sveltejs/kit').Handle} */
|
||||||
export async function handle({ event, resolve }) {
|
export async function handle({ event, resolve }) {
|
||||||
return await resolve(event, {
|
return await resolve(event, {
|
||||||
ssr: false,
|
ssr: false
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,55 +1,55 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { Svrollbar } from 'svrollbar'
|
import { Svrollbar } from 'svrollbar';
|
||||||
|
|
||||||
let viewport: Element
|
let viewport: Element;
|
||||||
let contents: Element
|
let contents: Element;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="page">
|
<div class="page">
|
||||||
<div bind:this={viewport} class="viewport">
|
<div bind:this={viewport} class="viewport">
|
||||||
<div bind:this={contents} class="contents">
|
<div bind:this={contents} class="contents">
|
||||||
<slot />
|
<slot />
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<Svrollbar {viewport} {contents} />
|
</div>
|
||||||
|
<Svrollbar {viewport} {contents} />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style lang="postcss">
|
<style lang="postcss">
|
||||||
.page {
|
.page {
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|
||||||
--svrollbar-track-width: 20px;
|
--svrollbar-track-width: 20px;
|
||||||
--svrollbar-track-opacity: 0;
|
--svrollbar-track-opacity: 0;
|
||||||
|
|
||||||
--svrollbar-thumb-width: 8px;
|
--svrollbar-thumb-width: 8px;
|
||||||
--svrollbar-thumb-background: hsla(216,5%,60%);
|
--svrollbar-thumb-background: hsla(216, 5%, 60%);
|
||||||
--svrollbar-thumb-opacity: 0.9;
|
--svrollbar-thumb-opacity: 0.9;
|
||||||
|
}
|
||||||
|
|
||||||
|
.viewport {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
height: calc(100vh - 2.5rem);
|
||||||
|
overflow-y: scroll;
|
||||||
|
overflow-x: hidden;
|
||||||
|
|
||||||
|
/* hide scrollbar */
|
||||||
|
-ms-overflow-style: none;
|
||||||
|
scrollbar-width: none;
|
||||||
|
|
||||||
|
&::-webkit-scrollbar {
|
||||||
|
/* hide scrollbar */
|
||||||
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.viewport {
|
.contents {
|
||||||
position: relative;
|
height: 100%;
|
||||||
width: 100%;
|
|
||||||
height: calc(100vh - 2.5rem);
|
|
||||||
overflow-y: scroll;
|
|
||||||
overflow-x: hidden;
|
|
||||||
|
|
||||||
/* hide scrollbar */
|
|
||||||
-ms-overflow-style: none;
|
|
||||||
scrollbar-width: none;
|
|
||||||
|
|
||||||
&::-webkit-scrollbar {
|
|
||||||
/* hide scrollbar */
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contents {
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
:global(.v-thumb) {
|
:global(.v-thumb) {
|
||||||
margin: 4px auto 4px auto !important;
|
margin: 4px auto 4px auto !important;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -1,144 +1,146 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import VerticalNav from '../components/VerticalNav.svelte'
|
import VerticalNav from '../components/VerticalNav.svelte';
|
||||||
import IconHome from 'virtual:icons/lucide/home'
|
import IconHome from 'virtual:icons/lucide/home';
|
||||||
import IconSearch from 'virtual:icons/heroicons-outline/search'
|
import IconSearch from 'virtual:icons/heroicons-outline/search';
|
||||||
import IconPlus from 'virtual:icons/heroicons-outline/plus'
|
import IconPlus from 'virtual:icons/heroicons-outline/plus';
|
||||||
import IconLibrary from 'virtual:icons/lucide/library';
|
import IconLibrary from 'virtual:icons/lucide/library';
|
||||||
import IconSettings from 'virtual:icons/lucide/settings'
|
import IconSettings from 'virtual:icons/lucide/settings';
|
||||||
import { page } from "$app/stores";
|
import { page } from '$app/stores';
|
||||||
import { Button } from 'omorphia'
|
import { Button } from 'omorphia';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="sidebar">
|
<div class="sidebar">
|
||||||
<div class="account">
|
<div class="account">
|
||||||
<div class="account__heads">
|
<div class="account__heads">
|
||||||
<img src="https://mc-heads.net/avatar/venashial" alt="Minecraft head"/>
|
<img src="https://mc-heads.net/avatar/venashial" alt="Minecraft head" />
|
||||||
</div>
|
|
||||||
|
|
||||||
<a class="account__info" href="/settings/accounts">
|
|
||||||
<div>venashial</div>
|
|
||||||
<div class="account__info__manage">Manage accounts</div>
|
|
||||||
</a>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<VerticalNav items={[
|
<a class="account__info" href="/settings/accounts">
|
||||||
{
|
<div>venashial</div>
|
||||||
label: 'Home',
|
<div class="account__info__manage">Manage accounts</div>
|
||||||
href: '',
|
|
||||||
icon: IconHome,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: 'Search',
|
|
||||||
href: 'search',
|
|
||||||
icon: IconSearch,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: 'Library',
|
|
||||||
href: 'library',
|
|
||||||
icon: IconLibrary,
|
|
||||||
}
|
|
||||||
]}/>
|
|
||||||
|
|
||||||
<div class="instance-list">
|
|
||||||
<div class="instance-list__title">Instances</div>
|
|
||||||
<div class="instance-list__container">
|
|
||||||
<a class="instance-list__container__item">Fabulously Optimized</a>
|
|
||||||
<a class="instance-list__container__item">Fabulously Optimized</a>
|
|
||||||
<a class="instance-list__container__item">Fabulously Optimized</a>
|
|
||||||
<a class="instance-list__container__item">Fabulously Optimized</a>
|
|
||||||
<a class="instance-list__container__item">Fabulously Optimized</a>
|
|
||||||
<a class="instance-list__container__item">Fabulously Optimized</a>
|
|
||||||
<a class="instance-list__container__item">Fabulously Optimized</a>
|
|
||||||
<a class="instance-list__container__item">Fabulously Optimized</a>
|
|
||||||
<a class="instance-list__container__item">Fabulously Optimized</a>
|
|
||||||
<a class="instance-list__container__item">Fabulously Optimized</a>
|
|
||||||
<a class="instance-list__container__item">Fabulously Optimized</a>
|
|
||||||
<a class="instance-list__container__item">Fabulously Optimized</a>
|
|
||||||
</div>
|
|
||||||
<div class="instance-list__create">
|
|
||||||
<Button color="primary"><IconPlus /></Button> Create instance
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<a class="nav-item" href="/settings" class:active={$page.url.pathname.startsWith('/settings')}>
|
|
||||||
<IconSettings />
|
|
||||||
Settings
|
|
||||||
</a>
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<VerticalNav
|
||||||
|
items={[
|
||||||
|
{
|
||||||
|
label: 'Home',
|
||||||
|
href: '',
|
||||||
|
icon: IconHome
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Search',
|
||||||
|
href: 'search',
|
||||||
|
icon: IconSearch
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Library',
|
||||||
|
href: 'library',
|
||||||
|
icon: IconLibrary
|
||||||
|
}
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<div class="instance-list">
|
||||||
|
<div class="instance-list__title">Instances</div>
|
||||||
|
<div class="instance-list__container">
|
||||||
|
<a class="instance-list__container__item">Fabulously Optimized</a>
|
||||||
|
<a class="instance-list__container__item">Fabulously Optimized</a>
|
||||||
|
<a class="instance-list__container__item">Fabulously Optimized</a>
|
||||||
|
<a class="instance-list__container__item">Fabulously Optimized</a>
|
||||||
|
<a class="instance-list__container__item">Fabulously Optimized</a>
|
||||||
|
<a class="instance-list__container__item">Fabulously Optimized</a>
|
||||||
|
<a class="instance-list__container__item">Fabulously Optimized</a>
|
||||||
|
<a class="instance-list__container__item">Fabulously Optimized</a>
|
||||||
|
<a class="instance-list__container__item">Fabulously Optimized</a>
|
||||||
|
<a class="instance-list__container__item">Fabulously Optimized</a>
|
||||||
|
<a class="instance-list__container__item">Fabulously Optimized</a>
|
||||||
|
<a class="instance-list__container__item">Fabulously Optimized</a>
|
||||||
|
</div>
|
||||||
|
<div class="instance-list__create">
|
||||||
|
<Button color="primary"><IconPlus /></Button> Create instance
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<a class="nav-item" href="/settings" class:active={$page.url.pathname.startsWith('/settings')}>
|
||||||
|
<IconSettings />
|
||||||
|
Settings
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style lang="postcss">
|
<style lang="postcss">
|
||||||
.sidebar {
|
.sidebar {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
padding: 1rem;
|
||||||
|
height: 100%;
|
||||||
|
background-color: var(--sidebar-bg);
|
||||||
|
|
||||||
|
.account {
|
||||||
|
display: flex;
|
||||||
|
grid-gap: 0.75rem;
|
||||||
|
|
||||||
|
&__heads {
|
||||||
|
img {
|
||||||
|
width: 2.5rem;
|
||||||
|
border-radius: var(--rounded-sm);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&__info {
|
||||||
|
&__manage {
|
||||||
|
color: var(--color-text-light);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.instance-list {
|
||||||
|
padding: 0 8px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
color: var(--color-text-light);
|
||||||
|
|
||||||
|
&__title {
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
font-size: 11px;
|
||||||
|
line-height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
&__container {
|
||||||
|
max-height: calc(100vh - 400px);
|
||||||
|
overflow-y: auto;
|
||||||
|
mask-image: linear-gradient(to bottom, transparent, hsla(0, 0%, 0%, 1) 5% 95%, transparent);
|
||||||
|
scrollbar-width: none;
|
||||||
|
padding: 8px 0;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
padding: 1rem;
|
gap: 4px;
|
||||||
height: 100%;
|
|
||||||
background-color: var(--sidebar-bg);
|
|
||||||
|
|
||||||
.account {
|
&::-webkit-scrollbar {
|
||||||
display: flex;
|
display: none;
|
||||||
grid-gap: 0.75rem;
|
|
||||||
|
|
||||||
&__heads {
|
|
||||||
img {
|
|
||||||
width: 2.5rem;
|
|
||||||
border-radius: var(--rounded-sm);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&__info {
|
|
||||||
&__manage {
|
|
||||||
color: var(--color-text-light);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.instance-list {
|
&__create {
|
||||||
padding: 0 8px;
|
margin-top: 16px;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
align-items: center;
|
||||||
color: var(--color-text-light);
|
grid-gap: 8px;
|
||||||
|
|
||||||
&__title {
|
:global(button) {
|
||||||
text-transform: uppercase;
|
width: 34px;
|
||||||
letter-spacing: 1px;
|
|
||||||
font-size: 11px;
|
|
||||||
line-height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
&__container {
|
|
||||||
max-height: calc(100vh - 400px);
|
|
||||||
overflow-y: auto;
|
|
||||||
mask-image: linear-gradient(to bottom, transparent, hsla(0, 0%, 0%, 1) 5% 95%, transparent);
|
|
||||||
scrollbar-width: none;
|
|
||||||
padding: 8px 0;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
gap: 4px;
|
|
||||||
|
|
||||||
&::-webkit-scrollbar {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&__create {
|
|
||||||
margin-top: 16px;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
grid-gap: 8px;
|
|
||||||
|
|
||||||
:global(button) {
|
|
||||||
width: 34px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
> :global(*) {
|
|
||||||
margin-bottom: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
> *:last-child {
|
|
||||||
margin-top: auto;
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
> :global(*) {
|
||||||
|
margin-bottom: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
> *:last-child {
|
||||||
|
margin-top: auto;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -1,71 +1,69 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import IconChevronLeft from 'virtual:icons/lucide/chevron-left';
|
import IconChevronLeft from 'virtual:icons/lucide/chevron-left';
|
||||||
import IconChevronRight from 'virtual:icons/lucide/chevron-right';
|
import IconChevronRight from 'virtual:icons/lucide/chevron-right';
|
||||||
import IconCaretRight from 'virtual:icons/carbon/caret-right';
|
import IconCaretRight from 'virtual:icons/carbon/caret-right';
|
||||||
import { page } from '$app/stores'
|
import { page } from '$app/stores';
|
||||||
|
|
||||||
let path: string[];
|
let path: string[];
|
||||||
$: path = $page.url.pathname
|
$: path = $page.url.pathname.substring(1).split('/');
|
||||||
.substring(1)
|
|
||||||
.split('/')
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="status-bar">
|
<div class="status-bar">
|
||||||
<div class="page-nav">
|
<div class="page-nav">
|
||||||
<button title="Back" on:click={() => window.history.back()}>
|
<button title="Back" on:click={() => window.history.back()}>
|
||||||
<IconChevronLeft />
|
<IconChevronLeft />
|
||||||
</button>
|
</button>
|
||||||
<button title="Forward" on:click={() => window.history.forward()}>
|
<button title="Forward" on:click={() => window.history.forward()}>
|
||||||
<IconChevronRight />
|
<IconChevronRight />
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="breadcrumbs">
|
<div class="breadcrumbs">
|
||||||
{#each path as crumb, index}
|
{#each path as crumb, index}
|
||||||
{#if index !== 0}
|
{#if index !== 0}
|
||||||
<IconCaretRight />
|
<IconCaretRight />
|
||||||
{/if}
|
{/if}
|
||||||
<a class="breadcrumbs__crumb" href={crumb}>{crumb || 'home'}</a>
|
<a class="breadcrumbs__crumb" href={crumb}>{crumb || 'home'}</a>
|
||||||
{/each}
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="statuses">
|
<div class="statuses">
|
||||||
<div>Updating 12 mods...</div>
|
<div>Updating 12 mods...</div>
|
||||||
<div>236 mods installed</div>
|
<div>236 mods installed</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style lang="postcss">
|
<style lang="postcss">
|
||||||
.status-bar {
|
.status-bar {
|
||||||
display: flex;
|
display: flex;
|
||||||
padding: 0.75rem;
|
padding: 0.75rem;
|
||||||
grid-gap: 0.75rem;
|
grid-gap: 0.75rem;
|
||||||
background-color: var(--status-bg);
|
background-color: var(--status-bg);
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
box-shadow: var(--shadow-raised);
|
box-shadow: var(--shadow-raised);
|
||||||
|
}
|
||||||
|
|
||||||
|
.breadcrumbs {
|
||||||
|
display: flex;
|
||||||
|
grid-gap: 0.25rem;
|
||||||
|
text-transform: capitalize;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
&__crumb:hover {
|
||||||
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
.breadcrumbs {
|
:global(.icon) {
|
||||||
display: flex;
|
color: var(--color-text-lightest);
|
||||||
grid-gap: 0.25rem;
|
|
||||||
text-transform: capitalize;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
&__crumb:hover {
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
:global(.icon) {
|
|
||||||
color: var(--color-text-lightest)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.statuses {
|
.statuses {
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
display: flex;
|
display: flex;
|
||||||
grid-gap: 1rem;
|
grid-gap: 1rem;
|
||||||
color: var(--color-text-lightest);
|
color: var(--color-text-lightest);
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -1,27 +1,41 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
import Instance from '$components/Instance.svelte';
|
||||||
import Instance from "$components/Instance.svelte";
|
import CardRow from '$components/CardRow.svelte';
|
||||||
import CardRow from "$components/CardRow.svelte";
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<CardRow title="Jump back in">
|
<CardRow title="Jump back in">
|
||||||
{#each Array(5) as _, i}
|
{#each Array(5) as _, i}
|
||||||
<Instance title="New Caves" id="234" version="1.18" image="https://i.ibb.co/8KDxBwq/patchnotes-cavesandcliffs.jpg" />
|
<Instance
|
||||||
{/each}
|
title="New Caves"
|
||||||
|
id="234"
|
||||||
|
version="1.18"
|
||||||
|
image="https://i.ibb.co/8KDxBwq/patchnotes-cavesandcliffs.jpg"
|
||||||
|
/>
|
||||||
|
{/each}
|
||||||
</CardRow>
|
</CardRow>
|
||||||
|
|
||||||
<CardRow title="Popular packs">
|
<CardRow title="Popular packs">
|
||||||
{#each Array(5) as _, i}
|
{#each Array(5) as _, i}
|
||||||
<Instance title="All of Fabric 5" id="567" version="1.18.1" image="https://media.forgecdn.net/avatars/458/829/637733746768258525.png" modpack />
|
<Instance
|
||||||
{/each}
|
title="All of Fabric 5"
|
||||||
|
id="567"
|
||||||
|
version="1.18.1"
|
||||||
|
image="https://media.forgecdn.net/avatars/458/829/637733746768258525.png"
|
||||||
|
modpack
|
||||||
|
/>
|
||||||
|
{/each}
|
||||||
</CardRow>
|
</CardRow>
|
||||||
|
|
||||||
<CardRow title="New releases">
|
<CardRow title="New releases">
|
||||||
{#each Array(5) as _, i}
|
{#each Array(5) as _, i}
|
||||||
<Instance title="New Caves" id="234" version="1.18.2" image="https://i.ibb.co/8KDxBwq/patchnotes-cavesandcliffs.jpg" />
|
<Instance
|
||||||
{/each}
|
title="New Caves"
|
||||||
|
id="234"
|
||||||
|
version="1.18.2"
|
||||||
|
image="https://i.ibb.co/8KDxBwq/patchnotes-cavesandcliffs.jpg"
|
||||||
|
/>
|
||||||
|
{/each}
|
||||||
</CardRow>
|
</CardRow>
|
||||||
|
|
||||||
<style lang="postcss">
|
<style lang="postcss">
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -1,11 +1,8 @@
|
|||||||
<script context="module" lang="ts">
|
<script context="module" lang="ts">
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
<style lang="postcss">
|
<style lang="postcss">
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -1,49 +1,52 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import VerticalNav from "$components/VerticalNav.svelte";
|
import VerticalNav from '$components/VerticalNav.svelte';
|
||||||
import IconPackage from 'virtual:icons/lucide/package'
|
import IconPackage from 'virtual:icons/lucide/package';
|
||||||
import IconAdjustments from 'virtual:icons/heroicons-outline/adjustments'
|
import IconAdjustments from 'virtual:icons/heroicons-outline/adjustments';
|
||||||
import IconFileText from 'virtual:icons/lucide/file-text'
|
import IconFileText from 'virtual:icons/lucide/file-text';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="layout-instance">
|
<div class="layout-instance">
|
||||||
<div class="instance-sidebar">
|
<div class="instance-sidebar">
|
||||||
<VerticalNav level={3} items={[
|
<VerticalNav
|
||||||
|
level={3}
|
||||||
|
items={[
|
||||||
{
|
{
|
||||||
label: 'Mods',
|
label: 'Mods',
|
||||||
href: 'mods',
|
href: 'mods',
|
||||||
icon: IconPackage,
|
icon: IconPackage
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Settings',
|
label: 'Settings',
|
||||||
href: 'settings',
|
href: 'settings',
|
||||||
icon: IconAdjustments,
|
icon: IconAdjustments
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Logs',
|
label: 'Logs',
|
||||||
href: 'logs',
|
href: 'logs',
|
||||||
icon: IconFileText,
|
icon: IconFileText
|
||||||
}
|
}
|
||||||
]}/>
|
]}
|
||||||
</div>
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="layout-instance__page">
|
<div class="layout-instance__page">
|
||||||
<slot />
|
<slot />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style lang="postcss">
|
<style lang="postcss">
|
||||||
.layout-instance {
|
.layout-instance {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 224px 1fr;
|
grid-template-columns: 224px 1fr;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
||||||
&__page {
|
&__page {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
background-color: var(--sub-page-bg);
|
background-color: var(--sub-page-bg);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.instance-sidebar {
|
.instance-sidebar {
|
||||||
padding: 16px;
|
padding: 16px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -1,18 +1,17 @@
|
|||||||
<script context="module" lang="ts">
|
<script context="module" lang="ts">
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import GlobalSettings from "$components/GlobalSettings.svelte"
|
import GlobalSettings from '$components/GlobalSettings.svelte';
|
||||||
import TitledSection from "$components/TitledSection.svelte"
|
import TitledSection from '$components/TitledSection.svelte';
|
||||||
|
|
||||||
export let overrideGlobalSettings = false
|
export let overrideGlobalSettings = false;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="section">
|
<div class="section">
|
||||||
<TitledSection title="Override global settings" toggleable=true>
|
<TitledSection title="Override global settings" toggleable="true">
|
||||||
<GlobalSettings />
|
<GlobalSettings />
|
||||||
</TitledSection>
|
</TitledSection>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style lang="postcss">
|
<style lang="postcss">
|
||||||
|
|||||||
@ -1,13 +1,12 @@
|
|||||||
<script context="module" lang="ts">
|
<script context="module" lang="ts">
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import GlobalSettings from "$components/GlobalSettings.svelte"
|
import GlobalSettings from '$components/GlobalSettings.svelte';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="section">
|
<div class="section">
|
||||||
<GlobalSettings />
|
<GlobalSettings />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style lang="postcss">
|
<style lang="postcss">
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
import { writable } from 'svelte/store'
|
import { writable } from 'svelte/store';
|
||||||
|
|
||||||
export const token = writable('')
|
export const token = writable('');
|
||||||
|
|||||||
@ -1,19 +1,19 @@
|
|||||||
.nav-item {
|
.nav-item {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
grid-gap: 0.5rem;
|
grid-gap: 0.5rem;
|
||||||
padding: 0.5rem 0.75rem;
|
padding: 0.5rem 0.75rem;
|
||||||
border-radius: var(--rounded-sm);
|
border-radius: var(--rounded-sm);
|
||||||
box-shadow: var(--shadow-inset-sm) var(--shadow-raised);
|
box-shadow: var(--shadow-inset-sm) var(--shadow-raised);
|
||||||
transition: background-color 0.2s ease-in-out,
|
transition: background-color 0.2s ease-in-out, color 0.1s ease-in-out;
|
||||||
color 0.1s ease-in-out;
|
color: var(--color-text-light);
|
||||||
color: var(--color-text-light);
|
|
||||||
|
|
||||||
&:hover, &.active {
|
&:hover,
|
||||||
color: var(--color-text);
|
&.active {
|
||||||
}
|
color: var(--color-text);
|
||||||
|
}
|
||||||
|
|
||||||
&.active {
|
&.active {
|
||||||
background-color: var(--nav-active-bg);
|
background-color: var(--nav-active-bg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
@import 'components.postcss';
|
@import 'components.postcss';
|
||||||
|
|
||||||
.theme-dark {
|
.theme-dark {
|
||||||
--status-bg: hsl(216, 5%, 29%);
|
--status-bg: hsl(216, 5%, 29%);
|
||||||
--sidebar-bg: hsl(216, 10%, 3%);
|
--sidebar-bg: hsl(216, 10%, 3%);
|
||||||
--nav-active-bg: hsl(217, 9%, 25%);
|
--nav-active-bg: hsl(217, 9%, 25%);
|
||||||
--font-size-sm: 0.75rem;
|
--font-size-sm: 0.75rem;
|
||||||
--color-bg: hsl(217, 9%, 18%);
|
--color-bg: hsl(217, 9%, 18%);
|
||||||
--color-brand: hsl(145, 75%, 45%);
|
--color-brand: hsl(145, 75%, 45%);
|
||||||
--color-brand-contrast: black;
|
--color-brand-contrast: black;
|
||||||
--sub-page-bg: hsl(220, 9%, 13%)
|
--sub-page-bg: hsl(220, 9%, 13%);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user