@agents24/chat-react 0.5.29 → 0.5.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/README.md +28 -1
  2. package/dist/chunk-INO5DSSJ.js +86 -0
  3. package/dist/chunk-INO5DSSJ.js.map +1 -0
  4. package/dist/generated/delegation-types.d.ts +129 -0
  5. package/dist/registry/agents24-chat.json +267 -0
  6. package/dist/runtime/index.cjs +53 -1
  7. package/dist/runtime/index.cjs.map +1 -1
  8. package/dist/runtime/index.d.ts +2 -0
  9. package/dist/runtime/index.js +62 -78
  10. package/dist/runtime/index.js.map +1 -1
  11. package/dist/runtime/input-contract.d.ts +3 -1
  12. package/dist/runtime/use-delegation-tasks.d.ts +20 -0
  13. package/dist/scaffold/app.d.ts +3 -0
  14. package/dist/scaffold/components/chat/chat-composer.d.ts +5 -3
  15. package/dist/scaffold/components/chat/subagent-tasks.d.ts +3 -0
  16. package/dist/scaffold/components/chat/theme-menu.d.ts +1 -1
  17. package/dist/scaffold/components/theme-provider.d.ts +3 -1
  18. package/dist/scaffold/index.cjs +420 -333
  19. package/dist/scaffold/index.cjs.map +1 -1
  20. package/dist/scaffold/index.d.ts +5 -2
  21. package/dist/scaffold/index.js +415 -332
  22. package/dist/scaffold/index.js.map +1 -1
  23. package/dist/styles.css +14 -0
  24. package/dist/ui/adapters.d.ts +5 -2
  25. package/dist/ui/agent-chat-composer.d.ts +8 -2
  26. package/dist/ui/agent-chat-queue.d.ts +0 -2
  27. package/dist/ui/index.cjs +817 -623
  28. package/dist/ui/index.cjs.map +1 -1
  29. package/dist/ui/index.d.ts +1 -0
  30. package/dist/ui/index.js +776 -622
  31. package/dist/ui/index.js.map +1 -1
  32. package/dist/ui/tool-sessions.d.ts +10 -2
  33. package/dist/ui/use-agent-chat-composer.d.ts +47 -0
  34. package/dist/ui/use-audio-recorder.d.ts +5 -3
  35. package/package.json +11 -6
  36. package/scaffold/host-styles.css +3 -0
  37. package/scaffold/inherit.css +4 -0
  38. package/scaffold/manifest.json +2 -2
  39. package/scaffold/src/app.tsx +5 -0
  40. package/scaffold/src/chat.css +35 -1
  41. package/scaffold/src/components/chat/chat-composer.tsx +31 -97
  42. package/scaffold/src/components/chat/chat-shell.tsx +7 -5
  43. package/scaffold/src/components/chat/external-link-dialog.tsx +6 -5
  44. package/scaffold/src/components/chat/identity-control.tsx +0 -1
  45. package/scaffold/src/components/chat/subagent-tasks.tsx +109 -0
  46. package/scaffold/src/components/chat/theme-menu.tsx +3 -1
  47. package/scaffold/src/components/theme-provider.tsx +28 -23
  48. package/scaffold/src/components/ui/tooltip.tsx +3 -0
  49. package/scaffold/src/host.css +11 -0
  50. package/scaffold/src/index.css +1 -213
  51. package/scaffold/src/index.tsx +9 -2
  52. package/scaffold/src/theme.css +215 -0
@@ -9,12 +9,28 @@ export type Agents24ChatAppearanceController = {
9
9
  }
10
10
 
11
11
  type ThemeContextValue = {
12
+ inherited: boolean
12
13
  appearance: Agents24ChatAppearance
13
14
  portalContainer: HTMLElement | null
14
15
  setAppearance: (appearance: Agents24ChatAppearance) => void
15
16
  }
16
17
 
17
18
  const ThemeContext = React.createContext<ThemeContextValue | null>(null)
19
+ const appearanceEvent = "agents24-chat-appearance-change"
20
+ const subscribeAppearance = (notify: () => void) => {
21
+ window.addEventListener("storage", notify)
22
+ window.addEventListener(appearanceEvent, notify)
23
+ return () => {
24
+ window.removeEventListener("storage", notify)
25
+ window.removeEventListener(appearanceEvent, notify)
26
+ }
27
+ }
28
+ const subscribeDarkMode = (notify: () => void) => {
29
+ const media = window.matchMedia?.("(prefers-color-scheme: dark)")
30
+ media?.addEventListener("change", notify)
31
+ return () => media?.removeEventListener("change", notify)
32
+ }
33
+ const getDarkMode = () => window.matchMedia?.("(prefers-color-scheme: dark)").matches ?? false
18
34
  const storageKey = "agents24-chat-appearance"
19
35
 
20
36
  function storedAppearance(): Agents24ChatAppearance {
@@ -30,47 +46,36 @@ export function ThemeProvider({
30
46
  children,
31
47
  controller,
32
48
  theme = "soft",
49
+ mode = "isolated",
33
50
  }: {
34
51
  children: React.ReactNode
35
52
  controller?: Agents24ChatAppearanceController
36
53
  theme?: Agents24ChatTheme
54
+ mode?: "isolated" | "inherit"
37
55
  }) {
38
- const [internalAppearance, setInternalAppearance] = React.useState<Agents24ChatAppearance>("system")
39
- const [resolvedAppearance, setResolvedAppearance] = React.useState<"light" | "dark">("light")
40
- const [mounted, setMounted] = React.useState(false)
56
+ const [sessionAppearance, setSessionAppearance] = React.useState<Agents24ChatAppearance | null>(null)
57
+ const stored = React.useSyncExternalStore(subscribeAppearance, storedAppearance, () => "system" as const)
58
+ const systemDark = React.useSyncExternalStore(subscribeDarkMode, getDarkMode, () => false)
41
59
  const [portalContainer, setPortalContainer] = React.useState<HTMLDivElement | null>(null)
42
- const appearance = controller?.appearance ?? internalAppearance
43
-
44
- React.useEffect(() => {
45
- if (!controller) setInternalAppearance(storedAppearance())
46
- setMounted(true)
47
- }, [controller])
48
-
49
- React.useEffect(() => {
50
- if (!mounted || typeof window === "undefined" || typeof window.matchMedia !== "function") return
51
- const media = window.matchMedia("(prefers-color-scheme: dark)")
52
- const apply = () => setResolvedAppearance(
53
- appearance === "system" ? media.matches ? "dark" : "light" : appearance,
54
- )
55
- apply()
56
- media.addEventListener("change", apply)
57
- return () => media.removeEventListener("change", apply)
58
- }, [appearance, mounted])
60
+ const appearance = controller?.appearance ?? sessionAppearance ?? stored
61
+ const resolvedAppearance = appearance === "system" ? (systemDark ? "dark" : "light") : appearance
59
62
 
60
63
  const change = React.useCallback((next: Agents24ChatAppearance) => {
61
64
  if (controller) {
62
65
  controller.setAppearance(next)
63
66
  return
64
67
  }
68
+ setSessionAppearance(next)
65
69
  try { window.localStorage.setItem(storageKey, next) } catch { /* storage is optional */ }
66
- setInternalAppearance(next)
70
+ window.dispatchEvent(new Event(appearanceEvent))
67
71
  }, [controller])
68
72
 
69
73
  return (
70
- <ThemeContext.Provider value={{ appearance, portalContainer, setAppearance: change }}>
74
+ <ThemeContext.Provider value={{ appearance, portalContainer, setAppearance: change, inherited: mode === "inherit" }}>
71
75
  <div
72
76
  ref={setPortalContainer}
73
- className={`${resolvedAppearance} size-full`}
77
+ className={mode === "inherit" ? "size-full" : `${resolvedAppearance} size-full`}
78
+ data-agents24-theme-mode={mode}
74
79
  data-agents24-theme={theme}
75
80
  data-agents24-theme-root=""
76
81
  >
@@ -21,6 +21,7 @@ function TooltipTrigger({
21
21
  asChild: _asChild,
22
22
  ...props
23
23
  }: React.ComponentProps<typeof Slot.Root> & { asChild?: boolean }) {
24
+ void _asChild
24
25
  return <Slot.Root data-slot="tooltip-trigger" {...props} />
25
26
  }
26
27
 
@@ -35,6 +36,8 @@ function TooltipContent({
35
36
  sideOffset?: number
36
37
  align?: "start" | "center" | "end"
37
38
  }) {
39
+ void _align
40
+ void _sideOffset
38
41
  return (
39
42
  <span
40
43
  role="tooltip"
@@ -0,0 +1,11 @@
1
+ @layer theme, base, components, utilities;
2
+ @import "tailwindcss/theme.css" layer(theme);
3
+ @import "tailwindcss/utilities.css" layer(utilities);
4
+ @import "tw-animate-css";
5
+ @import "@fontsource-variable/jetbrains-mono";
6
+ @import "@fontsource-variable/merriweather";
7
+ @import "@fontsource-variable/inter";
8
+
9
+ @source "./**/*.{ts,tsx}";
10
+
11
+ @import "./theme.css";
@@ -6,216 +6,4 @@
6
6
 
7
7
  @source "./**/*.{ts,tsx}";
8
8
 
9
- @custom-variant dark (&:is(.dark *));
10
-
11
- @theme inline {
12
- --font-heading: var(--a24-font-heading);
13
- --font-sans: var(--a24-font-sans);
14
- --color-sidebar-ring: var(--sidebar-ring);
15
- --color-sidebar-border: var(--sidebar-border);
16
- --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
17
- --color-sidebar-accent: var(--sidebar-accent);
18
- --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
19
- --color-sidebar-primary: var(--sidebar-primary);
20
- --color-sidebar-foreground: var(--sidebar-foreground);
21
- --color-sidebar: var(--sidebar);
22
- --color-ring: var(--ring);
23
- --color-input: var(--input);
24
- --color-border: var(--border);
25
- --color-destructive: var(--destructive);
26
- --color-accent-foreground: var(--accent-foreground);
27
- --color-accent: var(--accent);
28
- --color-muted-foreground: var(--muted-foreground);
29
- --color-muted: var(--muted);
30
- --color-secondary-foreground: var(--secondary-foreground);
31
- --color-secondary: var(--secondary);
32
- --color-primary-foreground: var(--primary-foreground);
33
- --color-primary: var(--primary);
34
- --color-popover-foreground: var(--popover-foreground);
35
- --color-popover: var(--popover);
36
- --color-card-foreground: var(--card-foreground);
37
- --color-card: var(--card);
38
- --color-foreground: var(--foreground);
39
- --color-background: var(--background);
40
- --radius-sm: calc(var(--radius) * 0.6);
41
- --radius-md: calc(var(--radius) * 0.8);
42
- --radius-lg: var(--radius);
43
- --radius-xl: calc(var(--radius) * 1.4);
44
- --radius-2xl: calc(var(--radius) * 1.8);
45
- --radius-3xl: calc(var(--radius) * 2.2);
46
- --radius-4xl: calc(var(--radius) * 2.6);
47
- --a24-composer-single-row-radius: 9999px;
48
- --color-chart-5: var(--chart-5);
49
- --color-chart-4: var(--chart-4);
50
- --color-chart-3: var(--chart-3);
51
- --color-chart-2: var(--chart-2);
52
- --color-chart-1: var(--chart-1);
53
- --font-serif: var(--a24-font-heading);
54
- --font-mono: var(--a24-font-mono);
55
- }
56
-
57
- [data-agents24-theme-root] {
58
- color-scheme: light;
59
- --a24-font-heading: 'Inter Variable', sans-serif;
60
- --a24-font-sans: 'Inter Variable', sans-serif;
61
- --a24-font-mono: 'JetBrains Mono Variable', monospace;
62
- --radius-sm: calc(var(--radius) * 0.6);
63
- --radius-md: calc(var(--radius) * 0.8);
64
- --radius-lg: var(--radius);
65
- --radius-xl: calc(var(--radius) * 1.4);
66
- --radius-2xl: calc(var(--radius) * 1.8);
67
- --radius-3xl: calc(var(--radius) * 2.2);
68
- --radius-4xl: calc(var(--radius) * 2.6);
69
- --background: oklch(1 0 0);
70
- --foreground: oklch(0.147 0.004 49.25);
71
- --card: oklch(1 0 0);
72
- --card-foreground: oklch(0.147 0.004 49.25);
73
- --popover: oklch(1 0 0);
74
- --popover-foreground: oklch(0.147 0.004 49.25);
75
- --primary: oklch(0.52 0.105 223.128);
76
- --primary-foreground: oklch(0.984 0.019 200.873);
77
- --secondary: oklch(0.967 0.001 286.375);
78
- --secondary-foreground: oklch(0.21 0.006 285.885);
79
- --muted: oklch(0.97 0.001 106.424);
80
- --muted-foreground: oklch(0.553 0.013 58.071);
81
- --accent: oklch(0.97 0.001 106.424);
82
- --accent-foreground: oklch(0.216 0.006 56.043);
83
- --destructive: oklch(0.577 0.245 27.325);
84
- --border: oklch(0.923 0.003 48.717);
85
- --input: oklch(0.923 0.003 48.717);
86
- --ring: oklch(0.709 0.01 56.259);
87
- --radius: 0.875rem;
88
- --sidebar: oklch(0.985 0.001 106.423);
89
- --sidebar-foreground: oklch(0.147 0.004 49.25);
90
- --sidebar-primary: oklch(0.609 0.126 221.723);
91
- --sidebar-primary-foreground: oklch(0.984 0.019 200.873);
92
- --sidebar-accent: oklch(0.97 0.001 106.424);
93
- --sidebar-accent-foreground: oklch(0.216 0.006 56.043);
94
- --sidebar-border: oklch(0.923 0.003 48.717);
95
- --sidebar-ring: oklch(0.709 0.01 56.259);
96
- --chart-1: oklch(0.845 0.143 164.978);
97
- --chart-2: oklch(0.696 0.17 162.48);
98
- --chart-3: oklch(0.596 0.145 163.225);
99
- --chart-4: oklch(0.508 0.118 165.612);
100
- --chart-5: oklch(0.432 0.095 166.913);
101
- }
102
-
103
- [data-agents24-theme-root].dark {
104
- color-scheme: dark;
105
- --background: oklch(0.147 0.004 49.25);
106
- --foreground: oklch(0.985 0.001 106.423);
107
- --card: oklch(0.216 0.006 56.043);
108
- --card-foreground: oklch(0.985 0.001 106.423);
109
- --popover: oklch(0.216 0.006 56.043);
110
- --popover-foreground: oklch(0.985 0.001 106.423);
111
- --primary: oklch(0.45 0.085 224.283);
112
- --primary-foreground: oklch(0.984 0.019 200.873);
113
- --secondary: oklch(0.274 0.006 286.033);
114
- --secondary-foreground: oklch(0.985 0 0);
115
- --muted: oklch(0.268 0.007 34.298);
116
- --muted-foreground: oklch(0.709 0.01 56.259);
117
- --accent: oklch(0.268 0.007 34.298);
118
- --accent-foreground: oklch(0.985 0.001 106.423);
119
- --destructive: oklch(0.704 0.191 22.216);
120
- --border: oklch(1 0 0 / 10%);
121
- --input: oklch(1 0 0 / 15%);
122
- --ring: oklch(0.553 0.013 58.071);
123
- --sidebar: oklch(0.216 0.006 56.043);
124
- --sidebar-foreground: oklch(0.985 0.001 106.423);
125
- --sidebar-primary: oklch(0.715 0.143 215.221);
126
- --sidebar-primary-foreground: oklch(0.302 0.056 229.695);
127
- --sidebar-accent: oklch(0.268 0.007 34.298);
128
- --sidebar-accent-foreground: oklch(0.985 0.001 106.423);
129
- --sidebar-border: oklch(1 0 0 / 10%);
130
- --sidebar-ring: oklch(0.553 0.013 58.071);
131
- --chart-1: oklch(0.845 0.143 164.978);
132
- --chart-2: oklch(0.696 0.17 162.48);
133
- --chart-3: oklch(0.596 0.145 163.225);
134
- --chart-4: oklch(0.508 0.118 165.612);
135
- --chart-5: oklch(0.432 0.095 166.913);
136
- }
137
-
138
- [data-agents24-theme-root][data-agents24-theme="sharp"] {
139
- --a24-composer-single-row-radius: 0;
140
- --a24-font-heading: 'Merriweather Variable', serif;
141
- --a24-font-sans: 'JetBrains Mono Variable', monospace;
142
- --a24-font-mono: 'JetBrains Mono Variable', monospace;
143
- --background: oklch(1 0 0);
144
- --foreground: oklch(0.141 0.005 285.823);
145
- --card: oklch(1 0 0);
146
- --card-foreground: oklch(0.141 0.005 285.823);
147
- --popover: oklch(1 0 0);
148
- --popover-foreground: oklch(0.141 0.005 285.823);
149
- --primary: oklch(0.21 0.006 285.885);
150
- --primary-foreground: oklch(0.985 0 0);
151
- --secondary: oklch(0.967 0.001 286.375);
152
- --secondary-foreground: oklch(0.21 0.006 285.885);
153
- --muted: oklch(0.967 0.001 286.375);
154
- --muted-foreground: oklch(0.552 0.016 285.938);
155
- --accent: oklch(0.967 0.001 286.375);
156
- --accent-foreground: oklch(0.21 0.006 285.885);
157
- --destructive: oklch(0.577 0.245 27.325);
158
- --border: oklch(0.92 0.004 286.32);
159
- --input: oklch(0.92 0.004 286.32);
160
- --ring: oklch(0.705 0.015 286.067);
161
- --radius: 0;
162
- --sidebar: oklch(0.985 0 0);
163
- --sidebar-foreground: oklch(0.141 0.005 285.823);
164
- --sidebar-primary: oklch(0.21 0.006 285.885);
165
- --sidebar-primary-foreground: oklch(0.985 0 0);
166
- --sidebar-accent: oklch(0.967 0.001 286.375);
167
- --sidebar-accent-foreground: oklch(0.21 0.006 285.885);
168
- --sidebar-border: oklch(0.92 0.004 286.32);
169
- --sidebar-ring: oklch(0.705 0.015 286.067);
170
- --chart-1: oklch(0.865 0.127 207.078);
171
- --chart-2: oklch(0.715 0.143 215.221);
172
- --chart-3: oklch(0.609 0.126 221.723);
173
- --chart-4: oklch(0.52 0.105 223.128);
174
- --chart-5: oklch(0.45 0.085 224.283);
175
- }
176
-
177
- [data-agents24-theme-root][data-agents24-theme="sharp"].dark {
178
- --background: oklch(0.141 0.005 285.823);
179
- --foreground: oklch(0.985 0 0);
180
- --card: oklch(0.21 0.006 285.885);
181
- --card-foreground: oklch(0.985 0 0);
182
- --popover: oklch(0.21 0.006 285.885);
183
- --popover-foreground: oklch(0.985 0 0);
184
- --primary: oklch(0.92 0.004 286.32);
185
- --primary-foreground: oklch(0.21 0.006 285.885);
186
- --secondary: oklch(0.274 0.006 286.033);
187
- --secondary-foreground: oklch(0.985 0 0);
188
- --muted: oklch(0.274 0.006 286.033);
189
- --muted-foreground: oklch(0.705 0.015 286.067);
190
- --accent: oklch(0.274 0.006 286.033);
191
- --accent-foreground: oklch(0.985 0 0);
192
- --destructive: oklch(0.704 0.191 22.216);
193
- --border: oklch(1 0 0 / 10%);
194
- --input: oklch(1 0 0 / 15%);
195
- --ring: oklch(0.552 0.016 285.938);
196
- --sidebar: oklch(0.21 0.006 285.885);
197
- --sidebar-foreground: oklch(0.985 0 0);
198
- --sidebar-primary: oklch(0.488 0.243 264.376);
199
- --sidebar-primary-foreground: oklch(0.985 0 0);
200
- --sidebar-accent: oklch(0.274 0.006 286.033);
201
- --sidebar-accent-foreground: oklch(0.985 0 0);
202
- --sidebar-border: oklch(1 0 0 / 10%);
203
- --sidebar-ring: oklch(0.552 0.016 285.938);
204
- --chart-1: oklch(0.865 0.127 207.078);
205
- --chart-2: oklch(0.715 0.143 215.221);
206
- --chart-3: oklch(0.609 0.126 221.723);
207
- --chart-4: oklch(0.52 0.105 223.128);
208
- --chart-5: oklch(0.45 0.085 224.283);
209
- }
210
-
211
- @layer base {
212
- [data-agents24-theme-root], [data-agents24-theme-root] * {
213
- @apply border-border outline-ring/50;
214
- box-sizing: border-box;
215
- }
216
- [data-agents24-theme-root] {
217
- @apply size-full overflow-hidden bg-background font-sans text-foreground antialiased;
218
- }
219
- [data-agents24-theme-root] button,
220
- [data-agents24-theme-root] textarea { font: inherit; }
221
- }
9
+ @import "./theme.css";
@@ -1,3 +1,5 @@
1
+ "use client"
2
+
1
3
  import * as React from "react"
2
4
 
3
5
  import { App, type Agents24ChatAppProps } from "./app"
@@ -11,11 +13,12 @@ import { TooltipProvider } from "./components/ui/tooltip"
11
13
  export type Agents24ChatScaffoldProps = Agents24ChatAppProps & {
12
14
  appearanceController?: Agents24ChatAppearanceController
13
15
  theme?: Agents24ChatTheme
16
+ themeMode?: "isolated" | "inherit"
14
17
  }
15
18
 
16
- export function Agents24ChatScaffold({ appearanceController, theme, ...props }: Agents24ChatScaffoldProps) {
19
+ export function Agents24ChatScaffold({ appearanceController, theme, themeMode, ...props }: Agents24ChatScaffoldProps) {
17
20
  return (
18
- <ThemeProvider controller={appearanceController} theme={theme}>
21
+ <ThemeProvider controller={appearanceController} theme={theme} mode={themeMode}>
19
22
  <TooltipProvider>
20
23
  <App {...props} />
21
24
  </TooltipProvider>
@@ -35,5 +38,9 @@ export type {
35
38
  ChatHitlResponse,
36
39
  Agents24ChatScaffoldComponents,
37
40
  Agents24ChatTimelineSlotProps,
41
+ Agents24ChatComposerSlotProps,
38
42
  } from "./app"
39
43
  export { TooltipProvider as Agents24ChatTooltipProvider }
44
+
45
+ export { ChatComposer as Agents24ChatComposer } from "./components/chat/chat-composer"
46
+ export type { Agents24ChatComposerProps } from "./components/chat/chat-composer"
@@ -0,0 +1,215 @@
1
+ @custom-variant dark (&:is(.dark *));
2
+
3
+ @theme inline {
4
+ --font-heading: var(--a24-font-heading);
5
+ --font-sans: var(--a24-font-sans);
6
+ --color-sidebar-ring: var(--sidebar-ring);
7
+ --color-sidebar-border: var(--sidebar-border);
8
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
9
+ --color-sidebar-accent: var(--sidebar-accent);
10
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
11
+ --color-sidebar-primary: var(--sidebar-primary);
12
+ --color-sidebar-foreground: var(--sidebar-foreground);
13
+ --color-sidebar: var(--sidebar);
14
+ --color-ring: var(--ring);
15
+ --color-input: var(--input);
16
+ --color-border: var(--border);
17
+ --color-destructive: var(--destructive);
18
+ --color-accent-foreground: var(--accent-foreground);
19
+ --color-accent: var(--accent);
20
+ --color-muted-foreground: var(--muted-foreground);
21
+ --color-muted: var(--muted);
22
+ --color-secondary-foreground: var(--secondary-foreground);
23
+ --color-secondary: var(--secondary);
24
+ --color-primary-foreground: var(--primary-foreground);
25
+ --color-primary: var(--primary);
26
+ --color-popover-foreground: var(--popover-foreground);
27
+ --color-popover: var(--popover);
28
+ --color-card-foreground: var(--card-foreground);
29
+ --color-card: var(--card);
30
+ --color-foreground: var(--foreground);
31
+ --color-background: var(--background);
32
+ --radius-sm: calc(var(--radius) * 0.6);
33
+ --radius-md: calc(var(--radius) * 0.8);
34
+ --radius-lg: var(--radius);
35
+ --radius-xl: calc(var(--radius) * 1.4);
36
+ --radius-2xl: calc(var(--radius) * 1.8);
37
+ --radius-3xl: calc(var(--radius) * 2.2);
38
+ --radius-4xl: calc(var(--radius) * 2.6);
39
+ --a24-composer-single-row-radius: 9999px;
40
+ --color-chart-5: var(--chart-5);
41
+ --color-chart-4: var(--chart-4);
42
+ --color-chart-3: var(--chart-3);
43
+ --color-chart-2: var(--chart-2);
44
+ --color-chart-1: var(--chart-1);
45
+ --font-serif: var(--a24-font-heading);
46
+ --font-mono: var(--a24-font-mono);
47
+ }
48
+
49
+ [data-agents24-theme-root] {
50
+ color-scheme: light;
51
+ --a24-font-heading: 'Inter Variable', sans-serif;
52
+ --a24-font-sans: 'Inter Variable', sans-serif;
53
+ --a24-font-mono: 'JetBrains Mono Variable', monospace;
54
+ --radius-sm: calc(var(--radius) * 0.6);
55
+ --radius-md: calc(var(--radius) * 0.8);
56
+ --radius-lg: var(--radius);
57
+ --radius-xl: calc(var(--radius) * 1.4);
58
+ --radius-2xl: calc(var(--radius) * 1.8);
59
+ --radius-3xl: calc(var(--radius) * 2.2);
60
+ --radius-4xl: calc(var(--radius) * 2.6);
61
+ --background: oklch(1 0 0);
62
+ --foreground: oklch(0.147 0.004 49.25);
63
+ --card: oklch(1 0 0);
64
+ --card-foreground: oklch(0.147 0.004 49.25);
65
+ --popover: oklch(1 0 0);
66
+ --popover-foreground: oklch(0.147 0.004 49.25);
67
+ --primary: oklch(0.52 0.105 223.128);
68
+ --primary-foreground: oklch(0.984 0.019 200.873);
69
+ --secondary: oklch(0.967 0.001 286.375);
70
+ --secondary-foreground: oklch(0.21 0.006 285.885);
71
+ --muted: oklch(0.97 0.001 106.424);
72
+ --muted-foreground: oklch(0.553 0.013 58.071);
73
+ --accent: oklch(0.97 0.001 106.424);
74
+ --accent-foreground: oklch(0.216 0.006 56.043);
75
+ --destructive: oklch(0.577 0.245 27.325);
76
+ --border: oklch(0.923 0.003 48.717);
77
+ --input: oklch(0.923 0.003 48.717);
78
+ --ring: oklch(0.709 0.01 56.259);
79
+ --radius: 0.875rem;
80
+ --sidebar: oklch(0.985 0.001 106.423);
81
+ --sidebar-foreground: oklch(0.147 0.004 49.25);
82
+ --sidebar-primary: oklch(0.609 0.126 221.723);
83
+ --sidebar-primary-foreground: oklch(0.984 0.019 200.873);
84
+ --sidebar-accent: oklch(0.97 0.001 106.424);
85
+ --sidebar-accent-foreground: oklch(0.216 0.006 56.043);
86
+ --sidebar-border: oklch(0.923 0.003 48.717);
87
+ --sidebar-ring: oklch(0.709 0.01 56.259);
88
+ --chart-1: oklch(0.845 0.143 164.978);
89
+ --chart-2: oklch(0.696 0.17 162.48);
90
+ --chart-3: oklch(0.596 0.145 163.225);
91
+ --chart-4: oklch(0.508 0.118 165.612);
92
+ --chart-5: oklch(0.432 0.095 166.913);
93
+ }
94
+
95
+ [data-agents24-theme-root].dark,
96
+ .dark [data-agents24-theme-root][data-agents24-theme-mode="inherit"] {
97
+ color-scheme: dark;
98
+ --background: oklch(0.147 0.004 49.25);
99
+ --foreground: oklch(0.985 0.001 106.423);
100
+ --card: oklch(0.216 0.006 56.043);
101
+ --card-foreground: oklch(0.985 0.001 106.423);
102
+ --popover: oklch(0.216 0.006 56.043);
103
+ --popover-foreground: oklch(0.985 0.001 106.423);
104
+ --primary: oklch(0.45 0.085 224.283);
105
+ --primary-foreground: oklch(0.984 0.019 200.873);
106
+ --secondary: oklch(0.274 0.006 286.033);
107
+ --secondary-foreground: oklch(0.985 0 0);
108
+ --muted: oklch(0.268 0.007 34.298);
109
+ --muted-foreground: oklch(0.709 0.01 56.259);
110
+ --accent: oklch(0.268 0.007 34.298);
111
+ --accent-foreground: oklch(0.985 0.001 106.423);
112
+ --destructive: oklch(0.704 0.191 22.216);
113
+ --border: oklch(1 0 0 / 10%);
114
+ --input: oklch(1 0 0 / 15%);
115
+ --ring: oklch(0.553 0.013 58.071);
116
+ --sidebar: oklch(0.216 0.006 56.043);
117
+ --sidebar-foreground: oklch(0.985 0.001 106.423);
118
+ --sidebar-primary: oklch(0.715 0.143 215.221);
119
+ --sidebar-primary-foreground: oklch(0.302 0.056 229.695);
120
+ --sidebar-accent: oklch(0.268 0.007 34.298);
121
+ --sidebar-accent-foreground: oklch(0.985 0.001 106.423);
122
+ --sidebar-border: oklch(1 0 0 / 10%);
123
+ --sidebar-ring: oklch(0.553 0.013 58.071);
124
+ --chart-1: oklch(0.845 0.143 164.978);
125
+ --chart-2: oklch(0.696 0.17 162.48);
126
+ --chart-3: oklch(0.596 0.145 163.225);
127
+ --chart-4: oklch(0.508 0.118 165.612);
128
+ --chart-5: oklch(0.432 0.095 166.913);
129
+ }
130
+
131
+ [data-agents24-theme-root][data-agents24-theme="sharp"] {
132
+ --a24-composer-single-row-radius: 0;
133
+ --a24-font-heading: 'Merriweather Variable', serif;
134
+ --a24-font-sans: 'JetBrains Mono Variable', monospace;
135
+ --a24-font-mono: 'JetBrains Mono Variable', monospace;
136
+ --background: oklch(1 0 0);
137
+ --foreground: oklch(0.141 0.005 285.823);
138
+ --card: oklch(1 0 0);
139
+ --card-foreground: oklch(0.141 0.005 285.823);
140
+ --popover: oklch(1 0 0);
141
+ --popover-foreground: oklch(0.141 0.005 285.823);
142
+ --primary: oklch(0.21 0.006 285.885);
143
+ --primary-foreground: oklch(0.985 0 0);
144
+ --secondary: oklch(0.967 0.001 286.375);
145
+ --secondary-foreground: oklch(0.21 0.006 285.885);
146
+ --muted: oklch(0.967 0.001 286.375);
147
+ --muted-foreground: oklch(0.552 0.016 285.938);
148
+ --accent: oklch(0.967 0.001 286.375);
149
+ --accent-foreground: oklch(0.21 0.006 285.885);
150
+ --destructive: oklch(0.577 0.245 27.325);
151
+ --border: oklch(0.92 0.004 286.32);
152
+ --input: oklch(0.92 0.004 286.32);
153
+ --ring: oklch(0.705 0.015 286.067);
154
+ --radius: 0;
155
+ --sidebar: oklch(0.985 0 0);
156
+ --sidebar-foreground: oklch(0.141 0.005 285.823);
157
+ --sidebar-primary: oklch(0.21 0.006 285.885);
158
+ --sidebar-primary-foreground: oklch(0.985 0 0);
159
+ --sidebar-accent: oklch(0.967 0.001 286.375);
160
+ --sidebar-accent-foreground: oklch(0.21 0.006 285.885);
161
+ --sidebar-border: oklch(0.92 0.004 286.32);
162
+ --sidebar-ring: oklch(0.705 0.015 286.067);
163
+ --chart-1: oklch(0.865 0.127 207.078);
164
+ --chart-2: oklch(0.715 0.143 215.221);
165
+ --chart-3: oklch(0.609 0.126 221.723);
166
+ --chart-4: oklch(0.52 0.105 223.128);
167
+ --chart-5: oklch(0.45 0.085 224.283);
168
+ }
169
+
170
+ [data-agents24-theme-root][data-agents24-theme="sharp"].dark,
171
+ .dark [data-agents24-theme-root][data-agents24-theme="sharp"][data-agents24-theme-mode="inherit"] {
172
+ --background: oklch(0.141 0.005 285.823);
173
+ --foreground: oklch(0.985 0 0);
174
+ --card: oklch(0.21 0.006 285.885);
175
+ --card-foreground: oklch(0.985 0 0);
176
+ --popover: oklch(0.21 0.006 285.885);
177
+ --popover-foreground: oklch(0.985 0 0);
178
+ --primary: oklch(0.92 0.004 286.32);
179
+ --primary-foreground: oklch(0.21 0.006 285.885);
180
+ --secondary: oklch(0.274 0.006 286.033);
181
+ --secondary-foreground: oklch(0.985 0 0);
182
+ --muted: oklch(0.274 0.006 286.033);
183
+ --muted-foreground: oklch(0.705 0.015 286.067);
184
+ --accent: oklch(0.274 0.006 286.033);
185
+ --accent-foreground: oklch(0.985 0 0);
186
+ --destructive: oklch(0.704 0.191 22.216);
187
+ --border: oklch(1 0 0 / 10%);
188
+ --input: oklch(1 0 0 / 15%);
189
+ --ring: oklch(0.552 0.016 285.938);
190
+ --sidebar: oklch(0.21 0.006 285.885);
191
+ --sidebar-foreground: oklch(0.985 0 0);
192
+ --sidebar-primary: oklch(0.488 0.243 264.376);
193
+ --sidebar-primary-foreground: oklch(0.985 0 0);
194
+ --sidebar-accent: oklch(0.274 0.006 286.033);
195
+ --sidebar-accent-foreground: oklch(0.985 0 0);
196
+ --sidebar-border: oklch(1 0 0 / 10%);
197
+ --sidebar-ring: oklch(0.552 0.016 285.938);
198
+ --chart-1: oklch(0.865 0.127 207.078);
199
+ --chart-2: oklch(0.715 0.143 215.221);
200
+ --chart-3: oklch(0.609 0.126 221.723);
201
+ --chart-4: oklch(0.52 0.105 223.128);
202
+ --chart-5: oklch(0.45 0.085 224.283);
203
+ }
204
+
205
+ @layer base {
206
+ [data-agents24-theme-root], [data-agents24-theme-root] * {
207
+ @apply border-border outline-ring/50;
208
+ box-sizing: border-box;
209
+ }
210
+ [data-agents24-theme-root] {
211
+ @apply size-full overflow-hidden bg-background font-sans text-foreground antialiased;
212
+ }
213
+ [data-agents24-theme-root] button,
214
+ [data-agents24-theme-root] textarea { font: inherit; }
215
+ }