@alfadocs/ui-kit 1.65.0 → 1.67.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-credits-exhausted-notice-DfAgfZDF.js +287 -0
- package/dist/_chunks/ai-credits-exhausted-notice.agent-DgTSTgez.js +43 -0
- package/dist/_chunks/ai-credits-notice-DQ-r3iQU.js +191 -0
- package/dist/_chunks/{ai-permission-notice-DpRmZ9Q3.js → ai-permission-notice-qsdm4Sx4.js} +2 -2
- package/dist/_chunks/{alert-DdDpOi-P.js → alert-DjsJMGRE.js} +3 -2
- package/dist/_chunks/{anamnesis-summary-rows-BIfw890v.js → anamnesis-summary-rows-BQ_EokKz.js} +2 -2
- package/dist/_chunks/{audio-recorder-DR-u1qbl.js → audio-recorder-B11RR-rC.js} +2 -2
- package/dist/_chunks/{auth-form-parts-Cmb41LSQ.js → auth-form-parts-DwUTH6YN.js} +2 -2
- package/dist/_chunks/{booking-DkjatiXc.js → booking-tTVxKPQY.js} +2 -2
- package/dist/_chunks/{calendar-workspace-Cp8yTZ1g.js → calendar-workspace-MRrzcxAy.js} +6 -6
- package/dist/_chunks/chart-CwmyCuWe.js +1340 -0
- package/dist/_chunks/{document-preview-B1dQm292.js → document-preview-VyQOjFVL.js} +2 -2
- package/dist/_chunks/{document-scanner-CVPVLK7z.js → document-scanner-CXH_GYh4.js} +2 -2
- package/dist/_chunks/{entity-summary-BQ9_KA8S.js → entity-summary-Bj-Wxq7Y.js} +2 -2
- package/dist/_chunks/{error-summary-DrUfuKu1.js → error-summary-PUE5Zxp9.js} +2 -2
- package/dist/_chunks/{forgot-password-form-CgZkEvZy.js → forgot-password-form-CPOfRE0C.js} +4 -4
- package/dist/_chunks/{freemium-paywall-DKJHRFpp.js → freemium-paywall-6DO7noHX.js} +2 -2
- package/dist/_chunks/heatmap-C1TeC7wT.js +3650 -0
- package/dist/_chunks/help-me-write-templates-Bw3Q58x-.js +687 -0
- package/dist/_chunks/hourglass-BEAzW1wE.js +26 -0
- package/dist/_chunks/{login-dev-card-PnADNcI9.js → login-dev-card-A-CL3mjt.js} +3 -3
- package/dist/_chunks/{marketplace-app-shell-C-2e4eCD.js → marketplace-app-shell-DtSX8sYb.js} +2 -2
- package/dist/_chunks/{notes-panel-uEGIL7mi.js → notes-panel-IdsmqRFC.js} +3 -3
- package/dist/_chunks/{patient-details-4P1vA9Ls.js → patient-details-C-EWQTms.js} +2 -2
- package/dist/_chunks/{patient-field-row-CBXhlfGD.js → patient-field-row-lY-Tb5Mo.js} +155 -176
- package/dist/_chunks/{patient-search-DOnDUVsl.js → patient-search-DpAKidZ5.js} +2 -2
- package/dist/_chunks/{patient-summary-card-CuDLo8MP.js → patient-summary-card-Bpto_VCD.js} +2 -2
- package/dist/_chunks/{payment-automation-upsell-C8MEu0t6.js → payment-automation-upsell-BQ307qEX.js} +2 -2
- package/dist/_chunks/{payment-form-C3dGY7v4.js → payment-form-XKtinW8r.js} +2 -2
- package/dist/_chunks/{pdf-viewer-DJ9VN7cu.js → pdf-viewer-BvoVMjH4.js} +2 -2
- package/dist/_chunks/{practice-results-8h2Utpt3.js → practice-results-BrUDDMXC.js} +2 -2
- package/dist/_chunks/{registration-form-BQyT_kBX.js → registration-form-BxwqUZzk.js} +3 -3
- package/dist/_chunks/{rich-text-editor-M2gT_E7f.js → rich-text-editor-aCIoptbg.js} +1653 -1743
- package/dist/_chunks/{sign-document-CY7xTXbm.js → sign-document-D1P1nUQA.js} +2 -2
- package/dist/_chunks/{signature-request-BMCHy2ZO.js → signature-request-3u6TvRt2.js} +2 -2
- package/dist/_chunks/{task-editor-CifOznfq.js → task-editor-Bb5MMcid.js} +2 -2
- package/dist/_chunks/{tasks-panel-8nLwBw6P.js → tasks-panel-BOb57Ysw.js} +2 -2
- package/dist/_chunks/{use-appointment-details-read-B-FEWbQM.js → use-appointment-details-read-CVSPoP5j.js} +4 -4
- package/dist/_chunks/voice-control-panel-BJIEbDq6.js +1148 -0
- package/dist/_chunks/{warning-stack-HYWAytZV.js → warning-stack-BdY-0bd3.js} +2 -2
- package/dist/_chunks/{workflow-map-C2B2qIr1.js → workflow-map-CYbRD9ek.js} +2 -2
- package/dist/agent-catalog.json +50 -3
- package/dist/agent-i18n/en.json +7 -4
- package/dist/components/_shared/use-apex-radial-centre.d.ts +7 -4
- package/dist/components/ai-credits-notice/ai-credits-exhausted-notice.agent.d.ts +4 -0
- package/dist/components/ai-credits-notice/ai-credits-exhausted-notice.d.ts +96 -0
- package/dist/components/ai-credits-notice/ai-credits-notice.d.ts +30 -4
- package/dist/components/ai-credits-notice/index.d.ts +3 -0
- package/dist/components/ai-credits-notice/index.js +10 -4
- package/dist/components/ai-permission-notice/index.js +1 -1
- package/dist/components/alert/index.js +1 -1
- package/dist/components/appointment-details-panel/index.js +1 -1
- package/dist/components/audio-recorder/index.js +1 -1
- package/dist/components/booking/index.js +1 -1
- package/dist/components/chart/index.js +1 -1
- package/dist/components/document-preview/index.js +1 -1
- package/dist/components/document-scanner/index.js +1 -1
- package/dist/components/entity-summary/index.js +1 -1
- package/dist/components/error-summary/index.js +1 -1
- package/dist/components/freemium-paywall/index.js +1 -1
- package/dist/components/heatmap/heatmap-context.d.ts +3 -0
- package/dist/components/heatmap/heatmap-disclosure.d.ts +67 -0
- package/dist/components/heatmap/heatmap-grid.d.ts +1 -1
- package/dist/components/heatmap/heatmap-legend.d.ts +5 -2
- package/dist/components/heatmap/heatmap-model.d.ts +107 -15
- package/dist/components/heatmap/heatmap-table-view.d.ts +3 -2
- package/dist/components/heatmap/heatmap.d.ts +33 -7
- package/dist/components/heatmap/index.d.ts +1 -1
- package/dist/components/heatmap/index.js +1 -1
- package/dist/components/notes-panel/index.js +1 -1
- package/dist/components/patient-details/index.js +1 -1
- package/dist/components/patient-search/index.js +1 -1
- package/dist/components/patient-summary-card/index.js +1 -1
- package/dist/components/payment-form/index.js +1 -1
- package/dist/components/pdf-viewer/index.js +1 -1
- package/dist/components/practice-results/index.js +1 -1
- package/dist/components/rich-text-editor/index.js +1 -1
- package/dist/components/sign-document/index.js +1 -1
- package/dist/components/task-editor/index.js +1 -1
- package/dist/components/tasks-panel/index.js +1 -1
- package/dist/components/voice-control-panel/index.d.ts +2 -1
- package/dist/components/voice-control-panel/index.js +1 -1
- package/dist/components/voice-control-panel/voice-control-panel.d.ts +43 -3
- package/dist/components/warning-stack/index.js +1 -1
- package/dist/components/workflow/index.js +1 -1
- package/dist/i18n/locales/ar.d.ts +29 -12
- package/dist/i18n/locales/ar.js +29 -12
- package/dist/i18n/locales/de.d.ts +29 -12
- package/dist/i18n/locales/de.js +29 -12
- package/dist/i18n/locales/el.d.ts +29 -12
- package/dist/i18n/locales/el.js +29 -12
- package/dist/i18n/locales/en.d.ts +29 -12
- package/dist/i18n/locales/en.js +29 -12
- package/dist/i18n/locales/es.d.ts +29 -12
- package/dist/i18n/locales/es.js +29 -12
- package/dist/i18n/locales/fr.d.ts +29 -12
- package/dist/i18n/locales/fr.js +29 -12
- package/dist/i18n/locales/hi.d.ts +29 -12
- package/dist/i18n/locales/hi.js +29 -12
- package/dist/i18n/locales/it.d.ts +29 -12
- package/dist/i18n/locales/it.js +29 -12
- package/dist/i18n/locales/ja.d.ts +29 -12
- package/dist/i18n/locales/ja.js +29 -12
- package/dist/i18n/locales/nl.d.ts +29 -12
- package/dist/i18n/locales/nl.js +29 -12
- package/dist/i18n/locales/pl.d.ts +29 -12
- package/dist/i18n/locales/pl.js +29 -12
- package/dist/i18n/locales/pt.d.ts +29 -12
- package/dist/i18n/locales/pt.js +29 -12
- package/dist/i18n/locales/ro.d.ts +29 -12
- package/dist/i18n/locales/ro.js +29 -12
- package/dist/i18n/locales/ru.d.ts +29 -12
- package/dist/i18n/locales/ru.js +29 -12
- package/dist/i18n/locales/sq.d.ts +29 -12
- package/dist/i18n/locales/sq.js +29 -12
- package/dist/i18n/locales/sv.d.ts +29 -12
- package/dist/i18n/locales/sv.js +29 -12
- package/dist/i18n/locales/tr.d.ts +29 -12
- package/dist/i18n/locales/tr.js +29 -12
- package/dist/i18n/locales/zh.d.ts +29 -12
- package/dist/i18n/locales/zh.js +29 -12
- package/dist/index.js +814 -809
- package/dist/locales/ar.json +29 -12
- package/dist/locales/de.json +29 -12
- package/dist/locales/el.json +29 -12
- package/dist/locales/en.json +29 -12
- package/dist/locales/es.json +29 -12
- package/dist/locales/fr.json +29 -12
- package/dist/locales/hi.json +29 -12
- package/dist/locales/it.json +29 -12
- package/dist/locales/ja.json +29 -12
- package/dist/locales/nl.json +29 -12
- package/dist/locales/pl.json +29 -12
- package/dist/locales/pt.json +29 -12
- package/dist/locales/ro.json +29 -12
- package/dist/locales/ru.json +29 -12
- package/dist/locales/sq.json +29 -12
- package/dist/locales/sv.json +29 -12
- package/dist/locales/tr.json +29 -12
- package/dist/locales/zh.json +29 -12
- package/dist/patterns/anamnesis/index.js +1 -1
- package/dist/patterns/calendar/index.js +1 -1
- package/dist/patterns/forgot-password-form/index.js +1 -1
- package/dist/patterns/help-me-write-templates/help-me-write-templates.d.ts +6 -23
- package/dist/patterns/help-me-write-templates/index.js +8 -7
- package/dist/patterns/login-form/index.js +1 -1
- package/dist/patterns/marketplace-app-shell/index.js +1 -1
- package/dist/patterns/payment-automation-upsell/index.js +1 -1
- package/dist/patterns/registration-form/index.js +1 -1
- package/dist/patterns/signature-request/index.js +1 -1
- package/dist/tokens.css +1 -1
- package/package.json +1 -1
- package/dist/_chunks/ai-credits-notice-pK9BOmEz.js +0 -90
- package/dist/_chunks/ai-credits-notice.agent-C9L7orrP.js +0 -17
- package/dist/_chunks/chart-CIzXxNeM.js +0 -1322
- package/dist/_chunks/heatmap-BxRHM8Et.js +0 -2865
- package/dist/_chunks/help-me-write-templates-DFmqnsAa.js +0 -747
- package/dist/_chunks/voice-control-panel-C0BfY23Y.js +0 -1009
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type HeatmapAggregate } from './heatmap-scale';
|
|
2
2
|
/** One row of the heatmap. */
|
|
3
3
|
export interface HeatmapRow {
|
|
4
4
|
/** Stable, opaque id. Emitted in DOM hooks, so never a name. */
|
|
@@ -97,6 +97,10 @@ export interface ModelCell {
|
|
|
97
97
|
count?: number;
|
|
98
98
|
label?: string;
|
|
99
99
|
status: HeatmapCellStatus;
|
|
100
|
+
/** A total withheld to protect hidden cells. Its status stays
|
|
101
|
+
* `low-sample`, but it may rest on many records, so it is worded apart
|
|
102
|
+
* from a cell that is too few to show. */
|
|
103
|
+
withheld?: true;
|
|
100
104
|
}
|
|
101
105
|
/** How rows are ordered (within their group when grouped). */
|
|
102
106
|
export type HeatmapSortRows = 'none' | 'label' | 'total-asc' | 'total-desc';
|
|
@@ -110,26 +114,114 @@ export declare function buildMatrix(rows: readonly HeatmapRow[], columns: readon
|
|
|
110
114
|
export declare function shownValues(matrix: readonly ModelCell[][]): number[];
|
|
111
115
|
/** Whether at least one cell carries data (a value or a low sample). */
|
|
112
116
|
export declare function hasAnyData(matrix: readonly ModelCell[][]): boolean;
|
|
117
|
+
/**
|
|
118
|
+
* Which total `getTotal` is asked for, with the rows, columns and group it
|
|
119
|
+
* covers. `method` is how the kit combines the cells for it: the
|
|
120
|
+
* `rowTotals` method for a row, a group and the grand total, the
|
|
121
|
+
* `columnTotals` method for a column, and the column method (else the row
|
|
122
|
+
* method) for a group header cell.
|
|
123
|
+
*/
|
|
124
|
+
export type HeatmapTotalScope = {
|
|
125
|
+
/** A row's total, in the totals column. */
|
|
126
|
+
kind: 'row';
|
|
127
|
+
method: HeatmapAggregate;
|
|
128
|
+
row: HeatmapRow;
|
|
129
|
+
rowId: string;
|
|
130
|
+
/** Index into the `rows` prop. */
|
|
131
|
+
rowIndex: number;
|
|
132
|
+
} | {
|
|
133
|
+
/** A column's total, in the totals row. */
|
|
134
|
+
kind: 'column';
|
|
135
|
+
method: HeatmapAggregate;
|
|
136
|
+
column: HeatmapColumn;
|
|
137
|
+
columnId: string | number;
|
|
138
|
+
/** Index into the `columns` prop. */
|
|
139
|
+
columnIndex: number;
|
|
140
|
+
} | {
|
|
141
|
+
/** A group's total, in the totals column of its header row. */
|
|
142
|
+
kind: 'group';
|
|
143
|
+
method: HeatmapAggregate;
|
|
144
|
+
/** The id the group's rows carry in `group`. */
|
|
145
|
+
groupId: string;
|
|
146
|
+
/** The group's entry in `groups`, when it has one. */
|
|
147
|
+
group?: HeatmapGroup;
|
|
148
|
+
/** The group's rows, in the order of the `rows` prop. */
|
|
149
|
+
rows: readonly HeatmapRow[];
|
|
150
|
+
rowIndexes: readonly number[];
|
|
151
|
+
} | {
|
|
152
|
+
/** One column's total within a group, in the group's header row. */
|
|
153
|
+
kind: 'group-column';
|
|
154
|
+
method: HeatmapAggregate;
|
|
155
|
+
groupId: string;
|
|
156
|
+
group?: HeatmapGroup;
|
|
157
|
+
rows: readonly HeatmapRow[];
|
|
158
|
+
rowIndexes: readonly number[];
|
|
159
|
+
column: HeatmapColumn;
|
|
160
|
+
columnId: string | number;
|
|
161
|
+
columnIndex: number;
|
|
162
|
+
} | {
|
|
163
|
+
/** The grand total of every cell, in the corner. */
|
|
164
|
+
kind: 'grand';
|
|
165
|
+
method: HeatmapAggregate;
|
|
166
|
+
};
|
|
167
|
+
/** Returns a total, or undefined to let the kit work it out from the cells. */
|
|
168
|
+
export type HeatmapGetTotal = (scope: HeatmapTotalScope) => HeatmapCellInput | undefined;
|
|
169
|
+
/**
|
|
170
|
+
* Every margin, ready to render. A withheld total is `{ value: null,
|
|
171
|
+
* status: 'low-sample', withheld: true }`: no value and no count, so
|
|
172
|
+
* nothing that reads it (the grid, the table view, a sort by total) can
|
|
173
|
+
* pass one on.
|
|
174
|
+
*/
|
|
113
175
|
export interface HeatmapTotals {
|
|
114
176
|
/** Per row index (props order), by the row method. */
|
|
115
|
-
rows:
|
|
177
|
+
rows: ModelCell[];
|
|
116
178
|
/** Per column index, by the column method. */
|
|
117
|
-
columns:
|
|
179
|
+
columns: ModelCell[];
|
|
118
180
|
/** Every cell, by the row method (it sits in the row-totals column). */
|
|
119
|
-
grand:
|
|
120
|
-
/** Per group id: one
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
181
|
+
grand: ModelCell;
|
|
182
|
+
/** Per group id, whenever rows carry a group: one per column, by the
|
|
183
|
+
* group column method. */
|
|
184
|
+
groupColumns: Map<string, ModelCell[]>;
|
|
185
|
+
/** Per group id, whenever rows carry a group: every cell in the group,
|
|
186
|
+
* by the row method (it sits in the row-totals column). */
|
|
187
|
+
groups: Map<string, ModelCell>;
|
|
188
|
+
}
|
|
189
|
+
/** Which totals the viewer sees: drawn, or, for rows, ordering the rows. */
|
|
190
|
+
export interface ShownTotals {
|
|
191
|
+
rows: boolean;
|
|
192
|
+
columns: boolean;
|
|
193
|
+
grand: boolean;
|
|
194
|
+
groups: boolean;
|
|
195
|
+
groupColumns: boolean;
|
|
196
|
+
}
|
|
197
|
+
export interface TotalsOptions {
|
|
198
|
+
rowMethod: HeatmapAggregate;
|
|
199
|
+
columnMethod: HeatmapAggregate;
|
|
200
|
+
groupColumnMethod: HeatmapAggregate;
|
|
201
|
+
groups?: readonly HeatmapGroup[];
|
|
202
|
+
minCount?: number;
|
|
203
|
+
getTotal?: HeatmapGetTotal;
|
|
204
|
+
/** `rate` values are proportions of their count. Default `number`. */
|
|
205
|
+
valueType?: 'number' | 'rate';
|
|
206
|
+
/** Which totals the viewer sees. Default: every one. */
|
|
207
|
+
shown?: ShownTotals;
|
|
125
208
|
}
|
|
126
209
|
/**
|
|
127
|
-
* Works out every margin
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
*
|
|
210
|
+
* Works out every margin, then withholds whatever would let someone work
|
|
211
|
+
* out a hidden cell (status `low-sample`), alone or with any combination
|
|
212
|
+
* of the other totals shown, the shown cells and the known bounds. A total
|
|
213
|
+
* in the row-totals column (a row's, a group's, the grand total) uses the
|
|
214
|
+
* row method, so the column means one thing; a group's per-column totals
|
|
215
|
+
* use the group column method. Low-sample cells count: their data is real,
|
|
216
|
+
* only too thin to show on its own. `getTotal` may supply any total
|
|
217
|
+
* instead; the same rule applies.
|
|
218
|
+
*
|
|
219
|
+
* Primary: a total under minCount on its own count, one the kit would work
|
|
220
|
+
* out over a value it never had, and one whose hidden cells hold fewer
|
|
221
|
+
* than minCount records. Secondary: the disclosure audit in
|
|
222
|
+
* heatmap-disclosure.ts, over every total the viewer sees.
|
|
131
223
|
*/
|
|
132
|
-
export declare function computeTotals(matrix: readonly ModelCell[][], rows: readonly HeatmapRow[],
|
|
224
|
+
export declare function computeTotals(matrix: readonly ModelCell[][], rows: readonly HeatmapRow[], columns: readonly HeatmapColumn[], options: TotalsOptions): HeatmapTotals;
|
|
133
225
|
/** A row the grid body renders. */
|
|
134
226
|
export type BodyRow = {
|
|
135
227
|
kind: 'group';
|
|
@@ -149,7 +241,7 @@ export declare const dataRowKey: (rowId: string) => string;
|
|
|
149
241
|
export declare const groupRowKey: (groupId: string) => string;
|
|
150
242
|
export declare const FOOTER_ROW_KEY = "f";
|
|
151
243
|
/** Orders row indexes. Ties keep the props order (a stable sort). */
|
|
152
|
-
export declare function sortRowIndexes(indexes: readonly number[], rows: readonly HeatmapRow[], totals: readonly
|
|
244
|
+
export declare function sortRowIndexes(indexes: readonly number[], rows: readonly HeatmapRow[], totals: readonly ModelCell[], sort: HeatmapSortRows, collator: Intl.Collator): number[];
|
|
153
245
|
/** Builds the body: group headers (when grouping) and data rows. */
|
|
154
246
|
export declare function buildBodyRows(rows: readonly HeatmapRow[], sortedIndexes: readonly number[], groupRows: boolean, collapsed: ReadonlySet<string>): BodyRow[];
|
|
155
247
|
//# sourceMappingURL=heatmap-model.d.ts.map
|
|
@@ -16,11 +16,12 @@ export interface HeatmapTableViewProps {
|
|
|
16
16
|
/** Each group's public id, for the table's row ids (never a label). */
|
|
17
17
|
groupIds: ReadonlyMap<string, string>;
|
|
18
18
|
describer: HeatmapDescriber;
|
|
19
|
+
/** The grid's totals, withheld ones already reduced to a value-less
|
|
20
|
+
* cell, so the table can show nothing the grid does not. */
|
|
19
21
|
totals: HeatmapTotals | null;
|
|
20
22
|
rowTotals: HeatmapAggregate | false;
|
|
21
23
|
columnTotals: HeatmapAggregate | false;
|
|
22
24
|
groupColumnMethod: HeatmapAggregate;
|
|
23
|
-
minCount?: number;
|
|
24
25
|
/** The table failed to load or render (announced by the heatmap). */
|
|
25
26
|
onLoadError?: () => void;
|
|
26
27
|
}
|
|
@@ -31,5 +32,5 @@ export interface HeatmapTableViewProps {
|
|
|
31
32
|
* their groups in the grid's order. Labels go through the same privacy
|
|
32
33
|
* masking as the grid.
|
|
33
34
|
*/
|
|
34
|
-
export declare function HeatmapTableView({ title, rowsLabel, rows, columns, matrix, body, grouped, groupIds, describer, totals, rowTotals, columnTotals, groupColumnMethod,
|
|
35
|
+
export declare function HeatmapTableView({ title, rowsLabel, rows, columns, matrix, body, grouped, groupIds, describer, totals, rowTotals, columnTotals, groupColumnMethod, onLoadError, }: HeatmapTableViewProps): import("react/jsx-runtime").JSX.Element;
|
|
35
36
|
//# sourceMappingURL=heatmap-table-view.d.ts.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { type ReactNode } from 'react';
|
|
2
2
|
import { type HeatmapPrivacyScope, type HeatmapValueType } from './heatmap-format';
|
|
3
3
|
import { type HeatmapSelectionMode } from './heatmap-grid';
|
|
4
|
-
import { type HeatmapCellInfo, type HeatmapCellInput, type HeatmapCellKey, type HeatmapColumn, type HeatmapGroup, type HeatmapRow, type HeatmapSortRows } from './heatmap-model';
|
|
4
|
+
import { type HeatmapCellInfo, type HeatmapCellInput, type HeatmapCellKey, type HeatmapColumn, type HeatmapGetTotal, type HeatmapGroup, type HeatmapRow, type HeatmapSortRows } from './heatmap-model';
|
|
5
5
|
import { type HeatmapAggregate, type HeatmapScale } from './heatmap-scale';
|
|
6
6
|
import { HeatmapTooltip } from './heatmap-tooltip';
|
|
7
7
|
import { type HeatmapPalette } from './heatmap-variants';
|
|
8
|
-
export type { HeatmapCellData, HeatmapCellInfo, HeatmapCellInput, HeatmapCellKey, HeatmapCellStatus, HeatmapColumn, HeatmapGroup, HeatmapRow, HeatmapSortRows, } from './heatmap-model';
|
|
8
|
+
export type { HeatmapCellData, HeatmapCellInfo, HeatmapCellInput, HeatmapCellKey, HeatmapCellStatus, HeatmapColumn, HeatmapGetTotal, HeatmapGroup, HeatmapRow, HeatmapSortRows, HeatmapTotalScope, } from './heatmap-model';
|
|
9
9
|
export type { HeatmapAggregate, HeatmapScale } from './heatmap-scale';
|
|
10
10
|
export type { HeatmapPalette } from './heatmap-variants';
|
|
11
11
|
export type { HeatmapPrivacyScope, HeatmapValueType } from './heatmap-format';
|
|
@@ -85,12 +85,32 @@ export interface HeatmapProps {
|
|
|
85
85
|
valueType?: HeatmapValueType;
|
|
86
86
|
/**
|
|
87
87
|
* Cells with a count below this render as "too few to show", hatched.
|
|
88
|
-
*
|
|
89
|
-
* `
|
|
90
|
-
* keep a value off the page, send `{ value: null, count }`: it still
|
|
88
|
+
* For a cell it is a display rule, not disclosure control: `read_cell`,
|
|
89
|
+
* `onCellClick` and `onSelectionChange` still carry any value you pass.
|
|
90
|
+
* To keep a value off the page, send `{ value: null, count }`: it still
|
|
91
91
|
* renders as too few, and nothing can read a value the kit never had.
|
|
92
|
+
* Totals follow small-number disclosure control: any total that, in any
|
|
93
|
+
* combination with the other totals and cells, would pin down a hidden
|
|
94
|
+
* cell, narrow it below the protection level (half its range, for a
|
|
95
|
+
* rate), or determine a set of hidden cells with fewer than minCount
|
|
96
|
+
* records, is withheld too, and carries no value anywhere. Every total
|
|
97
|
+
* the data could show is audited, drawn or not. See `getTotal` and
|
|
98
|
+
* heatmap.mdx.
|
|
92
99
|
*/
|
|
93
100
|
minCount?: number;
|
|
101
|
+
/**
|
|
102
|
+
* Supplies a total: a row's, a column's, a group's, a group header cell
|
|
103
|
+
* or the grand total, as `scope.kind` says. Return a cell input (`null`
|
|
104
|
+
* for no total), or `undefined` to let the kit work it out from the
|
|
105
|
+
* cells. Needed when you withhold values (`value: null`): the kit cannot
|
|
106
|
+
* add up a value it never had, so it withholds any total it would get
|
|
107
|
+
* wrong. `minCount` and the disclosure audit apply to a supplied total
|
|
108
|
+
* exactly as to a worked-out one, which must be the exact count-weighted
|
|
109
|
+
* mean (or sum) of its cells. Asked for every row, every column and the
|
|
110
|
+
* grand total, and, whenever rows carry a group, every group and group
|
|
111
|
+
* header cell, drawn or not. Keep it stable (`useCallback`).
|
|
112
|
+
*/
|
|
113
|
+
getTotal?: HeatmapGetTotal;
|
|
94
114
|
/** Formats a value. Default: Intl in the active locale. Keep it stable. */
|
|
95
115
|
valueFormatter?: (value: number) => string;
|
|
96
116
|
/** Print the value inside each cell. */
|
|
@@ -100,18 +120,24 @@ export interface HeatmapProps {
|
|
|
100
120
|
/**
|
|
101
121
|
* A totals column at the row ends. A mean weights by count. Everything in
|
|
102
122
|
* that column uses this method: each row's total, each group's and the
|
|
103
|
-
* grand total in the corner.
|
|
123
|
+
* grand total in the corner. With `minCount`, a mean of plain numbers
|
|
124
|
+
* (`valueType="number"`) is not audited for hidden cells: every such
|
|
125
|
+
* average that holds one is withheld, so use `sum` for plain numbers.
|
|
104
126
|
*/
|
|
105
127
|
rowTotals?: HeatmapAggregate | false;
|
|
106
128
|
/**
|
|
107
129
|
* A totals row under the columns. A mean weights by count. A group
|
|
108
130
|
* header's per-column totals use this method too (else `rowTotals`).
|
|
131
|
+
* With `minCount`, a mean of plain numbers is withheld wherever it holds
|
|
132
|
+
* a hidden cell, as for `rowTotals`: use `sum` for plain numbers.
|
|
109
133
|
*/
|
|
110
134
|
columnTotals?: HeatmapAggregate | false;
|
|
111
135
|
/**
|
|
112
136
|
* Row order (within each group). Controlled when set. In privacy mode
|
|
113
137
|
* `label` keeps the given order: sorting by masked names would reveal
|
|
114
|
-
* their order.
|
|
138
|
+
* their order. A sort by total reads each row's total by the
|
|
139
|
+
* `rowTotals` method (else the `columnTotals` one, else mean); a row
|
|
140
|
+
* whose total is withheld sorts last.
|
|
115
141
|
*/
|
|
116
142
|
sortRows?: HeatmapSortRows;
|
|
117
143
|
/** Initial row order when uncontrolled. Default `none`. */
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { Heatmap } from './heatmap';
|
|
2
|
-
export type { HeatmapProps, HeatmapHandle, HeatmapView, HeatmapCellReading, HeatmapCellData, HeatmapCellInfo, HeatmapCellInput, HeatmapCellKey, HeatmapCellStatus, HeatmapColumn, HeatmapGroup, HeatmapRow, HeatmapSortRows, HeatmapAggregate, HeatmapScale, HeatmapPalette, HeatmapValueType, HeatmapSelectionMode, HeatmapPrivacyScope, HeatmapTooltipContext, } from './heatmap';
|
|
2
|
+
export type { HeatmapProps, HeatmapHandle, HeatmapView, HeatmapCellReading, HeatmapCellData, HeatmapCellInfo, HeatmapCellInput, HeatmapCellKey, HeatmapCellStatus, HeatmapColumn, HeatmapGetTotal, HeatmapGroup, HeatmapRow, HeatmapSortRows, HeatmapTotalScope, HeatmapAggregate, HeatmapScale, HeatmapPalette, HeatmapValueType, HeatmapSelectionMode, HeatmapPrivacyScope, HeatmapTooltipContext, } from './heatmap';
|
|
3
3
|
export { HeatmapLegend } from './heatmap-legend';
|
|
4
4
|
export type { HeatmapLegendProps } from './heatmap-legend';
|
|
5
5
|
export { HeatmapTooltip } from './heatmap-tooltip';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { P as r, f as s, p as m, a as e, s as n, b as o, c as i } from "../../_chunks/payment-form-
|
|
1
|
+
import { P as r, f as s, p as m, a as e, s as n, b as o, c as i } from "../../_chunks/payment-form-XKtinW8r.js";
|
|
2
2
|
export {
|
|
3
3
|
r as PaymentForm,
|
|
4
4
|
s as formatPaymentAmount,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { R as i, r as o, w as a } from "../../_chunks/rich-text-editor-
|
|
1
|
+
import { R as i, r as o, w as a } from "../../_chunks/rich-text-editor-aCIoptbg.js";
|
|
2
2
|
import { k as s } from "../../_chunks/kit-extensions-DWs1UEXb.js";
|
|
3
3
|
export {
|
|
4
4
|
i as RichTextEditor,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { VoiceControlPanel } from './voice-control-panel';
|
|
2
|
-
export type { VoiceControlPanelProps, VoiceControlPanelHandle, VoiceControlStatus, VoiceControlTone, VoiceControlError, VoiceControlMessage, VoiceControlTranscript, VoiceControlLanguage, VoiceControlCandidate, VoiceControlCommand, VoiceControlToggle, VoiceControlLayout, VoiceControlPosition, } from './voice-control-panel';
|
|
2
|
+
export type { VoiceControlPanelProps, VoiceControlPanelHandle, VoiceControlStatus, VoiceControlTone, VoiceControlError, VoiceControlMessage, VoiceControlTranscript, VoiceControlLanguage, VoiceControlCandidate, VoiceControlCommand, VoiceControlToggle, VoiceControlLayout, VoiceControlPosition, VoiceControlAiCredits, } from './voice-control-panel';
|
|
3
3
|
export type { AiConsentGate } from '../ai-permission-notice';
|
|
4
|
+
export type { AiCreditsInfo, AiCreditsExpiring, AiCreditsNoticeProps, } from '../ai-credits-notice';
|
|
4
5
|
export { voiceControlPanelAgent } from './voice-control-panel.agent';
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type HTMLAttributes, type ReactNode } from 'react';
|
|
2
|
+
import { type AiCreditsInfo, type AiCreditsNoticeProps } from '../ai-credits-notice';
|
|
2
3
|
import { type AiConsentBannerHeadingLevel, type AiConsentGate } from '../ai-permission-notice';
|
|
3
4
|
import { type KbdNamedKey } from '../kbd';
|
|
4
5
|
/** Where the host's voice session is. */
|
|
@@ -45,14 +46,29 @@ export type VoiceControlToggle = 'start' | 'stop';
|
|
|
45
46
|
export type VoiceControlLayout = 'inline' | 'floating';
|
|
46
47
|
/** The viewport corner of the floating pill. Logical: mirrors in RTL. */
|
|
47
48
|
export type VoiceControlPosition = 'bottom-end' | 'bottom-start';
|
|
49
|
+
/**
|
|
50
|
+
* The practice's AI credits, as the platform keeps them (a yearly allowance
|
|
51
|
+
* that expires, then welcome and bought credits that do not), plus whether
|
|
52
|
+
* they have run out. See `AiCreditsInfo` for the allowance, the dates and
|
|
53
|
+
* the next steps the host can offer.
|
|
54
|
+
*/
|
|
55
|
+
export interface VoiceControlAiCredits extends AiCreditsInfo {
|
|
56
|
+
/**
|
|
57
|
+
* Out of AI credits. Every way of starting shows the out-of-credits
|
|
58
|
+
* notice in the panel instead of calling `onToggle`; stopping is never
|
|
59
|
+
* gated. Set while a session runs or is paused, the panel stops it
|
|
60
|
+
* (`onToggle('stop')`, once) and shows the notice on its own.
|
|
61
|
+
*/
|
|
62
|
+
exhausted?: boolean;
|
|
63
|
+
}
|
|
48
64
|
/** Curated imperative handle for agent / external automation. */
|
|
49
65
|
export interface VoiceControlPanelHandle {
|
|
50
66
|
getStatus: () => VoiceControlStatus;
|
|
51
67
|
/** Ask the host to start (`onToggle('start')`) unless already starting
|
|
52
68
|
* or listening, or disabled. Gated by `aiConsent` like a press. */
|
|
53
69
|
start: () => void;
|
|
54
|
-
/** Ask the host to stop
|
|
55
|
-
* when
|
|
70
|
+
/** Ask the host to stop, cancel a start or end a paused session
|
|
71
|
+
* (`onToggle('stop')`); a no-op when idle or stopped. Never gated. */
|
|
56
72
|
stop: () => void;
|
|
57
73
|
getCandidateIds: () => string[];
|
|
58
74
|
pickCandidate: (id: string) => void;
|
|
@@ -66,6 +82,12 @@ export interface VoiceControlPanelHandle {
|
|
|
66
82
|
openPanel: () => void;
|
|
67
83
|
/** Floating layout: close the panel; listening carries on. A no-op inline. */
|
|
68
84
|
closePanel: () => void;
|
|
85
|
+
/** Whether `aiCredits.exhausted` is gating every start. */
|
|
86
|
+
isCreditsExhausted: () => boolean;
|
|
87
|
+
/** Whether the out-of-credits notice is showing. */
|
|
88
|
+
isCreditsNoticeOpen: () => boolean;
|
|
89
|
+
/** Close the out-of-credits notice, back to the controls. */
|
|
90
|
+
closeCreditsNotice: () => void;
|
|
69
91
|
}
|
|
70
92
|
export interface VoiceControlPanelProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title' | 'children' | 'onToggle'> {
|
|
71
93
|
/** Where the host's voice session is. Drives the button, dot and status. */
|
|
@@ -154,8 +176,26 @@ export interface VoiceControlPanelProps extends Omit<HTMLAttributes<HTMLDivEleme
|
|
|
154
176
|
* calling `onToggle`; stopping is never gated. Omit for ungated behaviour.
|
|
155
177
|
*/
|
|
156
178
|
aiConsent?: AiConsentGate;
|
|
157
|
-
/**
|
|
179
|
+
/**
|
|
180
|
+
* Heading level for the `AiConsentBanner` title and the out-of-credits
|
|
181
|
+
* notice title, which show in the same place. Default 5.
|
|
182
|
+
*/
|
|
158
183
|
aiConsentHeadingLevel?: AiConsentBannerHeadingLevel;
|
|
184
|
+
/**
|
|
185
|
+
* The practice's AI credits. With `exhausted`, every way of starting (the
|
|
186
|
+
* Start button, the pill's mic, the shortcut, the agent's
|
|
187
|
+
* `start_listening`) shows the out-of-credits notice instead of calling
|
|
188
|
+
* `onToggle`, after the consent check; stopping is never gated. Running
|
|
189
|
+
* low (80% used, or `runningLow`) and `expiring` show as quiet lines in
|
|
190
|
+
* the panel and never block. Omit for ungated behaviour.
|
|
191
|
+
*/
|
|
192
|
+
aiCredits?: VoiceControlAiCredits;
|
|
193
|
+
/**
|
|
194
|
+
* Floating only: the `AiCreditsNotice` hover card on the pill's mic, as on
|
|
195
|
+
* the RichTextEditor's AI triggers. It never takes the click: the mic
|
|
196
|
+
* still starts, stops or opens a gate exactly as without it.
|
|
197
|
+
*/
|
|
198
|
+
aiCreditsNotice?: AiCreditsNoticeProps;
|
|
159
199
|
}
|
|
160
200
|
type ShortcutModifier = Extract<KbdNamedKey, 'Alt' | 'Control' | 'Shift' | 'Meta'>;
|
|
161
201
|
interface ParsedShortcut {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { C as r, W as e, a as s, b as d, c as w, i as t, l as f, m as l, r as i, w as k, d as n, e as A, f as C } from "../../_chunks/workflow-map-
|
|
1
|
+
import { C as r, W as e, a as s, b as d, c as w, i as t, l as f, m as l, r as i, w as k, d as n, e as A, f as C } from "../../_chunks/workflow-map-CYbRD9ek.js";
|
|
2
2
|
export {
|
|
3
3
|
r as CORE_PATIENT_FIELDS,
|
|
4
4
|
e as WorkflowCard,
|
|
@@ -64,19 +64,44 @@ export declare const arUi: {
|
|
|
64
64
|
readonly eyebrow: "مساعدة الذكاء الاصطناعي";
|
|
65
65
|
readonly heading: "مُدرج ضمن خطتك";
|
|
66
66
|
readonly body: "تُقدَّم ميزات الذكاء الاصطناعي دون أي تكلفة إضافية خلال فترة التجربة هذه.";
|
|
67
|
-
readonly allowance: "{{remaining}} من {{limit}}
|
|
67
|
+
readonly allowance: "تبقّى {{remaining}} من {{limit}} من أرصدة الذكاء الاصطناعي";
|
|
68
68
|
readonly resetsOn: "يتجدد في {{date}}";
|
|
69
69
|
readonly learnMore: "معرفة المزيد";
|
|
70
70
|
};
|
|
71
71
|
readonly bundles: {
|
|
72
72
|
readonly eyebrow: "أرصدة الذكاء الاصطناعي";
|
|
73
73
|
readonly headingWithAllowance: "{{remaining}} من {{limit}} رصيدًا";
|
|
74
|
-
readonly body: "
|
|
74
|
+
readonly body: "حصتك هي {{limit}} من أرصدة الذكاء الاصطناعي. للحصول على المزيد، اختر باقة أرصدة.";
|
|
75
75
|
readonly bodyGeneric: "اختر باقة أرصدة لمواصلة استخدام ميزات الذكاء الاصطناعي.";
|
|
76
76
|
readonly viewBundles: "عرض الباقات";
|
|
77
77
|
readonly seeCosts: "تكلفة كل إجراء";
|
|
78
78
|
};
|
|
79
79
|
};
|
|
80
|
+
readonly aiCredits: {
|
|
81
|
+
readonly title: "نفدت أرصدة الذكاء الاصطناعي";
|
|
82
|
+
readonly bodyBuy: "أضف أرصدة للمتابعة اليوم.";
|
|
83
|
+
readonly bodyUpgrade: "فعّل وحدة أرصدة الذكاء الاصطناعي لمواصلة استخدام مساعدة الذكاء الاصطناعي.";
|
|
84
|
+
readonly bodySupport: "تواصل مع الدعم لمواصلة استخدام مساعدة الذكاء الاصطناعي.";
|
|
85
|
+
readonly bodyRenews: "ستتوفر مساعدة الذكاء الاصطناعي مجددًا في {{date}}، عند تجديد حصتك.";
|
|
86
|
+
readonly bodyNone: "مساعدة الذكاء الاصطناعي غير متاحة إلى أن يتوفر لدى عيادتك مزيد من الأرصدة. للمساعدة، اسأل مسؤول العيادة أو تواصل مع دعم Alfadocs.";
|
|
87
|
+
readonly renewsOn: "تتجدد حصتك في {{date}}.";
|
|
88
|
+
readonly meterLabel: "أرصدة الذكاء الاصطناعي";
|
|
89
|
+
readonly remaining: "تبقّى {{remaining}} من {{limit}}";
|
|
90
|
+
readonly buy: "اشترِ أرصدة الذكاء الاصطناعي";
|
|
91
|
+
readonly upgrade: "فعّل وحدة أرصدة الذكاء الاصطناعي";
|
|
92
|
+
readonly contactSupport: "تواصل مع الدعم";
|
|
93
|
+
readonly seeCosts: "اطّلع على تكلفة كل إجراء";
|
|
94
|
+
readonly back: "رجوع";
|
|
95
|
+
readonly runningLow: "أرصدة الذكاء الاصطناعي توشك على النفاد: تبقّى {{remaining}} من {{limit}}.";
|
|
96
|
+
readonly runningLowCount: "أرصدة الذكاء الاصطناعي توشك على النفاد: تبقّى {{remaining}}.";
|
|
97
|
+
readonly runningLowPlain: "أرصدة الذكاء الاصطناعي توشك على النفاد.";
|
|
98
|
+
readonly expiring_zero: "تنتهي صلاحية {{amount}} من أرصدة الذكاء الاصطناعي في {{date}}.";
|
|
99
|
+
readonly expiring_one: "تنتهي صلاحية {{amount}} من أرصدة الذكاء الاصطناعي في {{date}}.";
|
|
100
|
+
readonly expiring_two: "تنتهي صلاحية {{amount}} من أرصدة الذكاء الاصطناعي في {{date}}.";
|
|
101
|
+
readonly expiring_few: "تنتهي صلاحية {{amount}} أرصدة ذكاء اصطناعي في {{date}}.";
|
|
102
|
+
readonly expiring_many: "تنتهي صلاحية {{amount}} رصيدًا من أرصدة الذكاء الاصطناعي في {{date}}.";
|
|
103
|
+
readonly expiring_other: "تنتهي صلاحية {{amount}} من أرصدة الذكاء الاصطناعي في {{date}}.";
|
|
104
|
+
};
|
|
80
105
|
readonly opticalPrescription: {
|
|
81
106
|
readonly ariaLabel: "وصفة النظارات";
|
|
82
107
|
readonly metaLabel: "تفاصيل الوصفة";
|
|
@@ -1553,6 +1578,7 @@ export declare const arUi: {
|
|
|
1553
1578
|
readonly allCells: "كل الخلايا";
|
|
1554
1579
|
readonly noData: "لا توجد بيانات";
|
|
1555
1580
|
readonly lowSample: "بيانات غير كافية";
|
|
1581
|
+
readonly totalWithheld: "مخفي لحماية الأعداد الصغيرة";
|
|
1556
1582
|
readonly countOf: "{{part}} من {{total}}";
|
|
1557
1583
|
readonly records_zero: "عدد السجلات: {{formatted}}";
|
|
1558
1584
|
readonly records_one: "عدد السجلات: {{formatted}}";
|
|
@@ -1581,6 +1607,7 @@ export declare const arUi: {
|
|
|
1581
1607
|
readonly noData: "لا توجد بيانات";
|
|
1582
1608
|
readonly lowSample: "بيانات غير كافية";
|
|
1583
1609
|
readonly lowSampleUnder: "بيانات غير كافية (أقل من {{value}})";
|
|
1610
|
+
readonly totalWithheld: "الإجماليات مخفية لحماية الأعداد الصغيرة";
|
|
1584
1611
|
readonly descriptionBands_zero: "مقياس الألوان مقسّم إلى فئات عددها {{formatted}}، وحدود التقسيم عند {{edges}}.";
|
|
1585
1612
|
readonly descriptionBands_one: "مقياس الألوان مقسّم إلى فئات عددها {{formatted}}، وحدود التقسيم عند {{edges}}.";
|
|
1586
1613
|
readonly descriptionBands_two: "مقياس الألوان مقسّم إلى فئات عددها {{formatted}}، وحدود التقسيم عند {{edges}}.";
|
|
@@ -3714,16 +3741,6 @@ export declare const arUi: {
|
|
|
3714
3741
|
readonly undo: "تراجع";
|
|
3715
3742
|
};
|
|
3716
3743
|
readonly credits: {
|
|
3717
|
-
readonly title: "نفدت أرصدة الذكاء الاصطناعي";
|
|
3718
|
-
readonly body: "أضف أرصدة للمتابعة اليوم.";
|
|
3719
|
-
readonly bodyResets: "يعود رصيدك المجاني في {{date}}. أضف أرصدة للمتابعة اليوم.";
|
|
3720
|
-
readonly bodyWait: "تتوفر مساعدة الذكاء الاصطناعي من جديد عند تجديد رصيدك الشهري.";
|
|
3721
|
-
readonly bodyWaitResets: "تتوفر مساعدة الذكاء الاصطناعي من جديد في {{date}}، عند تجديد رصيدك الشهري.";
|
|
3722
|
-
readonly meterLabel: "أرصدة الذكاء الاصطناعي هذا الشهر";
|
|
3723
|
-
readonly remaining: "تبقّى {{remaining}} من {{limit}}";
|
|
3724
|
-
readonly cta: "اشترِ أرصدة الذكاء الاصطناعي";
|
|
3725
|
-
readonly secondary: "اطّلع على تكلفة كل إجراء";
|
|
3726
|
-
readonly back: "رجوع";
|
|
3727
3744
|
readonly kept: "ملاحظتك وتعليماتك محفوظة.";
|
|
3728
3745
|
};
|
|
3729
3746
|
readonly manager: {
|
package/dist/i18n/locales/ar.js
CHANGED
|
@@ -55,19 +55,44 @@ const e = {
|
|
|
55
55
|
eyebrow: "مساعدة الذكاء الاصطناعي",
|
|
56
56
|
heading: "مُدرج ضمن خطتك",
|
|
57
57
|
body: "تُقدَّم ميزات الذكاء الاصطناعي دون أي تكلفة إضافية خلال فترة التجربة هذه.",
|
|
58
|
-
allowance: "{{remaining}} من {{limit}}
|
|
58
|
+
allowance: "تبقّى {{remaining}} من {{limit}} من أرصدة الذكاء الاصطناعي",
|
|
59
59
|
resetsOn: "يتجدد في {{date}}",
|
|
60
60
|
learnMore: "معرفة المزيد"
|
|
61
61
|
},
|
|
62
62
|
bundles: {
|
|
63
63
|
eyebrow: "أرصدة الذكاء الاصطناعي",
|
|
64
64
|
headingWithAllowance: "{{remaining}} من {{limit}} رصيدًا",
|
|
65
|
-
body: "
|
|
65
|
+
body: "حصتك هي {{limit}} من أرصدة الذكاء الاصطناعي. للحصول على المزيد، اختر باقة أرصدة.",
|
|
66
66
|
bodyGeneric: "اختر باقة أرصدة لمواصلة استخدام ميزات الذكاء الاصطناعي.",
|
|
67
67
|
viewBundles: "عرض الباقات",
|
|
68
68
|
seeCosts: "تكلفة كل إجراء"
|
|
69
69
|
}
|
|
70
70
|
},
|
|
71
|
+
aiCredits: {
|
|
72
|
+
title: "نفدت أرصدة الذكاء الاصطناعي",
|
|
73
|
+
bodyBuy: "أضف أرصدة للمتابعة اليوم.",
|
|
74
|
+
bodyUpgrade: "فعّل وحدة أرصدة الذكاء الاصطناعي لمواصلة استخدام مساعدة الذكاء الاصطناعي.",
|
|
75
|
+
bodySupport: "تواصل مع الدعم لمواصلة استخدام مساعدة الذكاء الاصطناعي.",
|
|
76
|
+
bodyRenews: "ستتوفر مساعدة الذكاء الاصطناعي مجددًا في {{date}}، عند تجديد حصتك.",
|
|
77
|
+
bodyNone: "مساعدة الذكاء الاصطناعي غير متاحة إلى أن يتوفر لدى عيادتك مزيد من الأرصدة. للمساعدة، اسأل مسؤول العيادة أو تواصل مع دعم Alfadocs.",
|
|
78
|
+
renewsOn: "تتجدد حصتك في {{date}}.",
|
|
79
|
+
meterLabel: "أرصدة الذكاء الاصطناعي",
|
|
80
|
+
remaining: "تبقّى {{remaining}} من {{limit}}",
|
|
81
|
+
buy: "اشترِ أرصدة الذكاء الاصطناعي",
|
|
82
|
+
upgrade: "فعّل وحدة أرصدة الذكاء الاصطناعي",
|
|
83
|
+
contactSupport: "تواصل مع الدعم",
|
|
84
|
+
seeCosts: "اطّلع على تكلفة كل إجراء",
|
|
85
|
+
back: "رجوع",
|
|
86
|
+
runningLow: "أرصدة الذكاء الاصطناعي توشك على النفاد: تبقّى {{remaining}} من {{limit}}.",
|
|
87
|
+
runningLowCount: "أرصدة الذكاء الاصطناعي توشك على النفاد: تبقّى {{remaining}}.",
|
|
88
|
+
runningLowPlain: "أرصدة الذكاء الاصطناعي توشك على النفاد.",
|
|
89
|
+
expiring_zero: "تنتهي صلاحية {{amount}} من أرصدة الذكاء الاصطناعي في {{date}}.",
|
|
90
|
+
expiring_one: "تنتهي صلاحية {{amount}} من أرصدة الذكاء الاصطناعي في {{date}}.",
|
|
91
|
+
expiring_two: "تنتهي صلاحية {{amount}} من أرصدة الذكاء الاصطناعي في {{date}}.",
|
|
92
|
+
expiring_few: "تنتهي صلاحية {{amount}} أرصدة ذكاء اصطناعي في {{date}}.",
|
|
93
|
+
expiring_many: "تنتهي صلاحية {{amount}} رصيدًا من أرصدة الذكاء الاصطناعي في {{date}}.",
|
|
94
|
+
expiring_other: "تنتهي صلاحية {{amount}} من أرصدة الذكاء الاصطناعي في {{date}}."
|
|
95
|
+
},
|
|
71
96
|
opticalPrescription: {
|
|
72
97
|
ariaLabel: "وصفة النظارات",
|
|
73
98
|
metaLabel: "تفاصيل الوصفة",
|
|
@@ -1548,6 +1573,7 @@ const e = {
|
|
|
1548
1573
|
allCells: "كل الخلايا",
|
|
1549
1574
|
noData: "لا توجد بيانات",
|
|
1550
1575
|
lowSample: "بيانات غير كافية",
|
|
1576
|
+
totalWithheld: "مخفي لحماية الأعداد الصغيرة",
|
|
1551
1577
|
countOf: "{{part}} من {{total}}",
|
|
1552
1578
|
records_zero: "عدد السجلات: {{formatted}}",
|
|
1553
1579
|
records_one: "عدد السجلات: {{formatted}}",
|
|
@@ -1576,6 +1602,7 @@ const e = {
|
|
|
1576
1602
|
noData: "لا توجد بيانات",
|
|
1577
1603
|
lowSample: "بيانات غير كافية",
|
|
1578
1604
|
lowSampleUnder: "بيانات غير كافية (أقل من {{value}})",
|
|
1605
|
+
totalWithheld: "الإجماليات مخفية لحماية الأعداد الصغيرة",
|
|
1579
1606
|
descriptionBands_zero: "مقياس الألوان مقسّم إلى فئات عددها {{formatted}}، وحدود التقسيم عند {{edges}}.",
|
|
1580
1607
|
descriptionBands_one: "مقياس الألوان مقسّم إلى فئات عددها {{formatted}}، وحدود التقسيم عند {{edges}}.",
|
|
1581
1608
|
descriptionBands_two: "مقياس الألوان مقسّم إلى فئات عددها {{formatted}}، وحدود التقسيم عند {{edges}}.",
|
|
@@ -3681,16 +3708,6 @@ const e = {
|
|
|
3681
3708
|
undo: "تراجع"
|
|
3682
3709
|
},
|
|
3683
3710
|
credits: {
|
|
3684
|
-
title: "نفدت أرصدة الذكاء الاصطناعي",
|
|
3685
|
-
body: "أضف أرصدة للمتابعة اليوم.",
|
|
3686
|
-
bodyResets: "يعود رصيدك المجاني في {{date}}. أضف أرصدة للمتابعة اليوم.",
|
|
3687
|
-
bodyWait: "تتوفر مساعدة الذكاء الاصطناعي من جديد عند تجديد رصيدك الشهري.",
|
|
3688
|
-
bodyWaitResets: "تتوفر مساعدة الذكاء الاصطناعي من جديد في {{date}}، عند تجديد رصيدك الشهري.",
|
|
3689
|
-
meterLabel: "أرصدة الذكاء الاصطناعي هذا الشهر",
|
|
3690
|
-
remaining: "تبقّى {{remaining}} من {{limit}}",
|
|
3691
|
-
cta: "اشترِ أرصدة الذكاء الاصطناعي",
|
|
3692
|
-
secondary: "اطّلع على تكلفة كل إجراء",
|
|
3693
|
-
back: "رجوع",
|
|
3694
3711
|
kept: "ملاحظتك وتعليماتك محفوظة."
|
|
3695
3712
|
},
|
|
3696
3713
|
manager: {
|