sgiant-ai-widget 1.0.0 → 1.2.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.
- package/README.md +69 -3
- package/dist/charts.d.ts +78 -0
- package/dist/charts.d.ts.map +1 -0
- package/dist/charts.js +252 -0
- package/dist/charts.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +109 -7
- package/dist/index.js.map +1 -1
- package/dist/sgiant-ai-widget-charts.global.js +3 -0
- package/dist/sgiant-ai-widget-charts.global.js.map +7 -0
- package/dist/sgiant-ai-widget.global.js +47 -27
- package/dist/sgiant-ai-widget.global.js.map +3 -3
- package/dist/styles.d.ts.map +1 -1
- package/dist/styles.js +32 -12
- package/dist/styles.js.map +1 -1
- package/dist/ui-render.d.ts.map +1 -1
- package/dist/ui-render.js +4 -0
- package/dist/ui-render.js.map +1 -1
- package/package.json +9 -3
package/README.md
CHANGED
|
@@ -10,8 +10,30 @@ and one runtime dependency.
|
|
|
10
10
|
npm install sgiant-ai-widget
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
**
|
|
14
|
-
|
|
13
|
+
**Live examples**, all plain HTML with no bundler and no build step:
|
|
14
|
+
|
|
15
|
+
- **[Quick start →](https://vedatugur.github.io/sgiant-ai-widget/)** — a
|
|
16
|
+
`<script src>` tag and one call.
|
|
17
|
+
- **[Beyond streaming text →](https://vedatugur.github.io/sgiant-ai-widget/capabilities.html)**
|
|
18
|
+
— live activity steps, the assistant asking the human to decide, a
|
|
19
|
+
confirm-gated write, suggestion chips, a form the model designed, a card with
|
|
20
|
+
its own actions, and a renderer you register yourself. Every demo runs a real
|
|
21
|
+
turn and shows the JSON that produced it.
|
|
22
|
+
- **[The chrome →](https://vedatugur.github.io/sgiant-ai-widget/ui.html)** —
|
|
23
|
+
launcher states (`resting`, `unread`, `working`, `offline`, `parked`) driven
|
|
24
|
+
live, what the user can do to the panel, and an animated robot avatar that is
|
|
25
|
+
one inline SVG with its own `prefers-reduced-motion` guard.
|
|
26
|
+
- **[Advanced mode →](https://vedatugur.github.io/sgiant-ai-widget/advanced.html)**
|
|
27
|
+
— the assistant highlighting, filling and clicking inside a real app in an
|
|
28
|
+
iframe, driven over
|
|
29
|
+
[`sgiant-ai-agent-bridge`](https://www.npmjs.com/package/sgiant-ai-agent-bridge).
|
|
30
|
+
Selectors never cross the wire; only ids the page opted in with
|
|
31
|
+
`data-ai-target`.
|
|
32
|
+
- **[Real charts →](https://vedatugur.github.io/sgiant-ai-widget/charts.html)**
|
|
33
|
+
— animated bars, an animated line with a comparison overlay, and a donut,
|
|
34
|
+
drawn with no chart library at all.
|
|
35
|
+
- **[Theming →](https://vedatugur.github.io/sgiant-ai-widget/theming.html)** —
|
|
36
|
+
launcher geometry as custom properties, and an inline SVG brand mark.
|
|
15
37
|
|
|
16
38
|
## Two ways in
|
|
17
39
|
|
|
@@ -42,6 +64,42 @@ The global build bundles its one dependency, so it is a single file. If your
|
|
|
42
64
|
page already uses a bundler, prefer the module build — it shares that dependency
|
|
43
65
|
instead of carrying a second copy.
|
|
44
66
|
|
|
67
|
+
## Charts, if you have no chart library
|
|
68
|
+
|
|
69
|
+
The widget draws a stat tile for a `kpi` and a table for anything else. That is
|
|
70
|
+
deliberate: a host with real chart components should mount those through
|
|
71
|
+
`renderDataWidget`, and a core carrying a second implementation would charge
|
|
72
|
+
every consumer for one they do not use.
|
|
73
|
+
|
|
74
|
+
For surfaces with neither — a WordPress admin page, a plain embed — there is an
|
|
75
|
+
**opt-in** renderer:
|
|
76
|
+
|
|
77
|
+
```ts
|
|
78
|
+
import { createChartFallback } from "sgiant-ai-widget/charts";
|
|
79
|
+
createAiChatWidget({ renderChartFallback: createChartFallback() });
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
```html
|
|
83
|
+
<!-- or with no build step at all: a separate 3.8 kB bundle -->
|
|
84
|
+
<script src="https://unpkg.com/sgiant-ai-widget/dist/sgiant-ai-widget-charts.global.js"></script>
|
|
85
|
+
<script>
|
|
86
|
+
SgiantAiWidget.createAiChatWidget({
|
|
87
|
+
renderChartFallback: SgiantAiWidgetCharts.createChartFallback(),
|
|
88
|
+
});
|
|
89
|
+
</script>
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
It draws `time_series`, `breakdown` and `donut`, reading your `--aiw-*` tokens
|
|
93
|
+
so a chart follows the theme, and it plots the column your spec **names** in
|
|
94
|
+
`metrics` / `dimension` rather than guessing at one — so the same frame renders
|
|
95
|
+
the same numbers here and in a full dashboard renderer. It **throws** for `kpi`, `table`, `pivot_grid`,
|
|
96
|
+
`heatmap`, `scatter` and `content` — which the widget catches and renders with
|
|
97
|
+
its built-in instead. A bad heatmap made of rectangles is worse than a readable
|
|
98
|
+
table of the same numbers.
|
|
99
|
+
|
|
100
|
+
It is a floor, not a charting library. Nothing in the main entry point
|
|
101
|
+
references it, so it costs zero bytes unless you ask for it.
|
|
102
|
+
|
|
45
103
|
## The backend
|
|
46
104
|
|
|
47
105
|
One POST endpoint that streams newline-delimited JSON. Four frame types matter:
|
|
@@ -60,7 +118,15 @@ read in one go, is in **[BACKEND.md](./BACKEND.md)**.
|
|
|
60
118
|
|
|
61
119
|
The entire stylesheet reads from `--aiw-*` CSS custom properties set on the
|
|
62
120
|
widget's roots. `accent` / `gradient` are the shorthand; the `theme` option
|
|
63
|
-
overrides any token — or theme from plain CSS by targeting the roots
|
|
121
|
+
overrides any token — or theme from plain CSS by targeting the roots, which
|
|
122
|
+
works because the defaults are declared inside `:where()` and therefore carry
|
|
123
|
+
zero specificity. Any rule you write beats them, with no `!important` needed.
|
|
124
|
+
|
|
125
|
+
**Launcher geometry is tokenised too**: `--aiw-launcher-size`, `-offset`,
|
|
126
|
+
`-offset-sm` (below 480px), `-icon`, `-pill-height`, `-pill-icon`,
|
|
127
|
+
`-parked-size`, `-parked-icon`, `-dot`, `-dot-sm`. The `-sm` pair is
|
|
128
|
+
deliberately independent, so a larger desktop launcher does not force a larger
|
|
129
|
+
one on a phone. See [examples/theming.html](./examples/theming.html).
|
|
64
130
|
|
|
65
131
|
```ts
|
|
66
132
|
createAiChatWidget({
|
package/dist/charts.d.ts
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An optional, dependency-free chart renderer for `renderChartFallback`.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS IS A SEPARATE ENTRY POINT. The widget core deliberately contains no
|
|
5
|
+
* chart code: hosts that have a real charting stack (ours mounts the same
|
|
6
|
+
* component its dashboards use) should render with it, and a core that carried
|
|
7
|
+
* a second implementation would make every consumer pay for one they do not
|
|
8
|
+
* use. This is opt-in, imported from `sgiant-ai-widget/charts`, and nothing in
|
|
9
|
+
* the main entry references it — so it costs zero bytes unless you ask.
|
|
10
|
+
*
|
|
11
|
+
* WHO IT IS FOR. Surfaces with no charting stack and no build step: a WordPress
|
|
12
|
+
* admin page loading the global bundle, a third-party embed, a documentation
|
|
13
|
+
* example. It exists so those three do not each write their own — which is the
|
|
14
|
+
* drift this package has spent its short life avoiding elsewhere.
|
|
15
|
+
*
|
|
16
|
+
* WHO IT IS NOT FOR. A React app that already has charts. Use those instead:
|
|
17
|
+
* they will be better than this, and they are already in your bundle.
|
|
18
|
+
*
|
|
19
|
+
* It draws with inline SVG and reads the widget's own `--aiw-*` custom
|
|
20
|
+
* properties, so a chart follows whatever theme the host set rather than
|
|
21
|
+
* carrying a palette of its own.
|
|
22
|
+
*/
|
|
23
|
+
/** One row of a `widget` frame. Values are whatever the backend sent. */
|
|
24
|
+
export type ChartRow = Record<string, unknown>;
|
|
25
|
+
/** The `spec` half of a `widget` frame. */
|
|
26
|
+
export interface ChartSpec {
|
|
27
|
+
title?: string;
|
|
28
|
+
chartType?: string;
|
|
29
|
+
/**
|
|
30
|
+
* Which columns hold the numbers, named by the model that asked for the
|
|
31
|
+
* chart. The first is drawn.
|
|
32
|
+
*
|
|
33
|
+
* HONOURED RATHER THAN GUESSED, and the difference is a wrong chart. The
|
|
34
|
+
* dashboard renderer this stands in for takes `metrics` and `dimension` from
|
|
35
|
+
* the spec; an earlier version of this file took "the last numeric field",
|
|
36
|
+
* so `{period, revenue, bookings}` plotted BOOKINGS while the same data on a
|
|
37
|
+
* dashboard plotted revenue. No error, no warning, two different pictures of
|
|
38
|
+
* one number — which is the exact failure this codebase already has a page of
|
|
39
|
+
* rules about.
|
|
40
|
+
*/
|
|
41
|
+
metrics?: string[];
|
|
42
|
+
/** Which column is the axis / label. */
|
|
43
|
+
dimension?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface ChartFallbackOptions {
|
|
46
|
+
/**
|
|
47
|
+
* Animate on first paint. Default true.
|
|
48
|
+
*
|
|
49
|
+
* Animation is also disabled automatically when the reader has asked for
|
|
50
|
+
* reduced motion — this option is for hosts that want it off regardless, such
|
|
51
|
+
* as a print view or a dense dashboard where six charts arriving at once is
|
|
52
|
+
* noise rather than delight.
|
|
53
|
+
*/
|
|
54
|
+
animate?: boolean;
|
|
55
|
+
/** Height of the drawing area in px. Default 140. */
|
|
56
|
+
height?: number;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Build a `renderChartFallback` implementation.
|
|
60
|
+
*
|
|
61
|
+
* ```ts
|
|
62
|
+
* import { createChartFallback } from "sgiant-ai-widget/charts";
|
|
63
|
+
* createAiChatWidget({ renderChartFallback: createChartFallback() });
|
|
64
|
+
* ```
|
|
65
|
+
*
|
|
66
|
+
* IT REFUSES WHAT IT CANNOT DRAW WELL, and that is the important part. `kpi`,
|
|
67
|
+
* `table`, `pivot_grid`, `heatmap`, `scatter` and `content` throw, which the
|
|
68
|
+
* widget catches and falls through to its own built-in — a stat tile for a kpi,
|
|
69
|
+
* a readable table for the rest. A bad heatmap made of rectangles is worse than
|
|
70
|
+
* a table of the same numbers, and a `kpi` is already better served by the
|
|
71
|
+
* built-in stat than by a chart of one bar.
|
|
72
|
+
*
|
|
73
|
+
* This is a FLOOR for surfaces with no charting stack. A host with real chart
|
|
74
|
+
* components should mount those through `renderDataWidget` instead — eight
|
|
75
|
+
* dashboard widget types exist and this draws three of them.
|
|
76
|
+
*/
|
|
77
|
+
export declare function createChartFallback(options?: ChartFallbackOptions): (host: HTMLElement, spec: unknown, rows: unknown, comparisonRows?: unknown) => void;
|
|
78
|
+
//# sourceMappingURL=charts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"charts.d.ts","sourceRoot":"","sources":["../src/charts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,yEAAyE;AACzE,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE/C,2CAA2C;AAC3C,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA6MD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,oBAAyB,IAIlE,MAAM,WAAW,EACjB,MAAM,OAAO,EACb,MAAM,OAAO,EACb,iBAAiB,OAAO,KACvB,IAAI,CA2CR"}
|
package/dist/charts.js
ADDED
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An optional, dependency-free chart renderer for `renderChartFallback`.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS IS A SEPARATE ENTRY POINT. The widget core deliberately contains no
|
|
5
|
+
* chart code: hosts that have a real charting stack (ours mounts the same
|
|
6
|
+
* component its dashboards use) should render with it, and a core that carried
|
|
7
|
+
* a second implementation would make every consumer pay for one they do not
|
|
8
|
+
* use. This is opt-in, imported from `sgiant-ai-widget/charts`, and nothing in
|
|
9
|
+
* the main entry references it — so it costs zero bytes unless you ask.
|
|
10
|
+
*
|
|
11
|
+
* WHO IT IS FOR. Surfaces with no charting stack and no build step: a WordPress
|
|
12
|
+
* admin page loading the global bundle, a third-party embed, a documentation
|
|
13
|
+
* example. It exists so those three do not each write their own — which is the
|
|
14
|
+
* drift this package has spent its short life avoiding elsewhere.
|
|
15
|
+
*
|
|
16
|
+
* WHO IT IS NOT FOR. A React app that already has charts. Use those instead:
|
|
17
|
+
* they will be better than this, and they are already in your bundle.
|
|
18
|
+
*
|
|
19
|
+
* It draws with inline SVG and reads the widget's own `--aiw-*` custom
|
|
20
|
+
* properties, so a chart follows whatever theme the host set rather than
|
|
21
|
+
* carrying a palette of its own.
|
|
22
|
+
*/
|
|
23
|
+
const NS = "http://www.w3.org/2000/svg";
|
|
24
|
+
function el(name, attrs = {}) {
|
|
25
|
+
const node = document.createElementNS(NS, name);
|
|
26
|
+
for (const [k, v] of Object.entries(attrs))
|
|
27
|
+
node.setAttribute(k, String(v));
|
|
28
|
+
return node;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The numeric value of a row.
|
|
32
|
+
*
|
|
33
|
+
* The LAST numeric field, matching what the widget's own built-in stat does, so
|
|
34
|
+
* a backend that works with one works with the other. A row of
|
|
35
|
+
* `{period, revenue}` measures revenue; `{label, value}` measures value.
|
|
36
|
+
*/
|
|
37
|
+
function valueOf(row, metric) {
|
|
38
|
+
if (metric && typeof row[metric] === "number")
|
|
39
|
+
return Number(row[metric]);
|
|
40
|
+
const keys = Object.keys(row).filter((k) => typeof row[k] === "number");
|
|
41
|
+
return keys.length ? Number(row[keys[keys.length - 1]]) : 0;
|
|
42
|
+
}
|
|
43
|
+
/** The label of a row: an explicit `label`, else the first field. */
|
|
44
|
+
function labelOf(row, dimension) {
|
|
45
|
+
const v = (dimension !== undefined && row[dimension] !== undefined
|
|
46
|
+
? row[dimension]
|
|
47
|
+
: undefined) ??
|
|
48
|
+
row.label ??
|
|
49
|
+
Object.values(row)[0];
|
|
50
|
+
return v == null ? "" : String(v);
|
|
51
|
+
}
|
|
52
|
+
function prefersReducedMotion() {
|
|
53
|
+
try {
|
|
54
|
+
return matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
// A host without matchMedia is not a reason to refuse to draw.
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function animateAttr(target, attributeName, from, to, begin) {
|
|
62
|
+
target.appendChild(el("animate", {
|
|
63
|
+
attributeName,
|
|
64
|
+
from,
|
|
65
|
+
to,
|
|
66
|
+
dur: "0.6s",
|
|
67
|
+
begin: `${begin}s`,
|
|
68
|
+
fill: "freeze",
|
|
69
|
+
}));
|
|
70
|
+
}
|
|
71
|
+
function drawBars(rows, H, animate, metric, dim) {
|
|
72
|
+
const W = 320;
|
|
73
|
+
const pad = 22;
|
|
74
|
+
const max = Math.max(...rows.map((r) => valueOf(r, metric)), 1);
|
|
75
|
+
const svg = el("svg", { viewBox: `0 0 ${W} ${H}`, width: "100%", role: "img" });
|
|
76
|
+
const slot = (W - pad * 2) / Math.max(rows.length, 1);
|
|
77
|
+
rows.forEach((row, i) => {
|
|
78
|
+
const h = ((H - pad * 2) * valueOf(row, metric)) / max;
|
|
79
|
+
const x = pad + i * slot + 4;
|
|
80
|
+
const w = Math.max(slot - 8, 2);
|
|
81
|
+
const bar = el("rect", {
|
|
82
|
+
x,
|
|
83
|
+
y: animate ? H - pad : H - pad - h,
|
|
84
|
+
width: w,
|
|
85
|
+
height: animate ? 0 : h,
|
|
86
|
+
rx: 3,
|
|
87
|
+
fill: "var(--aiw-accent)",
|
|
88
|
+
});
|
|
89
|
+
if (animate) {
|
|
90
|
+
animateAttr(bar, "height", 0, h, i * 0.07);
|
|
91
|
+
animateAttr(bar, "y", H - pad, H - pad - h, i * 0.07);
|
|
92
|
+
}
|
|
93
|
+
svg.appendChild(bar);
|
|
94
|
+
const text = el("text", {
|
|
95
|
+
x: x + w / 2,
|
|
96
|
+
y: H - 6,
|
|
97
|
+
"text-anchor": "middle",
|
|
98
|
+
"font-size": 9,
|
|
99
|
+
fill: "var(--aiw-muted)",
|
|
100
|
+
});
|
|
101
|
+
text.textContent = labelOf(row, dim).slice(0, 9);
|
|
102
|
+
svg.appendChild(text);
|
|
103
|
+
});
|
|
104
|
+
return svg;
|
|
105
|
+
}
|
|
106
|
+
function points(rows, W, H, pad, max, metric) {
|
|
107
|
+
return rows
|
|
108
|
+
.map((row, i) => {
|
|
109
|
+
const x = pad + (i * (W - pad * 2)) / Math.max(rows.length - 1, 1);
|
|
110
|
+
const y = H - pad - ((H - pad * 2) * valueOf(row, metric)) / max;
|
|
111
|
+
return `${x},${y}`;
|
|
112
|
+
})
|
|
113
|
+
.join(" ");
|
|
114
|
+
}
|
|
115
|
+
function drawLine(rows, comparison, H, animate, metric) {
|
|
116
|
+
const W = 320;
|
|
117
|
+
const pad = 22;
|
|
118
|
+
const max = Math.max(...[...rows, ...(comparison ?? [])].map((r) => valueOf(r, metric)), 1);
|
|
119
|
+
const svg = el("svg", { viewBox: `0 0 ${W} ${H}`, width: "100%", role: "img" });
|
|
120
|
+
if (comparison?.length)
|
|
121
|
+
svg.appendChild(el("polyline", {
|
|
122
|
+
points: points(comparison, W, H, pad, max, metric),
|
|
123
|
+
fill: "none",
|
|
124
|
+
stroke: "var(--aiw-muted)",
|
|
125
|
+
"stroke-width": 1.5,
|
|
126
|
+
"stroke-dasharray": "4 4",
|
|
127
|
+
opacity: 0.7,
|
|
128
|
+
}));
|
|
129
|
+
const line = el("polyline", {
|
|
130
|
+
points: points(rows, W, H, pad, max, metric),
|
|
131
|
+
fill: "none",
|
|
132
|
+
stroke: "var(--aiw-accent)",
|
|
133
|
+
"stroke-width": 2.5,
|
|
134
|
+
"stroke-linecap": "round",
|
|
135
|
+
"stroke-linejoin": "round",
|
|
136
|
+
});
|
|
137
|
+
svg.appendChild(line);
|
|
138
|
+
if (animate)
|
|
139
|
+
// The length can only be measured once the node is in a document, so this
|
|
140
|
+
// waits a frame rather than guessing — a guessed length either clips the
|
|
141
|
+
// line or leaves it visibly finishing late.
|
|
142
|
+
requestAnimationFrame(() => {
|
|
143
|
+
const len = typeof line.getTotalLength === "function" ? line.getTotalLength() : 0;
|
|
144
|
+
if (!len)
|
|
145
|
+
return;
|
|
146
|
+
line.setAttribute("stroke-dasharray", String(len));
|
|
147
|
+
line.setAttribute("stroke-dashoffset", String(len));
|
|
148
|
+
animateAttr(line, "stroke-dashoffset", len, 0, 0);
|
|
149
|
+
});
|
|
150
|
+
return svg;
|
|
151
|
+
}
|
|
152
|
+
function drawDonut(rows, animate, metric) {
|
|
153
|
+
const S = 140;
|
|
154
|
+
const r = 46;
|
|
155
|
+
const C = 2 * Math.PI * r;
|
|
156
|
+
const total = rows.reduce((sum, row) => sum + valueOf(row, metric), 0) || 1;
|
|
157
|
+
const svg = el("svg", { viewBox: `0 0 ${S} ${S}`, width: "100%", height: S + 10, role: "img" });
|
|
158
|
+
let acc = 0;
|
|
159
|
+
rows.forEach((row, i) => {
|
|
160
|
+
const frac = valueOf(row, metric) / total;
|
|
161
|
+
const arc = el("circle", {
|
|
162
|
+
cx: S / 2,
|
|
163
|
+
cy: S / 2,
|
|
164
|
+
r,
|
|
165
|
+
fill: "none",
|
|
166
|
+
stroke: i === 0 ? "var(--aiw-accent)" : "var(--aiw-muted)",
|
|
167
|
+
opacity: i === 0 ? 1 : Math.max(0.8 - i * 0.22, 0.25),
|
|
168
|
+
"stroke-width": 16,
|
|
169
|
+
"stroke-dasharray": animate ? `0 ${C}` : `${C * frac} ${C}`,
|
|
170
|
+
"stroke-dashoffset": -C * acc,
|
|
171
|
+
transform: `rotate(-90 ${S / 2} ${S / 2})`,
|
|
172
|
+
});
|
|
173
|
+
if (animate)
|
|
174
|
+
animateAttr(arc, "stroke-dasharray", `0 ${C}`, `${C * frac} ${C}`, i * 0.12);
|
|
175
|
+
svg.appendChild(arc);
|
|
176
|
+
acc += frac;
|
|
177
|
+
});
|
|
178
|
+
return svg;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Chart types this renderer draws WELL, mapped from the vocabulary a backend
|
|
182
|
+
* already speaks.
|
|
183
|
+
*
|
|
184
|
+
* The names on the left are the dashboard widget types — `time_series`,
|
|
185
|
+
* `breakdown`, `kpi`, `table`, `pivot_grid`, `heatmap`, `scatter`, `content` —
|
|
186
|
+
* because that is what a `widget` frame's `spec.chartType` carries. A renderer
|
|
187
|
+
* that invented its own names would draw bars for a time series, which is not a
|
|
188
|
+
* styling difference but a wrong chart.
|
|
189
|
+
*
|
|
190
|
+
* `line` / `bar` / `donut` / `pie` are accepted too, for hosts whose backend
|
|
191
|
+
* speaks in shapes rather than in dashboard types.
|
|
192
|
+
*/
|
|
193
|
+
const DRAWS = {
|
|
194
|
+
time_series: "line",
|
|
195
|
+
line: "line",
|
|
196
|
+
breakdown: "bars",
|
|
197
|
+
bar: "bars",
|
|
198
|
+
donut: "donut",
|
|
199
|
+
pie: "donut",
|
|
200
|
+
};
|
|
201
|
+
/**
|
|
202
|
+
* Build a `renderChartFallback` implementation.
|
|
203
|
+
*
|
|
204
|
+
* ```ts
|
|
205
|
+
* import { createChartFallback } from "sgiant-ai-widget/charts";
|
|
206
|
+
* createAiChatWidget({ renderChartFallback: createChartFallback() });
|
|
207
|
+
* ```
|
|
208
|
+
*
|
|
209
|
+
* IT REFUSES WHAT IT CANNOT DRAW WELL, and that is the important part. `kpi`,
|
|
210
|
+
* `table`, `pivot_grid`, `heatmap`, `scatter` and `content` throw, which the
|
|
211
|
+
* widget catches and falls through to its own built-in — a stat tile for a kpi,
|
|
212
|
+
* a readable table for the rest. A bad heatmap made of rectangles is worse than
|
|
213
|
+
* a table of the same numbers, and a `kpi` is already better served by the
|
|
214
|
+
* built-in stat than by a chart of one bar.
|
|
215
|
+
*
|
|
216
|
+
* This is a FLOOR for surfaces with no charting stack. A host with real chart
|
|
217
|
+
* components should mount those through `renderDataWidget` instead — eight
|
|
218
|
+
* dashboard widget types exist and this draws three of them.
|
|
219
|
+
*/
|
|
220
|
+
export function createChartFallback(options = {}) {
|
|
221
|
+
const { animate = true, height = 140 } = options;
|
|
222
|
+
return function renderChartFallback(host, spec, rows, comparisonRows) {
|
|
223
|
+
const s = (spec ?? {});
|
|
224
|
+
const data = Array.isArray(rows) ? rows : [];
|
|
225
|
+
const draw = DRAWS[String(s.chartType ?? "")];
|
|
226
|
+
// Throwing is how this seam says "not mine" — the widget catches it and
|
|
227
|
+
// renders its built-in instead. Returning quietly would leave an empty box.
|
|
228
|
+
if (!draw || !data.length)
|
|
229
|
+
throw new Error(`sgiant-ai-widget/charts does not draw "${String(s.chartType)}" — ` +
|
|
230
|
+
`falling through to the built-in renderer.`);
|
|
231
|
+
// The model NAMED these. Guessing is what produces a chart of the wrong
|
|
232
|
+
// column, drawn confidently.
|
|
233
|
+
const metric = s.metrics?.[0];
|
|
234
|
+
const moving = animate && !prefersReducedMotion();
|
|
235
|
+
const wrap = document.createElement("div");
|
|
236
|
+
if (s.title) {
|
|
237
|
+
const title = document.createElement("div");
|
|
238
|
+
title.textContent = s.title;
|
|
239
|
+
title.style.cssText =
|
|
240
|
+
"font-size:var(--aiw-font-xs,11px);font-weight:700;text-transform:uppercase;" +
|
|
241
|
+
"letter-spacing:.05em;color:var(--aiw-muted,#6e6e6e);margin-bottom:6px";
|
|
242
|
+
wrap.appendChild(title);
|
|
243
|
+
}
|
|
244
|
+
wrap.appendChild(draw === "line"
|
|
245
|
+
? drawLine(data, Array.isArray(comparisonRows) ? comparisonRows : undefined, height, moving, metric)
|
|
246
|
+
: draw === "donut"
|
|
247
|
+
? drawDonut(data, moving, metric)
|
|
248
|
+
: drawBars(data, height, moving, metric, s.dimension));
|
|
249
|
+
host.appendChild(wrap);
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
//# sourceMappingURL=charts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"charts.js","sourceRoot":"","sources":["../src/charts.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -216,6 +216,28 @@ export interface AiChatWidgetOptions {
|
|
|
216
216
|
subtitle?: string;
|
|
217
217
|
/** Avatar image URL (the brand logo mark). Falls back to a crescent glyph. */
|
|
218
218
|
avatarUrl?: string;
|
|
219
|
+
/**
|
|
220
|
+
* The brand mark as an INLINE SVG string, e.g. `"<svg viewBox=…>…</svg>"`.
|
|
221
|
+
*
|
|
222
|
+
* Wins over `avatarUrl`. An `<img>` cannot inherit the widget's colours or
|
|
223
|
+
* stay crisp at every launcher size, and it costs a network round trip before
|
|
224
|
+
* the bubble looks like itself — which is why a bitmap was never enough for a
|
|
225
|
+
* package other companies brand.
|
|
226
|
+
*
|
|
227
|
+
* Ids inside the mark are made unique per copy, because the widget draws it
|
|
228
|
+
* in both the launcher and the panel header — so a gradient, filter, mask or
|
|
229
|
+
* clip path works in both rather than one of them resolving into the other's
|
|
230
|
+
* hidden subtree. You do not need to prefix them for THAT reason. Prefix them
|
|
231
|
+
* anyway if the host page has its own SVG defs, since ids remain global.
|
|
232
|
+
*
|
|
233
|
+
* THIS IS MARKUP AND IT IS INSERTED AS MARKUP. Pass a mark YOU authored, the
|
|
234
|
+
* same way you would write it into your own page. Never build this string
|
|
235
|
+
* from user input, a URL parameter, or anything a model produced. The only
|
|
236
|
+
* check made here is that it looks like an `<svg>` root and carries no
|
|
237
|
+
* `<script>` — that is a guard against an obvious mistake, NOT sanitisation,
|
|
238
|
+
* and it will not save you from hostile input.
|
|
239
|
+
*/
|
|
240
|
+
avatarSvg?: string;
|
|
219
241
|
/** CSS gradient for the chrome (header/bubble) for a premium look. */
|
|
220
242
|
gradient?: string;
|
|
221
243
|
greeting?: string;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|