diff --git a/scripts/userstyles.yml b/scripts/userstyles.yml index a642797032..eb8ad843c6 100644 --- a/scripts/userstyles.yml +++ b/scripts/userstyles.yml @@ -157,6 +157,9 @@ collaborators: url: https://github.com/steinuil - &husjon url: https://github.com/husjon + - &waterlilly-lilly + name: Maestoso + url: https://github.com/waterlilly-lilly userstyles: advent-of-code: @@ -840,6 +843,13 @@ userstyles: readme: app-link: https://planetminecraft.com current-maintainers: [*nyameliaaaa] + pluralkit: + name: PluralKit + categories: [social_networking] + color: peach + readme: + app-link: https://dash.pluralkit.me + current-maintainers: [*waterlilly-lilly] porkbun: name: Porkbun categories: [productivity] diff --git a/styles/pluralkit/catppuccin.user.less b/styles/pluralkit/catppuccin.user.less new file mode 100644 index 0000000000..a8dca395c4 --- /dev/null +++ b/styles/pluralkit/catppuccin.user.less @@ -0,0 +1,505 @@ +/* ==UserStyle== +@name PluralKit Catppuccin +@namespace github.com/catppuccin/userstyles/styles/pluralkit +@homepageURL https://github.com/catppuccin/userstyles/tree/main/styles/pluralkit +@version 2000.01.01 +@updateURL https://github.com/catppuccin/userstyles/raw/main/styles/pluralkit/catppuccin.user.less +@supportURL https://github.com/catppuccin/userstyles/issues?q=is%3Aopen+is%3Aissue+label%3Apluralkit +@description Soothing pastel theme for PluralKit +@author Catppuccin +@license MIT + +@preprocessor less +@var select lightFlavor "Light Flavor" ["latte:Latte*", "frappe:Frappé", "macchiato:Macchiato", "mocha:Mocha"] +@var select darkFlavor "Dark Flavor" ["latte:Latte", "frappe:Frappé", "macchiato:Macchiato", "mocha:Mocha*"] +@var select accentColor "Accent" ["rosewater:Rosewater", "flamingo:Flamingo", "pink:Pink", "mauve:Mauve*", "red:Red", "maroon:Maroon", "peach:Peach", "yellow:Yellow", "green:Green", "teal:Teal", "blue:Blue", "sapphire:Sapphire", "sky:Sky", "lavender:Lavender", "subtext0:Gray"] +==/UserStyle== */ + +@-moz-document domain("dash.pluralkit.me") { + :root.dark { + #catppuccin(@darkFlavor); + } + :root.light { + #catppuccin(@lightFlavor); + } + + #catppuccin(@flavor) { + @rosewater: @catppuccin[@@flavor][@rosewater]; + @flamingo: @catppuccin[@@flavor][@flamingo]; + @pink: @catppuccin[@@flavor][@pink]; + @mauve: @catppuccin[@@flavor][@mauve]; + @red: @catppuccin[@@flavor][@red]; + @maroon: @catppuccin[@@flavor][@maroon]; + @peach: @catppuccin[@@flavor][@peach]; + @yellow: @catppuccin[@@flavor][@yellow]; + @green: @catppuccin[@@flavor][@green]; + @teal: @catppuccin[@@flavor][@teal]; + @sky: @catppuccin[@@flavor][@sky]; + @sapphire: @catppuccin[@@flavor][@sapphire]; + @blue: @catppuccin[@@flavor][@blue]; + @lavender: @catppuccin[@@flavor][@lavender]; + @text: @catppuccin[@@flavor][@text]; + @subtext1: @catppuccin[@@flavor][@subtext1]; + @subtext0: @catppuccin[@@flavor][@subtext0]; + @overlay2: @catppuccin[@@flavor][@overlay2]; + @overlay1: @catppuccin[@@flavor][@overlay1]; + @overlay0: @catppuccin[@@flavor][@overlay0]; + @surface2: @catppuccin[@@flavor][@surface2]; + @surface1: @catppuccin[@@flavor][@surface1]; + @surface0: @catppuccin[@@flavor][@surface0]; + @base: @catppuccin[@@flavor][@base]; + @mantle: @catppuccin[@@flavor][@mantle]; + @crust: @catppuccin[@@flavor][@crust]; + @accent: @catppuccin[@@flavor][@@accentColor]; + + color-scheme: if(@flavor = latte, light, dark); + + ::selection { + background-color: fade(@accent, 30%); + } + + input, + textarea { + &::placeholder { + color: @subtext0 !important; + } + } + + body { + background-color: @base; + color: @text; + } + .navbar { + &.bg-light { + background-color: @base !important; + } + &-light { + .navbar-brand { + color: @text; + } + } + &-bar { + &:hover { + color: lighten(@subtext0, 5%); + } + } + &-nav .nav-link { + color: @subtext0; + + &:hover { + color: lighten(@subtext0, 5%); + } + &:focus { + color: lighten(@subtext0, 5%); + } + } + } + .nav-tabs .nav-link { + background-color: @crust !important; + border-color: darken(@mantle, 5%) !important; + color: @accent; + &:hover { + color: lighten(@accent, 5%); + } + &.active { + color: @subtext1 !important; + } + } + .dropdown { + &-menu { + background-color: @mantle; + } + &-item { + color: @subtext0; + + &:active { + color: contrast(@accent); + background-color: @accent; + } + &:hover { + color: @text; + background-color: lighten(@mantle, 10%); + } + } + } + .card { + background-color: @mantle; + border-color: darken(@mantle, 5%); + &-header { + background-color: @crust; + border-bottom-color: lighten(@mantle, 5%); + } + &-body { + background-color: @mantle; + } + } + .btn { + color: @text; + &:focus { + box-shadow: 0 0 0 0.25rem fade(lighten(@accent, 10%), 25%); + } + &-danger { + color: contrast(@red); + background-color: @red; + border-color: @red; + } + &-primary { + color: contrast(@accent); + background-color: @accent; + border-color: @accent; + &:hover { + background-color: lighten(@accent, 5%); + border-color: lighten(@accent, 5%); + } + &:active { + background-color: saturate(@accent, 5%); + border-color: saturate(@accent, 5%); + } + &:focus { + background-color: lighten(@accent, 5%); + border-color: lighten(@accent, 5%); + box-shadow: 0 0 0 0.25rem fade(lighten(@accent, 10%), 25%); + } + &:disabled { + background-color: desaturate(@accent, 5%); + border-color: desaturate(@accent, 5%); + color: desaturate(contrast(@accent), 5%); + } + } + &-secondary { + background-color: @surface0; + border-color: @surface0; + &:hover { + background-color: lighten(@surface0, 5%); + border-color: lighten(@surface0, 5%); + } + &:focus { + background-color: lighten(@surface0, 5%); + border-color: lighten(@surface0, 5%); + box-shadow: 0 0 0 0.25rem fade(lighten(@accent, 10%), 25%); + } + &:active { + background-color: saturate(@surface0, 5%); + border-color: saturate(@surface0, 5%); + color: contrast(@surface0); + } + } + &-dark { + .btn-dark { + background-color: @subtext0; + border-color: @subtext0; + color: contrast(@subtext0); + } + } + &-close { + @btn-close-svg: escape( + '' + ); + background-image: url("data:image/svg+xml,@{btn-close-svg}"); + } + } + .form { + &-control { + color: @subtext0; + background-color: @crust; + border-color: lighten(@crust, 5%); + &:disabled { + background-color: desaturate(@crust, 5%); + } + &:hover { + color: @subtext0; + background-color: @crust; + border-color: lighten(@accent, 5%); + } + &:focus { + color: @subtext0; + background-color: @crust; + border-color: lighten(@accent, 10%); + box-shadow: 0 0 0 0.25rem fade(lighten(@accent, 10%), 25%); + } + } + &-select { + color: @subtext0; + background-color: @crust; + border-color: lighten(@crust, 5%); + &:hover { + color: @subtext0; + background-color: @crust; + border-color: lighten(@accent, 5%); + } + &:focus { + color: @subtext0; + background-color: @crust; + border-color: lighten(@accent, 10%); + box-shadow: 0 0 0 0.25rem fade(lighten(@accent, 10%), 25%); + } + } + &-check-input { + border-color: darken(@mantle, 5%); + &:focus { + border-color: lighten(@accent, 10%); + box-shadow: 0 0 0 0.25rem fade(lighten(@accent, 10%), 25%); + &:not(:checked) { + @form-check-input-svg: escape( + '' + ); + background-image: url("data:image/svg+xml,@{form-check-input-svg}") + !important; + } + background-color: @crust; + } + &:checked { + background-color: @accent; + border-color: @accent; + } + } + } + .svelecte-control .sv-control { + border-color: lighten(@crust, 5%) !important; + } + .sv { + &-control, + &-input-row { + background-color: @crust !important; + color: @text !important; + } + &-dropdown, + &-item, + &-item-content { + background-color: @mantle !important; + color: @text !important; + } + } + .input-group-text { + color: @subtext0; + background-color: @mantle; + border-color: lighten(@crust, 5%); + } + + .list-group-item { + background-color: @mantle; + color: @text; + border-color: lighten(@crust, 5%); + } + a { + color: @accent; + &:hover { + color: lighten(@accent, 5%); + } + &:visited { + color: lighten(@accent, 10%); + } + } + .page-item { + color: @text; + &.active .page-link { + background-color: @accent; + border-color: @accent; + } + .page-link { + background-color: @crust; + border-color: lighten(@crust, 5%); + } + &.disabled .page-link { + background-color: @crust; + border-color: lighten(@crust, 5%); + } + } + .accordion { + &-item { + background-color: @mantle; + border-color: darken(@mantle, 5%); + } + &-button { + color: @text; + background-color: @mantle; + + &:focus { + color: @text; + background-color: @accent; + border-color: lighten(@accent, 10%); + box-shadow: 0 0 0 0.25rem fade(lighten(@accent, 10%), 25%); + } + &:not(.collapsed) { + color: lighten(@accent, 10%); + background-color: darken(@accent, 10%); + box-shadow: inset 0 -1px fade(lighten(@accent, 10%), 15%); + } + } + &-header { + background-color: @mantle; + } + &-body { + color: @subtext0; + background-color: @crust; + } + } + .modal-content { + background-color: @crust; + } + code { + background: @crust !important; + color: @text; + } + /* the checkboxes on the settings page are different than anywhere else for...some reason? */ + button.svelte-1y1be9d { + color: @text !important; + &[aria-checked="true"] { + background-color: @accent !important; + } + &[aria-checked="false"] { + background-color: @crust !important; + } + } + /* see https://github.com/PluralKit/PluralKit/blob/main/dashboard/src/components/status/Shard.svelte. this should be fine (though not very maintainable) */ + .shard { + &[style*="#000"] { + background-color: @crust !important; + } + &[style*="#00cc00"] { + background-color: @green !important; + } + &[style*="#da9317"] { + background-color: @yellow !important; + } + &[style*="#cc0000"] { + background-color: @red !important; + } + } + .alert { + color: contrast(@green); + background-color: @green; + border-color: @green; + &-warning { + color: contrast(@yellow); + background-color: @yellow; + border-color: @yellow; + } + &-danger { + color: contrast(@red); + background-color: @red; + border-color: @red; + } + } + .spinner-border { + border-color: @accent; + border-right-color: transparent; + } + } +} + +/* deno-fmt-ignore */ +@catppuccin: { + @latte: { + @rosewater: #dc8a78; + @flamingo: #dd7878; + @pink: #ea76cb; + @mauve: #8839ef; + @red: #d20f39; + @maroon: #e64553; + @peach: #fe640b; + @yellow: #df8e1d; + @green: #40a02b; + @teal: #179299; + @sky: #04a5e5; + @sapphire: #209fb5; + @blue: #1e66f5; + @lavender: #7287fd; + @text: #4c4f69; + @subtext1: #5c5f77; + @subtext0: #6c6f85; + @overlay2: #7c7f93; + @overlay1: #8c8fa1; + @overlay0: #9ca0b0; + @surface2: #acb0be; + @surface1: #bcc0cc; + @surface0: #ccd0da; + @base: #eff1f5; + @mantle: #e6e9ef; + @crust: #dce0e8; + }; + @frappe: { + @rosewater: #f2d5cf; + @flamingo: #eebebe; + @pink: #f4b8e4; + @mauve: #ca9ee6; + @red: #e78284; + @maroon: #ea999c; + @peach: #ef9f76; + @yellow: #e5c890; + @green: #a6d189; + @teal: #81c8be; + @sky: #99d1db; + @sapphire: #85c1dc; + @blue: #8caaee; + @lavender: #babbf1; + @text: #c6d0f5; + @subtext1: #b5bfe2; + @subtext0: #a5adce; + @overlay2: #949cbb; + @overlay1: #838ba7; + @overlay0: #737994; + @surface2: #626880; + @surface1: #51576d; + @surface0: #414559; + @base: #303446; + @mantle: #292c3c; + @crust: #232634; + }; + @macchiato: { + @rosewater: #f4dbd6; + @flamingo: #f0c6c6; + @pink: #f5bde6; + @mauve: #c6a0f6; + @red: #ed8796; + @maroon: #ee99a0; + @peach: #f5a97f; + @yellow: #eed49f; + @green: #a6da95; + @teal: #8bd5ca; + @sky: #91d7e3; + @sapphire: #7dc4e4; + @blue: #8aadf4; + @lavender: #b7bdf8; + @text: #cad3f5; + @subtext1: #b8c0e0; + @subtext0: #a5adcb; + @overlay2: #939ab7; + @overlay1: #8087a2; + @overlay0: #6e738d; + @surface2: #5b6078; + @surface1: #494d64; + @surface0: #363a4f; + @base: #24273a; + @mantle: #1e2030; + @crust: #181926; + }; + @mocha: { + @rosewater: #f5e0dc; + @flamingo: #f2cdcd; + @pink: #f5c2e7; + @mauve: #cba6f7; + @red: #f38ba8; + @maroon: #eba0ac; + @peach: #fab387; + @yellow: #f9e2af; + @green: #a6e3a1; + @teal: #94e2d5; + @sky: #89dceb; + @sapphire: #74c7ec; + @blue: #89b4fa; + @lavender: #b4befe; + @text: #cdd6f4; + @subtext1: #bac2de; + @subtext0: #a6adc8; + @overlay2: #9399b2; + @overlay1: #7f849c; + @overlay0: #6c7086; + @surface2: #585b70; + @surface1: #45475a; + @surface0: #313244; + @base: #1e1e2e; + @mantle: #181825; + @crust: #11111b; + }; +}; diff --git a/styles/pluralkit/preview.webp b/styles/pluralkit/preview.webp new file mode 100644 index 0000000000..ac833849d5 Binary files /dev/null and b/styles/pluralkit/preview.webp differ