1import { ColorScheme } from "../theme/colorScheme"
2import { text, border, background, foreground } from "./components"
3import editor from "./editor"
4
5export default function assistant(colorScheme: ColorScheme) {
6 const layer = colorScheme.highest
7 return {
8 container: {
9 background: editor(colorScheme).background,
10 padding: { left: 12 },
11 },
12 messageHeader: {
13 border: border(layer, "default", { bottom: true, top: true }),
14 margin: { bottom: 6, top: 6 },
15 background: editor(colorScheme).background,
16 },
17 hamburgerButton: {
18 icon: {
19 color: text(layer, "sans", "default", { size: "sm" }).color,
20 asset: "icons/hamburger_15.svg",
21 dimensions: {
22 width: 15,
23 height: 15,
24 },
25 },
26 container: {}
27 },
28 userSender: {
29 ...text(layer, "sans", "default", { size: "sm", weight: "bold" }),
30 },
31 assistantSender: {
32 ...text(layer, "sans", "accent", { size: "sm", weight: "bold" }),
33 },
34 systemSender: {
35 ...text(layer, "sans", "variant", { size: "sm", weight: "bold" }),
36 },
37 sentAt: {
38 margin: { top: 2, left: 8 },
39 ...text(layer, "sans", "default", { size: "2xs" }),
40 },
41 modelInfoContainer: {
42 margin: { right: 16, top: 4 },
43 },
44 model: {
45 background: background(layer, "on"),
46 border: border(layer, "on", { overlay: true }),
47 padding: 4,
48 cornerRadius: 4,
49 ...text(layer, "sans", "default", { size: "xs" }),
50 hover: {
51 background: background(layer, "on", "hovered"),
52 },
53 },
54 remainingTokens: {
55 background: background(layer, "on"),
56 border: border(layer, "on", { overlay: true }),
57 padding: 4,
58 margin: { left: 4 },
59 cornerRadius: 4,
60 ...text(layer, "sans", "positive", { size: "xs" }),
61 },
62 noRemainingTokens: {
63 background: background(layer, "on"),
64 border: border(layer, "on", { overlay: true }),
65 padding: 4,
66 margin: { left: 4 },
67 cornerRadius: 4,
68 ...text(layer, "sans", "negative", { size: "xs" }),
69 },
70 errorIcon: {
71 margin: { left: 8 },
72 color: foreground(layer, "negative"),
73 width: 12,
74 },
75 apiKeyEditor: {
76 background: background(layer, "on"),
77 cornerRadius: 6,
78 text: text(layer, "mono", "on"),
79 placeholderText: text(layer, "mono", "on", "disabled", {
80 size: "xs",
81 }),
82 selection: colorScheme.players[0],
83 border: border(layer, "on"),
84 padding: {
85 bottom: 4,
86 left: 8,
87 right: 8,
88 top: 4,
89 },
90 },
91 apiKeyPrompt: {
92 padding: 10,
93 ...text(layer, "sans", "default", { size: "xs" }),
94 },
95 }
96}