Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(t3-chat): init #1643

Open
wants to merge 32 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
8ccad9c
feat(t3-chat): init
arithefirst Mar 6, 2025
b394eec
Merge branch 'catppuccin:main' into feat/t3-chat
arithefirst Mar 7, 2025
4b1600d
fix(t3-chat): LESS over CSS
arithefirst Mar 7, 2025
fd72148
fix(t3-chat): Chat hover color in sidebar
arithefirst Mar 7, 2025
ff1b40e
fix(t3-chat): Sync with new template
arithefirst Mar 7, 2025
f1341d7
refactor(t3-chat): move mixin, remove extra comment
uncenter Mar 7, 2025
c56b51f
chore(t3-chat): remove app-link quotes
uncenter Mar 7, 2025
65306fa
fix(t3-chat): Accent Color
arithefirst Mar 7, 2025
48b9642
fix: Account page username
arithefirst Mar 7, 2025
0011bf9
fix(t3-chat): Poor contrast ratios on "New Model" popup
arithefirst Mar 7, 2025
530d524
fix(t3-chat): Tooltip contrast ratios
arithefirst Mar 7, 2025
63d748b
fix(t3-chat): Model div bg color
arithefirst Mar 7, 2025
4314506
fix(t3-chat): Button hover colors
arithefirst Mar 7, 2025
ec1f9ec
fix(t3-chat): Help section div hover
arithefirst Mar 7, 2025
7a5030b
fix(t3-chat): Reasoning div color
arithefirst Mar 7, 2025
5158439
fix(t3-chat): Unthemed "you have X messages left" text
arithefirst Mar 10, 2025
66d5317
fix(t3-chat): Unthemed thread delete button
arithefirst Mar 10, 2025
214ef87
fix(t3-chat): Unthemed icons in buttons
arithefirst Mar 10, 2025
dc581d6
fix(t3-chat): Some buttons unthemed on hover
arithefirst Mar 10, 2025
b8866fd
fix(t3-chat): Replace pink buttons with accent color
arithefirst Mar 10, 2025
d0008bb
fix(t3-chat): `@mantle` instead of `darken(@base, 5%)`
arithefirst Mar 10, 2025
f8fba42
fix(t3-chat): Unthemed search grounding button
arithefirst Mar 10, 2025
5d671ea
fix(t3-chat): Remove redundant parent selector
arithefirst Mar 10, 2025
53b9b74
fix(t3-chat): Unthemed pinned message icon
arithefirst Mar 11, 2025
6396ff0
fix(t3-chat): Unthemed model switcher colors
arithefirst Mar 11, 2025
a0e7804
fix(t3-chat): Unthemed model feature indicators
arithefirst Mar 11, 2025
24dc940
fix(t3-chat): Unthemed experimental model indicator in settings area
arithefirst Mar 11, 2025
c1e43ff
fix(t3-chat): Proper fill color on premium model star icons
arithefirst Mar 11, 2025
07247a0
style(t3-chat): More logical grouping of styles
arithefirst Mar 11, 2025
45617db
fix(t3-chat): Remove redundant parent selector
arithefirst Mar 11, 2025
e9dd84d
fix(t3-chat): Various fixes in the settings menu
arithefirst Mar 11, 2025
658e41b
fix(t3-chat): Pinned thread icon
arithefirst Mar 12, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions scripts/userstyles.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
collaborators:
- &arithefirst
name: April Hall
url: https://github.com/arithefirst
- &nikitarevenco
url: https://github.com/nik-rev
- &anubisnekhet
Expand Down Expand Up @@ -1006,6 +1009,13 @@ userstyles:
app-link: https://syncthing.net
note: This theme is designed to be used with the default WebGUI and default theme provided by Syncthing. This does not theme syncthing.net.
current-maintainers: [*BlankParticle]
t3-chat:
name: T3 Chat
categories: [artificial_intelligence, productivity]
color: pink
readme:
app-link: https://t3.chat
current-maintainers: [*arithefirst]
tabnews:
name: TabNews
categories: [discussion_forum, entertainment, social_networking]
Expand Down
338 changes: 338 additions & 0 deletions styles/t3-chat/catppuccin.user.less
Original file line number Diff line number Diff line change
@@ -0,0 +1,338 @@
/* ==UserStyle==
@name T3 Chat Catppuccin
@namespace github.com/catppuccin/userstyles/styles/t3-chat
@homepageURL https://github.com/catppuccin/userstyles/tree/main/styles/t3-chat
@version 2025.03.07
@updateURL https://github.com/catppuccin/userstyles/raw/main/styles/t3-chat/catppuccin.user.less
@supportURL https://github.com/catppuccin/userstyles/issues?q=is%3Aopen+is%3Aissue+label%3At3-chat
@description Soothing pastel theme for T3 Chat
@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("t3.chat") {
:root {
@media (prefers-color-scheme: light) {
#catppuccin(@lightFlavor);
}
@media (prefers-color-scheme: dark) {
#catppuccin(@darkFlavor);
}
}

#catppuccin(@flavor) {
// Color palette definitions
@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);

// Basic elements
::selection {
background-color: fade(@accent, 30%);
}

input, textarea {
&::placeholder {
color: @subtext0 !important;
}
}

// Scrollbar styling
::-webkit-scrollbar-thumb {
background: @surface1;

&:hover {
background: @surface2;
}
}

// Background colors
.bg-neutral-800,
.bg-gray-800,
.bg-gray-950,
.bg-\[\#22272E\],
.bg-\[\#2D2D2D\] {
background-color: @surface0 !important;
}

.bg-neutral-900,
.bg-black,
.bg-\[\#0D0A09\],
.bg-neutral-900\/50,
.bg-neutral-800\/50 {
background-color: @mantle !important;
}

.bg-neutral-700,
.bg-neutral-700\/50 {
background-color: @surface1 !important;
}

.hover\:bg-neutral-700:hover {
background-color: @mantle !important;
}

.hover\:bg-neutral-800\/40:hover,
.hover\:bg-\[\#2D2D2D\]\/50:hover,
button.bg-background:hover,
a.bg-background:hover {
background-color: @mantle !important;
}

// Text colors
.text-neutral-100,
.text-neutral-200,
.text-white,
.text-gray-100,
.\!text-neutral-200,
.text-primary-foreground,
.hover\:text-neutral-300,
strong,
.bg-\[\#0D0A09\].text-primary-foreground {
color: @text !important;
}

.bg-primary.text-primary-foreground {
color: @base !important;
}

.text-neutral-300,
.text-neutral-400,
.text-gray-300,
.text-gray-400 {
color: @subtext1 !important;
}

.text-neutral-500,
.text-gray-500 {
color: @subtext0 !important;
}

// Accent colors
.bg-primary,
.bg-pink-500 {
color: @accent;
background-color: @accent;
}

button.bg-primary:hover,
a.bg-primary:hover {
background-color: darken(@accent, 5%) !important;
}

// Various colors
.text-green-500 {
color: @green !important;
}

.text-red-500,
.text-red-400,
.text-red-300,
.hover\:text-red-500,
.focus\:text-red-500 {
color: @red !important;
}

button.text-pink-500 {
color: @accent !important;
}

.text-yellow-500,
.text-yellow-200\/80 {
color: @yellow !important;
}

.text-orange-500,
.text-orange-400 {
color: @peach !important;
}

.text-blue-500,
.text-indigo-400 {
color: @blue !important;
}

.fill-yellow-500 {
fill: @yellow;
}

.text-pink-400 {
color: @pink;
}

button.bg-destructive:hover,
a.bg-destructive:hover {
background-color: darken(@red, 5%) !important;
}

// Border colors
.border-neutral-700,
.border-gray-700,
.border-neutral-800,
.border-gray-800 {
border-color: @surface1 !important;
}

// Special UI components
.bg-pink-600\/70 {
background-color: @accent;
color: @base !important;
}

.bg-pink-500\/10 {
background-color: @accent;

// Targets the "New Model" Popup
> div > div > p {
color: @surface0 !important;
}
}

.hover\:bg-pink-500\/70:hover {
background-color: fade(@accent, 75%);
}

// Search grounding button
.hover\:bg-pink-500\/10.hover\:text-pink-500\/40:hover {
background-color: fade(@accent, 40%);
color: @accent;
}

.bg-pink-500\/20 {
background-color: fade(@accent, 20%);

> svg {
color: @accent !important;
}
}

// Model selector hover states
.group:hover {
.group-hover\:text-orange-500 {
color: @peach;
}

.group-hover\:text-yellow-500 {
color: @yellow;
}
}

// Model Feature indicators
span, div {
&.text-blue-500.bg-blue-500\/10 {
background-color: fade(@blue, 10%);
color: @blue;
}

&.text-purple-500.bg-purple-500\/10 {
background-color: fade(@mauve, 10%);
color: @mauve;
}

&.bg-pink-500\/10.text-pink-500 {
background-color: fade(@pink, 10%);
color: @pink;
}

&.bg-yellow-500\/10.text-yellow-500 {
background-color: fade(@yellow, 10%);
color: @yellow;
}
}

// Tailwind Prose
.prose {
--tw-prose-body: @text !important;
--tw-prose-headings: @subtext0 !important;
--tw-prose-lead: @subtext1 !important;
--tw-prose-links: @accent !important;
--tw-prose-bold: @subtext0 !important;
--tw-prose-counters: @overlay0 !important;
--tw-prose-bullets: @surface2 !important;
--tw-prose-hr: @surface0 !important;
--tw-prose-quotes: @subtext0 !important;
--tw-prose-quote-borders: @surface0 !important;
--tw-prose-captions: @overlay0 !important;
--tw-prose-kbd: @subtext0 !important;
--tw-prose-kbd-shadows: 17 24 39 !important;
--tw-prose-code: @accent !important;
--tw-prose-pre-code: @text !important;
--tw-prose-pre-bg: @mantle !important;
--tw-prose-th-borders: @surface2 !important;
--tw-prose-td-borders: @surface0 !important;
}

// Base ShadCN theme variables
.dark {
--background: #hslify(@base)[];
--foreground: #hslify(@text)[];
--muted: #hslify(@surface0)[];
--muted-foreground: #hslify(@subtext1)[];
--popover: #hslify(@base)[];
--popover-foreground: #hslify(@text)[];
--card: #hslify(@base)[];
--card-foreground: #hslify(@text)[];
--border: #hslify(@surface1)[];
--input: #hslify(@surface1)[];
--primary: #hslify(@accent)[];
--primary-foreground: #hslify(@base)[];
--secondary: #hslify(@surface0)[];
--secondary-foreground: #hslify(@text)[];
--accent: #hslify(@surface0)[];
--accent-foreground: #hslify(@text)[];
--destructive: #hslify(@red)[];
--destructive-foreground: #hslify(@mantle)[];
--ring: #hslify(@text)[];
--chart-1: #hslify(@red)[];
--chart-2: #hslify(@teal)[];
--chart-3: #hslify(@blue)[];
--chart-4: #hslify(@yellow)[];
--chart-5: #hslify(@green)[];
}
}
}

#hslify(@color) {
@raw: e(
%("%s, %s%, %s%", hue(@color), saturation(@color), lightness(@color))
);
}

/* 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; };
};
Binary file added styles/t3-chat/preview.webp
Binary file not shown.