@alfadocs/ui-kit 1.43.0 → 1.44.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/{calendar-ChJQzRw-.js → calendar-U6N0F99w.js} +383 -359
- package/dist/_chunks/calendar-workspace-DBYAtdyd.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-CY4KmDo-.js} +159 -152
- package/dist/_chunks/{panel-subview-PMBRPFOa.js → panel-subview-CYnuX-KR.js} +61 -40
- package/dist/_chunks/rich-text-editor-BYE6kK4u.js +3839 -0
- package/dist/_chunks/undo-2-CYNAzclj.js +26 -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/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 +1 -0
- 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/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 +916 -913
- 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
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type RefObject } from 'react';
|
|
2
|
-
import type { RichTextEditorVariable } from './rich-text-editor';
|
|
1
|
+
import { type ReactNode, type RefObject } from 'react';
|
|
2
|
+
import type { RichTextEditorAiTemplate, RichTextEditorVariable } from './rich-text-editor';
|
|
3
3
|
export type EditorToolbarPreset = 'minimal' | 'standard' | 'full';
|
|
4
4
|
export interface EditorToolbarProps {
|
|
5
5
|
/** Dispatch a Redactor command (and refresh active state). */
|
|
@@ -33,6 +33,9 @@ export interface EditorToolbarProps {
|
|
|
33
33
|
showExtensions?: boolean;
|
|
34
34
|
/** Template variables for the "Insert variable" menu (hidden when empty). */
|
|
35
35
|
variables?: RichTextEditorVariable[];
|
|
36
|
+
/** Most-recently-used tokens, most recent first — rendered as the menu's
|
|
37
|
+
* "Recent" group (max 3). Forwarded from `RichTextEditor`. */
|
|
38
|
+
recentVariableTokens?: string[];
|
|
36
39
|
/** Insert a variable chip at the saved caret. */
|
|
37
40
|
insertVariable?: (token: string) => void;
|
|
38
41
|
}
|
|
@@ -68,5 +71,34 @@ export interface ImageFloatingToolbarProps {
|
|
|
68
71
|
setImageWidth: (pct: number) => void;
|
|
69
72
|
}
|
|
70
73
|
export declare function ImageFloatingToolbar({ areaRef, activeImageEl: img, applyImageClass, setImageWidth, }: ImageFloatingToolbarProps): React.JSX.Element | null;
|
|
71
|
-
export
|
|
74
|
+
export interface AiTemplatesMenuProps {
|
|
75
|
+
templates: RichTextEditorAiTemplate[];
|
|
76
|
+
onPick: (template: RichTextEditorAiTemplate) => void;
|
|
77
|
+
/** Shows "Manage templates" / "Create your first template". */
|
|
78
|
+
onManage?: (mode: 'list' | 'create') => void;
|
|
79
|
+
/** Nothing to rewrite: the run items disable, the library stays readable. */
|
|
80
|
+
noteEmpty: boolean;
|
|
81
|
+
onOpenChange?: (open: boolean) => void;
|
|
82
|
+
/** The trigger element (rendered `asChild`). */
|
|
83
|
+
trigger: ReactNode;
|
|
84
|
+
/** The pill sits at the editor's bottom edge, so the menu opens upward. */
|
|
85
|
+
side?: 'top' | 'bottom';
|
|
86
|
+
}
|
|
87
|
+
export declare function AiTemplatesMenu({ templates, onPick, onManage, noteEmpty, onOpenChange, trigger, side, }: AiTemplatesMenuProps): React.JSX.Element;
|
|
88
|
+
export interface SelectionFloatingToolbarProps {
|
|
89
|
+
active: ReadonlySet<string>;
|
|
90
|
+
run: EditorToolbarProps['run'];
|
|
91
|
+
/** Positioned container the bubble is absolutely placed within. */
|
|
92
|
+
areaRef: RefObject<HTMLDivElement | null>;
|
|
93
|
+
/** This editor's editable root (`.redactor-in`). */
|
|
94
|
+
getEditorRoot: () => Element | null;
|
|
95
|
+
/** Hide it (an AI action runs, a panel is open). */
|
|
96
|
+
suppressed?: boolean;
|
|
97
|
+
/** Keep it mounted while a menu opened from it is showing. */
|
|
98
|
+
holdOpen?: boolean;
|
|
99
|
+
/** The AI actions, after the formats. */
|
|
100
|
+
children?: ReactNode;
|
|
101
|
+
}
|
|
102
|
+
export declare function SelectionFloatingToolbar({ active, run, areaRef, getEditorRoot, suppressed, holdOpen, children, }: SelectionFloatingToolbarProps): React.JSX.Element | null;
|
|
103
|
+
export declare function EditorToolbar({ run, active, preset, insertHtml, insertTable, saveSelection, restoreSelection, getSelectedText, uploadImage, enableColor, enableImage, enableTable, showExtensions, variables, recentVariableTokens, insertVariable, }: EditorToolbarProps): React.JSX.Element;
|
|
72
104
|
//# sourceMappingURL=editor-toolbar.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { RichTextEditor, wrapperVariants } from './rich-text-editor';
|
|
2
|
-
export type { RichTextEditorHandle, RichTextEditorProps, RichTextEditorToolbar, RedactorFactory, AiConsentGate, RichTextEditorVariable, HelpMeWriteRenderContext, } from './rich-text-editor';
|
|
2
|
+
export type { RichTextEditorHandle, RichTextEditorProps, RichTextEditorToolbar, RedactorFactory, AiConsentGate, RichTextEditorVariable, HelpMeWriteRenderContext, RichTextEditorAiTemplate, RichTextEditorAiTemplates, RichTextEditorAiActionRequest, RichTextEditorAiApplied, } from './rich-text-editor';
|
|
3
3
|
export { richTextEditorAgent } from './rich-text-editor.agent';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -42,15 +42,71 @@ export interface RichTextEditorVariable {
|
|
|
42
42
|
token: string;
|
|
43
43
|
/** Human label shown in the menu (translated by the host). */
|
|
44
44
|
label: string;
|
|
45
|
-
/** Optional second line in the menu
|
|
45
|
+
/** Optional second line in the menu (reserved for a future resolved-value
|
|
46
|
+
* preview — not rendered yet). */
|
|
46
47
|
description?: string;
|
|
48
|
+
/**
|
|
49
|
+
* One of the fixed catalogue groups the VariablesMenu renders as section
|
|
50
|
+
* headers: `patient`, `appointment`, `practice`, `operator`, `document`.
|
|
51
|
+
* Any other value (or omitting it) lands the variable in the menu's
|
|
52
|
+
* "Other" group at the end.
|
|
53
|
+
*/
|
|
54
|
+
group?: 'patient' | 'appointment' | 'practice' | 'operator' | 'document' | string;
|
|
55
|
+
}
|
|
56
|
+
/** A practice template the AI pill's Templates menu offers. */
|
|
57
|
+
export interface RichTextEditorAiTemplate {
|
|
58
|
+
id: string;
|
|
59
|
+
name: string;
|
|
60
|
+
/** Second line in the menu. */
|
|
61
|
+
description?: string;
|
|
62
|
+
/** @deprecated The host's order is the menu order. Ignored. */
|
|
63
|
+
isDefault?: boolean;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* What a one-shot AI action rewrites: the selection when there is one, else
|
|
67
|
+
* the whole document. Resolve with the rewritten HTML for that same scope.
|
|
68
|
+
*/
|
|
69
|
+
export interface RichTextEditorAiActionRequest {
|
|
70
|
+
html: string;
|
|
71
|
+
/** `html` as plain text. */
|
|
72
|
+
text: string;
|
|
73
|
+
scope: 'selection' | 'document';
|
|
74
|
+
signal: AbortSignal;
|
|
75
|
+
}
|
|
76
|
+
/** Practice templates as an AI pill segment (and in the selection bubble). */
|
|
77
|
+
export interface RichTextEditorAiTemplates {
|
|
78
|
+
/** In menu order, first to last. */
|
|
79
|
+
templates: RichTextEditorAiTemplate[];
|
|
80
|
+
/** The AI call. Reject with an error named `AiCreditsExhaustedError` on 402. */
|
|
81
|
+
onRun: (request: RichTextEditorAiActionRequest & {
|
|
82
|
+
template: RichTextEditorAiTemplate;
|
|
83
|
+
}) => Promise<string>;
|
|
84
|
+
/** Shows "Manage templates" / "Create your first template". */
|
|
85
|
+
onManage?: (mode: 'list' | 'create') => void;
|
|
86
|
+
}
|
|
87
|
+
/** Fired after a one-shot AI action rewrote the note. */
|
|
88
|
+
export interface RichTextEditorAiApplied {
|
|
89
|
+
action: 'proofread' | 'format' | 'template';
|
|
90
|
+
template?: RichTextEditorAiTemplate;
|
|
91
|
+
scope: 'selection' | 'document';
|
|
92
|
+
/** The document before the change. */
|
|
93
|
+
previousHtml: string;
|
|
94
|
+
/** Puts `previousHtml` back. */
|
|
95
|
+
undo: () => void;
|
|
47
96
|
}
|
|
48
97
|
/** What a host's own Help-me-write surface gets from `renderHelpMeWrite`. */
|
|
49
98
|
export interface HelpMeWriteRenderContext {
|
|
50
99
|
/** Whether the surface should show (consent is already granted). */
|
|
51
100
|
open: boolean;
|
|
52
101
|
onClose: () => void;
|
|
53
|
-
/**
|
|
102
|
+
/**
|
|
103
|
+
* What the reader asked about: `'document'` from the AI pill (use the
|
|
104
|
+
* whole note as context; `insertAtSelection` inserts at the caret) or
|
|
105
|
+
* `'selection'` from the selection bubble (`selectionText` is the context,
|
|
106
|
+
* and `insertAtSelection` replaces it).
|
|
107
|
+
*/
|
|
108
|
+
scope: 'document' | 'selection';
|
|
109
|
+
/** Text of the selection when opened from the bubble; '' otherwise. */
|
|
54
110
|
selectionText: string;
|
|
55
111
|
getHTML: () => string;
|
|
56
112
|
getText: () => string;
|
|
@@ -157,20 +213,31 @@ export interface RichTextEditorProps {
|
|
|
157
213
|
onFinalTranscript: (text: string) => void;
|
|
158
214
|
}) => Promise<void>;
|
|
159
215
|
/**
|
|
160
|
-
* One-shot AI
|
|
161
|
-
*
|
|
162
|
-
*
|
|
163
|
-
*
|
|
164
|
-
*
|
|
216
|
+
* One-shot AI actions (CONSUMER-PROVIDED backend). Each gets the HTML to
|
|
217
|
+
* rewrite (the selection if there is one, else the whole document) and
|
|
218
|
+
* resolves with the rewritten HTML, which replaces that same scope. While
|
|
219
|
+
* one runs the editor is disabled with a spinner. `onProofread` corrects
|
|
220
|
+
* spelling/grammar; `onAutoFormat` tidies structure/formatting. Each adds a
|
|
221
|
+
* pill segment and a selection-bubble button. Gated by `aiConsent`.
|
|
165
222
|
*/
|
|
166
|
-
onProofread?: (ctx:
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
223
|
+
onProofread?: (ctx: RichTextEditorAiActionRequest) => Promise<string>;
|
|
224
|
+
onAutoFormat?: (ctx: RichTextEditorAiActionRequest) => Promise<string>;
|
|
225
|
+
/** Practice templates: a Templates pill segment that runs one in one click. */
|
|
226
|
+
aiTemplates?: RichTextEditorAiTemplates;
|
|
227
|
+
/** After a one-shot action rewrote the note; use it to offer Undo. */
|
|
228
|
+
onAiApplied?: (applied: RichTextEditorAiApplied) => void;
|
|
229
|
+
/**
|
|
230
|
+
* Sparkle the AI pill when it appears, while an action runs and when the
|
|
231
|
+
* result lands. Default `true`; motion is off under reduced motion and in
|
|
232
|
+
* the accessible themes. The pill carries `data-ai-sparkle` for styling.
|
|
233
|
+
*/
|
|
234
|
+
aiSparkle?: boolean;
|
|
235
|
+
/**
|
|
236
|
+
* A bubble over a text selection with quick formats and the AI actions.
|
|
237
|
+
* Default: on when the editor has any AI action (templates, proofread,
|
|
238
|
+
* auto-format or Help me write).
|
|
239
|
+
*/
|
|
240
|
+
selectionToolbar?: boolean;
|
|
174
241
|
/**
|
|
175
242
|
* Template variables. When provided, the toolbar gains an "Insert variable"
|
|
176
243
|
* menu that inserts `[[TOKEN]]` as a chip (Redactor's native `variable`
|
|
@@ -178,6 +245,20 @@ export interface RichTextEditorProps {
|
|
|
178
245
|
* for these tokens in inbound content renders as a chip too.
|
|
179
246
|
*/
|
|
180
247
|
variables?: RichTextEditorVariable[];
|
|
248
|
+
/**
|
|
249
|
+
* Most-recently-used variable tokens, most recent first. Rendered as a
|
|
250
|
+
* "Recent" group pinned above the catalogue (max 3 shown). The kit never
|
|
251
|
+
* persists this itself — the host owns storage (see `onVariableInserted`
|
|
252
|
+
* and the `usePersistentState` example in this component's `.mdx`).
|
|
253
|
+
*/
|
|
254
|
+
recentVariableTokens?: string[];
|
|
255
|
+
/**
|
|
256
|
+
* Fires with the token whenever a variable is inserted from either the
|
|
257
|
+
* toolbar button or the `[[` caret menu — the seam a host uses to build
|
|
258
|
+
* `recentVariableTokens`. Does not fire for typed `[[TOKEN]]` text that
|
|
259
|
+
* becomes a chip on its own (only for a menu pick).
|
|
260
|
+
*/
|
|
261
|
+
onVariableInserted?: (token: string) => void;
|
|
181
262
|
/**
|
|
182
263
|
* Decide whether a `[[TOKEN]]` is valid. Default: it is one of `variables`
|
|
183
264
|
* (any letter case). Invalid tokens render as error chips with a message
|
|
@@ -213,6 +294,8 @@ export interface RichTextEditorHandle {
|
|
|
213
294
|
getText: () => string;
|
|
214
295
|
/** Always '' — Redactor has no native Markdown serializer (see MDX). */
|
|
215
296
|
getMarkdown: () => string;
|
|
297
|
+
/** A one-shot AI action (template, spelling, auto-format) is running. */
|
|
298
|
+
isAiBusy: () => boolean;
|
|
216
299
|
/** HTML goes through DOMPurify before reaching Redactor. */
|
|
217
300
|
setContent: (html: string) => void;
|
|
218
301
|
/**
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { VariablesMenu } from './variables-menu';
|
|
2
|
+
export type { VariablesMenuProps, VariablesMenuVariable, VariablesMenuGroup, VariablesMenuHandle, VariablesMenuCloseReason, } from './variables-menu';
|
|
3
|
+
export { variablesMenuAgent } from './variables-menu.agent';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { AgentAdapter } from '../../agent/types';
|
|
2
|
+
interface VariablesMenuAgentHandle {
|
|
3
|
+
getQuery: () => string;
|
|
4
|
+
getVisibleTokens: () => string[];
|
|
5
|
+
selectToken: (token: string) => void;
|
|
6
|
+
close: () => void;
|
|
7
|
+
}
|
|
8
|
+
export declare const variablesMenuAgent: AgentAdapter<VariablesMenuAgentHandle>;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=variables-menu.agent.d.ts.map
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { type KeyboardEvent as ReactKeyboardEvent } from 'react';
|
|
2
|
+
export type VariablesMenuGroup = 'patient' | 'appointment' | 'practice' | 'operator' | 'document';
|
|
3
|
+
/** A single merge variable the menu can insert. */
|
|
4
|
+
export interface VariablesMenuVariable {
|
|
5
|
+
/** Inserted as `[[token]]`. Letters, digits and underscores only. */
|
|
6
|
+
token: string;
|
|
7
|
+
/** Localised label shown at the start of the row. */
|
|
8
|
+
label: string;
|
|
9
|
+
/** Optional second line (reserved for a future resolved-value preview). */
|
|
10
|
+
description?: string;
|
|
11
|
+
/** One of the fixed catalogue groups. Ungrouped variables land in "Other". */
|
|
12
|
+
group?: VariablesMenuGroup | string;
|
|
13
|
+
}
|
|
14
|
+
export type VariablesMenuCloseReason = 'escape' | 'select' | 'outside' | 'backspace';
|
|
15
|
+
/** Imperative surface for a host that owns its own keydown handling (the
|
|
16
|
+
* caret anchor forwards key events from the editor's contenteditable region,
|
|
17
|
+
* which sits outside this component's own DOM subtree). */
|
|
18
|
+
export interface VariablesMenuHandle {
|
|
19
|
+
/** Forward a keydown from the host. Returns true when the menu consumed
|
|
20
|
+
* it — the host should then call `preventDefault`/`stopPropagation`. */
|
|
21
|
+
handleKeyDown: (event: ReactKeyboardEvent | KeyboardEvent) => boolean;
|
|
22
|
+
/** Focus the search field (button anchor only — the caret anchor keeps
|
|
23
|
+
* focus in the editor and never calls this). */
|
|
24
|
+
focusSearch: () => void;
|
|
25
|
+
}
|
|
26
|
+
export interface VariablesMenuProps {
|
|
27
|
+
/** Stable id for agent registration / DOM addressing. */
|
|
28
|
+
id?: string;
|
|
29
|
+
className?: string;
|
|
30
|
+
/** The full catalogue on offer. */
|
|
31
|
+
variables: VariablesMenuVariable[];
|
|
32
|
+
/** Most-recently-used tokens, most recent first. Only the first 3 render. */
|
|
33
|
+
recentTokens?: string[];
|
|
34
|
+
/** Current filter text. Always controlled — the caret anchor mirrors the
|
|
35
|
+
* text the reader is typing into the document; the button anchor mirrors
|
|
36
|
+
* its own search field. */
|
|
37
|
+
query: string;
|
|
38
|
+
onQueryChange: (query: string) => void;
|
|
39
|
+
onSelect: (variable: VariablesMenuVariable) => void;
|
|
40
|
+
onClose: (reason: VariablesMenuCloseReason) => void;
|
|
41
|
+
/** False for the caret anchor: no search field at all — the text typed
|
|
42
|
+
* after `[[` in the document is the filter, the host's contenteditable
|
|
43
|
+
* keeps focus and forwards keys via the imperative handle. Default true. */
|
|
44
|
+
searchFocusable?: boolean;
|
|
45
|
+
'aria-label'?: string;
|
|
46
|
+
/** Fires whenever the active row's DOM id changes (including to
|
|
47
|
+
* `undefined` when the list is empty). The caret anchor mirrors this onto
|
|
48
|
+
* the editor's own `aria-activedescendant`, since focus — and so the
|
|
49
|
+
* combobox role — lives on the contenteditable, not in this component. */
|
|
50
|
+
onActiveDescendantChange?: (id: string | undefined) => void;
|
|
51
|
+
}
|
|
52
|
+
export declare const VariablesMenu: import("react").ForwardRefExoticComponent<VariablesMenuProps & import("react").RefAttributes<VariablesMenuHandle>>;
|
|
53
|
+
//# sourceMappingURL=variables-menu.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: "ليست لديك صلاحية تعديل قائمة الانتظار — اطلب من مالك العيادة صلاحية تعديل التقويم.";
|