@actioneer/ads 0.3.0 → 0.3.1
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.
- package/components/ai-elements/chain-of-thought.d.ts +25 -5
- package/components/ai-elements/chain-of-thought.js +248 -204
- package/components/ai-elements/research-activity.d.ts +17 -0
- package/components/ai-elements/research-activity.js +125 -107
- package/components/ai-elements/task.d.ts +7 -3
- package/components/ai-elements/task.js +84 -52
- package/components/ai-elements/tool.js +16 -16
- package/components/ai-elements/voice.d.ts +7 -1
- package/components/ai-elements/voice.js +234 -180
- package/components/alert.js +28 -16
- package/components/code-block.d.ts +11 -5
- package/components/code-block.js +161 -62
- package/components/scroll-area.js +10 -10
- package/components/sidebar.js +1 -1
- package/components/stepper.d.ts +17 -9
- package/components/stepper.js +85 -96
- package/lib/icons.js +1 -1
- package/lib/motion.d.ts +2 -0
- package/lib/motion.js +21 -20
- package/llms.txt +2 -1
- package/manifest.json +22 -5
- package/package.json +1 -1
- package/styles.css +108 -2
- package/theme.css +10 -2
package/components/stepper.js
CHANGED
|
@@ -1,113 +1,102 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as
|
|
3
|
-
import * as
|
|
4
|
-
import { cva as
|
|
5
|
-
import { cn as
|
|
6
|
-
import { Check as
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
"flex
|
|
2
|
+
import { jsx as e, jsxs as m } from "react/jsx-runtime";
|
|
3
|
+
import * as v from "react";
|
|
4
|
+
import { cva as k } from "class-variance-authority";
|
|
5
|
+
import { cn as s } from "../lib/cn.js";
|
|
6
|
+
import { Check as u, Close as f } from "../lib/icons.js";
|
|
7
|
+
const p = k(
|
|
8
|
+
s(
|
|
9
|
+
"flex shrink-0 items-center justify-center rounded-full font-medium tabular-nums",
|
|
10
10
|
"transition-colors duration-(--duration-fast) ease-out motion-reduce:transition-none"
|
|
11
11
|
),
|
|
12
12
|
{
|
|
13
13
|
variants: {
|
|
14
14
|
status: {
|
|
15
|
-
complete: "bg-
|
|
15
|
+
complete: "bg-success text-success-foreground",
|
|
16
16
|
current: "bg-brand text-brand-foreground",
|
|
17
|
-
upcoming: "bg-fill text-tertiary"
|
|
17
|
+
upcoming: "bg-fill text-tertiary",
|
|
18
|
+
error: "bg-danger text-danger-foreground"
|
|
19
|
+
},
|
|
20
|
+
size: {
|
|
21
|
+
sm: "size-5 text-[11px] [&>svg]:size-3",
|
|
22
|
+
md: "size-6 text-xs [&>svg]:size-3.5"
|
|
18
23
|
}
|
|
19
24
|
},
|
|
20
|
-
defaultVariants: { status: "upcoming" }
|
|
25
|
+
defaultVariants: { status: "upcoming", size: "md" }
|
|
21
26
|
}
|
|
22
|
-
),
|
|
23
|
-
({
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
children: [
|
|
51
|
-
/* @__PURE__ */ l(
|
|
52
|
-
"div",
|
|
27
|
+
), w = v.forwardRef(
|
|
28
|
+
({
|
|
29
|
+
className: d,
|
|
30
|
+
steps: l,
|
|
31
|
+
activeIndex: a,
|
|
32
|
+
size: n = "md",
|
|
33
|
+
onSelect: o,
|
|
34
|
+
...c
|
|
35
|
+
}, g) => /* @__PURE__ */ e(
|
|
36
|
+
"ol",
|
|
37
|
+
{
|
|
38
|
+
ref: g,
|
|
39
|
+
"data-slot": "stepper",
|
|
40
|
+
"aria-label": c["aria-label"] ?? "Progress",
|
|
41
|
+
className: s("flex w-full flex-row items-start", d),
|
|
42
|
+
...c,
|
|
43
|
+
children: l.map((i, t) => {
|
|
44
|
+
const r = i.isError ? "error" : t < a ? "complete" : t === a ? "current" : "upcoming", b = t === l.length - 1, x = !!o && t < a, h = t < a && !i.isError, N = /* @__PURE__ */ e("span", { "aria-hidden": !0, className: p({ status: r, size: n }), children: r === "complete" ? /* @__PURE__ */ e(u, {}) : r === "error" ? /* @__PURE__ */ e(f, {}) : t + 1 });
|
|
45
|
+
return /* @__PURE__ */ m(
|
|
46
|
+
"li",
|
|
47
|
+
{
|
|
48
|
+
"data-status": r,
|
|
49
|
+
"aria-current": r === "current" ? "step" : void 0,
|
|
50
|
+
className: "flex min-w-0 flex-1 flex-col gap-2",
|
|
51
|
+
children: [
|
|
52
|
+
/* @__PURE__ */ m("div", { className: "flex w-full flex-row items-center gap-2", children: [
|
|
53
|
+
x ? /* @__PURE__ */ e(
|
|
54
|
+
"button",
|
|
53
55
|
{
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
56
|
+
type: "button",
|
|
57
|
+
onClick: () => o == null ? void 0 : o(t),
|
|
58
|
+
"aria-label": `Go to step ${t + 1}`,
|
|
59
|
+
className: s(
|
|
60
|
+
p({ status: r, size: n }),
|
|
61
|
+
"cursor-pointer outline-none focus-visible:ring-3 focus-visible:ring-ring",
|
|
62
|
+
"active:scale-(--scale-press)"
|
|
57
63
|
),
|
|
58
|
-
children:
|
|
59
|
-
x ? /* @__PURE__ */ r(
|
|
60
|
-
"button",
|
|
61
|
-
{
|
|
62
|
-
type: "button",
|
|
63
|
-
onClick: () => i == null ? void 0 : i(s),
|
|
64
|
-
"aria-label": `Go to step ${s + 1}`,
|
|
65
|
-
className: t(
|
|
66
|
-
f({ status: e }),
|
|
67
|
-
"cursor-pointer outline-none focus-visible:ring-3 focus-visible:ring-ring",
|
|
68
|
-
"active:scale-(--scale-press)"
|
|
69
|
-
),
|
|
70
|
-
children: /* @__PURE__ */ r(d, { "aria-hidden": !0 })
|
|
71
|
-
}
|
|
72
|
-
) : /* @__PURE__ */ r("span", { "aria-hidden": !0, className: f({ status: e }), children: e === "complete" ? /* @__PURE__ */ r(d, {}) : s + 1 }),
|
|
73
|
-
!p && /* @__PURE__ */ r(
|
|
74
|
-
"span",
|
|
75
|
-
{
|
|
76
|
-
"aria-hidden": !0,
|
|
77
|
-
className: t(
|
|
78
|
-
"shrink-0 bg-border",
|
|
79
|
-
a ? "w-px flex-1" : "h-px flex-1",
|
|
80
|
-
e === "complete" && "bg-brand"
|
|
81
|
-
)
|
|
82
|
-
}
|
|
83
|
-
)
|
|
84
|
-
]
|
|
64
|
+
children: r === "complete" ? /* @__PURE__ */ e(u, {}) : r === "error" ? /* @__PURE__ */ e(f, {}) : t + 1
|
|
85
65
|
}
|
|
86
|
-
),
|
|
87
|
-
/* @__PURE__ */
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
66
|
+
) : N,
|
|
67
|
+
!b && /* @__PURE__ */ e(
|
|
68
|
+
"span",
|
|
69
|
+
{
|
|
70
|
+
"aria-hidden": !0,
|
|
71
|
+
className: s(
|
|
72
|
+
"h-px flex-1 shrink-0 bg-border",
|
|
73
|
+
h && "bg-success"
|
|
74
|
+
)
|
|
75
|
+
}
|
|
76
|
+
)
|
|
77
|
+
] }),
|
|
78
|
+
/* @__PURE__ */ e("div", { className: "min-w-0 pr-4", children: /* @__PURE__ */ e(
|
|
79
|
+
"div",
|
|
80
|
+
{
|
|
81
|
+
className: s(
|
|
82
|
+
"truncate",
|
|
83
|
+
n === "sm" ? "text-xs" : "text-base",
|
|
84
|
+
r === "upcoming" ? "text-tertiary" : "text-foreground",
|
|
85
|
+
r === "error" && "text-danger"
|
|
97
86
|
),
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
|
|
87
|
+
children: i.label
|
|
88
|
+
}
|
|
89
|
+
) })
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
i.id
|
|
93
|
+
);
|
|
94
|
+
})
|
|
95
|
+
}
|
|
96
|
+
)
|
|
108
97
|
);
|
|
109
|
-
|
|
98
|
+
w.displayName = "Stepper";
|
|
110
99
|
export {
|
|
111
|
-
|
|
112
|
-
|
|
100
|
+
w as Stepper,
|
|
101
|
+
p as stepperMarkerVariants
|
|
113
102
|
};
|
package/lib/icons.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as r } from "react/jsx-runtime";
|
|
3
3
|
import { HugeiconsIcon as s } from "@hugeicons/react";
|
|
4
|
-
import { Tick02Icon as a, Copy01Icon as i, File02Icon as I, Cancel01Icon as l,
|
|
4
|
+
import { Tick02Icon as a, Copy01Icon as i, File02Icon as I, Cancel01Icon as l, Upload01Icon as h, ViewOffIcon as C, ViewIcon as g, MinusSignIcon as p, PlusSignIcon as f, ArrowDown01Icon as d, Search01Icon as u, InformationCircleIcon as k, AlertCircleIcon as w, Alert02Icon as A, CheckmarkCircle02Icon as L, ArrowLeft01Icon as m, ArrowRight01Icon as S, DatabaseIcon as M, Maximize01Icon as O, Magnet01Icon as P, ArrowUp01Icon as T, ArrowUpDownIcon as U, InboxIcon as B, ArrowLeft02Icon as D, MoreHorizontalIcon as y, RefreshIcon as F, CancelCircleIcon as R, Attachment01Icon as b, SparklesIcon as x, Clock01Icon as H, QuoteDownIcon as v, BrainIcon as G, Loading03Icon as V, AtIcon as z, BoltIcon as E, Table01Icon as W, File01Icon as N, Download01Icon as Q, Image01Icon as j, BracesIcon as q, MusicNote01Icon as J, Video01Icon as K, ImageNotFound01Icon as X, Activity01Icon as Y, AiChat02Icon as Z, ArrowDown02Icon as _, ArrowRight02Icon as $, ArrowUp02Icon as oo, Route01Icon as no, BlocksIcon as co, BookOpen01Icon as eo, Calendar01Icon as to, Call02Icon as ro, CheckListIcon as so, CircleDashedIcon as ao, CodeIcon as io, ComponentIcon as Io, LinkSquare02Icon as lo, Folder01Icon as ho, FolderOpenIcon as Co, DashboardSpeed01Icon as go, GitBranchIcon as po, HashtagIcon as fo, HistoryIcon as uo, Home01Icon as ko, ImageUploadIcon as wo, GridViewIcon as Ao, Leaf01Icon as Lo, Idea01Icon as mo, Link01Icon as So, Logout01Icon as Mo, Mail01Icon as Oo, Mic01Icon as Po, MicOff01Icon as To, MoreVerticalIcon as Uo, PaintBoardIcon as Bo, SidebarLeftIcon as Do, PencilEdit02Icon as yo, PhoneOff01Icon as Fo, PieChartIcon as Ro, PlugSocketIcon as bo, RocketIcon as xo, Settings01Icon as Ho, ShapesIcon as vo, Share01Icon as Go, StarIcon as Vo, StopIcon as zo, Target01Icon as Eo, Telescope01Icon as Wo, TextFontIcon as No, ToggleOnIcon as Qo, Delete02Icon as jo, UserIcon as qo, UserGroupIcon as Jo, Wrench01Icon as Ko, ArrowUpRight01Icon as Xo } from "@hugeicons/core-free-icons";
|
|
5
5
|
function o(c, e) {
|
|
6
6
|
function n(t) {
|
|
7
7
|
return /* @__PURE__ */ r(s, { icon: c, size: "1em", ...t });
|
package/lib/motion.d.ts
CHANGED
|
@@ -18,6 +18,8 @@ export declare const EASE_IN_OUT: readonly [0.77, 0, 0.175, 1];
|
|
|
18
18
|
export declare const EASE_EXPO_OUT: readonly [0.16, 1, 0.3, 1];
|
|
19
19
|
/** @deprecated Use `EASE_EXPO_OUT`. Kept as a compatibility alias. */
|
|
20
20
|
export declare const EASE_DRAWER: readonly [0.16, 1, 0.3, 1];
|
|
21
|
+
/** Mirror of --ease-disclosure — height reveals (see theme.css). */
|
|
22
|
+
export declare const EASE_DISCLOSURE: readonly [0.32, 0.72, 0, 1];
|
|
21
23
|
/**
|
|
22
24
|
* Floating panels anchored to a trigger (popover / dropdown / listboxes).
|
|
23
25
|
* Pair with an origin-aware `transformOrigin` so the panel grows out of the
|
package/lib/motion.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
const t = [0.23, 1, 0.32, 1], s = [0.77, 0, 0.175, 1], a = [0.16, 1, 0.3, 1], i = a, r = {
|
|
2
|
+
const t = [0.23, 1, 0.32, 1], s = [0.77, 0, 0.175, 1], a = [0.16, 1, 0.3, 1], i = a, r = [0.32, 0.72, 0, 1], o = {
|
|
3
3
|
hidden: {
|
|
4
4
|
opacity: 0,
|
|
5
5
|
transform: "translate3d(0, -4px, 0) scale(0.96)",
|
|
@@ -10,7 +10,7 @@ const t = [0.23, 1, 0.32, 1], s = [0.77, 0, 0.175, 1], a = [0.16, 1, 0.3, 1], i
|
|
|
10
10
|
transform: "translate3d(0, 0, 0) scale(1)",
|
|
11
11
|
transition: { duration: 0.15, ease: t }
|
|
12
12
|
}
|
|
13
|
-
},
|
|
13
|
+
}, e = {
|
|
14
14
|
hidden: {
|
|
15
15
|
opacity: 0,
|
|
16
16
|
transform: "scale(0.96)",
|
|
@@ -21,7 +21,7 @@ const t = [0.23, 1, 0.32, 1], s = [0.77, 0, 0.175, 1], a = [0.16, 1, 0.3, 1], i
|
|
|
21
21
|
transform: "scale(1)",
|
|
22
22
|
transition: { duration: 0.14, ease: t }
|
|
23
23
|
}
|
|
24
|
-
},
|
|
24
|
+
}, d = {
|
|
25
25
|
hidden: {
|
|
26
26
|
opacity: 0,
|
|
27
27
|
transform: "translate3d(0, 8px, 0) scale(0.96)",
|
|
@@ -32,23 +32,23 @@ const t = [0.23, 1, 0.32, 1], s = [0.77, 0, 0.175, 1], a = [0.16, 1, 0.3, 1], i
|
|
|
32
32
|
transform: "translate3d(0, 0, 0) scale(1)",
|
|
33
33
|
transition: { duration: 0.22, ease: t }
|
|
34
34
|
}
|
|
35
|
-
},
|
|
35
|
+
}, c = {
|
|
36
36
|
hidden: { opacity: 0, transition: { duration: 0.12, ease: t } },
|
|
37
37
|
visible: { opacity: 1, transition: { duration: 0.18, ease: t } }
|
|
38
|
-
},
|
|
38
|
+
}, l = {
|
|
39
39
|
hidden: { opacity: 0, transition: { duration: 0.14, ease: t } },
|
|
40
40
|
visible: { opacity: 1, transition: { duration: 0.22, ease: t } }
|
|
41
|
-
},
|
|
41
|
+
}, p = {
|
|
42
42
|
duration: 0.24,
|
|
43
43
|
ease: a
|
|
44
|
-
},
|
|
44
|
+
}, f = {
|
|
45
45
|
duration: 0.18,
|
|
46
46
|
ease: a
|
|
47
|
-
},
|
|
47
|
+
}, m = {
|
|
48
48
|
right: { transform: "translate3d(100%, 0, 0)" },
|
|
49
49
|
left: { transform: "translate3d(-100%, 0, 0)" },
|
|
50
50
|
bottom: { transform: "translate3d(0, 100%, 0)" }
|
|
51
|
-
},
|
|
51
|
+
}, y = {
|
|
52
52
|
hidden: { opacity: 0, transform: "translate3d(0, 8px, 0)" },
|
|
53
53
|
visible: {
|
|
54
54
|
opacity: 1,
|
|
@@ -60,7 +60,7 @@ const t = [0.23, 1, 0.32, 1], s = [0.77, 0, 0.175, 1], a = [0.16, 1, 0.3, 1], i
|
|
|
60
60
|
stiffness: 420,
|
|
61
61
|
damping: 34,
|
|
62
62
|
mass: 0.9
|
|
63
|
-
},
|
|
63
|
+
}, u = {
|
|
64
64
|
hidden: {
|
|
65
65
|
opacity: 0,
|
|
66
66
|
transform: "translate3d(0, 16px, 0) scale(0.98)",
|
|
@@ -78,19 +78,20 @@ const t = [0.23, 1, 0.32, 1], s = [0.77, 0, 0.175, 1], a = [0.16, 1, 0.3, 1], i
|
|
|
78
78
|
}
|
|
79
79
|
};
|
|
80
80
|
export {
|
|
81
|
+
r as EASE_DISCLOSURE,
|
|
81
82
|
i as EASE_DRAWER,
|
|
82
83
|
a as EASE_EXPO_OUT,
|
|
83
84
|
s as EASE_IN_OUT,
|
|
84
85
|
t as EASE_OUT,
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
86
|
+
c as backdropVariants,
|
|
87
|
+
l as drawerBackdropVariants,
|
|
88
|
+
p as drawerEnterTransition,
|
|
89
|
+
f as drawerExitTransition,
|
|
90
|
+
m as drawerOffset,
|
|
91
|
+
o as floatVariants,
|
|
92
|
+
d as modalPanelVariants,
|
|
93
|
+
y as screenVariants,
|
|
93
94
|
n as toastSpring,
|
|
94
|
-
|
|
95
|
-
|
|
95
|
+
u as toastVariants,
|
|
96
|
+
e as tooltipVariants
|
|
96
97
|
};
|
package/llms.txt
CHANGED
|
@@ -187,7 +187,7 @@ When tabs and a search field control the same content, they share one responsive
|
|
|
187
187
|
- [SettingList] — component (variants: isPressable: true|false) [docs](https://ads.actioneer.dev/#/review/setting-row)
|
|
188
188
|
- [SettingRow] — component (variants: isPressable: true|false) [docs](https://ads.actioneer.dev/#/review/setting-row)
|
|
189
189
|
- [Spinner] — Use for an indeterminate loading state (e.g. inside a Button's isLoading, or standalone while content is fetching) — not for measurable/determinate progress. (variants: size: sm|md|lg; color: current|primary|muted) [docs](https://ads.actioneer.dev/#/spinner)
|
|
190
|
-
- [Stepper] — component (variants: status: complete|current|upcoming) [docs](https://ads.actioneer.dev/#/review/stepper)
|
|
190
|
+
- [Stepper] — component (variants: status: complete|current|upcoming|error; size: sm|md) [docs](https://ads.actioneer.dev/#/review/stepper)
|
|
191
191
|
- [Text] — Use Text for any body copy, caption, or inline run of prose instead of a raw p/span tag. [docs](https://ads.actioneer.dev/#/typography)
|
|
192
192
|
- [ButtonProps] — TypeScript type
|
|
193
193
|
- [CodeBlockProps] — TypeScript type
|
|
@@ -627,6 +627,7 @@ When tabs and a search field control the same content, they share one responsive
|
|
|
627
627
|
- [AIChartProgress] — TypeScript type
|
|
628
628
|
- [AIChartProps] — TypeScript type
|
|
629
629
|
- [AIChartStatus] — TypeScript type
|
|
630
|
+
- [ChainOfThoughtConnector] — TypeScript type
|
|
630
631
|
- [ChainOfThoughtContentProps] — TypeScript type
|
|
631
632
|
- [ChainOfThoughtEvidenceColumn] — TypeScript type
|
|
632
633
|
- [ChainOfThoughtEvidenceProps] — TypeScript type
|
package/manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@actioneer/ads",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"importPath": "@actioneer/ads",
|
|
5
5
|
"styleImport": "@import \"@actioneer/ads/styles.css\";",
|
|
6
6
|
"families": [
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
"Chat"
|
|
17
17
|
],
|
|
18
18
|
"counts": {
|
|
19
|
-
"total":
|
|
19
|
+
"total": 669,
|
|
20
20
|
"component": 322,
|
|
21
|
-
"type":
|
|
21
|
+
"type": 284,
|
|
22
22
|
"hook": 10,
|
|
23
23
|
"util": 53
|
|
24
24
|
},
|
|
@@ -721,15 +721,22 @@
|
|
|
721
721
|
"values": [
|
|
722
722
|
"complete",
|
|
723
723
|
"current",
|
|
724
|
-
"upcoming"
|
|
724
|
+
"upcoming",
|
|
725
|
+
"error"
|
|
725
726
|
],
|
|
726
727
|
"default": "upcoming"
|
|
728
|
+
},
|
|
729
|
+
"size": {
|
|
730
|
+
"values": [
|
|
731
|
+
"sm",
|
|
732
|
+
"md"
|
|
733
|
+
],
|
|
734
|
+
"default": "md"
|
|
727
735
|
}
|
|
728
736
|
},
|
|
729
737
|
"props": [
|
|
730
738
|
"steps",
|
|
731
739
|
"activeIndex",
|
|
732
|
-
"orientation",
|
|
733
740
|
"onSelect"
|
|
734
741
|
]
|
|
735
742
|
},
|
|
@@ -5204,6 +5211,8 @@
|
|
|
5204
5211
|
"stepCount",
|
|
5205
5212
|
"summary",
|
|
5206
5213
|
"sticky",
|
|
5214
|
+
"collapsible",
|
|
5215
|
+
"activityPlacement",
|
|
5207
5216
|
"open",
|
|
5208
5217
|
"defaultOpen",
|
|
5209
5218
|
"onOpenChange",
|
|
@@ -5353,6 +5362,7 @@
|
|
|
5353
5362
|
"className",
|
|
5354
5363
|
"volume",
|
|
5355
5364
|
"palette",
|
|
5365
|
+
"seed",
|
|
5356
5366
|
"onReady"
|
|
5357
5367
|
]
|
|
5358
5368
|
},
|
|
@@ -5447,6 +5457,13 @@
|
|
|
5447
5457
|
"importPath": "@actioneer/ads",
|
|
5448
5458
|
"module": "chart"
|
|
5449
5459
|
},
|
|
5460
|
+
{
|
|
5461
|
+
"name": "ChainOfThoughtConnector",
|
|
5462
|
+
"family": "AI Elements",
|
|
5463
|
+
"kind": "type",
|
|
5464
|
+
"importPath": "@actioneer/ads",
|
|
5465
|
+
"module": "chain-of-thought"
|
|
5466
|
+
},
|
|
5450
5467
|
{
|
|
5451
5468
|
"name": "ChainOfThoughtContentProps",
|
|
5452
5469
|
"family": "AI Elements",
|
package/package.json
CHANGED
package/styles.css
CHANGED
|
@@ -34,11 +34,17 @@
|
|
|
34
34
|
*/
|
|
35
35
|
@theme {
|
|
36
36
|
/* ---- Typography ----
|
|
37
|
-
One typeface
|
|
38
|
-
|
|
37
|
+
One brand typeface. Figures inside prose stay in Aribau Grotesk with
|
|
38
|
+
`tabular-nums`; only literal source code steps to the mono stack. */
|
|
39
39
|
--font-sans: "Aribau Grotesk", ui-sans-serif, system-ui, -apple-system,
|
|
40
40
|
"Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
|
41
41
|
|
|
42
|
+
/* Source code only (CodeBlock, inline Code). ADS ships no mono webfont —
|
|
43
|
+
this resolves to the reader's platform mono, which is what a developer
|
|
44
|
+
already reads code in. Never use it for UI copy or data. */
|
|
45
|
+
--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas,
|
|
46
|
+
"Liberation Mono", "Courier New", monospace;
|
|
47
|
+
|
|
42
48
|
/* ---- Type scale ---- base = 15px (0.9375rem). Root stays 16px so the
|
|
43
49
|
spacing grid is unaffected; only text sizes are anchored to 15px. */
|
|
44
50
|
/* SIX sizes only — a deliberately small ladder (captions → display).
|
|
@@ -141,11 +147,13 @@
|
|
|
141
147
|
--ease-expo-out: cubic-bezier(0.16, 1, 0.3, 1); /* side-panel and drawer slide */
|
|
142
148
|
--ease-drawer: var(--ease-expo-out); /* backwards-compatible alias */
|
|
143
149
|
--ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1); /* playful overshoot (rare) */
|
|
150
|
+
--ease-disclosure: cubic-bezier(0.32, 0.72, 0, 1); /* height reveals — moves off the mark immediately, settles long */
|
|
144
151
|
|
|
145
152
|
/* Durations — every animation/transition timing flows from these.
|
|
146
153
|
UI animations stay under 300ms; exits run faster than enters. */
|
|
147
154
|
--duration-fast: 0.15s; /* menu / popover / tooltip enter */
|
|
148
155
|
--duration-normal: 0.2s; /* state transitions */
|
|
156
|
+
--duration-disclosure: 0.28s; /* collapsible open — travels a real distance */
|
|
149
157
|
--duration-spin: 0.8s; /* rotation loops (spinner) */
|
|
150
158
|
--duration-pulse: 1.5s; /* breathing / shimmer loops */
|
|
151
159
|
--duration-bloom: 0.9s; /* ambient reveals (chat texture bloom, curtain wipe) */
|
|
@@ -692,5 +700,103 @@
|
|
|
692
700
|
animation: none !important;
|
|
693
701
|
}
|
|
694
702
|
}
|
|
703
|
+
|
|
704
|
+
/* Collapsible disclosure (CSS path) — opt-in via .ads-collapsible for simple
|
|
705
|
+
disclosures. ChainOfThoughtContent does NOT use this: it animates with
|
|
706
|
+
Motion so a toggle mid-flight reverses from the current height instead of
|
|
707
|
+
restarting, which CSS keyframes cannot do.
|
|
708
|
+
|
|
709
|
+
Height, opacity and a short rise in ONE animation.
|
|
710
|
+
Two separate `animation` declarations cannot coexist (the shorthand replaces,
|
|
711
|
+
it does not merge), so animating height alongside tw-animate-css's enter/exit
|
|
712
|
+
silently drops the fade and leaves a bare height shutter — which reads as
|
|
713
|
+
rigid no matter how it is timed. Radix publishes the measured height as
|
|
714
|
+
--radix-collapsible-content-height; exits run faster than enters.
|
|
715
|
+
Eased with --ease-disclosure. --ease-out front-loads ~60% of the travel into
|
|
716
|
+
the first third (pop, then settle); --ease-in-out holds ~150ms before moving
|
|
717
|
+
(lag, then rush). A height reveal needs to leave the mark immediately and
|
|
718
|
+
settle long, which is what this curve does. */
|
|
719
|
+
@keyframes ads-collapsible-down {
|
|
720
|
+
from {
|
|
721
|
+
height: 0;
|
|
722
|
+
opacity: 0;
|
|
723
|
+
transform: translate3d(0, -4px, 0);
|
|
724
|
+
}
|
|
725
|
+
to {
|
|
726
|
+
height: var(--radix-collapsible-content-height);
|
|
727
|
+
opacity: 1;
|
|
728
|
+
transform: translate3d(0, 0, 0);
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
@keyframes ads-collapsible-up {
|
|
732
|
+
from {
|
|
733
|
+
height: var(--radix-collapsible-content-height);
|
|
734
|
+
opacity: 1;
|
|
735
|
+
transform: translate3d(0, 0, 0);
|
|
736
|
+
}
|
|
737
|
+
to {
|
|
738
|
+
height: 0;
|
|
739
|
+
opacity: 0;
|
|
740
|
+
transform: translate3d(0, -4px, 0);
|
|
741
|
+
}
|
|
742
|
+
}
|
|
743
|
+
.ads-collapsible[data-state="open"] {
|
|
744
|
+
animation: ads-collapsible-down var(--duration-disclosure) var(--ease-disclosure);
|
|
745
|
+
}
|
|
746
|
+
.ads-collapsible[data-state="closed"] {
|
|
747
|
+
animation: ads-collapsible-up var(--duration-normal) var(--ease-disclosure);
|
|
748
|
+
}
|
|
749
|
+
@media (prefers-reduced-motion: reduce) {
|
|
750
|
+
.ads-collapsible[data-state="open"],
|
|
751
|
+
.ads-collapsible[data-state="closed"] {
|
|
752
|
+
animation: none;
|
|
753
|
+
}
|
|
754
|
+
}
|
|
755
|
+
|
|
756
|
+
/* Tree connector — the rail that links a group of children back to their
|
|
757
|
+
parent, and the L-shaped elbow that reaches an individual child.
|
|
758
|
+
|
|
759
|
+
Two classes so a rail can pass THROUGH content that is not itself a branch:
|
|
760
|
+
`.ads-tree-rail` draws the vertical only, `.ads-tree-branch` adds the elbow.
|
|
761
|
+
Mixing them keeps the rail unbroken from the parent icon while only the
|
|
762
|
+
rows that are actual children get an elbow.
|
|
763
|
+
|
|
764
|
+
- --tree-rail-lead : how far the FIRST child's rail climbs to meet the
|
|
765
|
+
parent row.
|
|
766
|
+
- --tree-elbow : where the elbow meets the child — its icon centre. */
|
|
767
|
+
.ads-tree-rail,
|
|
768
|
+
.ads-tree-branch {
|
|
769
|
+
position: relative;
|
|
770
|
+
padding-inline-start: 1.25rem;
|
|
771
|
+
}
|
|
772
|
+
.ads-tree-rail::before,
|
|
773
|
+
.ads-tree-branch::before {
|
|
774
|
+
content: "";
|
|
775
|
+
position: absolute;
|
|
776
|
+
inset-block: 0;
|
|
777
|
+
left: 0;
|
|
778
|
+
border-left: 1px solid var(--border);
|
|
779
|
+
}
|
|
780
|
+
.ads-tree-rail:first-child::before,
|
|
781
|
+
.ads-tree-branch:first-child::before {
|
|
782
|
+
top: calc(-1 * var(--tree-rail-lead, 0px));
|
|
783
|
+
}
|
|
784
|
+
/* The last child needs no rail: its elbow (or the content's end) terminates
|
|
785
|
+
the branch, and a rail there pokes through the curve. */
|
|
786
|
+
.ads-tree-rail:last-child::before,
|
|
787
|
+
.ads-tree-branch:last-child::before {
|
|
788
|
+
display: none;
|
|
789
|
+
}
|
|
790
|
+
.ads-tree-branch::after {
|
|
791
|
+
content: "";
|
|
792
|
+
position: absolute;
|
|
793
|
+
left: 0;
|
|
794
|
+
top: 0;
|
|
795
|
+
height: var(--tree-elbow, 1.125rem);
|
|
796
|
+
width: 1rem;
|
|
797
|
+
border-bottom: 1px solid var(--border);
|
|
798
|
+
border-left: 1px solid var(--border);
|
|
799
|
+
border-bottom-left-radius: 9px;
|
|
800
|
+
}
|
|
695
801
|
/* Let the consumer's Tailwind discover the classes ADS components use. */
|
|
696
802
|
@source "./**/*.{js,mjs}";
|
package/theme.css
CHANGED
|
@@ -7,11 +7,17 @@
|
|
|
7
7
|
*/
|
|
8
8
|
@theme {
|
|
9
9
|
/* ---- Typography ----
|
|
10
|
-
One typeface
|
|
11
|
-
|
|
10
|
+
One brand typeface. Figures inside prose stay in Aribau Grotesk with
|
|
11
|
+
`tabular-nums`; only literal source code steps to the mono stack. */
|
|
12
12
|
--font-sans: "Aribau Grotesk", ui-sans-serif, system-ui, -apple-system,
|
|
13
13
|
"Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
|
14
14
|
|
|
15
|
+
/* Source code only (CodeBlock, inline Code). ADS ships no mono webfont —
|
|
16
|
+
this resolves to the reader's platform mono, which is what a developer
|
|
17
|
+
already reads code in. Never use it for UI copy or data. */
|
|
18
|
+
--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas,
|
|
19
|
+
"Liberation Mono", "Courier New", monospace;
|
|
20
|
+
|
|
15
21
|
/* ---- Type scale ---- base = 15px (0.9375rem). Root stays 16px so the
|
|
16
22
|
spacing grid is unaffected; only text sizes are anchored to 15px. */
|
|
17
23
|
/* SIX sizes only — a deliberately small ladder (captions → display).
|
|
@@ -114,11 +120,13 @@
|
|
|
114
120
|
--ease-expo-out: cubic-bezier(0.16, 1, 0.3, 1); /* side-panel and drawer slide */
|
|
115
121
|
--ease-drawer: var(--ease-expo-out); /* backwards-compatible alias */
|
|
116
122
|
--ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1); /* playful overshoot (rare) */
|
|
123
|
+
--ease-disclosure: cubic-bezier(0.32, 0.72, 0, 1); /* height reveals — moves off the mark immediately, settles long */
|
|
117
124
|
|
|
118
125
|
/* Durations — every animation/transition timing flows from these.
|
|
119
126
|
UI animations stay under 300ms; exits run faster than enters. */
|
|
120
127
|
--duration-fast: 0.15s; /* menu / popover / tooltip enter */
|
|
121
128
|
--duration-normal: 0.2s; /* state transitions */
|
|
129
|
+
--duration-disclosure: 0.28s; /* collapsible open — travels a real distance */
|
|
122
130
|
--duration-spin: 0.8s; /* rotation loops (spinner) */
|
|
123
131
|
--duration-pulse: 1.5s; /* breathing / shimmer loops */
|
|
124
132
|
--duration-bloom: 0.9s; /* ambient reveals (chat texture bloom, curtain wipe) */
|