@alfadocs/ui-kit 1.43.0 → 1.45.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/dist/_chunks/ai-sparkle-DXeP_6a0.js +52 -0
- package/dist/_chunks/{calendar-ChJQzRw-.js → calendar-U6N0F99w.js} +383 -359
- package/dist/_chunks/calendar-workspace-B7KvZ1_D.js +12161 -0
- package/dist/_chunks/{face-scheme-Dg6ZyLKb.js → face-scheme-Bm6pe7R8.js} +265 -275
- package/dist/_chunks/help-me-write-templates-GUeEn3Ff.js +741 -0
- package/dist/_chunks/{notes-panel-CRAovkjx.js → notes-panel-Dkk9QPPX.js} +159 -152
- package/dist/_chunks/{panel-subview-PMBRPFOa.js → panel-subview-CYnuX-KR.js} +61 -40
- package/dist/_chunks/rich-text-editor-BrAvNajV.js +3779 -0
- package/dist/_chunks/undo-2-CYNAzclj.js +26 -0
- package/dist/_chunks/use-ai-sparkle-CyQSRTCe.js +103 -0
- package/dist/_chunks/variables-menu-vXUaSBj4.js +401 -0
- package/dist/agent-catalog.json +84 -3
- package/dist/agent-i18n/en.json +14 -3
- package/dist/components/ai-sparkle/ai-sparkle.d.ts +24 -0
- package/dist/components/ai-sparkle/index.d.ts +3 -0
- package/dist/components/ai-sparkle/index.js +5 -0
- package/dist/components/calendar/calendar.d.ts +6 -0
- package/dist/components/calendar/index.js +1 -1
- package/dist/components/face-scheme/index.js +1 -1
- package/dist/components/index.d.ts +4 -2
- package/dist/components/notes-panel/index.js +1 -1
- package/dist/components/notes-panel/notes-panel.d.ts +4 -0
- package/dist/components/panel-subview/index.js +1 -1
- package/dist/components/panel-subview/panel-subview.d.ts +6 -0
- package/dist/components/rich-text-editor/editor-toolbar.d.ts +35 -3
- package/dist/components/rich-text-editor/index.d.ts +1 -1
- package/dist/components/rich-text-editor/index.js +1 -1
- package/dist/components/rich-text-editor/rich-text-editor.d.ts +98 -15
- package/dist/components/variables-menu/index.d.ts +4 -0
- package/dist/components/variables-menu/index.js +6 -0
- package/dist/components/variables-menu/variables-menu.agent.d.ts +10 -0
- package/dist/components/variables-menu/variables-menu.d.ts +53 -0
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.js +64 -56
- package/dist/hooks/use-ai-sparkle.d.ts +109 -0
- package/dist/host-compat.css +5 -5
- package/dist/i18n/locales/ar.d.ts +77 -6
- package/dist/i18n/locales/ar.js +78 -7
- package/dist/i18n/locales/de.d.ts +77 -6
- package/dist/i18n/locales/de.js +78 -7
- package/dist/i18n/locales/el.d.ts +77 -6
- package/dist/i18n/locales/el.js +78 -7
- package/dist/i18n/locales/en.d.ts +77 -6
- package/dist/i18n/locales/en.js +85 -7
- package/dist/i18n/locales/es.d.ts +77 -6
- package/dist/i18n/locales/es.js +78 -7
- package/dist/i18n/locales/fr.d.ts +77 -6
- package/dist/i18n/locales/fr.js +78 -7
- package/dist/i18n/locales/hi.d.ts +77 -6
- package/dist/i18n/locales/hi.js +78 -7
- package/dist/i18n/locales/it.d.ts +77 -6
- package/dist/i18n/locales/it.js +78 -7
- package/dist/i18n/locales/ja.d.ts +77 -6
- package/dist/i18n/locales/ja.js +78 -7
- package/dist/i18n/locales/nl.d.ts +77 -6
- package/dist/i18n/locales/nl.js +78 -7
- package/dist/i18n/locales/pl.d.ts +77 -6
- package/dist/i18n/locales/pl.js +78 -7
- package/dist/i18n/locales/pt.d.ts +77 -6
- package/dist/i18n/locales/pt.js +78 -7
- package/dist/i18n/locales/ro.d.ts +77 -6
- package/dist/i18n/locales/ro.js +78 -7
- package/dist/i18n/locales/ru.d.ts +77 -6
- package/dist/i18n/locales/ru.js +78 -7
- package/dist/i18n/locales/sq.d.ts +77 -6
- package/dist/i18n/locales/sq.js +78 -7
- package/dist/i18n/locales/sv.d.ts +77 -6
- package/dist/i18n/locales/sv.js +78 -7
- package/dist/i18n/locales/tr.d.ts +77 -6
- package/dist/i18n/locales/tr.js +78 -7
- package/dist/i18n/locales/zh.d.ts +77 -6
- package/dist/i18n/locales/zh.js +78 -7
- package/dist/index.js +1106 -1099
- package/dist/locales/ar.json +78 -7
- package/dist/locales/de.json +78 -7
- package/dist/locales/el.json +78 -7
- package/dist/locales/en.json +78 -7
- package/dist/locales/es.json +78 -7
- package/dist/locales/fr.json +78 -7
- package/dist/locales/hi.json +78 -7
- package/dist/locales/it.json +78 -7
- package/dist/locales/ja.json +78 -7
- package/dist/locales/nl.json +78 -7
- package/dist/locales/pl.json +78 -7
- package/dist/locales/pt.json +78 -7
- package/dist/locales/ro.json +78 -7
- package/dist/locales/ru.json +78 -7
- package/dist/locales/sq.json +78 -7
- package/dist/locales/sv.json +78 -7
- package/dist/locales/tr.json +78 -7
- package/dist/locales/zh.json +78 -7
- package/dist/patterns/calendar/calendar-bookings-panel.d.ts +8 -3
- package/dist/patterns/calendar/calendar-care-rules.d.ts +49 -0
- package/dist/patterns/calendar/calendar-task-editor.d.ts +31 -0
- package/dist/patterns/calendar/calendar-workspace.d.ts +8 -1
- package/dist/patterns/calendar/calendar-workspace.model.d.ts +39 -12
- package/dist/patterns/calendar/calendar.data.d.ts +9 -0
- package/dist/patterns/calendar/calendar.journey.d.ts +35 -3
- package/dist/patterns/calendar/calendar.model.d.ts +23 -1
- package/dist/patterns/calendar/calendar.sheets.d.ts +21 -3
- package/dist/patterns/calendar/calendar.surface.d.ts +6 -1
- package/dist/patterns/calendar/calendar.types.d.ts +32 -1
- package/dist/patterns/calendar/index.js +1 -1
- package/dist/patterns/help-me-write-templates/help-me-write-templates.d.ts +58 -26
- package/dist/patterns/help-me-write-templates/index.d.ts +1 -1
- package/dist/patterns/help-me-write-templates/index.js +1 -1
- package/dist/tokens.css +6 -6
- package/package.json +5 -1
- package/dist/_chunks/calendar-workspace-DhXqqu-D.js +0 -11392
- package/dist/_chunks/help-me-write-templates-B-m7zgJa.js +0 -775
- package/dist/_chunks/highlighter-DSkckT2Q.js +0 -15
- package/dist/_chunks/rich-text-editor-DUMeifwc.js +0 -3176
- package/dist/_chunks/wand-sparkles-DAjKyhz7.js +0 -27
package/dist/hooks/index.js
CHANGED
|
@@ -1,40 +1,41 @@
|
|
|
1
|
-
import { u as
|
|
2
|
-
import { u as
|
|
3
|
-
import { Z as
|
|
4
|
-
import { u as
|
|
5
|
-
import { u as
|
|
6
|
-
import { A as
|
|
7
|
-
import { u as
|
|
8
|
-
import { u as
|
|
1
|
+
import { u as R } from "../_chunks/use-prefers-reduced-motion-BMwIQRjB.js";
|
|
2
|
+
import { u as I } from "../_chunks/use-media-query-CcAx5SMM.js";
|
|
3
|
+
import { Z as h, u as v, a as y, b as w } from "../_chunks/use-zoom-drilldown-qCX34w9I.js";
|
|
4
|
+
import { u as K } from "../_chunks/use-count-up-BLLetaZ8.js";
|
|
5
|
+
import { u as M } from "../_chunks/use-locale-BkCIHujH.js";
|
|
6
|
+
import { A as k, T as H, a as W, r as B, t as V, u as Y } from "../_chunks/use-theme-CAuo6EYT.js";
|
|
7
|
+
import { u as N } from "../_chunks/use-controllable-state-BiY4xTzM.js";
|
|
8
|
+
import { u as Z } from "../_chunks/use-copy-to-clipboard-Cyfc_dlv.js";
|
|
9
9
|
import { u as j } from "../_chunks/use-debounced-callback-BisrB-Fq.js";
|
|
10
|
-
import { useState as
|
|
10
|
+
import { useState as A, useRef as S, useEffect as E } from "react";
|
|
11
11
|
import { u as Q, a as J } from "../_chunks/use-direction-Dp8h70PP.js";
|
|
12
12
|
import { u as $ } from "../_chunks/use-persistent-state-nZwZAnE9.js";
|
|
13
13
|
import { u as te } from "../_chunks/use-isomorphic-layout-effect-BGfaCOP1.js";
|
|
14
|
-
import { u as oe, a as
|
|
14
|
+
import { u as oe, a as se } from "../_chunks/use-scroll-overflow-UbLrUfBo.js";
|
|
15
15
|
import { c as ne, u as ae } from "../_chunks/use-priority-overflow-c9SjxZkZ.js";
|
|
16
16
|
import { u as ce } from "../_chunks/use-web-otp-D_utzp6S.js";
|
|
17
17
|
import { u as fe } from "../_chunks/use-visual-viewport-pin-ChurOsHM.js";
|
|
18
18
|
import { u as de } from "../_chunks/use-edge-resize-BHesP0kg.js";
|
|
19
|
-
import { u as
|
|
20
|
-
import { u as
|
|
21
|
-
import { R as
|
|
22
|
-
import { u as
|
|
23
|
-
import { u as
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
import { u as Se } from "../_chunks/use-countdown-Yd6ts0_a.js";
|
|
20
|
+
import { u as Ae } from "../_chunks/use-check-animation--I3cS00X.js";
|
|
21
|
+
import { R as Le, u as _e, a as Ce } from "../_chunks/use-list-reflow-Cw43nxw5.js";
|
|
22
|
+
import { u as be } from "../_chunks/use-presence-transition-cDwWUXV-.js";
|
|
23
|
+
import { u as Oe } from "../_chunks/use-clamp-overflow-DQE2kwZ9.js";
|
|
24
|
+
import { B as Pe, b as he, C as ve, a as ye, S as we, c as De, u as Ke } from "../_chunks/use-ai-sparkle-CyQSRTCe.js";
|
|
25
|
+
function _(e, o) {
|
|
26
|
+
const [t, i] = A(e), s = S(null);
|
|
26
27
|
return E(() => {
|
|
27
28
|
if (o <= 0) {
|
|
28
|
-
|
|
29
|
+
s.current !== null && (clearTimeout(s.current), s.current = null), i(e);
|
|
29
30
|
return;
|
|
30
31
|
}
|
|
31
32
|
const n = setTimeout(() => {
|
|
32
|
-
i(e),
|
|
33
|
+
i(e), s.current = null;
|
|
33
34
|
}, o);
|
|
34
|
-
return
|
|
35
|
+
return s.current = n, () => clearTimeout(n);
|
|
35
36
|
}, [e, o]), t;
|
|
36
37
|
}
|
|
37
|
-
const
|
|
38
|
+
const x = [
|
|
38
39
|
"a[href]",
|
|
39
40
|
"button:not([disabled])",
|
|
40
41
|
'input:not([disabled]):not([type="hidden"])',
|
|
@@ -47,7 +48,7 @@ const S = [
|
|
|
47
48
|
].join(",");
|
|
48
49
|
function p(e) {
|
|
49
50
|
return Array.from(
|
|
50
|
-
e.querySelectorAll(
|
|
51
|
+
e.querySelectorAll(x)
|
|
51
52
|
).filter((o) => {
|
|
52
53
|
if (o.hidden) return !1;
|
|
53
54
|
let t = o;
|
|
@@ -58,75 +59,82 @@ function p(e) {
|
|
|
58
59
|
return !0;
|
|
59
60
|
});
|
|
60
61
|
}
|
|
61
|
-
function
|
|
62
|
-
const { enabled: t = !0, autoFocus: i = !0, restoreFocus:
|
|
62
|
+
function C(e, o = {}) {
|
|
63
|
+
const { enabled: t = !0, autoFocus: i = !0, restoreFocus: s = !0 } = o, n = S(null);
|
|
63
64
|
E(() => {
|
|
64
65
|
if (!t) return;
|
|
65
66
|
const a = e.current;
|
|
66
67
|
if (!a) return;
|
|
67
68
|
if (n.current = typeof document < "u" && document.activeElement instanceof HTMLElement ? document.activeElement : null, i) {
|
|
68
|
-
const
|
|
69
|
-
|
|
69
|
+
const u = p(a)[0] ?? (a.tabIndex >= -1 ? a : null);
|
|
70
|
+
u == null || u.focus();
|
|
70
71
|
}
|
|
71
72
|
function f(r) {
|
|
72
73
|
if (r.key !== "Tab") return;
|
|
73
|
-
const
|
|
74
|
-
if (!
|
|
75
|
-
const c = p(
|
|
74
|
+
const u = e.current;
|
|
75
|
+
if (!u) return;
|
|
76
|
+
const c = p(u);
|
|
76
77
|
if (c.length === 0) {
|
|
77
78
|
r.preventDefault();
|
|
78
79
|
return;
|
|
79
80
|
}
|
|
80
81
|
const m = c[0], d = c[c.length - 1], l = document.activeElement;
|
|
81
|
-
r.shiftKey ? (l === m || !
|
|
82
|
+
r.shiftKey ? (l === m || !u.contains(l)) && (r.preventDefault(), d.focus()) : (l === d || !u.contains(l)) && (r.preventDefault(), m.focus());
|
|
82
83
|
}
|
|
83
84
|
return a.addEventListener("keydown", f), () => {
|
|
84
|
-
if (a.removeEventListener("keydown", f),
|
|
85
|
+
if (a.removeEventListener("keydown", f), s && n.current) {
|
|
85
86
|
const r = n.current;
|
|
86
87
|
requestAnimationFrame(() => {
|
|
87
88
|
r.isConnected && r.focus();
|
|
88
89
|
});
|
|
89
90
|
}
|
|
90
91
|
};
|
|
91
|
-
}, [t, i,
|
|
92
|
+
}, [t, i, s, e]);
|
|
92
93
|
}
|
|
93
94
|
export {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
95
|
+
k as ACCESSIBILITY_STORAGE_KEY,
|
|
96
|
+
Pe as AI_SPARKLE_BURST_CLASS,
|
|
97
|
+
he as AI_SPARKLE_COMET_CLASS,
|
|
98
|
+
ve as AI_SPARKLE_COMET_TAIL,
|
|
99
|
+
ye as AI_SPARKLE_COMET_WRAPPER_CLASS,
|
|
100
|
+
we as AI_SPARKLE_GLYPHS,
|
|
101
|
+
De as AI_SPARKLE_SHIMMER_CLASS,
|
|
102
|
+
Le as REFLOW_ROW_CLASS,
|
|
103
|
+
H as THEME_CLASS,
|
|
97
104
|
W as THEME_STORAGE_KEY,
|
|
98
|
-
|
|
105
|
+
h as ZOOM_DRILLDOWN_TRANSITION_CLASS,
|
|
99
106
|
ne as computePriorityLayout,
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
107
|
+
B as resolveTheme,
|
|
108
|
+
V as themeClassList,
|
|
109
|
+
Ke as useAiSparkle,
|
|
110
|
+
Ae as useCheckAnimation,
|
|
111
|
+
Oe as useClampOverflow,
|
|
112
|
+
N as useControllableState,
|
|
113
|
+
Z as useCopyToClipboard,
|
|
114
|
+
K as useCountUp,
|
|
115
|
+
Se as useCountdown,
|
|
108
116
|
j as useDebouncedCallback,
|
|
109
|
-
|
|
117
|
+
_ as useDebouncedValue,
|
|
110
118
|
Q as useDirection,
|
|
111
119
|
J as useDocumentDirection,
|
|
112
120
|
de as useEdgeResize,
|
|
113
|
-
|
|
114
|
-
|
|
121
|
+
_e as useExitTransition,
|
|
122
|
+
C as useFocusTrap,
|
|
115
123
|
te as useIsomorphicLayoutEffect,
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
124
|
+
Ce as useListReflow,
|
|
125
|
+
M as useLocale,
|
|
126
|
+
I as useMediaQuery,
|
|
119
127
|
oe as useOverflowCollapse,
|
|
120
128
|
$ as usePersistentState,
|
|
121
|
-
|
|
122
|
-
|
|
129
|
+
R as usePrefersReducedMotion,
|
|
130
|
+
be as usePresenceTransition,
|
|
123
131
|
ae as usePriorityOverflow,
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
132
|
+
se as useScrollOverflow,
|
|
133
|
+
v as useScrollToFirstError,
|
|
134
|
+
y as useSigningSession,
|
|
127
135
|
Y as useTheme,
|
|
128
136
|
fe as useVisualViewportPin,
|
|
129
137
|
ce as useWebOtp,
|
|
130
|
-
|
|
138
|
+
w as useZoomDrilldown
|
|
131
139
|
};
|
|
132
140
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/** Where the sparkle is: on first show, while an action runs, as it lands. */
|
|
2
|
+
export type AiSparkleState = 'intro' | 'working' | 'landed';
|
|
3
|
+
export declare const SHIMMER_CLASS: Record<AiSparkleState, string>;
|
|
4
|
+
export declare const COMET_CLASS: Record<AiSparkleState, string>;
|
|
5
|
+
export declare const BURST_CLASS: Record<AiSparkleState, string>;
|
|
6
|
+
export declare const SPARKLE_GLYPHS: readonly [{
|
|
7
|
+
readonly key: "start";
|
|
8
|
+
readonly className: "ds:absolute ds:opacity-0 ds:text-[color:var(--ai-sparkle)] ds:fill-current ds:drop-shadow-[0_0_var(--spacing-2xs)_var(--ai-sparkle)] ds:[animation-delay:calc(var(--animation-duration)*(var(--sparkle-base)+var(--sparkle-stagger)))] ds:[--sparkle-stagger:0] ds:size-3 ds:[inset-block-start:calc(var(--spacing-xs)*-1)] ds:[inset-inline-start:calc(var(--spacing-2xs)*-1)]";
|
|
9
|
+
}, {
|
|
10
|
+
readonly key: "top";
|
|
11
|
+
readonly className: "ds:absolute ds:opacity-0 ds:text-[color:var(--ai-sparkle)] ds:fill-current ds:drop-shadow-[0_0_var(--spacing-2xs)_var(--ai-sparkle)] ds:[animation-delay:calc(var(--animation-duration)*(var(--sparkle-base)+var(--sparkle-stagger)))] ds:[--sparkle-stagger:0.5] ds:size-4 ds:[inset-block-start:calc(var(--spacing-sm)*-1)] ds:[inset-inline-start:40%]";
|
|
12
|
+
}, {
|
|
13
|
+
readonly key: "end";
|
|
14
|
+
readonly className: "ds:absolute ds:opacity-0 ds:text-[color:var(--ai-sparkle)] ds:fill-current ds:drop-shadow-[0_0_var(--spacing-2xs)_var(--ai-sparkle)] ds:[animation-delay:calc(var(--animation-duration)*(var(--sparkle-base)+var(--sparkle-stagger)))] ds:[--sparkle-stagger:1] ds:size-3 ds:[inset-block-start:calc(var(--spacing-xs)*-1)] ds:[inset-inline-end:var(--spacing-md)]";
|
|
15
|
+
}, {
|
|
16
|
+
readonly key: "side";
|
|
17
|
+
readonly className: "ds:absolute ds:opacity-0 ds:text-[color:var(--ai-sparkle)] ds:fill-current ds:drop-shadow-[0_0_var(--spacing-2xs)_var(--ai-sparkle)] ds:[animation-delay:calc(var(--animation-duration)*(var(--sparkle-base)+var(--sparkle-stagger)))] ds:[--sparkle-stagger:1.5] ds:size-2 ds:[inset-block-start:40%] ds:[inset-inline-end:calc(var(--spacing-sm)*-1)]";
|
|
18
|
+
}, {
|
|
19
|
+
readonly key: "below";
|
|
20
|
+
readonly className: "ds:absolute ds:opacity-0 ds:text-[color:var(--ai-sparkle)] ds:fill-current ds:drop-shadow-[0_0_var(--spacing-2xs)_var(--ai-sparkle)] ds:[animation-delay:calc(var(--animation-duration)*(var(--sparkle-base)+var(--sparkle-stagger)))] ds:[--sparkle-stagger:2] ds:size-3 ds:[inset-block-end:calc(var(--spacing-xs)*-1)] ds:[inset-inline-start:25%]";
|
|
21
|
+
}];
|
|
22
|
+
export declare const COMET_WRAPPER_CLASS = "ds:pointer-events-none ds:absolute ds:[inset-block-start:0] ds:[inset-inline-start:0] ds:opacity-0 ds:[offset-path:inset(0_round_var(--radius-full))] ds:[offset-rotate:0deg]";
|
|
23
|
+
export declare const COMET_TAIL: readonly [{
|
|
24
|
+
readonly key: 1;
|
|
25
|
+
readonly lag: "ds:[animation-delay:calc(var(--animation-duration)*0.2)]";
|
|
26
|
+
readonly dot: "ds:size-2.5 ds:opacity-[var(--opacity-90)]";
|
|
27
|
+
}, {
|
|
28
|
+
readonly key: 2;
|
|
29
|
+
readonly lag: "ds:[animation-delay:calc(var(--animation-duration)*0.4)]";
|
|
30
|
+
readonly dot: "ds:size-2 ds:opacity-[var(--opacity-70)]";
|
|
31
|
+
}, {
|
|
32
|
+
readonly key: 3;
|
|
33
|
+
readonly lag: "ds:[animation-delay:calc(var(--animation-duration)*0.6)]";
|
|
34
|
+
readonly dot: "ds:size-2 ds:opacity-[var(--opacity-50)]";
|
|
35
|
+
}, {
|
|
36
|
+
readonly key: 4;
|
|
37
|
+
readonly lag: "ds:[animation-delay:calc(var(--animation-duration)*0.8)]";
|
|
38
|
+
readonly dot: "ds:size-1.5 ds:opacity-[var(--opacity-30)]";
|
|
39
|
+
}, {
|
|
40
|
+
readonly key: 5;
|
|
41
|
+
readonly lag: "ds:[animation-delay:calc(var(--animation-duration)*1)]";
|
|
42
|
+
readonly dot: "ds:size-1.5 ds:opacity-[var(--opacity-20)]";
|
|
43
|
+
}, {
|
|
44
|
+
readonly key: 6;
|
|
45
|
+
readonly lag: "ds:[animation-delay:calc(var(--animation-duration)*1.2)]";
|
|
46
|
+
readonly dot: "ds:size-1 ds:opacity-[var(--opacity-10)]";
|
|
47
|
+
}];
|
|
48
|
+
export interface UseAiSparkleOptions {
|
|
49
|
+
/**
|
|
50
|
+
* Whether the sparkle is available at all. Read once, at mount, to seed
|
|
51
|
+
* the initial `'intro'` phase — matches how the RichTextEditor's
|
|
52
|
+
* `aiSparkle` prop only ever gated the very first render. Default `true`.
|
|
53
|
+
*/
|
|
54
|
+
enabled?: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* `'auto'` (default) reads `prefers-reduced-motion` via
|
|
57
|
+
* `usePrefersReducedMotion`. `'off'` forces full motion regardless of the
|
|
58
|
+
* OS preference — useful for a story that wants to show the animated
|
|
59
|
+
* states side by side with a reduced one.
|
|
60
|
+
*/
|
|
61
|
+
reducedMotion?: 'auto' | 'off';
|
|
62
|
+
}
|
|
63
|
+
export interface UseAiSparkleProps {
|
|
64
|
+
/** Spread (or picked) onto the host element as a pure styling hook. */
|
|
65
|
+
'data-ai-sparkle': AiSparkleState | undefined;
|
|
66
|
+
/**
|
|
67
|
+
* The shimmer animation class for the current state — empty when at rest.
|
|
68
|
+
* Layer it over the host's own base positioning classes; the comet and
|
|
69
|
+
* burst layers need real DOM and live in the `AiSparkle` component instead.
|
|
70
|
+
*/
|
|
71
|
+
className: string;
|
|
72
|
+
}
|
|
73
|
+
export interface UseAiSparkleReturn {
|
|
74
|
+
/** `null` at rest — nothing to render for the comet/burst layers either. */
|
|
75
|
+
state: AiSparkleState | null;
|
|
76
|
+
props: UseAiSparkleProps;
|
|
77
|
+
/** An AI action started: swap to the looping `'working'` phase. */
|
|
78
|
+
start: () => void;
|
|
79
|
+
/** An action's result landed: swap to the one-off `'landed'` phase. */
|
|
80
|
+
land: () => void;
|
|
81
|
+
/**
|
|
82
|
+
* Settle after an action ends. Clears back to rest only when still
|
|
83
|
+
* `'working'` (the action errored or was cancelled before `land()`);
|
|
84
|
+
* leaves `'landed'` alone so the one-off animation gets to play out.
|
|
85
|
+
*/
|
|
86
|
+
reset: () => void;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Drives the AI-pill sparkle: lit on first show, looping while an action
|
|
90
|
+
* runs, and a one-off flourish as the result lands.
|
|
91
|
+
*
|
|
92
|
+
* The hook owns the state machine and the timing only — it paints nothing.
|
|
93
|
+
* `props['data-ai-sparkle']` is a plain styling hook for the host element;
|
|
94
|
+
* `props.className` carries the shimmer layer's animation class from the
|
|
95
|
+
* same lookup table the RichTextEditor's pill originally inlined. The
|
|
96
|
+
* comet and burst layers need actual DOM (a tail of dots, five staggered
|
|
97
|
+
* glyphs), so they live in the sibling `AiSparkle` component, keyed off the
|
|
98
|
+
* same `state`.
|
|
99
|
+
*
|
|
100
|
+
* Both `intro` and `landed` are one-off: this hook clears them back to
|
|
101
|
+
* `null` on a timer sized to the comet's lap plus the burst and its
|
|
102
|
+
* stagger, at the default 200ms `--animation-duration`. Under reduced
|
|
103
|
+
* motion (`prefers-reduced-motion` or `reducedMotion: 'auto'`'s system
|
|
104
|
+
* read) the CSS animations already collapse to 0ms, so the clear fires at
|
|
105
|
+
* the next tick instead of waiting out the full lap — the pill still gets
|
|
106
|
+
* its `data-ai-sparkle` attribute for a moment, but nothing visibly moves.
|
|
107
|
+
*/
|
|
108
|
+
export declare function useAiSparkle(options?: UseAiSparkleOptions): UseAiSparkleReturn;
|
|
109
|
+
//# sourceMappingURL=use-ai-sparkle.d.ts.map
|
package/dist/host-compat.css
CHANGED
|
@@ -520,12 +520,12 @@
|
|
|
520
520
|
.ds\:grid-cols-\[repeat\(auto-fit\,minmax\(12rem\,1fr\)\)\] {
|
|
521
521
|
grid-template-columns:repeat(auto-fit,minmax(192px,1fr));
|
|
522
522
|
}
|
|
523
|
+
.ds\:py-\[0\.0625rem\] {
|
|
524
|
+
padding-block:1px;
|
|
525
|
+
}
|
|
523
526
|
.ds\:text-\[7rem\] {
|
|
524
527
|
font-size:112px;
|
|
525
528
|
}
|
|
526
|
-
.ds\:\[block-size\:14rem\] {
|
|
527
|
-
block-size:224px;
|
|
528
|
-
}
|
|
529
529
|
.ds\:\[block-size\:44rem\] {
|
|
530
530
|
block-size:704px;
|
|
531
531
|
}
|
|
@@ -562,8 +562,8 @@
|
|
|
562
562
|
.ds\:\[max-block-size\:14rem\] {
|
|
563
563
|
max-block-size:224px;
|
|
564
564
|
}
|
|
565
|
-
.ds\:\[max-block-size\:
|
|
566
|
-
max-block-size:
|
|
565
|
+
.ds\:\[max-block-size\:16\.5rem\] {
|
|
566
|
+
max-block-size:264px;
|
|
567
567
|
}
|
|
568
568
|
.ds\:\[max-inline-size\:6\.5rem\] {
|
|
569
569
|
max-inline-size:104px;
|
|
@@ -2796,9 +2796,26 @@ export declare const arUi: {
|
|
|
2796
2796
|
readonly heading: "عنوان";
|
|
2797
2797
|
readonly extensions: "إضافات المحرر";
|
|
2798
2798
|
readonly insertVariable: "إدراج متغير";
|
|
2799
|
-
readonly variables:
|
|
2799
|
+
readonly variables: {
|
|
2800
|
+
readonly menuLabel: "المتغيرات";
|
|
2801
|
+
readonly search: "البحث عن المتغيرات…";
|
|
2802
|
+
readonly recent: "الأخيرة";
|
|
2803
|
+
readonly groups: {
|
|
2804
|
+
readonly patient: "المريض";
|
|
2805
|
+
readonly appointment: "الموعد";
|
|
2806
|
+
readonly practice: "العيادة";
|
|
2807
|
+
readonly operator: "المُشغّل";
|
|
2808
|
+
readonly document: "المستند";
|
|
2809
|
+
readonly other: "أخرى";
|
|
2810
|
+
};
|
|
2811
|
+
readonly empty: "لا يوجد متغير يطابق «{{query}}»";
|
|
2812
|
+
readonly footer: {
|
|
2813
|
+
readonly navigate: "التنقل";
|
|
2814
|
+
readonly insert: "الإدراج";
|
|
2815
|
+
readonly close: "إغلاق";
|
|
2816
|
+
};
|
|
2817
|
+
};
|
|
2800
2818
|
readonly variableInvalid: "متغير غير صالح: {{tokens}}. اختر متغيرًا من إدراج متغير.";
|
|
2801
|
-
readonly variableNoMatch: "لا يوجد متغير يطابق «{{query}}»";
|
|
2802
2819
|
readonly more: "المزيد من الخيارات";
|
|
2803
2820
|
readonly link: {
|
|
2804
2821
|
readonly url: "URL";
|
|
@@ -2889,6 +2906,17 @@ export declare const arUi: {
|
|
|
2889
2906
|
readonly autoFormat: "تنسيق المستند تلقائيًا";
|
|
2890
2907
|
readonly consentRecorded: "تم تسجيل الموافقة على المساعدة بالذكاء الاصطناعي.";
|
|
2891
2908
|
readonly consentRegionLabel: "موافقة المساعدة بالذكاء الاصطناعي لهذا المستند";
|
|
2909
|
+
readonly templates: "القوالب";
|
|
2910
|
+
readonly templatesGroup: "قوالب العيادة";
|
|
2911
|
+
readonly noTemplates: "لا توجد قوالب بعد";
|
|
2912
|
+
readonly templatesNoteEmpty: "الملاحظة فارغة. أملِ أو اكتب أولًا لاستخدام قالب.";
|
|
2913
|
+
readonly createFirstTemplate: "أنشئ قالبك الأول";
|
|
2914
|
+
readonly manageTemplates: "إدارة القوالب";
|
|
2915
|
+
readonly defaultBadge: "افتراضي";
|
|
2916
|
+
readonly actionError: "حدث خطأ ما. حاول مرة أخرى.";
|
|
2917
|
+
readonly actionStale: "تغيّر النص أثناء إعادة الكتابة. لم يُستبدل أي شيء. حاول مرة أخرى.";
|
|
2918
|
+
readonly selectionTools: "أدوات التحديد";
|
|
2919
|
+
readonly actionDone: "تم. جرى تحديث الملاحظة.";
|
|
2892
2920
|
};
|
|
2893
2921
|
};
|
|
2894
2922
|
readonly payment: {
|
|
@@ -3144,6 +3172,8 @@ export declare const arUi: {
|
|
|
3144
3172
|
};
|
|
3145
3173
|
readonly helpMeWriteTemplates: {
|
|
3146
3174
|
readonly bar: {
|
|
3175
|
+
readonly contextDocument: "يستخدم الملاحظة كلها سياقًا. تُدرج المسودة عند المؤشر.";
|
|
3176
|
+
readonly contextSelection: "يستخدم النص المحدد سياقًا. تحل المسودة محله.";
|
|
3147
3177
|
readonly templatesMenu: "القوالب";
|
|
3148
3178
|
readonly templatesGroup: "قوالب العيادة";
|
|
3149
3179
|
readonly createFirst: "أنشئ قالبك الأول";
|
|
@@ -3188,10 +3218,12 @@ export declare const arUi: {
|
|
|
3188
3218
|
};
|
|
3189
3219
|
readonly manager: {
|
|
3190
3220
|
readonly title: "قوالب الذكاء الاصطناعي";
|
|
3191
|
-
readonly description: "مشتركة مع
|
|
3221
|
+
readonly description: "مشتركة مع كل من في العيادة. اسحب لتحديد ترتيب قائمة القوالب.";
|
|
3192
3222
|
readonly new: "قالب جديد";
|
|
3193
3223
|
readonly done: "تم";
|
|
3194
3224
|
readonly listLabel: "القوالب";
|
|
3225
|
+
readonly reorderHandle: "إعادة ترتيب {{label}}. اضغط Alt + أعلى أو Alt + أسفل للنقل.";
|
|
3226
|
+
readonly reorderAnnounce: "تم نقل {{label}} إلى الموضع {{to}} من {{total}}";
|
|
3195
3227
|
readonly edit: "تعديل {{name}}";
|
|
3196
3228
|
readonly delete: "حذف {{name}}";
|
|
3197
3229
|
readonly emptyTitle: "لا توجد قوالب بعد";
|
|
@@ -4161,7 +4193,10 @@ export declare const arUi: {
|
|
|
4161
4193
|
readonly actions: {
|
|
4162
4194
|
readonly groupLabel: "إجراءات الأجندة";
|
|
4163
4195
|
readonly schedulingLabel: "الجدولة";
|
|
4196
|
+
readonly createGroupLabel: "إنشاء جديد";
|
|
4197
|
+
readonly toolsLabel: "أدوات الأجندة";
|
|
4164
4198
|
readonly newAppointment: "موعد جديد";
|
|
4199
|
+
readonly newTask: "مهمة جديدة";
|
|
4165
4200
|
readonly privacy: "وضع الخصوصية";
|
|
4166
4201
|
readonly findFreeSlots: "البحث عن مواعيد متاحة";
|
|
4167
4202
|
readonly printDay: "طباعة اليوم";
|
|
@@ -4546,6 +4581,8 @@ export declare const arUi: {
|
|
|
4546
4581
|
readonly chairBusy: "الكرسي المختار مشغول في وقت الموعد.";
|
|
4547
4582
|
readonly operatorBusy: "المعالج المختار مشغول في وقت الموعد.";
|
|
4548
4583
|
readonly operatorAbsent: "المعالج المختار غائب في تاريخ الموعد.";
|
|
4584
|
+
readonly careRestrictedResourceHint: "غير مسموح به لهذه الخدمة";
|
|
4585
|
+
readonly careRestrictionConflict: "لا يوجد معالج/كرسي مشترك بين الخدمات المحددة";
|
|
4549
4586
|
readonly reminderDisabled: "(معطّل)";
|
|
4550
4587
|
readonly priceListAllPhases: "كل المراحل";
|
|
4551
4588
|
readonly priceListBilled: "إجراء غير مسموح: الخدمة صدرت لها فاتورة بالفعل.";
|
|
@@ -4581,6 +4618,32 @@ export declare const arUi: {
|
|
|
4581
4618
|
readonly signMode_two: "توقيع مستندين مطلوبين";
|
|
4582
4619
|
readonly signMode_few: "توقيع {{count}} مستندات مطلوبة";
|
|
4583
4620
|
};
|
|
4621
|
+
readonly taskEditor: {
|
|
4622
|
+
readonly title: "مهمة جديدة";
|
|
4623
|
+
readonly editTitle: "تعديل المهمة";
|
|
4624
|
+
readonly date: "التاريخ";
|
|
4625
|
+
readonly time: "الوقت";
|
|
4626
|
+
readonly note: "ملاحظة";
|
|
4627
|
+
readonly noteRequired: "أدخل ملاحظة.";
|
|
4628
|
+
readonly operator: "المشغّل";
|
|
4629
|
+
readonly operatorNone: "بلا مشغّل";
|
|
4630
|
+
readonly about: "يخص";
|
|
4631
|
+
readonly aboutNobody: "لا أحد";
|
|
4632
|
+
readonly aboutPatient: "المريض";
|
|
4633
|
+
readonly aboutCompany: "الشركة";
|
|
4634
|
+
readonly companyName: "اسم الشركة";
|
|
4635
|
+
readonly companyUnresolved: "الشركة المرتبطة (غير مدرجة): {{id}}";
|
|
4636
|
+
readonly companyReplace: "استبدال الشركة";
|
|
4637
|
+
readonly done: "مكتملة";
|
|
4638
|
+
readonly save: "حفظ";
|
|
4639
|
+
readonly cancel: "إلغاء";
|
|
4640
|
+
readonly delete: "حذف";
|
|
4641
|
+
readonly deleteConfirmTitle: "هل تريد حذف هذه المهمة؟";
|
|
4642
|
+
readonly deleteConfirmBody: "ستتم إزالة المهمة. لا يمكن التراجع عن هذا الإجراء هنا.";
|
|
4643
|
+
readonly deleteConfirm: "حذف";
|
|
4644
|
+
readonly deleteCancel: "الاحتفاظ";
|
|
4645
|
+
readonly readOnlyBody: "هذه المهمة للقراءة فقط.";
|
|
4646
|
+
};
|
|
4584
4647
|
readonly findSlots: {
|
|
4585
4648
|
readonly bandOptions: "الخيارات المتاحة";
|
|
4586
4649
|
readonly tool: "البحث عن مواعيد متاحة";
|
|
@@ -4809,16 +4872,19 @@ export declare const arUi: {
|
|
|
4809
4872
|
readonly undone: "تمت استعادة المدة";
|
|
4810
4873
|
};
|
|
4811
4874
|
readonly bookings: {
|
|
4812
|
-
readonly title: "
|
|
4813
|
-
readonly intro: "
|
|
4875
|
+
readonly title: "بحاجة إلى إكمال";
|
|
4876
|
+
readonly intro: "المواعيد الظاهرة التي ما زالت تحتاج إلى مريض أو معالج أو كرسي، أياً كانت طريقة إنشائها.";
|
|
4814
4877
|
readonly new: "جديد";
|
|
4815
4878
|
readonly bookedOn: "حُجز في {{date}}";
|
|
4816
4879
|
readonly needsPatient: "تعيين مريض";
|
|
4817
4880
|
readonly needsOperator: "تعيين معالج";
|
|
4881
|
+
readonly needsChair: "تعيين كرسي";
|
|
4818
4882
|
readonly assignPatient: "تعيين مريض";
|
|
4819
4883
|
readonly assignOperator: "تعيين معالج";
|
|
4884
|
+
readonly assignChair: "تعيين كرسي";
|
|
4820
4885
|
readonly assignPatientShort: "المريض";
|
|
4821
4886
|
readonly assignOperatorShort: "المعالج";
|
|
4887
|
+
readonly assignChairShort: "الكرسي";
|
|
4822
4888
|
readonly edit: "تعديل الموعد";
|
|
4823
4889
|
readonly whatsapp: "مراسلة عبر واتساب";
|
|
4824
4890
|
readonly whatsappNoNumber: "لا يوجد رقم واتساب لهذا الحجز";
|
|
@@ -4828,7 +4894,11 @@ export declare const arUi: {
|
|
|
4828
4894
|
readonly current: "الحجز المحدد";
|
|
4829
4895
|
readonly showInCalendarNamed: "إظهار حجز {{when}} في الأجندة";
|
|
4830
4896
|
readonly showInCalendar: "إظهار في الأجندة";
|
|
4831
|
-
readonly emptyTitle: "لا توجد
|
|
4897
|
+
readonly emptyTitle: "لا توجد مواعيد لإكمالها.";
|
|
4898
|
+
readonly filterNoPatient: "بدون مريض";
|
|
4899
|
+
readonly filterNoOperator: "بدون معالج";
|
|
4900
|
+
readonly filterNoChair: "بدون كرسي";
|
|
4901
|
+
readonly notShownOnChairAxis: "لا تظهر في أعمدة الكراسي حتى يتم تعيين كرسي.";
|
|
4832
4902
|
};
|
|
4833
4903
|
readonly waitingList: {
|
|
4834
4904
|
readonly removed: "أُزيل من قائمة الانتظار";
|
|
@@ -4872,6 +4942,7 @@ export declare const arUi: {
|
|
|
4872
4942
|
};
|
|
4873
4943
|
readonly readOnly: {
|
|
4874
4944
|
readonly createBlocked: "ليست لديك صلاحية إنشاء المواعيد.";
|
|
4945
|
+
readonly createTaskBlocked: "ليست لديك صلاحية إنشاء المهام.";
|
|
4875
4946
|
readonly changeBlocked: "ليست لديك صلاحية تعديل المواعيد.";
|
|
4876
4947
|
readonly waitingBlocked: "ليست لديك صلاحية تعديل قائمة الانتظار.";
|
|
4877
4948
|
readonly waitingLockedBody: "ليست لديك صلاحية تعديل قائمة الانتظار — اطلب من مالك العيادة صلاحية تعديل التقويم.";
|