@hanzo/ui 8.0.118 → 8.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.
Files changed (46) hide show
  1. package/dist/chat/Code.cjs +1 -1
  2. package/dist/chat/Code.d.ts.map +1 -1
  3. package/dist/chat/Code.js +2 -2
  4. package/dist/chat/Code.js.map +1 -1
  5. package/dist/chat/Message.cjs +38 -2
  6. package/dist/chat/Message.d.ts +17 -1
  7. package/dist/chat/Message.d.ts.map +1 -1
  8. package/dist/chat/Message.js +38 -3
  9. package/dist/chat/Message.js.map +1 -1
  10. package/dist/chat/index.cjs +2 -1
  11. package/dist/chat/index.d.ts +1 -1
  12. package/dist/chat/index.d.ts.map +1 -1
  13. package/dist/chat/index.js +1 -1
  14. package/dist/chat/index.js.map +1 -1
  15. package/dist/gallery.cjs +12 -1
  16. package/dist/gallery.d.ts.map +1 -1
  17. package/dist/gallery.js +12 -1
  18. package/dist/gallery.js.map +1 -1
  19. package/dist/product/DialogTemplate.cjs +23 -0
  20. package/dist/product/DialogTemplate.d.ts +55 -0
  21. package/dist/product/DialogTemplate.d.ts.map +1 -0
  22. package/dist/product/DialogTemplate.js +21 -0
  23. package/dist/product/DialogTemplate.js.map +1 -0
  24. package/dist/product/Skeleton.cjs +33 -0
  25. package/dist/product/Skeleton.d.ts +34 -0
  26. package/dist/product/Skeleton.d.ts.map +1 -0
  27. package/dist/product/Skeleton.js +31 -0
  28. package/dist/product/Skeleton.js.map +1 -0
  29. package/dist/product/Toast.cjs +23 -5
  30. package/dist/product/Toast.d.ts +23 -3
  31. package/dist/product/Toast.d.ts.map +1 -1
  32. package/dist/product/Toast.js +25 -7
  33. package/dist/product/Toast.js.map +1 -1
  34. package/dist/product/TooltipAnchor.cjs +37 -0
  35. package/dist/product/TooltipAnchor.d.ts +42 -0
  36. package/dist/product/TooltipAnchor.d.ts.map +1 -0
  37. package/dist/product/TooltipAnchor.js +35 -0
  38. package/dist/product/TooltipAnchor.js.map +1 -0
  39. package/dist/product/index.cjs +8 -0
  40. package/dist/product/index.d.ts +3 -0
  41. package/dist/product/index.d.ts.map +1 -1
  42. package/dist/product/index.js +8 -0
  43. package/dist/product/index.js.map +1 -1
  44. package/dist/styles/motion.css +7 -4
  45. package/dist/styles.css +53 -4
  46. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Skeleton.d.ts","sourceRoot":"","sources":["../../src/product/Skeleton.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,IAAI,EAAU,MAAM,YAAY,CAAA;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAE3C,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,IAAI,CAAC,CAAA;AAEvD,iBAAS,KAAK,CAAC,EAAE,MAAa,EAAE,OAAc,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,2CAYxE;AAED,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG;IAC9C,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED;;;GAGG;AACH,iBAAS,YAAY,CAAC,EAAE,KAAS,EAAE,GAAU,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,2CAQ3E;AAED,eAAO,MAAM,QAAQ;;CAA+C,CAAA"}
@@ -0,0 +1,31 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ /**
4
+ * Skeleton — the honest "loading", never fabricated content.
5
+ *
6
+ * The shimmer itself has shipped in `styles/motion.css` as `.hz-skeleton` since
7
+ * the living-overview work; what was missing was a component to reach it, so
8
+ * every surface hand-rolled a grey `<div>` and picked its own radius. This is
9
+ * that div, once, sized in the same `$` space as the rest of the package.
10
+ *
11
+ * It renders a BLOCK, not a spinner: a placeholder the size and shape of the
12
+ * thing that is coming keeps the layout from jumping when the data lands. Give
13
+ * it the dimensions of the real content — that is the whole discipline.
14
+ *
15
+ * <Skeleton height="$2" width={180} /> // a line of text
16
+ * <Skeleton height={120} rounded="$4" /> // a card
17
+ * <Skeleton.Text lines={3} /> // a paragraph
18
+ */
19
+ import { View, YStack } from '@hanzo/gui';
20
+ function Block({ height = '$1', rounded = '$2', ...props }) {
21
+ return (_jsx(View, { className: "hz-skeleton", height: height, rounded: rounded, "aria-hidden": true, ...props }));
22
+ }
23
+ /**
24
+ * A paragraph's worth of lines. The last one is short, because a real paragraph
25
+ * ends mid-line and a stack of equal bars reads as a table.
26
+ */
27
+ function SkeletonText({ lines = 3, gap = '$2', ...props }) {
28
+ return (_jsx(YStack, { gap: gap, width: "100%", children: Array.from({ length: Math.max(1, lines) }, (_, i) => (_jsx(Block, { width: i === lines - 1 ? '60%' : '100%', ...props }, i))) }));
29
+ }
30
+ export const Skeleton = Object.assign(Block, { Text: SkeletonText });
31
+ //# sourceMappingURL=Skeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Skeleton.js","sourceRoot":"","sources":["../../src/product/Skeleton.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAKzC,SAAS,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,GAAG,IAAI,EAAE,GAAG,KAAK,EAAiB;IACvE,OAAO,CACL,KAAC,IAAI,IACH,SAAS,EAAC,aAAa,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,0BAIZ,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAOD;;;GAGG;AACH,SAAS,YAAY,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,EAAE,GAAG,KAAK,EAAqB;IAC1E,OAAO,CACL,KAAC,MAAM,IAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAC,MAAM,YAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACpD,KAAC,KAAK,IAAS,KAAK,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,KAAM,KAAK,IAArD,CAAC,CAAwD,CACtE,CAAC,GACK,CACV,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAA"}
@@ -25,17 +25,26 @@ const ToastContext = (0, react_1.createContext)(null);
25
25
  const ACCENT = {
26
26
  success: '$green10',
27
27
  error: '$red10',
28
+ warning: '$yellow10',
28
29
  info: '$color11',
29
30
  };
30
31
  const ICON = {
31
32
  success: lucide_icons_2_1.CircleCheck,
32
33
  error: lucide_icons_2_1.CircleX,
34
+ warning: lucide_icons_2_1.TriangleAlert,
33
35
  info: lucide_icons_2_1.Info,
34
36
  };
37
+ /** How long each kind stays. Anything that went wrong is worth re-reading. */
38
+ const DURATION = {
39
+ success: 3500,
40
+ error: 6000,
41
+ warning: 6000,
42
+ info: 3500,
43
+ };
35
44
  function ToastCard({ t, onClose }) {
36
45
  const Icon = ICON[t.kind];
37
46
  const accent = ACCENT[t.kind];
38
- return ((0, jsx_runtime_1.jsx)(gui_1.Card, { width: 360, maxWidth: "90%", p: "$3", gap: "$2", bg: "$color2", borderWidth: 1, borderColor: "$borderColor", borderLeftWidth: 3, borderLeftColor: accent, rounded: "$4", elevation: "$2", children: (0, jsx_runtime_1.jsxs)(gui_1.XStack, { gap: "$2.5", items: "flex-start", children: [(0, jsx_runtime_1.jsx)(gui_1.YStack, { pt: 1, children: (0, jsx_runtime_1.jsx)(Icon, { size: 18, color: accent }) }), (0, jsx_runtime_1.jsxs)(gui_1.YStack, { flex: 1, gap: "$1", children: [(0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$3", fontWeight: "700", color: "$color12", children: t.title }), t.description ? ((0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$2", color: "$color11", children: t.description })) : null] }), (0, jsx_runtime_1.jsx)(gui_1.Button, { size: "$1", chromeless: true, icon: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.X, { size: 14 }), onPress: onClose, "aria-label": "Dismiss" })] }) }));
47
+ return ((0, jsx_runtime_1.jsx)(gui_1.Card, { width: 360, maxWidth: "90%", p: "$3", gap: "$2", bg: "$color2", borderWidth: 1, borderColor: "$borderColor", borderLeftWidth: 3, borderLeftColor: accent, rounded: "$4", elevation: "$2", children: (0, jsx_runtime_1.jsxs)(gui_1.XStack, { gap: "$2.5", items: "flex-start", children: [t.showIcon ? ((0, jsx_runtime_1.jsx)(gui_1.YStack, { pt: 1, children: (0, jsx_runtime_1.jsx)(Icon, { size: 18, color: accent }) })) : null, (0, jsx_runtime_1.jsxs)(gui_1.YStack, { flex: 1, gap: "$1", children: [(0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$3", fontWeight: "700", color: "$color12", children: t.title }), t.description ? ((0, jsx_runtime_1.jsx)(gui_1.Text, { fontSize: "$2", color: "$color11", children: t.description })) : null] }), (0, jsx_runtime_1.jsx)(gui_1.Button, { size: "$1", chromeless: true, icon: (0, jsx_runtime_1.jsx)(lucide_icons_2_1.X, { size: 14 }), onPress: onClose, "aria-label": "Dismiss" })] }) }));
39
48
  }
40
49
  /** Portalled, fixed top-right stack. Rendered only after mount (SSR-safe). */
41
50
  function ToastViewport({ toasts, dismiss }) {
@@ -61,9 +70,13 @@ function ToastProvider({ children }) {
61
70
  const toast = (0, react_1.useCallback)((input) => {
62
71
  const id = ++seq.current;
63
72
  const kind = input.kind ?? 'info';
64
- const durationMs = input.durationMs ?? (kind === 'error' ? 6000 : 3500);
73
+ const durationMs = input.durationMs ?? DURATION[kind];
74
+ const showIcon = input.showIcon ?? true;
65
75
  track({ component: 'Toast', action: kind === 'error' ? 'error' : 'view', id: input.title, value: kind });
66
- setToasts((ts) => [...ts, { id, kind, title: input.title, description: input.description, durationMs }]);
76
+ setToasts((ts) => [
77
+ ...ts,
78
+ { id, kind, title: input.title, description: input.description, durationMs, showIcon },
79
+ ]);
67
80
  if (durationMs > 0) {
68
81
  timers.current.set(id, setTimeout(() => dismiss(id), durationMs));
69
82
  }
@@ -73,13 +86,18 @@ function ToastProvider({ children }) {
73
86
  const map = timers.current;
74
87
  return () => map.forEach((t) => clearTimeout(t));
75
88
  }, []);
76
- const api = {
89
+ // Memoized because the api is what a consumer holds. Rebuilt every render it
90
+ // is a new identity every render, so any `useCallback`/`useEffect` keyed on it
91
+ // re-runs on each parent render — which is exactly what an adapter wrapping
92
+ // this hook does. `toast` and `dismiss` are already stable.
93
+ const api = (0, react_1.useMemo)(() => ({
77
94
  toast,
78
95
  success: (title, description) => toast({ title, description, kind: 'success' }),
79
96
  error: (title, description) => toast({ title, description, kind: 'error' }),
97
+ warning: (title, description) => toast({ title, description, kind: 'warning' }),
80
98
  info: (title, description) => toast({ title, description, kind: 'info' }),
81
99
  dismiss,
82
- };
100
+ }), [toast, dismiss]);
83
101
  return ((0, jsx_runtime_1.jsxs)(ToastContext.Provider, { value: api, children: [children, (0, jsx_runtime_1.jsx)(ToastViewport, { toasts: toasts, dismiss: dismiss })] }));
84
102
  }
85
103
  function useToast() {
@@ -10,18 +10,39 @@
10
10
  * toast.error(err instanceof ApiError ? err.message : 'Failed to create')
11
11
  */
12
12
  import { type ReactNode } from 'react';
13
- export type ToastKind = 'success' | 'error' | 'info';
13
+ /**
14
+ * The four things a mutation can report. `warning` is here because surfaces
15
+ * genuinely raise it — "saved, but the version did not change", "3 of 5 files
16
+ * downloaded" — and without it those land as `error` (alarming, and wrong) or
17
+ * `info` (invisible). Measured on one surface alone: 14 call sites.
18
+ */
19
+ export type ToastKind = 'success' | 'error' | 'warning' | 'info';
14
20
  export type ToastInput = {
15
21
  title: string;
16
22
  description?: string;
17
23
  kind?: ToastKind;
18
24
  /** Auto-dismiss after this many ms; 0 keeps it until dismissed. */
19
25
  durationMs?: number;
26
+ /** Drop the leading icon. Defaults to showing it. */
27
+ showIcon?: boolean;
28
+ };
29
+ /** A toast on screen: an input with its defaults resolved, and an id. */
30
+ export type Toast = ToastInput & {
31
+ id: number;
32
+ kind: ToastKind;
33
+ durationMs: number;
34
+ showIcon: boolean;
20
35
  };
21
- type ToastApi = {
36
+ /**
37
+ * What `useToast()` answers. Exported because a consumer that passes the api
38
+ * down, or stores it, has to be able to name its type — it could not before,
39
+ * which made the hook awkward to build on.
40
+ */
41
+ export type ToastApi = {
22
42
  toast: (t: ToastInput) => void;
23
43
  success: (title: string, description?: string) => void;
24
44
  error: (title: string, description?: string) => void;
45
+ warning: (title: string, description?: string) => void;
25
46
  info: (title: string, description?: string) => void;
26
47
  dismiss: (id: number) => void;
27
48
  };
@@ -29,5 +50,4 @@ export declare function ToastProvider({ children }: {
29
50
  children: ReactNode;
30
51
  }): import("react/jsx-runtime").JSX.Element;
31
52
  export declare function useToast(): ToastApi;
32
- export {};
33
53
  //# sourceMappingURL=Toast.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../src/product/Toast.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,OAAO,EAAuE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAO3G,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAA;AAEpD,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAID,KAAK,QAAQ,GAAG;IACd,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAA;IAC9B,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACtD,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACpD,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACnD,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CAC9B,CAAA;AAyED,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAoDlE;AAED,wBAAgB,QAAQ,IAAI,QAAQ,CAInC"}
1
+ {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../src/product/Toast.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,OAAO,EAAgF,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAOpH;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAA;AAEhE,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,yEAAyE;AACzE,MAAM,MAAM,KAAK,GAAG,UAAU,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAA;AAEvG;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAA;IAC9B,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACtD,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACpD,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACtD,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACnD,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CAC9B,CAAA;AAqFD,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAgElE;AAED,wBAAgB,QAAQ,IAAI,QAAQ,CAInC"}
@@ -11,27 +11,36 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
11
  * toast.success('Created my-db')
12
12
  * toast.error(err instanceof ApiError ? err.message : 'Failed to create')
13
13
  */
14
- import { createContext, useCallback, useContext, useEffect, useRef, useState } from 'react';
14
+ import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
15
15
  import { createPortal } from 'react-dom';
16
16
  import { Button, Card, Text, XStack, YStack } from '@hanzo/gui';
17
- import { CircleCheck, CircleX, Info, X } from '@hanzogui/lucide-icons-2';
17
+ import { CircleCheck, CircleX, Info, TriangleAlert, X } from '@hanzogui/lucide-icons-2';
18
18
  import { useEmit } from './instrument.js';
19
19
  const ToastContext = createContext(null);
20
20
  /** Theme-aware accent per kind (adapts to light/dark). */
21
21
  const ACCENT = {
22
22
  success: '$green10',
23
23
  error: '$red10',
24
+ warning: '$yellow10',
24
25
  info: '$color11',
25
26
  };
26
27
  const ICON = {
27
28
  success: CircleCheck,
28
29
  error: CircleX,
30
+ warning: TriangleAlert,
29
31
  info: Info,
30
32
  };
33
+ /** How long each kind stays. Anything that went wrong is worth re-reading. */
34
+ const DURATION = {
35
+ success: 3500,
36
+ error: 6000,
37
+ warning: 6000,
38
+ info: 3500,
39
+ };
31
40
  function ToastCard({ t, onClose }) {
32
41
  const Icon = ICON[t.kind];
33
42
  const accent = ACCENT[t.kind];
34
- return (_jsx(Card, { width: 360, maxWidth: "90%", p: "$3", gap: "$2", bg: "$color2", borderWidth: 1, borderColor: "$borderColor", borderLeftWidth: 3, borderLeftColor: accent, rounded: "$4", elevation: "$2", children: _jsxs(XStack, { gap: "$2.5", items: "flex-start", children: [_jsx(YStack, { pt: 1, children: _jsx(Icon, { size: 18, color: accent }) }), _jsxs(YStack, { flex: 1, gap: "$1", children: [_jsx(Text, { fontSize: "$3", fontWeight: "700", color: "$color12", children: t.title }), t.description ? (_jsx(Text, { fontSize: "$2", color: "$color11", children: t.description })) : null] }), _jsx(Button, { size: "$1", chromeless: true, icon: _jsx(X, { size: 14 }), onPress: onClose, "aria-label": "Dismiss" })] }) }));
43
+ return (_jsx(Card, { width: 360, maxWidth: "90%", p: "$3", gap: "$2", bg: "$color2", borderWidth: 1, borderColor: "$borderColor", borderLeftWidth: 3, borderLeftColor: accent, rounded: "$4", elevation: "$2", children: _jsxs(XStack, { gap: "$2.5", items: "flex-start", children: [t.showIcon ? (_jsx(YStack, { pt: 1, children: _jsx(Icon, { size: 18, color: accent }) })) : null, _jsxs(YStack, { flex: 1, gap: "$1", children: [_jsx(Text, { fontSize: "$3", fontWeight: "700", color: "$color12", children: t.title }), t.description ? (_jsx(Text, { fontSize: "$2", color: "$color11", children: t.description })) : null] }), _jsx(Button, { size: "$1", chromeless: true, icon: _jsx(X, { size: 14 }), onPress: onClose, "aria-label": "Dismiss" })] }) }));
35
44
  }
36
45
  /** Portalled, fixed top-right stack. Rendered only after mount (SSR-safe). */
37
46
  function ToastViewport({ toasts, dismiss }) {
@@ -57,9 +66,13 @@ export function ToastProvider({ children }) {
57
66
  const toast = useCallback((input) => {
58
67
  const id = ++seq.current;
59
68
  const kind = input.kind ?? 'info';
60
- const durationMs = input.durationMs ?? (kind === 'error' ? 6000 : 3500);
69
+ const durationMs = input.durationMs ?? DURATION[kind];
70
+ const showIcon = input.showIcon ?? true;
61
71
  track({ component: 'Toast', action: kind === 'error' ? 'error' : 'view', id: input.title, value: kind });
62
- setToasts((ts) => [...ts, { id, kind, title: input.title, description: input.description, durationMs }]);
72
+ setToasts((ts) => [
73
+ ...ts,
74
+ { id, kind, title: input.title, description: input.description, durationMs, showIcon },
75
+ ]);
63
76
  if (durationMs > 0) {
64
77
  timers.current.set(id, setTimeout(() => dismiss(id), durationMs));
65
78
  }
@@ -69,13 +82,18 @@ export function ToastProvider({ children }) {
69
82
  const map = timers.current;
70
83
  return () => map.forEach((t) => clearTimeout(t));
71
84
  }, []);
72
- const api = {
85
+ // Memoized because the api is what a consumer holds. Rebuilt every render it
86
+ // is a new identity every render, so any `useCallback`/`useEffect` keyed on it
87
+ // re-runs on each parent render — which is exactly what an adapter wrapping
88
+ // this hook does. `toast` and `dismiss` are already stable.
89
+ const api = useMemo(() => ({
73
90
  toast,
74
91
  success: (title, description) => toast({ title, description, kind: 'success' }),
75
92
  error: (title, description) => toast({ title, description, kind: 'error' }),
93
+ warning: (title, description) => toast({ title, description, kind: 'warning' }),
76
94
  info: (title, description) => toast({ title, description, kind: 'info' }),
77
95
  dismiss,
78
- };
96
+ }), [toast, dismiss]);
79
97
  return (_jsxs(ToastContext.Provider, { value: api, children: [children, _jsx(ToastViewport, { toasts: toasts, dismiss: dismiss })] }));
80
98
  }
81
99
  export function useToast() {
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.js","sourceRoot":"","sources":["../../src/product/Toast.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Toast.js","sourceRoot":"","sources":["../../src/product/Toast.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ 'use client';"use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.TooltipAnchor = TooltipAnchor;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ /**
7
+ * TooltipAnchor — a hint on one element, in one prop.
8
+ *
9
+ * The Tooltip primitive is a triple: root, trigger, content. That shape is
10
+ * right when the hint is rich, and it is three levels of nesting when the hint
11
+ * is a sentence — which is nearly always. Measured on a real surface, 48 call
12
+ * sites wanted the same thing: wrap this control, say this string on hover.
13
+ * So say it in one prop.
14
+ *
15
+ * <TooltipAnchor description="Delete this agent">
16
+ * <Button icon={<Trash />} />
17
+ * </TooltipAnchor>
18
+ *
19
+ * `description` is a STRING, deliberately. A tooltip is an accessible name for
20
+ * a control that has none, so it is also spelled onto the child as
21
+ * `aria-label` — which markup cannot be. A hint that needs layout is not a
22
+ * tooltip; reach for the triple, or a HoverCard.
23
+ *
24
+ * An empty or absent `description` renders the child alone, with no wrapper and
25
+ * no listeners: a disabled hint costs nothing and needs no branch at the call
26
+ * site.
27
+ */
28
+ const react_1 = require("react");
29
+ const tooltip_1 = require("../backends/gui/tooltip.cjs");
30
+ function TooltipAnchor({ description, children, side = 'top', delayMs, label = true, }) {
31
+ if (!description)
32
+ return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children });
33
+ const child = label && (0, react_1.isValidElement)(children) && !children.props['aria-label']
34
+ ? (0, react_1.cloneElement)(children, { 'aria-label': description })
35
+ : children;
36
+ return ((0, jsx_runtime_1.jsxs)(tooltip_1.Tooltip, { placement: side, ...(delayMs === undefined ? {} : { delay: delayMs }), children: [(0, jsx_runtime_1.jsx)(tooltip_1.TooltipTrigger, { asChild: true, children: child }), (0, jsx_runtime_1.jsx)(tooltip_1.TooltipContent, { children: description })] }));
37
+ }
@@ -0,0 +1,42 @@
1
+ /**
2
+ * TooltipAnchor — a hint on one element, in one prop.
3
+ *
4
+ * The Tooltip primitive is a triple: root, trigger, content. That shape is
5
+ * right when the hint is rich, and it is three levels of nesting when the hint
6
+ * is a sentence — which is nearly always. Measured on a real surface, 48 call
7
+ * sites wanted the same thing: wrap this control, say this string on hover.
8
+ * So say it in one prop.
9
+ *
10
+ * <TooltipAnchor description="Delete this agent">
11
+ * <Button icon={<Trash />} />
12
+ * </TooltipAnchor>
13
+ *
14
+ * `description` is a STRING, deliberately. A tooltip is an accessible name for
15
+ * a control that has none, so it is also spelled onto the child as
16
+ * `aria-label` — which markup cannot be. A hint that needs layout is not a
17
+ * tooltip; reach for the triple, or a HoverCard.
18
+ *
19
+ * An empty or absent `description` renders the child alone, with no wrapper and
20
+ * no listeners: a disabled hint costs nothing and needs no branch at the call
21
+ * site.
22
+ */
23
+ import { type ReactNode } from 'react';
24
+ export type TooltipSide = 'top' | 'right' | 'bottom' | 'left';
25
+ export type TooltipAnchorProps = {
26
+ /** The hint. Empty or absent renders the child untouched. */
27
+ description?: string;
28
+ children: ReactNode;
29
+ /** Which edge the hint sits on. Defaults to `top`. */
30
+ side?: TooltipSide;
31
+ /** Delay before it opens, in ms. */
32
+ delayMs?: number;
33
+ /**
34
+ * By default the hint also becomes the child's `aria-label`, because the
35
+ * control it labels usually has no text of its own. Turn this off when the
36
+ * child already names itself and the hint only elaborates — two names on one
37
+ * control is worse than none.
38
+ */
39
+ label?: boolean;
40
+ };
41
+ export declare function TooltipAnchor({ description, children, side, delayMs, label, }: TooltipAnchorProps): import("react/jsx-runtime").JSX.Element;
42
+ //# sourceMappingURL=TooltipAnchor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TooltipAnchor.d.ts","sourceRoot":"","sources":["../../src/product/TooltipAnchor.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAmD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAIvF,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAA;AAE7D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,SAAS,CAAA;IACnB,sDAAsD;IACtD,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,wBAAgB,aAAa,CAAC,EAC5B,WAAW,EACX,QAAQ,EACR,IAAY,EACZ,OAAO,EACP,KAAY,GACb,EAAE,kBAAkB,2CAcpB"}
@@ -0,0 +1,35 @@
1
+ 'use client';
2
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * TooltipAnchor — a hint on one element, in one prop.
5
+ *
6
+ * The Tooltip primitive is a triple: root, trigger, content. That shape is
7
+ * right when the hint is rich, and it is three levels of nesting when the hint
8
+ * is a sentence — which is nearly always. Measured on a real surface, 48 call
9
+ * sites wanted the same thing: wrap this control, say this string on hover.
10
+ * So say it in one prop.
11
+ *
12
+ * <TooltipAnchor description="Delete this agent">
13
+ * <Button icon={<Trash />} />
14
+ * </TooltipAnchor>
15
+ *
16
+ * `description` is a STRING, deliberately. A tooltip is an accessible name for
17
+ * a control that has none, so it is also spelled onto the child as
18
+ * `aria-label` — which markup cannot be. A hint that needs layout is not a
19
+ * tooltip; reach for the triple, or a HoverCard.
20
+ *
21
+ * An empty or absent `description` renders the child alone, with no wrapper and
22
+ * no listeners: a disabled hint costs nothing and needs no branch at the call
23
+ * site.
24
+ */
25
+ import { cloneElement, isValidElement } from 'react';
26
+ import { Tooltip, TooltipContent, TooltipTrigger } from '../backends/gui/tooltip.js';
27
+ export function TooltipAnchor({ description, children, side = 'top', delayMs, label = true, }) {
28
+ if (!description)
29
+ return _jsx(_Fragment, { children: children });
30
+ const child = label && isValidElement(children) && !children.props['aria-label']
31
+ ? cloneElement(children, { 'aria-label': description })
32
+ : children;
33
+ return (_jsxs(Tooltip, { placement: side, ...(delayMs === undefined ? {} : { delay: delayMs }), children: [_jsx(TooltipTrigger, { asChild: true, children: child }), _jsx(TooltipContent, { children: description })] }));
34
+ }
35
+ //# sourceMappingURL=TooltipAnchor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TooltipAnchor.js","sourceRoot":"","sources":["../../src/product/TooltipAnchor.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,YAAY,EAAE,cAAc,EAAqC,MAAM,OAAO,CAAA;AAEvF,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAqBjF,MAAM,UAAU,aAAa,CAAC,EAC5B,WAAW,EACX,QAAQ,EACR,IAAI,GAAG,KAAK,EACZ,OAAO,EACP,KAAK,GAAG,IAAI,GACO;IACnB,IAAI,CAAC,WAAW;QAAE,OAAO,4BAAG,QAAQ,GAAI,CAAA;IAExC,MAAM,KAAK,GACT,KAAK,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAE,QAAQ,CAAC,KAAmC,CAAC,YAAY,CAAC;QAC/F,CAAC,CAAC,YAAY,CAAC,QAAmD,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;QAClG,CAAC,CAAC,QAAQ,CAAA;IAEd,OAAO,CACL,MAAC,OAAO,IAAC,SAAS,EAAE,IAAI,KAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,aAC7E,KAAC,cAAc,IAAC,OAAO,kBAAE,KAAK,GAAkB,EAChD,KAAC,cAAc,cAAE,WAAW,GAAkB,IACtC,CACX,CAAA;AACH,CAAC"}
@@ -125,10 +125,18 @@ __exportStar(require("./ProductIcon.cjs"), exports);
125
125
  __exportStar(require("./ProviderLogo.cjs"), exports);
126
126
  __exportStar(require("./Reorder.cjs"), exports);
127
127
  __exportStar(require("./SelectMenu.cjs"), exports);
128
+ __exportStar(require("./Skeleton.cjs"), exports);
128
129
  __exportStar(require("./SlideOver.cjs"), exports);
129
130
  __exportStar(require("./StatusTag.cjs"), exports);
130
131
  __exportStar(require("./tone.cjs"), exports);
131
132
  __exportStar(require("./ThemeToggle.cjs"), exports);
133
+ // `DialogTemplate` and `TooltipAnchor` are the two arrangements every surface
134
+ // was already writing by hand over the Dialog and Tooltip primitives — a
135
+ // titled dialog with a cancel/confirm footer, and a one-string hint on a
136
+ // control. The primitives stay exported for the cases that genuinely are not
137
+ // those shapes; reaching for them is the signal you have left the common case.
138
+ __exportStar(require("./DialogTemplate.cjs"), exports);
139
+ __exportStar(require("./TooltipAnchor.cjs"), exports);
132
140
  // `ThemeToggleNext` is NOT re-exported here, and that is the whole reason this
133
141
  // comment exists. It is the @hanzogui/next-theme binding, and next-theme's
134
142
  // provider imports `next/script` — so a static edge from this barrel put Next in
@@ -41,10 +41,13 @@ export * from './ProductIcon.js';
41
41
  export * from './ProviderLogo.js';
42
42
  export * from './Reorder.js';
43
43
  export * from './SelectMenu.js';
44
+ export * from './Skeleton.js';
44
45
  export * from './SlideOver.js';
45
46
  export * from './StatusTag.js';
46
47
  export * from './tone.js';
47
48
  export * from './ThemeToggle.js';
49
+ export * from './DialogTemplate.js';
50
+ export * from './TooltipAnchor.js';
48
51
  export * from './Toast.js';
49
52
  export * from './accent.js';
50
53
  export * from './color.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/product/index.ts"],"names":[],"mappings":"AAaA,cAAc,UAAU,CAAA;AAKxB,OAAO,EACL,MAAM,EACN,aAAa,EACb,SAAS,EACT,SAAS,IAAI,eAAe,EAC5B,QAAQ,EACR,OAAO,EACP,SAAS,EACT,UAAU,EACV,UAAU,EACV,KAAK,GACN,MAAM,UAAU,CAAA;AAGjB,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAA;AAK/D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,cAAc,mBAAmB,CAAA;AASjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AAKvB,cAAc,QAAQ,CAAA;AAKtB,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAK5B,cAAc,QAAQ,CAAA;AACtB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AAOzB,cAAc,cAAc,CAAA;AAK5B,cAAc,YAAY,CAAA;AAO1B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAI7B,cAAc,cAAc,CAAA;AAG5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAM5B,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAc7B,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AASvB,cAAc,UAAU,CAAA;AAKxB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/product/index.ts"],"names":[],"mappings":"AAaA,cAAc,UAAU,CAAA;AAKxB,OAAO,EACL,MAAM,EACN,aAAa,EACb,SAAS,EACT,SAAS,IAAI,eAAe,EAC5B,QAAQ,EACR,OAAO,EACP,SAAS,EACT,UAAU,EACV,UAAU,EACV,KAAK,GACN,MAAM,UAAU,CAAA;AAGjB,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAA;AAK/D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,cAAc,mBAAmB,CAAA;AASjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AAKvB,cAAc,QAAQ,CAAA;AAKtB,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAK5B,cAAc,QAAQ,CAAA;AACtB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AAOzB,cAAc,cAAc,CAAA;AAK5B,cAAc,YAAY,CAAA;AAO1B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAI7B,cAAc,cAAc,CAAA;AAG5B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAM5B,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,QAAQ,CAAA;AACtB,cAAc,eAAe,CAAA;AAM7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAc/B,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AASvB,cAAc,UAAU,CAAA;AAKxB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAA"}
@@ -96,10 +96,18 @@ export * from './ProductIcon.js';
96
96
  export * from './ProviderLogo.js';
97
97
  export * from './Reorder.js';
98
98
  export * from './SelectMenu.js';
99
+ export * from './Skeleton.js';
99
100
  export * from './SlideOver.js';
100
101
  export * from './StatusTag.js';
101
102
  export * from './tone.js';
102
103
  export * from './ThemeToggle.js';
104
+ // `DialogTemplate` and `TooltipAnchor` are the two arrangements every surface
105
+ // was already writing by hand over the Dialog and Tooltip primitives — a
106
+ // titled dialog with a cancel/confirm footer, and a one-string hint on a
107
+ // control. The primitives stay exported for the cases that genuinely are not
108
+ // those shapes; reaching for them is the signal you have left the common case.
109
+ export * from './DialogTemplate.js';
110
+ export * from './TooltipAnchor.js';
103
111
  // `ThemeToggleNext` is NOT re-exported here, and that is the whole reason this
104
112
  // comment exists. It is the @hanzogui/next-theme binding, and next-theme's
105
113
  // provider imports `next/script` — so a static edge from this barrel put Next in
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/product/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/product/index.ts"],"names":[],"mappings":"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"}
@@ -14,10 +14,13 @@
14
14
  a stylesheet it never opened. A library's utility classes are its namespace,
15
15
  so they carry its name.
16
16
 
17
- The unprefixed selectors are kept as aliases on the SAME rule for one minor
18
- version so nothing breaks mid-flight, and are REMOVED IN 8.1.0. Nothing in
19
- this package emits them any more — they exist only for a consumer who typed
20
- `className="skeleton"` against the old sheet. Keyframe names are prefixed too
17
+ The unprefixed selectors are kept as aliases on the SAME rule so nothing
18
+ breaks mid-flight, and are REMOVED IN 8.2.0. Nothing in this package emits
19
+ them any more — they exist only for a consumer who typed
20
+ `className="skeleton"` against the old sheet. (The target was 8.1.0, and
21
+ 8.1.0 went out carrying additions instead. Moving the date is the honest
22
+ edit: shipping the version a comment says removed something, without
23
+ removing it, is how a deprecation note stops being read.) Keyframe names are prefixed too
21
24
  and have no alias: nothing outside this file ever referenced them. */
22
25
 
23
26
  /* Fade-up entrance — <FadeIn> applies the class + a per-item stagger delay.