@adea-ai/ui 0.25.12 → 0.25.14

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.
@@ -5,8 +5,8 @@ import { ZoomIn, ZoomOut } from "lucide-solid";
5
5
  import { Show, onCleanup } from "solid-js";
6
6
  //#region src/components/on-screen-controls.tsx
7
7
  var _tmpl$ = /*#__PURE__*/ template(`<button type=button>`);
8
- var _tmpl$2 = /*#__PURE__*/ template(`<div class="pointer-events-auto grid grid-cols-3 gap-1.5 rounded-3xl bg-slate-950/20 p-2 backdrop-blur-[2px]"><span></span><span>`);
9
- var _tmpl$3 = /*#__PURE__*/ template(`<div class="flex items-center gap-1.5 rounded-2xl bg-slate-950/20 p-1.5 backdrop-blur-[2px]"role=group aria-label="Camera zoom">`);
8
+ var _tmpl$2 = /*#__PURE__*/ template(`<div class="pointer-events-auto grid grid-cols-3 gap-1.5 rounded-3xl bg-scrim/20 p-2 backdrop-blur-[2px]"><span></span><span>`);
9
+ var _tmpl$3 = /*#__PURE__*/ template(`<div class="flex items-center gap-1.5 rounded-2xl bg-scrim/20 p-1.5 backdrop-blur-[2px]"role=group aria-label="Camera zoom">`);
10
10
  var _tmpl$4 = /*#__PURE__*/ template(`<div data-agent-hq-on-screen-controls class="pointer-events-none fixed inset-x-4 bottom-4 z-30 flex select-none items-end justify-between gap-4 pb-[env(safe-area-inset-bottom)] sm:inset-x-6 sm:bottom-6 [-webkit-touch-callout:none] [-webkit-user-select:none]"><div class="pointer-events-auto ml-auto flex flex-col items-end gap-2">`);
11
11
  function sendKeyEvent(type, code) {
12
12
  window.dispatchEvent(new KeyboardEvent(type, {
@@ -54,7 +54,7 @@ function ControlButton(props) {
54
54
  _el$.$$contextmenu = (event) => event.preventDefault();
55
55
  insert(_el$, () => props.children);
56
56
  effect((_p$) => {
57
- var _v$ = props.label, _v$2 = cn("flex size-14 touch-none select-none items-center justify-center rounded-2xl border border-white/25 bg-slate-950/65 p-2 text-white shadow-lg backdrop-blur-sm transition active:scale-95 [-webkit-touch-callout:none] [-webkit-user-select:none]", props.class);
57
+ var _v$ = props.label, _v$2 = cn("flex size-14 touch-none select-none items-center justify-center rounded-2xl border border-scrim-edge/25 bg-scrim/65 p-2 text-scrim-foreground shadow-lg backdrop-blur-sm transition active:scale-95 [-webkit-touch-callout:none] [-webkit-user-select:none]", props.class);
58
58
  _v$ !== _p$.e && setAttribute(_el$, "aria-label", _p$.e = _v$);
59
59
  _v$2 !== _p$.t && className(_el$, _p$.t = _v$2);
60
60
  return _p$;
@@ -116,7 +116,7 @@ function OnScreenControls(props) {
116
116
  size: "icon-lg",
117
117
  "aria-label": "Zoom out",
118
118
  title: "Zoom out",
119
- "class": "border border-white/25 bg-slate-950/65 text-white shadow-lg backdrop-blur-sm hover:bg-slate-900/80",
119
+ "class": "border border-scrim-edge/25 bg-scrim/65 text-scrim-foreground shadow-lg backdrop-blur-sm hover:bg-scrim/80",
120
120
  onClick: () => props.onZoomOut?.(),
121
121
  get children() {
122
122
  return createComponent(ZoomOut, { "aria-hidden": "true" });
@@ -128,7 +128,7 @@ function OnScreenControls(props) {
128
128
  size: "icon-lg",
129
129
  "aria-label": "Zoom in",
130
130
  title: "Zoom in",
131
- "class": "border border-white/25 bg-slate-950/65 text-white shadow-lg backdrop-blur-sm hover:bg-slate-900/80",
131
+ "class": "border border-scrim-edge/25 bg-scrim/65 text-scrim-foreground shadow-lg backdrop-blur-sm hover:bg-scrim/80",
132
132
  onClick: () => props.onZoomIn?.(),
133
133
  get children() {
134
134
  return createComponent(ZoomIn, { "aria-hidden": "true" });
@@ -4,7 +4,7 @@ import { X } from "lucide-solid";
4
4
  import { splitProps } from "solid-js";
5
5
  import { Dialog as Dialog$1 } from "@kobalte/core/dialog";
6
6
  //#region src/components/ui/dialog.tsx
7
- var _tmpl$ = /*#__PURE__*/ template(`<div class="fixed inset-0 z-[120] flex items-center justify-center p-4">`);
7
+ var _tmpl$ = /*#__PURE__*/ template(`<div class="fixed inset-0 z-(--z-dialog) flex items-center justify-center p-4">`);
8
8
  var _tmpl$2 = /*#__PURE__*/ template(`<div data-slot=dialog-header>`);
9
9
  var _tmpl$3 = /*#__PURE__*/ template(`<div data-slot=dialog-footer>`);
10
10
  function Dialog(props) {
@@ -27,7 +27,7 @@ function DialogOverlay(props) {
27
27
  return createComponent(Dialog$1.Overlay, mergeProps({
28
28
  "data-slot": "dialog-overlay",
29
29
  get ["class"]() {
30
- return cn("fixed inset-0 z-[120] bg-slate-950/55 backdrop-blur-[2px]", local.class);
30
+ return cn("fixed inset-0 z-(--z-dialog) bg-scrim/55 backdrop-blur-[2px]", local.class);
31
31
  }
32
32
  }, rest));
33
33
  }
@@ -36,7 +36,7 @@ function DrawerOverlay(props) {
36
36
  return createComponent(DrawerPrimitive.Overlay, mergeProps({
37
37
  "data-slot": "drawer-overlay",
38
38
  get ["class"]() {
39
- return cn("fixed inset-0 z-[110] bg-black/10 backdrop-blur-xs transition-opacity duration-300 data-closed:opacity-0", local.class);
39
+ return cn("fixed inset-0 z-(--z-drawer) bg-scrim/10 backdrop-blur-xs transition-opacity duration-300 data-closed:opacity-0", local.class);
40
40
  }
41
41
  }, rest));
42
42
  }
@@ -63,7 +63,7 @@ function DrawerContent(props) {
63
63
  return [createComponent(DrawerOverlay, {}), createComponent(DrawerPrimitive.Content, mergeProps({
64
64
  "data-slot": "drawer-content",
65
65
  get ["class"]() {
66
- return cn("group/drawer-content fixed z-[110] flex flex-col overflow-hidden bg-popover text-sm text-popover-foreground shadow-lg outline-none transition-transform duration-300 ease-out will-change-transform", SIDE_CLASSES[side()], local.class);
66
+ return cn("group/drawer-content fixed z-(--z-drawer) flex flex-col overflow-hidden bg-popover text-sm text-popover-foreground shadow-lg outline-none transition-transform duration-300 ease-out will-change-transform", SIDE_CLASSES[side()], local.class);
67
67
  }
68
68
  }, rest, { get children() {
69
69
  return [createComponent(Show, {
@@ -35,7 +35,7 @@ function DropdownMenuContent(props) {
35
35
  return local.sideOffset ?? 4;
36
36
  },
37
37
  get ["class"]() {
38
- return cn("z-[140] max-h-(--kb-popper-available-height) min-w-32 origin-(--kb-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 data-expanded:animate-in data-expanded:fade-in-0 data-expanded:zoom-in-95", local.class);
38
+ return cn("z-(--z-menu) max-h-(--kb-popper-available-height) min-w-32 origin-(--kb-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 data-expanded:animate-in data-expanded:fade-in-0 data-expanded:zoom-in-95", local.class);
39
39
  }
40
40
  }, rest, { get children() {
41
41
  return local.children;
@@ -44,7 +44,7 @@ function TooltipContent(props) {
44
44
  return local.sideOffset ?? 4;
45
45
  },
46
46
  get ["class"]() {
47
- return cn("z-[160] max-w-72 rounded-md bg-popover px-2.5 py-1.5 text-sm leading-5 text-popover-foreground shadow-md ring-1 ring-foreground/10 data-closed:animate-out data-closed:fade-out-0 data-expanded:animate-in data-expanded:fade-in-0", local.class);
47
+ return cn("z-(--z-tooltip) max-w-72 rounded-md bg-popover px-2.5 py-1.5 text-sm leading-5 text-popover-foreground shadow-md ring-1 ring-foreground/10 data-closed:animate-out data-closed:fade-out-0 data-expanded:animate-in data-expanded:fade-in-0", local.class);
48
48
  }
49
49
  }, rest, { get children() {
50
50
  return local.children;
@@ -6,11 +6,11 @@ import { Check, Download, ExternalLink, FileText, LoaderCircle, RefreshCw, Spark
6
6
  import { Show, createEffect, createMemo, createSignal } from "solid-js";
7
7
  //#region src/components/version-dialog.tsx
8
8
  var _tmpl$ = /*#__PURE__*/ template(`<div class="flex items-center gap-3"><span class="flex size-10 items-center justify-center rounded-xl bg-primary text-primary-foreground"></span><div>`);
9
- var _tmpl$2 = /*#__PURE__*/ template(`<section class="rounded-xl border border-primary/35 bg-primary/8 p-4"aria-label="Available update"><div class="flex flex-wrap items-start justify-between gap-4"><div class=space-y-1><p class="flex items-center gap-2 text-sm font-semibold">Version <!> is ready</p><p class="text-sm text-muted-foreground">The signed installer will be verified before Adea restarts.`);
10
- var _tmpl$3 = /*#__PURE__*/ template(`<p class="flex items-center gap-2 text-sm text-emerald-700 dark:text-emerald-300"role=status>Adea is up to date.`);
9
+ var _tmpl$2 = /*#__PURE__*/ template(`<section class="rounded-xl border border-primary/35 bg-primary/8 p-4"aria-label="Available update"><div class="flex flex-wrap items-start justify-between gap-4"><div class="flex flex-col gap-1"><p class="flex items-center gap-2 text-sm font-semibold">Version <!> is ready</p><p class="text-sm text-muted-foreground">The signed installer will be verified before Adea restarts.`);
10
+ var _tmpl$3 = /*#__PURE__*/ template(`<p class="flex items-center gap-2 text-sm text-success"role=status>Adea is up to date.`);
11
11
  var _tmpl$4 = /*#__PURE__*/ template(`<p class="rounded-lg border border-destructive/35 bg-destructive/8 px-3 py-2 text-sm text-destructive"role=alert>`);
12
- var _tmpl$5 = /*#__PURE__*/ template(`<section class=space-y-2 aria-labelledby=adea-release-notes><div><h2 id=adea-release-notes class="text-sm font-semibold">What changed in this release</h2><p class="text-xs text-muted-foreground">Release notes are shown as readable text.</p></div><div class="max-h-52 overflow-y-auto whitespace-pre-wrap rounded-xl border bg-background/45 p-4 font-mono text-xs leading-5 text-muted-foreground">`);
13
- var _tmpl$6 = /*#__PURE__*/ template(`<div class="min-h-0 space-y-5 overflow-y-auto p-6"><section class="rounded-xl border bg-background/45 p-4"aria-label="Version status"><div class="flex flex-wrap items-start justify-between gap-4"><div class=space-y-1><p class="text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground">Installed version</p><p class="text-xl font-semibold tracking-tight">v</p><p class="text-sm text-muted-foreground"></p></div></div></section><section class=space-y-2 aria-labelledby=agent-hq-changelog><div><h2 id=agent-hq-changelog class="text-sm font-semibold">Installed changelog</h2><p class="text-xs text-muted-foreground">A plain-text history of the installed channel.</p></div><div class="max-h-72 overflow-y-auto whitespace-pre-wrap rounded-xl border bg-background/45 p-4 font-mono text-xs leading-5 text-muted-foreground">`);
12
+ var _tmpl$5 = /*#__PURE__*/ template(`<section class="flex flex-col gap-2"aria-labelledby=adea-release-notes><div><h2 id=adea-release-notes class="text-sm font-semibold">What changed in this release</h2><p class="text-xs text-muted-foreground">Release notes are shown as readable text.</p></div><div class="max-h-52 overflow-y-auto whitespace-pre-wrap rounded-xl border bg-background/45 p-4 font-mono text-xs leading-5 text-muted-foreground">`);
13
+ var _tmpl$6 = /*#__PURE__*/ template(`<div class="flex min-h-0 flex-col gap-5 overflow-y-auto p-6"><section class="rounded-xl border bg-background/45 p-4"aria-label="Version status"><div class="flex flex-wrap items-start justify-between gap-4"><div class="flex flex-col gap-1"><p class="text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground">Installed version</p><p class="text-xl font-semibold tracking-tight">v</p><p class="text-sm text-muted-foreground"></p></div></div></section><section class="flex flex-col gap-2"aria-labelledby=agent-hq-changelog><div><h2 id=agent-hq-changelog class="text-sm font-semibold">Installed changelog</h2><p class="text-xs text-muted-foreground">A plain-text history of the installed channel.</p></div><div class="max-h-72 overflow-y-auto whitespace-pre-wrap rounded-xl border bg-background/45 p-4 font-mono text-xs leading-5 text-muted-foreground">`);
14
14
  var _tmpl$7 = /*#__PURE__*/ template(`<p class="text-xs text-muted-foreground">Released `);
15
15
  function errorMessage(caught, fallback) {
16
16
  if (caught instanceof Error && caught.message) return caught.message;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adea-ai/ui",
3
- "version": "0.25.12",
3
+ "version": "0.25.14",
4
4
  "description": "Shared UI kit for Adea: Kobalte/corvu-backed Solid primitives, workspace shells, and theme styles.",
5
5
  "keywords": [
6
6
  "components",
@@ -58,7 +58,7 @@ function ControlButton(props: ControlButtonProps) {
58
58
  type="button"
59
59
  aria-label={props.label}
60
60
  class={cn(
61
- 'flex size-14 touch-none select-none items-center justify-center rounded-2xl border border-white/25 bg-slate-950/65 p-2 text-white shadow-lg backdrop-blur-sm transition active:scale-95 [-webkit-touch-callout:none] [-webkit-user-select:none]',
61
+ 'flex size-14 touch-none select-none items-center justify-center rounded-2xl border border-scrim-edge/25 bg-scrim/65 p-2 text-scrim-foreground shadow-lg backdrop-blur-sm transition active:scale-95 [-webkit-touch-callout:none] [-webkit-user-select:none]',
62
62
  props.class
63
63
  )}
64
64
  onContextMenu={(event) => event.preventDefault()}
@@ -90,7 +90,7 @@ export function OnScreenControls(props: OnScreenControlsProps) {
90
90
  class="pointer-events-none fixed inset-x-4 bottom-4 z-30 flex select-none items-end justify-between gap-4 pb-[env(safe-area-inset-bottom)] sm:inset-x-6 sm:bottom-6 [-webkit-touch-callout:none] [-webkit-user-select:none]"
91
91
  >
92
92
  <Show when={showMovementControls()}>
93
- <div class="pointer-events-auto grid grid-cols-3 gap-1.5 rounded-3xl bg-slate-950/20 p-2 backdrop-blur-[2px]">
93
+ <div class="pointer-events-auto grid grid-cols-3 gap-1.5 rounded-3xl bg-scrim/20 p-2 backdrop-blur-[2px]">
94
94
  <span />
95
95
  <ControlButton code="KeyW" label="Move forward" class="size-12 rounded-xl text-xl">
96
96
  ▲
@@ -110,7 +110,7 @@ export function OnScreenControls(props: OnScreenControlsProps) {
110
110
  <div class="pointer-events-auto ml-auto flex flex-col items-end gap-2">
111
111
  <Show when={showZoomControls()}>
112
112
  <div
113
- class="flex items-center gap-1.5 rounded-2xl bg-slate-950/20 p-1.5 backdrop-blur-[2px]"
113
+ class="flex items-center gap-1.5 rounded-2xl bg-scrim/20 p-1.5 backdrop-blur-[2px]"
114
114
  role="group"
115
115
  aria-label="Camera zoom"
116
116
  >
@@ -120,7 +120,7 @@ export function OnScreenControls(props: OnScreenControlsProps) {
120
120
  size="icon-lg"
121
121
  aria-label="Zoom out"
122
122
  title="Zoom out"
123
- class="border border-white/25 bg-slate-950/65 text-white shadow-lg backdrop-blur-sm hover:bg-slate-900/80"
123
+ class="border border-scrim-edge/25 bg-scrim/65 text-scrim-foreground shadow-lg backdrop-blur-sm hover:bg-scrim/80"
124
124
  onClick={() => props.onZoomOut?.()}
125
125
  >
126
126
  <ZoomOut aria-hidden="true" />
@@ -131,7 +131,7 @@ export function OnScreenControls(props: OnScreenControlsProps) {
131
131
  size="icon-lg"
132
132
  aria-label="Zoom in"
133
133
  title="Zoom in"
134
- class="border border-white/25 bg-slate-950/65 text-white shadow-lg backdrop-blur-sm hover:bg-slate-900/80"
134
+ class="border border-scrim-edge/25 bg-scrim/65 text-scrim-foreground shadow-lg backdrop-blur-sm hover:bg-scrim/80"
135
135
  onClick={() => props.onZoomIn?.()}
136
136
  >
137
137
  <ZoomIn aria-hidden="true" />
@@ -31,7 +31,7 @@ function DialogOverlay(props: ComponentProps<typeof DialogPrimitive.Overlay>) {
31
31
  return (
32
32
  <DialogPrimitive.Overlay
33
33
  data-slot="dialog-overlay"
34
- class={cn('fixed inset-0 z-[120] bg-slate-950/55 backdrop-blur-[2px]', local.class)}
34
+ class={cn('fixed inset-0 z-(--z-dialog) bg-scrim/55 backdrop-blur-[2px]', local.class)}
35
35
  {...rest}
36
36
  />
37
37
  )
@@ -46,7 +46,7 @@ function DialogContent(
46
46
  <DialogOverlay />
47
47
  {/* Flex centering keeps the dialog on whole pixels; a translate-based
48
48
  center can land on a half pixel and shift every edge. */}
49
- <div class="fixed inset-0 z-[120] flex items-center justify-center p-4">
49
+ <div class="fixed inset-0 z-(--z-dialog) flex items-center justify-center p-4">
50
50
  <DialogPrimitive.Content
51
51
  data-slot="dialog-content"
52
52
  class={cn(
@@ -56,7 +56,7 @@ function DrawerOverlay(props: ComponentProps<typeof DrawerPrimitive.Overlay>) {
56
56
  // The scrim keeps the pre-Solid 10% black the committed screenshots
57
57
  // were taken against; 25% dimmed the page behind every drawer.
58
58
  class={cn(
59
- 'fixed inset-0 z-[110] bg-black/10 backdrop-blur-xs transition-opacity duration-300 data-closed:opacity-0',
59
+ 'fixed inset-0 z-(--z-drawer) bg-scrim/10 backdrop-blur-xs transition-opacity duration-300 data-closed:opacity-0',
60
60
  local.class
61
61
  )}
62
62
  {...rest}
@@ -93,7 +93,7 @@ function DrawerContent(props: DrawerContentProps) {
93
93
  <DrawerPrimitive.Content
94
94
  data-slot="drawer-content"
95
95
  class={cn(
96
- 'group/drawer-content fixed z-[110] flex flex-col overflow-hidden bg-popover text-sm text-popover-foreground shadow-lg outline-none transition-transform duration-300 ease-out will-change-transform',
96
+ 'group/drawer-content fixed z-(--z-drawer) flex flex-col overflow-hidden bg-popover text-sm text-popover-foreground shadow-lg outline-none transition-transform duration-300 ease-out will-change-transform',
97
97
  SIDE_CLASSES[side()],
98
98
  local.class
99
99
  )}
@@ -34,7 +34,7 @@ function DropdownMenuContent(props: DropdownMenuContentProps) {
34
34
  placement={placement()}
35
35
  gutter={local.sideOffset ?? 4}
36
36
  class={cn(
37
- 'z-[140] max-h-(--kb-popper-available-height) min-w-32 origin-(--kb-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 data-expanded:animate-in data-expanded:fade-in-0 data-expanded:zoom-in-95',
37
+ 'z-(--z-menu) max-h-(--kb-popper-available-height) min-w-32 origin-(--kb-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 outline-none data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 data-expanded:animate-in data-expanded:fade-in-0 data-expanded:zoom-in-95',
38
38
  local.class
39
39
  )}
40
40
  {...rest}
@@ -47,7 +47,7 @@ function TooltipContent(props: TooltipContentProps) {
47
47
  placement={placement()}
48
48
  gutter={local.sideOffset ?? 4}
49
49
  class={cn(
50
- 'z-[160] max-w-72 rounded-md bg-popover px-2.5 py-1.5 text-sm leading-5 text-popover-foreground shadow-md ring-1 ring-foreground/10 data-closed:animate-out data-closed:fade-out-0 data-expanded:animate-in data-expanded:fade-in-0',
50
+ 'z-(--z-tooltip) max-w-72 rounded-md bg-popover px-2.5 py-1.5 text-sm leading-5 text-popover-foreground shadow-md ring-1 ring-foreground/10 data-closed:animate-out data-closed:fade-out-0 data-expanded:animate-in data-expanded:fade-in-0',
51
51
  local.class
52
52
  )}
53
53
  {...rest}
@@ -213,10 +213,10 @@ export function VersionDialog(props: {
213
213
  </div>
214
214
  </DialogHeader>
215
215
 
216
- <div class="min-h-0 space-y-5 overflow-y-auto p-6">
216
+ <div class="flex min-h-0 flex-col gap-5 overflow-y-auto p-6">
217
217
  <section class="rounded-xl border bg-background/45 p-4" aria-label="Version status">
218
218
  <div class="flex flex-wrap items-start justify-between gap-4">
219
- <div class="space-y-1">
219
+ <div class="flex flex-col gap-1">
220
220
  <p class="text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground">
221
221
  Installed version
222
222
  </p>
@@ -267,7 +267,7 @@ export function VersionDialog(props: {
267
267
  aria-label="Available update"
268
268
  >
269
269
  <div class="flex flex-wrap items-start justify-between gap-4">
270
- <div class="space-y-1">
270
+ <div class="flex flex-col gap-1">
271
271
  <p class="flex items-center gap-2 text-sm font-semibold">
272
272
  <Sparkles class="size-4 text-primary" aria-hidden="true" />
273
273
  Version {update()?.available_version} is ready
@@ -300,10 +300,7 @@ export function VersionDialog(props: {
300
300
  </Show>
301
301
 
302
302
  <Show when={update()?.phase === 'current'}>
303
- <p
304
- class="flex items-center gap-2 text-sm text-emerald-700 dark:text-emerald-300"
305
- role="status"
306
- >
303
+ <p class="flex items-center gap-2 text-sm text-success" role="status">
307
304
  <Check class="size-4" aria-hidden="true" />
308
305
  Adea is up to date.
309
306
  </p>
@@ -319,7 +316,7 @@ export function VersionDialog(props: {
319
316
  </Show>
320
317
 
321
318
  <Show when={releaseNotes()}>
322
- <section class="space-y-2" aria-labelledby="adea-release-notes">
319
+ <section class="flex flex-col gap-2" aria-labelledby="adea-release-notes">
323
320
  <div>
324
321
  <h2 id="adea-release-notes" class="text-sm font-semibold">
325
322
  What changed in this release
@@ -334,7 +331,7 @@ export function VersionDialog(props: {
334
331
  </section>
335
332
  </Show>
336
333
 
337
- <section class="space-y-2" aria-labelledby="agent-hq-changelog">
334
+ <section class="flex flex-col gap-2" aria-labelledby="agent-hq-changelog">
338
335
  <div>
339
336
  <h2 id="agent-hq-changelog" class="text-sm font-semibold">
340
337
  Installed changelog
@@ -2,6 +2,8 @@
2
2
  utilities the components rely on. Framework-neutral CSS only — no component
3
3
  runtime, no styling tokens (those live in theme.css and friends). */
4
4
 
5
+ @import 'tw-animate-css';
6
+
5
7
  @theme inline {
6
8
  @keyframes accordion-down {
7
9
  from {
@@ -1,93 +1,7 @@
1
+ /* Prebuilt sheet for consumers that want the full kit: Tailwind, the neutral
2
+ base layer, and the shared tokens/base styles from theme.css. Keep tokens in
3
+ theme.css only — this file must not duplicate them. */
4
+
1
5
  @import 'tailwindcss';
2
6
  @import './base.css';
3
-
4
- /* Include shared components when this stylesheet is consumed by an app. */
5
- @source "../";
6
-
7
- @custom-variant dark (&:is(.dark *));
8
-
9
- @theme inline {
10
- --color-background: var(--background);
11
- --color-foreground: var(--foreground);
12
- --color-card: var(--card);
13
- --color-card-foreground: var(--card-foreground);
14
- --color-popover: var(--popover);
15
- --color-popover-foreground: var(--popover-foreground);
16
- --color-primary: var(--primary);
17
- --color-primary-foreground: var(--primary-foreground);
18
- --color-secondary: var(--secondary);
19
- --color-secondary-foreground: var(--secondary-foreground);
20
- --color-muted: var(--muted);
21
- --color-muted-foreground: var(--muted-foreground);
22
- --color-accent: var(--accent);
23
- --color-accent-foreground: var(--accent-foreground);
24
- --color-destructive: var(--destructive);
25
- --color-border: var(--border);
26
- --color-input: var(--input);
27
- --color-ring: var(--ring);
28
- --radius-sm: calc(var(--radius) - 4px);
29
- --radius-md: calc(var(--radius) - 2px);
30
- --radius-lg: var(--radius);
31
- --radius-xl: calc(var(--radius) + 4px);
32
- }
33
-
34
- :root {
35
- --radius: 0.75rem;
36
- --background: oklch(1 0 0);
37
- --foreground: oklch(0.145 0 0);
38
- --card: oklch(1 0 0);
39
- --card-foreground: oklch(0.145 0 0);
40
- --popover: oklch(1 0 0);
41
- --popover-foreground: oklch(0.145 0 0);
42
- --primary: oklch(0.205 0 0);
43
- --primary-foreground: oklch(0.985 0 0);
44
- --secondary: oklch(0.97 0 0);
45
- --secondary-foreground: oklch(0.205 0 0);
46
- --muted: oklch(0.97 0 0);
47
- --muted-foreground: oklch(0.556 0 0);
48
- --accent: oklch(0.97 0 0);
49
- --accent-foreground: oklch(0.205 0 0);
50
- --destructive: oklch(0.577 0.245 27.325);
51
- --border: oklch(0.922 0 0);
52
- --input: oklch(0.922 0 0);
53
- --ring: oklch(0.708 0 0);
54
- }
55
-
56
- .dark {
57
- --background: oklch(0.145 0 0);
58
- --foreground: oklch(0.985 0 0);
59
- --card: oklch(0.205 0 0);
60
- --card-foreground: oklch(0.985 0 0);
61
- --popover: oklch(0.205 0 0);
62
- --popover-foreground: oklch(0.985 0 0);
63
- --primary: oklch(0.922 0 0);
64
- --primary-foreground: oklch(0.205 0 0);
65
- --secondary: oklch(0.269 0 0);
66
- --secondary-foreground: oklch(0.985 0 0);
67
- --muted: oklch(0.269 0 0);
68
- --muted-foreground: oklch(0.708 0 0);
69
- --accent: oklch(0.269 0 0);
70
- --accent-foreground: oklch(0.985 0 0);
71
- --destructive: oklch(0.704 0.191 22.216);
72
- --border: oklch(1 0 0 / 10%);
73
- --input: oklch(1 0 0 / 15%);
74
- --ring: oklch(0.556 0 0);
75
- }
76
-
77
- @layer base {
78
- * {
79
- border-color: var(--border);
80
- }
81
-
82
- html,
83
- body {
84
- min-height: 100%;
85
- }
86
-
87
- body {
88
- position: relative;
89
- margin: 0;
90
- background: var(--background);
91
- color: var(--foreground);
92
- }
93
- }
7
+ @import './theme.css';
@@ -22,6 +22,9 @@
22
22
  --color-accent-foreground: var(--accent-foreground);
23
23
  --color-destructive: var(--destructive);
24
24
  --color-success: var(--success);
25
+ --color-scrim: var(--scrim);
26
+ --color-scrim-foreground: var(--scrim-foreground);
27
+ --color-scrim-edge: var(--scrim-edge);
25
28
  --color-border: var(--border);
26
29
  --color-input: var(--input);
27
30
  --color-ring: var(--ring);
@@ -50,6 +53,12 @@
50
53
  --destructive: oklch(0.577 0.245 27.325);
51
54
  /* Mirrors the literals the success button variant used to carry. */
52
55
  --success: #1a7f37;
56
+ /* Theme-invariant dark glass for overlays and on-screen controls
57
+ (Tailwind slate-950). Same value in light and dark themes; the
58
+ foreground/edge tokens are the text and hairline drawn on it. */
59
+ --scrim: oklch(0.129 0.042 264.695);
60
+ --scrim-foreground: #fff;
61
+ --scrim-edge: #fff;
53
62
  --border: oklch(0.922 0 0);
54
63
  --input: oklch(0.922 0 0);
55
64
  --ring: oklch(0.708 0 0);
@@ -57,6 +66,12 @@
57
66
  values the logo used to hardcode. */
58
67
  --workspace-logo-surface: #111827;
59
68
  --workspace-logo-foreground: #f8fafc;
69
+ /* Overlay stacking scale — reference it as z-(--z-drawer) etc. in
70
+ components; do not add one-off z-[N] values. */
71
+ --z-drawer: 110;
72
+ --z-dialog: 120;
73
+ --z-menu: 140;
74
+ --z-tooltip: 160;
60
75
  }
61
76
 
62
77
  .dark {