@actioneer/ads 0.5.9 → 0.7.0

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 (116) hide show
  1. package/components/ai-elements/agent-trace.d.ts +2 -2
  2. package/components/ai-elements/agent-trace.js +163 -104
  3. package/components/ai-elements/chain-of-thought.d.ts +2 -2
  4. package/components/ai-elements/chain-of-thought.js +1 -1
  5. package/components/ai-elements/index.d.ts +0 -5
  6. package/components/ai-elements/inline-citation.js +1 -1
  7. package/components/alert.d.ts +6 -6
  8. package/components/alert.js +89 -53
  9. package/components/answer-sources.d.ts +2 -6
  10. package/components/answer-sources.js +58 -60
  11. package/components/answer.d.ts +5 -0
  12. package/components/answer.js +311 -271
  13. package/components/assistant-ui/composer-harness.js +11 -14
  14. package/components/assistant-ui/composer.d.ts +3 -1
  15. package/components/assistant-ui/composer.js +148 -144
  16. package/components/assistant-ui/index.d.ts +0 -3
  17. package/components/assistant-ui/thread-context.d.ts +3 -1
  18. package/components/assistant-ui/thread.js +50 -42
  19. package/components/avatar.js +42 -42
  20. package/components/badge.d.ts +5 -6
  21. package/components/badge.js +13 -76
  22. package/components/body-page-header.d.ts +15 -0
  23. package/components/body-page-header.js +24 -0
  24. package/components/brand-loader.d.ts +0 -3
  25. package/components/brand-loader.js +10 -32
  26. package/components/breadcrumbs.d.ts +1 -8
  27. package/components/breadcrumbs.js +65 -78
  28. package/components/button.d.ts +1 -1
  29. package/components/button.js +55 -49
  30. package/components/card.js +19 -18
  31. package/components/chart.js +526 -503
  32. package/components/chip.d.ts +13 -1
  33. package/components/chip.js +93 -80
  34. package/components/collection-header.d.ts +17 -0
  35. package/components/collection-header.js +31 -0
  36. package/components/connector-card.d.ts +6 -6
  37. package/components/connector-card.js +31 -32
  38. package/components/date-range-picker.d.ts +26 -0
  39. package/components/date-range-picker.js +223 -0
  40. package/components/drawer.d.ts +19 -3
  41. package/components/drawer.js +143 -116
  42. package/components/dropdown.d.ts +1 -2
  43. package/components/dropdown.js +88 -89
  44. package/components/field.js +39 -34
  45. package/components/file-dropzone.js +1 -1
  46. package/components/index.d.ts +5 -4
  47. package/components/index.js +501 -546
  48. package/components/infinite-canvas.js +24 -24
  49. package/components/input-field.d.ts +18 -3
  50. package/components/input-field.js +88 -72
  51. package/components/input.js +16 -15
  52. package/components/modal.d.ts +31 -3
  53. package/components/modal.js +243 -169
  54. package/components/number-field.js +45 -42
  55. package/components/page-body.d.ts +12 -0
  56. package/components/page-body.js +18 -0
  57. package/components/pagination.js +36 -36
  58. package/components/panel.js +31 -28
  59. package/components/select.d.ts +21 -0
  60. package/components/select.js +189 -148
  61. package/components/setting-row.d.ts +6 -5
  62. package/components/setting-row.js +33 -32
  63. package/components/sidebar.d.ts +2 -0
  64. package/components/sidebar.js +165 -155
  65. package/components/skeleton.js +8 -7
  66. package/components/slider.js +1 -1
  67. package/components/surface-loader.d.ts +11 -0
  68. package/components/surface-loader.js +35 -0
  69. package/components/table.d.ts +16 -10
  70. package/components/table.js +426 -410
  71. package/components/tabs.d.ts +2 -0
  72. package/components/tabs.js +159 -294
  73. package/components/textarea.js +9 -9
  74. package/components/toast.d.ts +1 -1
  75. package/components/toast.js +181 -118
  76. package/components/tree.d.ts +5 -1
  77. package/components/tree.js +96 -63
  78. package/components/typography.d.ts +4 -4
  79. package/components/typography.js +13 -13
  80. package/components/ui/button.d.ts +1 -1
  81. package/components/ui/dialog.js +33 -33
  82. package/components/viz-charts.js +186 -183
  83. package/demo/components/add-to-artifact.js +8 -10
  84. package/fonts.css +2 -0
  85. package/lib/cn.js +11 -4
  86. package/lib/icons.d.ts +4 -0
  87. package/lib/icons.js +107 -106
  88. package/lib/interactive.d.ts +1 -1
  89. package/llms.txt +115 -152
  90. package/manifest.json +13730 -1084
  91. package/package.json +4 -2
  92. package/styles.css +365 -225
  93. package/theme.css +315 -176
  94. package/components/agent-icon.d.ts +0 -76
  95. package/components/agent-icon.js +0 -265
  96. package/components/ai-elements/queue.d.ts +0 -60
  97. package/components/ai-elements/queue.js +0 -193
  98. package/components/ai-elements/speech-input.d.ts +0 -16
  99. package/components/ai-elements/speech-input.js +0 -151
  100. package/components/ai-elements/task-progress.d.ts +0 -41
  101. package/components/ai-elements/task-progress.js +0 -224
  102. package/components/ai-elements/task.d.ts +0 -39
  103. package/components/ai-elements/task.js +0 -105
  104. package/components/ai-elements/voice.d.ts +0 -90
  105. package/components/ai-elements/voice.js +0 -496
  106. package/components/assistant-ui/follow-up-suggestions.d.ts +0 -11
  107. package/components/assistant-ui/follow-up-suggestions.js +0 -72
  108. package/components/assistant-ui/suggestions.d.ts +0 -7
  109. package/components/assistant-ui/suggestions.js +0 -19
  110. package/components/assistant-ui/voice.d.ts +0 -18
  111. package/components/link.d.ts +0 -14
  112. package/components/link.js +0 -72
  113. package/components/navbar.d.ts +0 -15
  114. package/components/navbar.js +0 -68
  115. package/components/pixel-icon.d.ts +0 -37
  116. package/components/pixel-icon.js +0 -859
@@ -1,80 +1,88 @@
1
1
  "use client";
2
- import { jsxs as l, jsx as o } from "react/jsx-runtime";
3
- import { Composer as c } from "./composer.js";
4
- import { ComposerPlaceholdersProvider as U } from "./composer.js";
2
+ import { jsxs as r, jsx as e } from "react/jsx-runtime";
3
+ import { Composer as u } from "./composer.js";
4
+ import { ComposerPlaceholdersProvider as q } from "./composer.js";
5
5
  import { RenderAnswerToolUI as p } from "./answer-tool-ui.js";
6
- import { ThreadFollowupSuggestions as u } from "./follow-up-suggestions.js";
7
- import { ThreadMessage as h } from "./message.js";
8
- import { SelectionToolbar as x } from "./selection-toolbar.js";
9
- import { ThreadSuggestions as b } from "./suggestions.js";
10
- import { isNewChatView as m, ThreadComponentsContext as f, EMPTY_COMPONENTS as w } from "./thread-context.js";
6
+ import { ThreadMessage as x } from "./message.js";
7
+ import { SelectionToolbar as g } from "./selection-toolbar.js";
8
+ import { Button as w } from "../ui/button.js";
9
+ import { isNewChatView as n, ThreadComponentsContext as f, EMPTY_COMPONENTS as b } from "./thread-context.js";
11
10
  import { TooltipIconButton as v } from "./tooltip-icon-button.js";
12
11
  import { cn as T } from "../../lib/cn.js";
13
- import { useAuiState as g, ThreadPrimitive as e, AuiIf as d } from "@assistant-ui/react";
14
- import { ArrowDown as N } from "../../lib/icons.js";
15
- import { useContext as C } from "react";
16
- const W = ({
17
- components: r = w,
18
- isAnswerToolEnabled: i = !0,
12
+ import { useAuiState as N, ThreadPrimitive as o, AuiIf as h, SuggestionPrimitive as s } from "@assistant-ui/react";
13
+ import { ArrowDown as y } from "../../lib/icons.js";
14
+ import { useContext as S } from "react";
15
+ const H = ({
16
+ components: t = b,
17
+ isAnswerToolEnabled: l = !0,
19
18
  composerPlacement: a = "adaptive"
20
19
  }) => {
21
- const t = g(m);
22
- return /* @__PURE__ */ l(f.Provider, { value: r, children: [
23
- i && /* @__PURE__ */ o(p, {}),
24
- /* @__PURE__ */ o(y, { isEmpty: t, composerPlacement: a })
20
+ const i = N(n);
21
+ return /* @__PURE__ */ r(f.Provider, { value: t, children: [
22
+ l && /* @__PURE__ */ e(p, {}),
23
+ /* @__PURE__ */ e(C, { isEmpty: i, composerPlacement: a })
25
24
  ] });
26
- }, y = ({ isEmpty: r, composerPlacement: i }) => {
27
- const { Welcome: a = P, ComposerDock: t } = C(
25
+ }, C = ({ isEmpty: t, composerPlacement: l }) => {
26
+ const { Welcome: a = A, EmptyState: i, ComposerDock: d } = S(
28
27
  f
29
- ), n = i === "bottom";
30
- return /* @__PURE__ */ l(e.Root, { className: "aui-root aui-thread-root bg-background @container flex h-full flex-col", children: [
31
- /* @__PURE__ */ o(
32
- e.Viewport,
28
+ ), m = l === "bottom";
29
+ return /* @__PURE__ */ r(o.Root, { className: "aui-root aui-thread-root bg-background @container flex h-full flex-col", children: [
30
+ /* @__PURE__ */ e(
31
+ o.Viewport,
33
32
  {
34
33
  turnAnchor: "top",
35
34
  "data-slot": "aui_thread-viewport",
36
35
  className: "relative flex flex-1 flex-col overflow-x-auto overflow-y-scroll scroll-smooth",
37
- children: /* @__PURE__ */ l("div", { className: "mx-auto flex w-full max-w-(--thread-max-width) flex-1 flex-col px-4 pt-4", children: [
38
- /* @__PURE__ */ o(d, { condition: m, children: /* @__PURE__ */ o("div", { className: "flex flex-1 flex-col items-center justify-end", children: /* @__PURE__ */ o(a, {}) }) }),
39
- /* @__PURE__ */ o(
36
+ children: t && i ? /* @__PURE__ */ e(i, {}) : /* @__PURE__ */ r("div", { className: "mx-auto flex w-full max-w-(--thread-max-width) flex-1 flex-col px-4 pt-4", children: [
37
+ /* @__PURE__ */ e(h, { condition: n, children: /* @__PURE__ */ e("div", { className: "flex flex-1 flex-col items-center justify-end", children: /* @__PURE__ */ e(a, {}) }) }),
38
+ /* @__PURE__ */ e(
40
39
  "div",
41
40
  {
42
41
  "data-slot": "aui_message-group",
43
42
  className: "mb-14 flex flex-col gap-y-8 empty:hidden",
44
- children: /* @__PURE__ */ o(e.Messages, { children: () => /* @__PURE__ */ o(h, {}) })
43
+ children: /* @__PURE__ */ e(o.Messages, { children: () => /* @__PURE__ */ e(x, {}) })
45
44
  }
46
45
  ),
47
- /* @__PURE__ */ l(
48
- e.ViewportFooter,
46
+ /* @__PURE__ */ r(
47
+ o.ViewportFooter,
49
48
  {
50
49
  className: T(
51
50
  "aui-thread-viewport-footer bg-background flex flex-col gap-4 overflow-visible pb-4 md:pb-6",
52
- r && !n && "flex-1",
53
- (!r || n) && "sticky bottom-0 mt-auto rounded-t-(--composer-radius)"
51
+ t && !m && "flex-1",
52
+ (!t || m) && "sticky bottom-0 mt-auto rounded-t-(--composer-radius)"
54
53
  ),
55
54
  children: [
56
- /* @__PURE__ */ o(S, {}),
57
- /* @__PURE__ */ o(u, {}),
58
- t ? /* @__PURE__ */ o(t, { children: /* @__PURE__ */ o(c, {}) }) : /* @__PURE__ */ o(c, {}),
59
- /* @__PURE__ */ o(d, { condition: (s) => m(s) && s.composer.isEmpty, children: /* @__PURE__ */ o(b, {}) })
55
+ /* @__PURE__ */ e(P, {}),
56
+ d ? /* @__PURE__ */ e(d, { children: /* @__PURE__ */ e(u, {}) }) : /* @__PURE__ */ e(u, {}),
57
+ /* @__PURE__ */ e(h, { condition: (c) => n(c) && c.composer.isEmpty, children: /* @__PURE__ */ e(I, {}) })
60
58
  ]
61
59
  }
62
60
  )
63
61
  ] })
64
62
  }
65
63
  ),
66
- /* @__PURE__ */ o(x, {})
64
+ /* @__PURE__ */ e(g, {})
67
65
  ] });
68
- }, S = () => /* @__PURE__ */ o(e.ScrollToBottom, { asChild: !0, children: /* @__PURE__ */ o(
66
+ }, P = () => /* @__PURE__ */ e(o.ScrollToBottom, { asChild: !0, children: /* @__PURE__ */ e(
69
67
  v,
70
68
  {
71
69
  tooltip: "Scroll to bottom",
72
70
  variant: "outline",
73
71
  className: "aui-thread-scroll-to-bottom absolute -top-12 z-10 self-center rounded-full p-4 disabled:invisible",
74
- children: /* @__PURE__ */ o(N, {})
72
+ children: /* @__PURE__ */ e(y, {})
75
73
  }
76
- ) }), P = () => /* @__PURE__ */ o("div", { className: "aui-thread-welcome-root mb-6 flex flex-col items-center px-4 text-center", children: /* @__PURE__ */ o("h1", { className: "aui-thread-welcome-message-inner fade-in slide-in-from-bottom-1 animate-in fill-mode-both text-xl font-medium duration-200", children: "How can I help you today?" }) });
74
+ ) }), A = () => /* @__PURE__ */ e("div", { className: "aui-thread-welcome-root mb-6 flex flex-col items-center px-4 text-center", children: /* @__PURE__ */ e("h1", { className: "aui-thread-welcome-message-inner fade-in slide-in-from-bottom-1 animate-in fill-mode-both text-xl font-medium duration-200", children: "How can I help you today?" }) }), I = () => /* @__PURE__ */ e("div", { className: "aui-thread-welcome-suggestions flex w-full flex-wrap items-center justify-center gap-2 px-4", children: /* @__PURE__ */ e(o.Suggestions, { children: () => /* @__PURE__ */ e(j, {}) }) }), j = () => /* @__PURE__ */ e("div", { className: "aui-thread-welcome-suggestion-display fade-in slide-in-from-bottom-2 animate-in fill-mode-both duration-200", children: /* @__PURE__ */ e(s.Trigger, { send: !0, asChild: !0, children: /* @__PURE__ */ r(
75
+ w,
76
+ {
77
+ variant: "ghost",
78
+ className: "aui-thread-welcome-suggestion text-foreground hover:bg-muted border-border/60 h-auto gap-1.5 rounded-full border px-3.5 py-1.5 text-xs font-normal whitespace-nowrap transition-colors",
79
+ children: [
80
+ /* @__PURE__ */ e(s.Title, { className: "aui-thread-welcome-suggestion-text-1" }),
81
+ /* @__PURE__ */ e(s.Description, { className: "aui-thread-welcome-suggestion-text-2 empty:hidden" })
82
+ ]
83
+ }
84
+ ) }) });
77
85
  export {
78
- U as ComposerPlaceholdersProvider,
79
- W as Thread
86
+ q as ComposerPlaceholdersProvider,
87
+ H as Thread
80
88
  };
@@ -1,8 +1,8 @@
1
1
  "use client";
2
- import { jsx as n, jsxs as b } from "react/jsx-runtime";
2
+ import { jsx as l, jsxs as b } from "react/jsx-runtime";
3
3
  import * as f from "react";
4
- import { cn as i } from "../lib/cn.js";
5
- const g = {
4
+ import { cn as s } from "../lib/cn.js";
5
+ const m = {
6
6
  xs: "size-5 text-[10px]",
7
7
  sm: "size-8 text-xs",
8
8
  md: "size-10 text-xs",
@@ -16,64 +16,64 @@ function v(r) {
16
16
  const e = r.trim().split(/\s+/).filter(Boolean);
17
17
  return e.length === 0 ? "" : e.length === 1 ? e[0].slice(0, 2).toUpperCase() : (e[0][0] + e[e.length - 1][0]).toUpperCase();
18
18
  }
19
- const m = [
20
- "bg-(--color-cyan-soft) text-ink-950",
21
- "bg-(--color-lime-soft) text-ink-950",
22
- "bg-(--color-amber-soft) text-ink-950",
23
- "bg-info-100 text-ink-950",
24
- "bg-ink-300 text-ink-950"
19
+ const g = [
20
+ "bg-g9 text-white",
21
+ "bg-g10 text-white",
22
+ "bg-g11 text-white",
23
+ "bg-g4 text-g12"
25
24
  ];
26
- function k(r) {
27
- let e = 0;
28
- for (const t of r) e = e * 31 + t.charCodeAt(0) >>> 0;
29
- return m[e % m.length];
25
+ function N(r) {
26
+ const e = Array.from(r).reduce(
27
+ (t, i) => t + i.charCodeAt(0),
28
+ 0
29
+ );
30
+ return g[e % g.length];
30
31
  }
31
- const N = f.forwardRef(
32
- ({ className: r, src: e, name: t, size: s = "md", radius: o = "full", ...a }, c) => {
33
- const l = t ? v(t) : "";
34
- return /* @__PURE__ */ n(
32
+ const A = f.forwardRef(
33
+ ({ className: r, src: e, name: t, size: i = "md", radius: o = "full", ...a }, d) => {
34
+ const n = t ? v(t) : "";
35
+ return /* @__PURE__ */ l(
35
36
  "span",
36
37
  {
37
- ref: c,
38
+ ref: d,
38
39
  role: "img",
39
40
  "aria-label": t,
40
- className: i(
41
+ className: s(
41
42
  "relative inline-flex shrink-0 select-none items-center justify-center overflow-hidden font-normal",
42
- // Images sit on the neutral fill; initials take a deterministic
43
- // per-name identity tint so a roster reads multi-color.
44
- e || !t ? "bg-fill text-fill-foreground" : k(t),
45
- g[s],
43
+ // Images sit on the neutral fill; initials use the ADS green ramp.
44
+ e || !t ? "bg-fill text-fill-foreground" : N(t),
45
+ m[i],
46
46
  h[o],
47
47
  r
48
48
  ),
49
49
  ...a,
50
- children: e ? /* @__PURE__ */ n(
50
+ children: e ? /* @__PURE__ */ l(
51
51
  "img",
52
52
  {
53
53
  src: e,
54
54
  alt: t ?? "",
55
55
  className: "size-full object-cover"
56
56
  }
57
- ) : /* @__PURE__ */ n("span", { "aria-hidden": !0, children: l })
57
+ ) : /* @__PURE__ */ l("span", { "aria-hidden": !0, children: n })
58
58
  }
59
59
  );
60
60
  }
61
61
  );
62
- N.displayName = "Avatar";
63
- const y = f.forwardRef(
64
- ({ className: r, max: e, size: t = "md", radius: s = "full", children: o, ...a }, c) => {
65
- const l = f.Children.toArray(o), d = typeof e == "number" ? l.length - e : 0, p = typeof e == "number" ? l.slice(0, e) : l;
62
+ A.displayName = "Avatar";
63
+ const w = f.forwardRef(
64
+ ({ className: r, max: e, size: t = "md", radius: i = "full", children: o, ...a }, d) => {
65
+ const n = f.Children.toArray(o), c = typeof e == "number" ? n.length - e : 0, p = typeof e == "number" ? n.slice(0, e) : n;
66
66
  return /* @__PURE__ */ b(
67
67
  "div",
68
68
  {
69
- ref: c,
70
- className: i("flex items-center", r),
69
+ ref: d,
70
+ className: s("flex items-center", r),
71
71
  ...a,
72
72
  children: [
73
- p.map((x, u) => /* @__PURE__ */ n(
73
+ p.map((x, u) => /* @__PURE__ */ l(
74
74
  "div",
75
75
  {
76
- className: i(
76
+ className: s(
77
77
  "ring-2 ring-background rounded-full",
78
78
  u > 0 && "-ml-2"
79
79
  ),
@@ -81,18 +81,18 @@ const y = f.forwardRef(
81
81
  },
82
82
  u
83
83
  )),
84
- d > 0 && /* @__PURE__ */ n("div", { className: i("ring-2 ring-background rounded-full -ml-2"), children: /* @__PURE__ */ n(
84
+ c > 0 && /* @__PURE__ */ l("div", { className: s("ring-2 ring-background rounded-full -ml-2"), children: /* @__PURE__ */ l(
85
85
  "span",
86
86
  {
87
87
  role: "img",
88
- "aria-label": `${d} more`,
89
- className: i(
88
+ "aria-label": `${c} more`,
89
+ className: s(
90
90
  "relative inline-flex shrink-0 select-none items-center justify-center overflow-hidden font-normal",
91
91
  "bg-muted text-muted-foreground",
92
- g[t],
93
- h[s]
92
+ m[t],
93
+ h[i]
94
94
  ),
95
- children: /* @__PURE__ */ n("span", { "aria-hidden": !0, children: `+${d}` })
95
+ children: /* @__PURE__ */ l("span", { "aria-hidden": !0, children: `+${c}` })
96
96
  }
97
97
  ) })
98
98
  ]
@@ -100,8 +100,8 @@ const y = f.forwardRef(
100
100
  );
101
101
  }
102
102
  );
103
- y.displayName = "AvatarGroup";
103
+ w.displayName = "AvatarGroup";
104
104
  export {
105
- N as Avatar,
106
- y as AvatarGroup
105
+ A as Avatar,
106
+ w as AvatarGroup
107
107
  };
@@ -1,10 +1,9 @@
1
- import { VariantProps } from 'class-variance-authority';
1
+ import { ChipProps } from './chip';
2
2
  import * as React from "react";
3
- declare const badgeVariants: (props?: ({
4
- variant?: "soft" | "outline" | "solid" | "dot" | null | undefined;
5
- color?: "success" | "warning" | "danger" | "info" | "default" | "primary" | null | undefined;
6
- } & import('class-variance-authority/types').ClassProp) | undefined) => string;
7
- export interface BadgeProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, "color">, VariantProps<typeof badgeVariants> {
3
+ type LegacyBadgeVariant = "solid" | "soft" | "outline" | "dot";
4
+ export interface BadgeProps extends Omit<ChipProps, "variant" | "onClose" | "startContent" | "avatar" | "showDot"> {
5
+ variant?: LegacyBadgeVariant;
8
6
  }
7
+ /** @deprecated Use `Chip`. */
9
8
  export declare const Badge: React.ForwardRefExoticComponent<BadgeProps & React.RefAttributes<HTMLSpanElement>>;
10
9
  export {};
@@ -1,83 +1,20 @@
1
1
  "use client";
2
- import { jsxs as i, jsx as l } from "react/jsx-runtime";
3
- import * as d from "react";
4
- import { cva as c } from "class-variance-authority";
5
- import { cn as o } from "../lib/cn.js";
6
- const g = c(
7
- "inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-xs font-normal whitespace-nowrap",
8
- {
9
- variants: {
10
- variant: {
11
- solid: "",
12
- soft: "",
13
- outline: "bg-transparent border",
14
- dot: "bg-transparent border border-border text-foreground"
15
- },
16
- color: {
17
- default: "",
18
- primary: "",
19
- success: "",
20
- warning: "",
21
- danger: "",
22
- info: ""
23
- }
24
- },
25
- compoundVariants: [
26
- // solid
27
- { variant: "solid", color: "default", className: "bg-fill text-fill-foreground" },
28
- { variant: "solid", color: "primary", className: "bg-foreground text-background" },
29
- { variant: "solid", color: "success", className: "bg-success text-success-foreground" },
30
- { variant: "solid", color: "warning", className: "bg-warning text-warning-foreground" },
31
- { variant: "solid", color: "danger", className: "bg-danger text-danger-foreground" },
32
- { variant: "solid", color: "info", className: "bg-info text-info-foreground" },
33
- // soft
34
- { variant: "soft", color: "default", className: "bg-muted text-muted-foreground" },
35
- { variant: "soft", color: "primary", className: "bg-fill text-fill-foreground" },
36
- { variant: "soft", color: "success", className: "bg-success-50 text-success-700" },
37
- { variant: "soft", color: "warning", className: "bg-warning-50 text-warning-700" },
38
- { variant: "soft", color: "danger", className: "bg-danger-50 text-danger-700" },
39
- { variant: "soft", color: "info", className: "bg-info-50 text-info-700" },
40
- // outline
41
- { variant: "outline", color: "default", className: "border-border-strong text-foreground" },
42
- { variant: "outline", color: "primary", className: "border-border-strong text-foreground" },
43
- { variant: "outline", color: "success", className: "border-success-100 text-success-700" },
44
- { variant: "outline", color: "warning", className: "border-warning-100 text-warning-700" },
45
- { variant: "outline", color: "danger", className: "border-danger-100 text-danger-700" },
46
- { variant: "outline", color: "info", className: "border-info-100 text-info-700" }
47
- ],
48
- defaultVariants: { variant: "solid", color: "default" }
49
- }
50
- ), f = {
51
- default: "bg-muted-foreground",
52
- primary: "bg-foreground",
53
- success: "bg-success",
54
- warning: "bg-warning",
55
- danger: "bg-danger",
56
- info: "bg-info"
57
- }, u = d.forwardRef(
58
- ({ className: e, variant: r = "solid", color: a = "default", children: n, ...s }, t) => /* @__PURE__ */ i(
59
- "span",
2
+ import { jsx as a } from "react/jsx-runtime";
3
+ import * as e from "react";
4
+ import { Chip as s } from "./chip.js";
5
+ const d = e.forwardRef(
6
+ ({ variant: o = "solid", color: t = "default", ...i }, r) => /* @__PURE__ */ a(
7
+ s,
60
8
  {
61
- ref: t,
62
- className: o(g({ variant: r, color: a }), e),
63
- ...s,
64
- children: [
65
- r === "dot" && /* @__PURE__ */ l(
66
- "span",
67
- {
68
- "aria-hidden": !0,
69
- className: o(
70
- "size-1.5 rounded-dot",
71
- f[a ?? "default"]
72
- )
73
- }
74
- ),
75
- n
76
- ]
9
+ ref: r,
10
+ variant: o === "outline" ? "outline" : "solid",
11
+ color: t,
12
+ showDot: o === "dot",
13
+ ...i
77
14
  }
78
15
  )
79
16
  );
80
- u.displayName = "Badge";
17
+ d.displayName = "Badge";
81
18
  export {
82
- u as Badge
19
+ d as Badge
83
20
  };
@@ -0,0 +1,15 @@
1
+ import * as React from "react";
2
+ export interface BodyPageHeaderProps extends Omit<React.HTMLAttributes<HTMLElement>, "title"> {
3
+ /** Page title rendered at the leading edge. */
4
+ title: React.ReactNode;
5
+ /** Optional page-level actions rendered at the trailing edge. */
6
+ actions?: React.ReactNode;
7
+ }
8
+ /**
9
+ * Borderless header for a PageBody destination.
10
+ *
11
+ * The header owns a 24px inset on every side and keeps the page title at the
12
+ * canonical 25px step. Destination icons and compact metadata belong in the
13
+ * sidebar or content, not beside the title.
14
+ */
15
+ export declare const BodyPageHeader: React.ForwardRefExoticComponent<BodyPageHeaderProps & React.RefAttributes<HTMLElement>>;
@@ -0,0 +1,24 @@
1
+ "use client";
2
+ import { jsxs as i, jsx as r } from "react/jsx-runtime";
3
+ import * as d from "react";
4
+ import { cn as n } from "../lib/cn.js";
5
+ const l = d.forwardRef(({ className: a, title: t, actions: e, ...s }, m) => /* @__PURE__ */ i(
6
+ "header",
7
+ {
8
+ ref: m,
9
+ "data-slot": "body-page-header",
10
+ className: n(
11
+ "flex shrink-0 items-center justify-between gap-4 p-6",
12
+ a
13
+ ),
14
+ ...s,
15
+ children: [
16
+ /* @__PURE__ */ r("h1", { className: "min-w-0 truncate text-xl font-medium text-on-warm-grey-primary", children: t }),
17
+ e ? /* @__PURE__ */ r("div", { className: "flex shrink-0 items-center gap-2", children: e }) : null
18
+ ]
19
+ }
20
+ ));
21
+ l.displayName = "BodyPageHeader";
22
+ export {
23
+ l as BodyPageHeader
24
+ };
@@ -11,6 +11,3 @@ export interface BrandMarkProps extends React.SVGProps<SVGSVGElement> {
11
11
  * reduced-motion handling live in `src/styles/index.css` (`.ads-mark-cell`).
12
12
  */
13
13
  export declare function BrandMark({ className, hoverAnimate, ...props }: BrandMarkProps): React.JSX.Element;
14
- export interface BrandLoaderProps extends React.SVGProps<SVGSVGElement> {
15
- }
16
- export declare function BrandLoader({ className, ...props }: BrandLoaderProps): React.JSX.Element;
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { jsx as e } from "react/jsx-runtime";
3
- import { cn as n } from "../lib/cn.js";
3
+ import { cn as r } from "../lib/cn.js";
4
4
  const s = [
5
5
  { d: "M31.1845 32.5508C31.1845 33.1031 30.7368 33.5508 30.1845 33.5508H1.00104C0.287428 33.5508 -0.196523 32.8248 0.0779916 32.1661L13.2269 0.615317C13.3822 0.242707 13.7463 0 14.15 0H30.1845C30.7368 0 31.1845 0.447715 31.1845 1V32.5508Z", delay: 0.55 },
6
6
  { d: "M68.4648 32.5508C68.4648 33.1031 68.0171 33.5508 67.4648 33.5508H38.3042C37.5846 33.5508 37.1006 32.8136 37.3866 32.1533L51.0553 0.602474C51.2138 0.236721 51.5743 0 51.9729 0H67.4648C68.0171 0 68.4648 0.447715 68.4648 1V32.5508Z", delay: 0.1 },
@@ -11,9 +11,9 @@ const s = [
11
11
  { d: "M30.6757 104.001C30.6757 104.553 30.228 105.001 29.6757 105.001H1.70344C0.797433 105.001 0.358418 103.893 1.01872 103.272L24.0355 81.6472C24.2209 81.473 24.4658 81.376 24.7202 81.376H29.6757C30.228 81.376 30.6757 81.8237 30.6757 82.376V104.001Z", delay: 0.2 },
12
12
  { d: "M67.4287 104.001C67.4287 104.553 66.9809 105.001 66.4287 105.001H38.2664C37.387 105.001 36.9358 103.948 37.5426 103.311L58.1566 81.686C58.3453 81.488 58.6069 81.376 58.8804 81.376H66.4287C66.9809 81.376 67.4287 81.8237 67.4287 82.376V104.001Z", delay: 0.9 },
13
13
  { d: "M104.182 104.001C104.182 104.553 103.734 105.001 103.182 105.001H74.834C73.9838 105.001 73.5214 104.007 74.0691 103.357L92.2803 81.7318C92.4704 81.5062 92.7503 81.376 93.0452 81.376H103.182C103.734 81.376 104.182 81.8237 104.182 82.376V104.001Z", delay: 0.45 }
14
- ], i = [0.26, 0.13, 0, 0.39, 0.26, 0.13, 0.52, 0.39, 0.26];
15
- function H({
16
- className: d,
14
+ ], L = [0.26, 0.13, 0, 0.39, 0.26, 0.13, 0.52, 0.39, 0.26];
15
+ function i({
16
+ className: a,
17
17
  hoverAnimate: C = !0,
18
18
  ...l
19
19
  }) {
@@ -22,43 +22,21 @@ function H({
22
22
  {
23
23
  viewBox: "0 0 105 105",
24
24
  "aria-hidden": !0,
25
- className: n("shrink-0", d),
25
+ className: r("shrink-0", a),
26
26
  ...l,
27
- children: s.map(({ d: a }, r) => /* @__PURE__ */ e(
27
+ children: s.map(({ d: H }, d) => /* @__PURE__ */ e(
28
28
  "path",
29
29
  {
30
- d: a,
30
+ d: H,
31
31
  fill: "currentColor",
32
32
  className: C ? "ads-mark-cell" : void 0,
33
- style: C ? { "--blip-delay": `${i[r]}s` } : void 0
33
+ style: C ? { "--blip-delay": `${L[d]}s` } : void 0
34
34
  },
35
- r
36
- ))
37
- }
38
- );
39
- }
40
- function c({ className: d, ...C }) {
41
- return /* @__PURE__ */ e(
42
- "svg",
43
- {
44
- viewBox: "0 0 105 105",
45
- "aria-hidden": !0,
46
- className: n("shrink-0", d),
47
- ...C,
48
- children: s.map(({ d: l, delay: a }) => /* @__PURE__ */ e(
49
- "path",
50
- {
51
- d: l,
52
- fill: "currentColor",
53
- className: "brand-loader-cell",
54
- style: { animationDelay: `${a}s` }
55
- },
56
- a
35
+ d
57
36
  ))
58
37
  }
59
38
  );
60
39
  }
61
40
  export {
62
- c as BrandLoader,
63
- H as BrandMark
41
+ i as BrandMark
64
42
  };
@@ -6,13 +6,6 @@ export interface BreadcrumbsProps extends React.HTMLAttributes<HTMLElement> {
6
6
  * to separate the header from the scrolled content (and clears at the top).
7
7
  */
8
8
  sticky?: boolean;
9
- /**
10
- * Render a leading back-arrow control before the trail (the standard ADS
11
- * back affordance). Fires on click; give it an accessible label via
12
- * `backLabel` if the default "Back" isn't right.
13
- */
14
- onBack?: () => void;
15
- backLabel?: string;
16
9
  /**
17
10
  * Right-aligned controls rendered inside the trail row (page actions, an
18
11
  * overflow menu) — they ride along when the trail is sticky.
@@ -22,7 +15,7 @@ export interface BreadcrumbsProps extends React.HTMLAttributes<HTMLElement> {
22
15
  center?: React.ReactNode;
23
16
  /**
24
17
  * Supporting metadata stitched inline right after the trail (schema name,
25
- * sync status…). Muted, truncates before the trail does.
18
+ * sync status…). Kept visible while the current trail item truncates first.
26
19
  */
27
20
  meta?: React.ReactNode;
28
21
  }