diff --git a/Showcase.svelte b/Showcase.svelte index 8c62dba..74ebadd 100644 --- a/Showcase.svelte +++ b/Showcase.svelte @@ -12,9 +12,17 @@ import CheckIcon from "./icons/Check.svelte"; import CrossIcon from "./icons/Cross.svelte"; import ForkIcon from "./icons/Fork.svelte"; + import LockIcon from "./icons/Lock.svelte"; import MinusIcon from "./icons/Minus.svelte"; import PlusIcon from "./icons/Plus.svelte"; + import Theme from "./Theme.svelte"; + + import ThemeSetting from "./Showcase/ThemeSetting.svelte"; + import PrimaryColorSetting from "./Showcase/PrimaryColorSetting.svelte"; + import CodeFontSetting from "./Showcase/CodeFontSetting.svelte"; + import UiFontSetting from "./Showcase/UiFontSetting.svelte"; + import Button from "./Button.svelte"; import Checkbox from "./Checkbox.svelte"; import Dropdown from "./Dropdown.svelte"; @@ -200,6 +208,8 @@ onClose(); } } + + let settingsHeaderPinned: boolean = false; + + {#if onClose !== undefined} @@ -295,6 +319,24 @@

Components

+ +
+ + + + + + + (settingsHeaderPinned = !settingsHeaderPinned)} + style={settingsHeaderPinned + ? "fill: var(--color-foreground)" + : "fill: var(--color-foreground-level-4)"} /> + +
+
diff --git a/Showcase/CodeFontSetting.svelte b/Showcase/CodeFontSetting.svelte new file mode 100644 index 0000000..dca82c4 --- /dev/null +++ b/Showcase/CodeFontSetting.svelte @@ -0,0 +1,16 @@ + + + + codeFont.set(ev.detail)} /> diff --git a/Showcase/PrimaryColorSetting.svelte b/Showcase/PrimaryColorSetting.svelte new file mode 100644 index 0000000..25c2146 --- /dev/null +++ b/Showcase/PrimaryColorSetting.svelte @@ -0,0 +1,49 @@ + + + + + + primaryColor.set(ev.detail)}> + {#if $primaryColor === "custom"} + + {/if} + diff --git a/Showcase/ThemeSetting.svelte b/Showcase/ThemeSetting.svelte new file mode 100644 index 0000000..8d1c3b6 --- /dev/null +++ b/Showcase/ThemeSetting.svelte @@ -0,0 +1,16 @@ + + + + theme.set(ev.detail)} /> diff --git a/Showcase/UiFontSetting.svelte b/Showcase/UiFontSetting.svelte new file mode 100644 index 0000000..03f5299 --- /dev/null +++ b/Showcase/UiFontSetting.svelte @@ -0,0 +1,25 @@ + + + + + + + uiFont.set(ev.detail)} /> diff --git a/Theme.svelte b/Theme.svelte new file mode 100644 index 0000000..364a0cb --- /dev/null +++ b/Theme.svelte @@ -0,0 +1,56 @@ + + diff --git a/lib/appearance.ts b/lib/appearance.ts new file mode 100644 index 0000000..0973abe --- /dev/null +++ b/lib/appearance.ts @@ -0,0 +1,74 @@ +// Copyright © 2022 The Radicle Design System Contributors +// +// This file is part of radicle-design-system, distributed under the GPLv3 +// with Radicle Linking Exception. For full terms see the included +// LICENSE file. + +import { writable } from "svelte/store"; + +interface Option { + value: T; + title: string; +} + +type Theme = "dark" | "light" | "h4x0r"; + +export const theme = writable("dark"); + +export const themeOptions: Option[] = [ + { + title: "Light", + value: "light", + }, + { + title: "Dark", + value: "dark", + }, + { + title: "H4x0r", + value: "h4x0r", + }, +]; + +type UiFont = "inter" | "system"; + +export const uiFont = writable("inter"); + +export const uiFontOptions: Option[] = [ + { + title: "Inter", + value: "inter", + }, + { + title: "System", + value: "system", + }, +]; + +type CodeFont = "sourceCode" | "system"; + +export const codeFont = writable("sourceCode"); + +export const codeFontOptions: Option[] = [ + { + title: "Source Code", + value: "sourceCode", + }, + { + title: "System", + value: "system", + }, +]; + +type PrimaryColor = "blue" | "pink" | "orange" | "custom"; + +export const primaryColor = writable("blue"); + +export const primaryColorOptions: Option[] = [ + { title: "Blue", value: "blue" }, + { title: "Pink", value: "pink" }, + { title: "Orange", value: "orange" }, + { title: "Custom", value: "custom" }, +]; + +export const primaryColorHex = writable("#5555FF");