assistant.ts

 1import { ColorScheme } from "../themes/common/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      header: {
13        border: border(layer, "default", { bottom: true, top: true }),
14        margin: { bottom: 6, top: 6 },
15        background: editor(colorScheme).background
16      },
17      userSender: {
18        ...text(layer, "sans", "default", { size: "sm", weight: "bold" }),
19      },
20      assistantSender: {
21        ...text(layer, "sans", "accent", { size: "sm", weight: "bold" }),
22      },
23      systemSender: {
24        ...text(layer, "sans", "variant", { size: "sm", weight: "bold" }),
25      },
26      sentAt: {
27        margin: { top: 2, left: 8 },
28        ...text(layer, "sans", "default", { size: "2xs" }),
29      },
30      modelInfoContainer: {
31        margin: { right: 16, top: 4 },
32      },
33      model: {
34        background: background(layer, "on"),
35        border: border(layer, "on", { overlay: true }),
36        padding: 4,
37        cornerRadius: 4,
38        ...text(layer, "sans", "default", { size: "xs" }),
39        hover: {
40          background: background(layer, "on", "hovered"),
41        }
42      },
43      remainingTokens: {
44        background: background(layer, "on"),
45        border: border(layer, "on", { overlay: true }),
46        padding: 4,
47        margin: { left: 4 },
48        cornerRadius: 4,
49        ...text(layer, "sans", "positive", { size: "xs" }),
50      },
51      noRemainingTokens: {
52        background: background(layer, "on"),
53        border: border(layer, "on", { overlay: true }),
54        padding: 4,
55        margin: { left: 4 },
56        cornerRadius: 4,
57        ...text(layer, "sans", "negative", { size: "xs" }),
58      },
59      errorIcon: {
60        margin: { left: 8 },
61        color: foreground(layer, "negative"),
62        width: 12,
63      },
64      apiKeyEditor: {
65          background: background(layer, "on"),
66          cornerRadius: 6,
67          text: text(layer, "mono", "on"),
68          placeholderText: text(layer, "mono", "on", "disabled", {
69              size: "xs",
70          }),
71          selection: colorScheme.players[0],
72          border: border(layer, "on"),
73          padding: {
74              bottom: 4,
75              left: 8,
76              right: 8,
77              top: 4,
78          },
79      },
80      apiKeyPrompt: {
81        padding: 10,
82        ...text(layer, "sans", "default", { size: "xs" }),
83      }
84    }
85}