@rubrion/agent-kit-react 0.1.0 → 0.1.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/dist/components/AssistantScreen.js +1 -1
- package/dist/components/AssistantScreen.js.map +1 -1
- package/dist/components/ChatBox.js +1 -1
- package/dist/components/ChatBox.js.map +1 -1
- package/dist/components/Mascot.d.ts +5 -4
- package/dist/components/Mascot.js +57 -6
- package/dist/components/Mascot.js.map +1 -1
- package/dist/styles.css +40 -17
- package/package.json +1 -1
|
@@ -37,7 +37,7 @@ export function AssistantScreen({ className, panelSide = 'right', greeting, hint
|
|
|
37
37
|
const empty = !turns.length;
|
|
38
38
|
const firstName = (config.personName ?? '').split(' ')[0];
|
|
39
39
|
const aside = (_jsx("aside", { "aria-label": t.conversations, "aria-hidden": !panel, inert: !panel || undefined, className: cn('hidden shrink-0 flex-col overflow-hidden bg-muted/30 transition-[width,opacity] duration-300 lg:flex', panelSide === 'right' ? 'border-l' : 'border-r', panel ? 'w-72 opacity-100' : 'w-0 border-0 opacity-0'), children: _jsx("div", { className: "flex min-h-0 w-72 flex-1 flex-col", children: _jsx(ConversationList, {}) }) }));
|
|
40
|
-
return (_jsxs("div", { className: cn('flex h-full min-h-0', className), children: [_jsx("h1", { className: "sr-only", children: t.assistant }), panelSide === 'left' && aside, _jsxs("div", { className: "flex min-w-0 flex-1 flex-col", children: [_jsxs("div", { className: "flex items-center gap-2 px-3 py-2 sm:px-4", children: [_jsx(AgentPicker, {}), _jsxs("div", { className: "ml-auto flex items-center gap-1.5", children: [_jsx(IconButton, { label: t.newConversation, onClick: newConversation, children: _jsx(SquarePen, {}) }), _jsxs(IconButton, { label: panel ? t.collapse : t.conversations, onClick: togglePanel, "aria-expanded": panel, className: cn(panel && 'lg:bg-accent'), children: [panel ? _jsx(PanelRightClose, { className: "hidden lg:block" }) : null, _jsx(MessagesSquare, { className: cn(panel && 'lg:hidden') })] })] })] }), _jsx(Availability, { children: empty ? (_jsxs("div", { className: "grid flex-1 content-center justify-items-center gap-5 overflow-y-auto px-4 pb-10", children: [_jsx(Avatar, { size: 112, phase: phase, jumping: true }), _jsxs("div", { className: "ak-rise grid gap-1 text-center", children: [_jsx("p", { className: "text-2xl font-medium tracking-tight sm:text-3xl", children: greeting ?? t.greeting(firstName) }), _jsx("p", { className: "text-sm text-muted-foreground", children: hint ?? t.greetingHint })] }), _jsx(Composer, { className: "ak-rise w-full max-w-2xl [animation-delay:60ms]" }), _jsx(Suggestions, { className: "ak-rise max-w-2xl [animation-delay:120ms]" })] })) : (_jsxs(_Fragment, { children: [_jsx(Thread, { empty: null }), _jsxs("div", { className: "mx-auto w-full max-w-3xl px-4 pt-2 pb-3", children: [_jsx(Composer, {}), _jsx("p", { className: "mt-1.5 text-center text-[11px] text-muted-foreground", children: t.disclaimer })] })] })) })] }), panelSide === 'right' && aside, drawer && (_jsxs("div", { className: "fixed inset-0 z-50 lg:hidden", role: "dialog", "aria-modal": "true", "aria-label": t.conversations, "data-state": "open", onKeyDown: (e) => e.key === 'Escape' && setDrawer(false), children: [_jsx("button", { type: "button", "aria-label": t.close, className: "absolute inset-0 bg-black/40", onClick: () => setDrawer(false) }), _jsx("div", { className: cn('absolute inset-y-0 flex w-80 max-w-[85vw] flex-col bg-background shadow-xl', panelSide === 'right' ? 'right-0' : 'left-0'), children: _jsx(ConversationList, { onPick: () => setDrawer(false) }) })] }))] }));
|
|
40
|
+
return (_jsxs("div", { className: cn('ak flex h-full min-h-0', className), children: [_jsx("h1", { className: "sr-only", children: t.assistant }), panelSide === 'left' && aside, _jsxs("div", { className: "flex min-w-0 flex-1 flex-col", children: [_jsxs("div", { className: "flex items-center gap-2 px-3 py-2 sm:px-4", children: [_jsx(AgentPicker, {}), _jsxs("div", { className: "ml-auto flex items-center gap-1.5", children: [_jsx(IconButton, { label: t.newConversation, onClick: newConversation, children: _jsx(SquarePen, {}) }), _jsxs(IconButton, { label: panel ? t.collapse : t.conversations, onClick: togglePanel, "aria-expanded": panel, className: cn(panel && 'lg:bg-accent'), children: [panel ? _jsx(PanelRightClose, { className: "hidden lg:block" }) : null, _jsx(MessagesSquare, { className: cn(panel && 'lg:hidden') })] })] })] }), _jsx(Availability, { children: empty ? (_jsxs("div", { className: "grid flex-1 content-center justify-items-center gap-5 overflow-y-auto px-4 pb-10", children: [_jsx(Avatar, { size: 112, phase: phase, jumping: true }), _jsxs("div", { className: "ak-rise grid gap-1 text-center", children: [_jsx("p", { className: "text-2xl font-medium tracking-tight sm:text-3xl", children: greeting ?? t.greeting(firstName) }), _jsx("p", { className: "text-sm text-muted-foreground", children: hint ?? t.greetingHint })] }), _jsx(Composer, { className: "ak-rise w-full max-w-2xl [animation-delay:60ms]" }), _jsx(Suggestions, { className: "ak-rise max-w-2xl [animation-delay:120ms]" })] })) : (_jsxs(_Fragment, { children: [_jsx(Thread, { empty: null }), _jsxs("div", { className: "mx-auto w-full max-w-3xl px-4 pt-2 pb-3", children: [_jsx(Composer, {}), _jsx("p", { className: "mt-1.5 text-center text-[11px] text-muted-foreground", children: t.disclaimer })] })] })) })] }), panelSide === 'right' && aside, drawer && (_jsxs("div", { className: "fixed inset-0 z-50 lg:hidden", role: "dialog", "aria-modal": "true", "aria-label": t.conversations, "data-state": "open", onKeyDown: (e) => e.key === 'Escape' && setDrawer(false), children: [_jsx("button", { type: "button", "aria-label": t.close, className: "absolute inset-0 bg-black/40", onClick: () => setDrawer(false) }), _jsx("div", { className: cn('absolute inset-y-0 flex w-80 max-w-[85vw] flex-col bg-background shadow-xl', panelSide === 'right' ? 'right-0' : 'left-0'), children: _jsx(ConversationList, { onPick: () => setDrawer(false) }) })] }))] }));
|
|
41
41
|
}
|
|
42
42
|
/** The conversation's agent, on top: each conversation belongs to one agent, and switching opens a new one. */
|
|
43
43
|
export function AgentPicker() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantScreen.js","sourceRoot":"","sources":["../../src/components/AssistantScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACzG,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,EAAE,QAAQ,EAAE,IAAI,EAM/E;IACA,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC;IAChE,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,UAAU,QAAQ,CAAC;IAC9C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,gEAAgE;IAChE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QAAC,OAAO,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5H,MAAM,WAAW,GAAG,GAAG,EAAE;QACxB,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,OAAO,EAAE,CAAC;YAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAC5E,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE;YACd,IAAI,CAAC;gBAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC;YACpF,OAAO,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;IAC5B,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1D,MAAM,KAAK,GAAG,CACb,8BAAmB,CAAC,CAAC,aAAa,iBAAe,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,KAAK,IAAI,SAAS,EAClF,SAAS,EAAE,EAAE,CAAC,sGAAsG,EACnH,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,wBAAwB,CAAC,YACxG,cAAK,SAAS,EAAC,mCAAmC,YAAC,KAAC,gBAAgB,KAAG,GAAM,GACtE,CACR,CAAC;IAEF,OAAO,CACN,eAAK,SAAS,EAAE,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"AssistantScreen.js","sourceRoot":"","sources":["../../src/components/AssistantScreen.tsx"],"names":[],"mappings":"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"}
|
|
@@ -46,7 +46,7 @@ export function ChatBox({ onExpand, hidden, subtitle, emptyTitle, side = 'right'
|
|
|
46
46
|
if (hidden || typeof document === 'undefined')
|
|
47
47
|
return null;
|
|
48
48
|
const jumping = !seen && phase === 'idle';
|
|
49
|
-
return createPortal(_jsxs("div", { className: cn('pointer-events-none fixed bottom-4 z-40 flex flex-col gap-3 print:hidden', side === 'right' ? 'right-4 items-end' : 'left-4 items-start'), children: [open && (_jsxs("section", { role: "region", "aria-label": t.assistant, className: "ak-rise pointer-events-auto flex h-[min(560px,calc(100dvh-6rem))] w-[min(400px,calc(100vw-2rem))] flex-col overflow-hidden rounded-xl border bg-card text-card-foreground shadow-2xl", children: [_jsxs("header", { className: "flex items-center gap-2 border-b px-3 py-2", children: [_jsx(Avatar, { size: 30, phase: phase }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("h2", { className: "text-sm font-medium", children: t.assistant }), _jsx("p", { className: "truncate text-xs text-muted-foreground", children: subtitle ?? t.scope })] }), _jsx(IconButton, { label: t.newConversation, onClick: newConversation, children: _jsx(MessageSquarePlus, {}) }), onExpand && _jsx(IconButton, { label: t.expand, onClick: () => { setOpen(false); onExpand(); }, children: _jsx(Maximize2, {}) }), _jsx(IconButton, { label: t.close, onClick: () => setOpen(false), children: _jsx(X, {}) })] }), _jsx(CompactConversation, { emptyTitle: emptyTitle })] })), _jsx("button", { ref: button, type: "button", "aria-expanded": open, title: open ? t.close : t.open, "aria-label": open ? t.close : t.open, onClick: () => {
|
|
49
|
+
return createPortal(_jsxs("div", { className: cn('ak pointer-events-none fixed bottom-4 z-40 flex flex-col gap-3 print:hidden', side === 'right' ? 'right-4 items-end' : 'left-4 items-start'), children: [open && (_jsxs("section", { role: "region", "aria-label": t.assistant, className: "ak-rise pointer-events-auto flex h-[min(560px,calc(100dvh-6rem))] w-[min(400px,calc(100vw-2rem))] flex-col overflow-hidden rounded-xl border bg-card text-card-foreground shadow-2xl", children: [_jsxs("header", { className: "flex items-center gap-2 border-b px-3 py-2", children: [_jsx(Avatar, { size: 30, phase: phase }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("h2", { className: "text-sm font-medium", children: t.assistant }), _jsx("p", { className: "truncate text-xs text-muted-foreground", children: subtitle ?? t.scope })] }), _jsx(IconButton, { label: t.newConversation, onClick: newConversation, children: _jsx(MessageSquarePlus, {}) }), onExpand && _jsx(IconButton, { label: t.expand, onClick: () => { setOpen(false); onExpand(); }, children: _jsx(Maximize2, {}) }), _jsx(IconButton, { label: t.close, onClick: () => setOpen(false), children: _jsx(X, {}) })] }), _jsx(CompactConversation, { emptyTitle: emptyTitle })] })), _jsx("button", { ref: button, type: "button", "aria-expanded": open, title: open ? t.close : t.open, "aria-label": open ? t.close : t.open, onClick: () => {
|
|
50
50
|
setSeen(true);
|
|
51
51
|
try {
|
|
52
52
|
sessionStorage.setItem(seenKey, '1');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatBox.js","sourceRoot":"","sources":["../../src/components/ChatBox.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAEjD;;;;;;;;GAQG;AACH,MAAM,UAAU,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,GAAG,OAAO,EAO/E;IACA,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC/D,MAAM,OAAO,GAAG,GAAG,MAAM,CAAC,UAAU,OAAO,CAAC;IAC5C,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,+EAA+E;IAC/E,iEAAiE;IACjE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QAAC,OAAO,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,KAAK,CAAC;IAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5H,MAAM,MAAM,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAE/C,uEAAuE;IACvE,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,KAAK,GAAG,CAAC,CAAgB,EAAE,EAAE;YAClC,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,gBAAgB;gBAAE,OAAO;YACrD,+DAA+D;YAC/D,IAAI,QAAQ,CAAC,aAAa,CAAC,oDAAoD,CAAC;gBAAE,OAAO;YACzF,OAAO,CAAC,KAAK,CAAC,CAAC;YACf,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QACzB,CAAC,CAAC;QACF,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC5C,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,IAAI,MAAM,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAC3D,MAAM,OAAO,GAAG,CAAC,IAAI,IAAI,KAAK,KAAK,MAAM,CAAC;IAE1C,OAAO,YAAY,CAClB,eAAK,SAAS,EAAE,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"ChatBox.js","sourceRoot":"","sources":["../../src/components/ChatBox.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { Phase } from '../events.js';
|
|
2
2
|
/**
|
|
3
|
-
* The default mascot:
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
3
|
+
* The default mascot: a stylized eye whose pupil follows the cursor. Idle, it
|
|
4
|
+
* blinks now and then; thinking, the pupil drifts up and narrows; using a tool,
|
|
5
|
+
* it scans side to side while the iris ring turns; speaking, the iris pulses.
|
|
6
|
+
* Colors come from the theme (--primary for the iris, --foreground for the
|
|
7
|
+
* pupil and the outline), so it reads on light and dark. Swap it with renderMascot.
|
|
7
8
|
*/
|
|
8
9
|
export declare function Mascot({ phase, size, jumping, label, className }: {
|
|
9
10
|
phase?: Phase;
|
|
@@ -1,13 +1,64 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useId } from 'react';
|
|
2
|
+
import { useEffect, useId, useRef } from 'react';
|
|
3
|
+
const watchers = new Set();
|
|
4
|
+
let pointer = null;
|
|
5
|
+
let frame = 0;
|
|
6
|
+
function onMove(e) {
|
|
7
|
+
pointer = { x: e.clientX, y: e.clientY };
|
|
8
|
+
if (frame)
|
|
9
|
+
return;
|
|
10
|
+
frame = requestAnimationFrame(() => {
|
|
11
|
+
frame = 0;
|
|
12
|
+
watchers.forEach((w) => w());
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
function watch(w) {
|
|
16
|
+
if (!watchers.size)
|
|
17
|
+
window.addEventListener('pointermove', onMove, { passive: true });
|
|
18
|
+
watchers.add(w);
|
|
19
|
+
return () => {
|
|
20
|
+
watchers.delete(w);
|
|
21
|
+
if (!watchers.size)
|
|
22
|
+
window.removeEventListener('pointermove', onMove);
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/** How far the pupil travels from center, in viewBox units. */
|
|
26
|
+
const REACH = 6.5;
|
|
27
|
+
/** Pointer distance (px) at which the pupil reaches the edge. */
|
|
28
|
+
const FULL = 240;
|
|
3
29
|
/**
|
|
4
|
-
* The default mascot:
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
30
|
+
* The default mascot: a stylized eye whose pupil follows the cursor. Idle, it
|
|
31
|
+
* blinks now and then; thinking, the pupil drifts up and narrows; using a tool,
|
|
32
|
+
* it scans side to side while the iris ring turns; speaking, the iris pulses.
|
|
33
|
+
* Colors come from the theme (--primary for the iris, --foreground for the
|
|
34
|
+
* pupil and the outline), so it reads on light and dark. Swap it with renderMascot.
|
|
8
35
|
*/
|
|
9
36
|
export function Mascot({ phase = 'idle', size = 28, jumping, label, className }) {
|
|
10
37
|
const id = useId().replace(/:/g, '');
|
|
11
|
-
|
|
38
|
+
const svg = useRef(null);
|
|
39
|
+
const look = useRef(null);
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
if (typeof window === 'undefined' || matchMedia('(prefers-reduced-motion: reduce)').matches)
|
|
42
|
+
return;
|
|
43
|
+
const aim = () => {
|
|
44
|
+
const el = svg.current;
|
|
45
|
+
const g = look.current;
|
|
46
|
+
if (!el || !g || !pointer)
|
|
47
|
+
return;
|
|
48
|
+
const r = el.getBoundingClientRect();
|
|
49
|
+
if (!r.width)
|
|
50
|
+
return;
|
|
51
|
+
const dx = pointer.x - (r.left + r.width / 2);
|
|
52
|
+
const dy = pointer.y - (r.top + r.height / 2);
|
|
53
|
+
const d = Math.hypot(dx, dy) || 1;
|
|
54
|
+
const k = (Math.min(d, FULL) / FULL) * REACH;
|
|
55
|
+
// the eye is wider than tall: less room to travel vertically
|
|
56
|
+
// CSS px on an SVG element are user units, so this moves in viewBox units
|
|
57
|
+
g.style.transform = `translate(${((dx / d) * k).toFixed(2)}px, ${((dy / d) * k * 0.6).toFixed(2)}px)`;
|
|
58
|
+
};
|
|
59
|
+
aim();
|
|
60
|
+
return watch(aim);
|
|
61
|
+
}, []);
|
|
62
|
+
return (_jsxs("svg", { ref: svg, viewBox: "0 0 64 64", width: size, height: size, focusable: "false", className: ['ak-mascot', `ak-mascot--${phase}`, jumping && phase === 'idle' && 'ak-jump', className].filter(Boolean).join(' '), ...(label ? { role: 'img', 'aria-label': label } : { 'aria-hidden': true }), children: [_jsxs("defs", { children: [_jsxs("radialGradient", { id: `${id}-iris`, cx: "40%", cy: "38%", r: "70%", children: [_jsx("stop", { offset: "0%", stopColor: "currentColor", stopOpacity: "0.55" }), _jsx("stop", { offset: "100%", stopColor: "currentColor" })] }), _jsx("clipPath", { id: `${id}-eye`, children: _jsx("path", { d: "M7 32 C17 15 47 15 57 32 C47 49 17 49 7 32 Z" }) })] }), _jsx("circle", { cx: "32", cy: "32", r: "30", className: "ak-mascot__badge", strokeWidth: "2" }), _jsxs("g", { className: "ak-mascot__eye", children: [_jsx("path", { className: "ak-mascot__white", d: "M7 32 C17 15 47 15 57 32 C47 49 17 49 7 32 Z" }), _jsx("g", { clipPath: `url(#${id}-eye)`, children: _jsx("g", { ref: look, className: "ak-mascot__look", children: _jsxs("g", { className: "ak-mascot__gaze", children: [_jsx("circle", { className: "ak-mascot__iris", cx: "32", cy: "32", r: "11.5", fill: `url(#${id}-iris)` }), _jsx("circle", { className: "ak-mascot__ring", cx: "32", cy: "32", r: "8.6", fill: "none", strokeWidth: "1.3", strokeDasharray: "3.2 2.4" }), _jsx("circle", { className: "ak-mascot__pupil", cx: "32", cy: "32", r: "4.6" }), _jsx("circle", { className: "ak-mascot__glint", cx: "29.2", cy: "29", r: "1.7" })] }) }) }), _jsx("path", { className: "ak-mascot__lid", d: "M7 32 C17 15 47 15 57 32 C47 49 17 49 7 32 Z", fill: "none", strokeWidth: "2.4", strokeLinejoin: "round" }), _jsx("path", { className: "ak-mascot__lash", d: "M9 30 C19 15.5 45 15.5 55 30", fill: "none", strokeWidth: "3.4", strokeLinecap: "round" })] })] }));
|
|
12
63
|
}
|
|
13
64
|
//# sourceMappingURL=Mascot.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Mascot.js","sourceRoot":"","sources":["../../src/components/Mascot.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Mascot.js","sourceRoot":"","sources":["../../src/components/Mascot.tsx"],"names":[],"mappings":"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"}
|
package/dist/styles.css
CHANGED
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
/* agent-kit: the few styles Tailwind utilities can't express (markdown, mascot,
|
|
2
2
|
motion). Colors come from the shadcn/ui tokens (--primary, --muted, --border…). */
|
|
3
3
|
|
|
4
|
+
/* The kit's roots carry .ak. On a host without Tailwind's preflight, this resets the
|
|
5
|
+
elements the components draw, so browser defaults don't show through. In the base
|
|
6
|
+
layer, so the utilities on each element win. */
|
|
7
|
+
@layer base {
|
|
8
|
+
:where(.ak, .ak *), :where(.ak, .ak *)::before, :where(.ak, .ak *)::after { box-sizing: border-box; margin: 0; padding: 0; border: 0 solid var(--border, currentColor); }
|
|
9
|
+
:where(.ak) :where(button, input, textarea, select) { font: inherit; color: inherit; background: transparent; letter-spacing: inherit; }
|
|
10
|
+
:where(.ak) :where(button, [role="button"]) { cursor: pointer; }
|
|
11
|
+
:where(.ak) :where(textarea) { resize: none; }
|
|
12
|
+
:where(.ak) :where(ol, ul, menu) { list-style: none; }
|
|
13
|
+
:where(.ak) :where(h1, h2, h3, h4, h5, h6) { font-size: inherit; font-weight: inherit; }
|
|
14
|
+
:where(.ak) :where(svg, img) { display: block; max-width: 100%; }
|
|
15
|
+
:where(.ak) :where(a) { color: inherit; text-decoration: inherit; }
|
|
16
|
+
}
|
|
17
|
+
|
|
4
18
|
@keyframes ak-rise { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
|
|
5
19
|
.ak-rise { animation: ak-rise 0.32s cubic-bezier(0.2, 0.7, 0.2, 1) both; }
|
|
6
20
|
|
|
@@ -11,31 +25,40 @@
|
|
|
11
25
|
}
|
|
12
26
|
.ak-jump { animation: ak-jump 1.8s infinite; }
|
|
13
27
|
|
|
14
|
-
/* Mascot
|
|
28
|
+
/* Mascot: an eye. The pupil's follow-the-cursor offset is set inline (Mascot.tsx);
|
|
29
|
+
these animate the layers inside it, so both combine. */
|
|
15
30
|
.ak-mascot { display: block; flex: 0 0 auto; overflow: visible; color: var(--primary, #555); }
|
|
16
|
-
.ak-
|
|
17
|
-
.ak-
|
|
18
|
-
.ak-
|
|
19
|
-
.ak-mascot__ring
|
|
20
|
-
.ak-
|
|
21
|
-
.ak-
|
|
31
|
+
.ak-mascot__badge { fill: var(--card, #fff); stroke: color-mix(in oklab, var(--foreground, #222) 18%, transparent); }
|
|
32
|
+
.ak-mascot__white { fill: color-mix(in oklab, var(--card, #fff) 92%, var(--foreground, #222)); }
|
|
33
|
+
.ak-mascot__lid, .ak-mascot__lash { stroke: var(--foreground, #222); }
|
|
34
|
+
.ak-mascot__ring { stroke: color-mix(in oklab, var(--card, #fff) 55%, transparent); }
|
|
35
|
+
.ak-mascot__pupil { fill: var(--foreground, #111); }
|
|
36
|
+
.ak-mascot__glint { fill: #fff; opacity: 0.9; }
|
|
37
|
+
.ak-mascot__eye, .ak-mascot__gaze, .ak-mascot__ring, .ak-mascot__iris, .ak-mascot__pupil { transform-box: view-box; transform-origin: 32px 32px; }
|
|
38
|
+
.ak-mascot__look { transition: transform 0.12s ease-out; }
|
|
22
39
|
|
|
23
|
-
|
|
24
|
-
|
|
40
|
+
/* Idle: a quick blink now and then. */
|
|
41
|
+
@keyframes ak-blink { 0%, 93%, 100% { transform: scaleY(1); } 96% { transform: scaleY(0.08); } }
|
|
42
|
+
.ak-mascot--idle .ak-mascot__eye { animation: ak-blink 5.2s infinite; }
|
|
25
43
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
.ak-mascot--thinking .ak-
|
|
29
|
-
.ak-mascot--thinking .ak-
|
|
44
|
+
/* Thinking: the gaze drifts up and the pupil narrows, like looking for the answer. */
|
|
45
|
+
@keyframes ak-ponder { 0%, 100% { transform: translate(2.5px, -3.5px); } 50% { transform: translate(-2.5px, -4px); } }
|
|
46
|
+
.ak-mascot--thinking .ak-mascot__gaze { animation: ak-ponder 2.4s ease-in-out infinite; }
|
|
47
|
+
.ak-mascot--thinking .ak-mascot__pupil { transform: scale(0.75); }
|
|
30
48
|
|
|
49
|
+
/* Using a tool: scanning side to side, the iris ring turning. */
|
|
50
|
+
@keyframes ak-scan { 0%, 100% { transform: translateX(-4px); } 50% { transform: translateX(4px); } }
|
|
31
51
|
@keyframes ak-turn { to { transform: rotate(360deg); } }
|
|
32
|
-
.ak-mascot--tool .ak-
|
|
52
|
+
.ak-mascot--tool .ak-mascot__gaze { animation: ak-scan 1.1s ease-in-out infinite; }
|
|
53
|
+
.ak-mascot--tool .ak-mascot__ring { animation: ak-turn 1.6s linear infinite; }
|
|
33
54
|
|
|
34
|
-
|
|
35
|
-
|
|
55
|
+
/* Speaking: the iris pulses with the words. */
|
|
56
|
+
@keyframes ak-pulse { 0%, 100% { transform: scale(1); } 45% { transform: scale(1.12); } }
|
|
57
|
+
.ak-mascot--speaking .ak-mascot__iris { animation: ak-pulse 0.5s ease-in-out infinite; }
|
|
58
|
+
.ak-mascot--speaking .ak-mascot__pupil { animation: ak-pulse 0.5s ease-in-out infinite reverse; }
|
|
36
59
|
|
|
37
60
|
@media (prefers-reduced-motion: reduce) {
|
|
38
|
-
.ak-rise, .ak-jump, .ak-
|
|
61
|
+
.ak-rise, .ak-jump, .ak-mascot * { animation: none !important; transition: none !important; }
|
|
39
62
|
}
|
|
40
63
|
|
|
41
64
|
/* Markdown answers */
|
package/package.json
CHANGED