@graphysdk/react-renderer 0.0.1-plugins.9 → 1.8.1-beta.1786025839240

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.
@@ -0,0 +1,4034 @@
1
+ import { Command } from '@graphysdk/viz-engine';
2
+ import { CompiledPanel } from '@graphysdk/viz-engine';
3
+ import { CompiledSpec } from '@graphysdk/viz-engine';
4
+ import { ComponentType } from 'react';
5
+ import { DispatchOptions } from '@graphysdk/viz-engine';
6
+ import { EditorPanel } from './editable/panel/editor-panel';
7
+ import { EditTarget } from '@graphysdk/viz-engine';
8
+ import { FormattedAxis } from '@graphysdk/viz-engine';
9
+ import { FormattedHeadline } from '@graphysdk/viz-engine';
10
+ import { FormattedLegend } from '@graphysdk/viz-engine';
11
+ import { GraphLayout } from '@graphysdk/viz-engine';
12
+ import { HeadlineMeasurer } from '@graphysdk/viz-engine';
13
+ import { IntroStaggerOrder } from '@graphysdk/viz-engine';
14
+ import { JSX } from 'react/jsx-runtime';
15
+ import { LayoutEdge } from '@graphysdk/viz-engine';
16
+ import { LegendPosition } from '@graphysdk/viz-engine';
17
+ import { LineStyleType } from '@graphysdk/viz-engine';
18
+ import { PANEL_ROOT_ATTRIBUTE } from './editable/panel/editor-panel';
19
+ import { PanelRootProps } from './editable/panel/editor-panel';
20
+ import { PanelRootProps as PanelRootProps_2 } from '../panel/editor-panel';
21
+ import { PrimaryAxisTarget } from '@graphysdk/viz-engine';
22
+ import { ReactNode } from 'react';
23
+ import { Rect } from '@graphysdk/viz-engine';
24
+ import { ResolvedHeadlineSize } from '@graphysdk/viz-engine';
25
+ import { SourceContent } from '@graphysdk/viz-engine';
26
+ import { TextContent } from '@graphysdk/viz-engine';
27
+ import { TextMeasurer } from '@graphysdk/viz-engine';
28
+ import { TooltipContent } from '@graphysdk/viz-engine';
29
+
30
+ /** Both axes, each switched on and off from its own header. */
31
+ export declare const AxesPanel: ({ children, ...rootProps }: PanelProps) => JSX.Element;
32
+
33
+ /**
34
+ * Props for the AxisLabel slot — the axis title of every axis (e.g. "Revenue"), overridable via
35
+ * `slots.AxisLabel`. `labelRects` are SVG-local, keyed by edge. The tick band is a separate slot — see
36
+ * `AxisTicks`.
37
+ */
38
+ declare interface AxisLabelSlotProps {
39
+ formattedAxes: FormattedAxis[];
40
+ labelRects: Partial<Record<LayoutEdge, Rect>>;
41
+ }
42
+
43
+ /**
44
+ * One axis: whether it is drawn and where, how its labels read, and — when it carries a value scale —
45
+ * how that scale is transformed and where its domain starts and stops.
46
+ *
47
+ * Which rows appear follows the axis rather than a chart-type name. A discrete axis draws its whole
48
+ * domain, so it offers only its side. A value axis offers labels, a side and its domain; and because
49
+ * bars stand on a baseline, a value axis their bars anchor to can only grow from zero, so it drops
50
+ * the scale transform and the start and keeps only where it ends.
51
+ *
52
+ * Which axis is `x` and which is `y` stays as mapped however the chart is drawn: a flipped coordinate
53
+ * system turns a column chart on its side without moving the value scale off y.
54
+ */
55
+ export declare const AxisSection: ({ axis, title, layout, preview }: AxisSectionProps) => JSX.Element | null;
56
+
57
+ declare interface AxisSectionProps extends OverridableSectionProps {
58
+ /** Which axis this section edits. */
59
+ axis: PrimaryAxisTarget;
60
+ }
61
+
62
+ /**
63
+ * Props for the AxisTicks slot — the tick lines and tick labels of every axis, overridable via
64
+ * `slots.AxisTicks`. `tickRects` are SVG-local, keyed by edge. The axis title is a separate slot — see
65
+ * `AxisLabel`.
66
+ */
67
+ declare interface AxisTicksSlotProps {
68
+ formattedAxes: FormattedAxis[];
69
+ tickRects: Partial<Record<LayoutEdge, Rect>>;
70
+ }
71
+
72
+ /**
73
+ * How the badge paints at the current frame size:
74
+ * - `full` — glyph + "Made with Graphy" pill
75
+ * - `mini` — circular glyph capsule (also the under-200 px ladder step)
76
+ * - `hidden` — flag off, or frame below the minimum footprint
77
+ */
78
+ declare type BrandMarkVisual = 'full' | 'mini' | 'hidden';
79
+
80
+ /**
81
+ * A press that performs an edit rather than sets a value.
82
+ *
83
+ * Every press is its own undo entry, so there is no transient run to commit here — a button has no
84
+ * gesture to hold open the way a drag or a run of keystrokes does.
85
+ */
86
+ export declare const Button: ({ label, icon, onClick, variant, isDisabled, ariaLabel, ariaLabelledBy, id, }: ButtonControlProps) => JSX.Element;
87
+
88
+ declare interface ButtonBaseProps extends ControlBaseProps {
89
+ onClick: () => void;
90
+ /**
91
+ * `default` is a row: the icon before the label, on the section's own width. `tile` stacks the
92
+ * icon above the label in a taller cell, for a grid of add-affordances read as pictures.
93
+ */
94
+ variant?: 'default' | 'tile';
95
+ }
96
+
97
+ /**
98
+ * What the button shows, as a choice rather than two independent flags.
99
+ *
100
+ * A button with neither a label nor an icon is invisible and unnameable, and two optional props
101
+ * make that the default rather than an error. Splitting the cases closes it, and closes the one
102
+ * beside it: an icon standing alone is the only thing on the button, so it carries the accessible
103
+ * name and `ariaLabel` stops being optional.
104
+ */
105
+ declare type ButtonContentProps = {
106
+ label: string;
107
+ icon?: ReactNode;
108
+ } | {
109
+ label?: undefined;
110
+ icon: ReactNode;
111
+ ariaLabel: string;
112
+ };
113
+
114
+ /**
115
+ * An action rather than a value: pressing it is the whole gesture, so there is nothing to read
116
+ * back. Sections use it where an edit adds or removes something instead of changing a setting.
117
+ */
118
+ export declare type ButtonControlProps = ButtonBaseProps & ButtonContentProps;
119
+
120
+ /**
121
+ * Whether the chart shows its caption, and what it says.
122
+ *
123
+ * Hiding it leaves the text intact, so it comes back without being retyped. It is also editable in
124
+ * place on the chart; the field here is the second way in, not the only one.
125
+ */
126
+ export declare const CaptionSection: ({ title, layout, preview }: OverridableSectionProps) => JSX.Element | null;
127
+
128
+ /**
129
+ * A control where one gesture can produce a run of changes — a drag, a burst of typing, a held
130
+ * arrow key.
131
+ *
132
+ * `onChange` fires throughout the gesture and a section dispatches it transiently; `onCommit` fires
133
+ * once the gesture ends, so a whole drag collapses into one undo entry rather
134
+ * than one per frame. A control that only ever fires `onChange` still edits correctly; it just
135
+ * leaves the run open for the next edit to close.
136
+ */
137
+ export declare interface ContinuousControlProps<Value> extends ControlBaseProps {
138
+ value: Value;
139
+ onChange: (value: Value) => void;
140
+ onCommit?: () => void;
141
+ }
142
+
143
+ /** Props every control shares. */
144
+ export declare interface ControlBaseProps {
145
+ isDisabled?: boolean;
146
+ /** Required unless the control is labelled by a section row, which passes `ariaLabelledBy` instead. */
147
+ ariaLabel?: string;
148
+ ariaLabelledBy?: string;
149
+ /**
150
+ * Put on the element a row's `<label htmlFor>` points at, so a click on the label acts on the
151
+ * control. Only single labelable controls have somewhere to put it; a group takes `ariaLabelledBy`.
152
+ */
153
+ id?: string;
154
+ }
155
+
156
+ /**
157
+ * One choice in a control that offers a fixed set of them.
158
+ *
159
+ * `value` is a plain string rather than a command's own union: a control is one component type,
160
+ * which cannot be generic in what it selects. Sections map between the two.
161
+ */
162
+ export declare interface ControlOption {
163
+ value: string;
164
+ label: string;
165
+ /** Secondary line under the label, shown by controls that have room for one. */
166
+ description?: string;
167
+ /** Shown beside the label, or alone where the control is icon-only. */
168
+ icon?: ReactNode;
169
+ isDisabled?: boolean;
170
+ }
171
+
172
+ /**
173
+ * The controls a panel is built from, each replaceable by the host.
174
+ *
175
+ * Sections never reach for a UI library directly — every leaf goes through here, so an app can drop
176
+ * its own design system in without re-authoring a single section. Every member is optional, so
177
+ * adopting the panel is not all-or-nothing and a control added later is additive rather than
178
+ * breaking.
179
+ */
180
+ export declare interface ControlRegistry {
181
+ ToggleGroup?: ComponentType<ToggleGroupControlProps>;
182
+ Switch?: ComponentType<SwitchControlProps>;
183
+ Slider?: ComponentType<SliderControlProps>;
184
+ RadioGrid?: ComponentType<RadioGridControlProps>;
185
+ Button?: ComponentType<ButtonControlProps>;
186
+ TextField?: ComponentType<TextFieldControlProps>;
187
+ NumberField?: ComponentType<NumberFieldControlProps>;
188
+ Select?: ComponentType<SelectControlProps>;
189
+ }
190
+
191
+ declare interface CoreIntlProviderProps {
192
+ locale?: I18nLocale;
193
+ children: ReactNode;
194
+ i18nOverrides?: I18nRuntimeOverrides;
195
+ }
196
+
197
+ declare type DeepValue<T, Path extends string> = Path extends `${infer First}.${infer Rest}` ? First extends keyof T ? DeepValue<T[First], Rest> : never : Path extends keyof T ? T[Path] : never;
198
+
199
+ declare const dictionaries: {
200
+ readonly 'en-GB': {
201
+ readonly common: {
202
+ readonly save: "Save";
203
+ readonly cancel: "Cancel";
204
+ readonly confirm: "Confirm";
205
+ readonly delete: "Delete";
206
+ readonly confirmDelete: (params: {
207
+ item: string;
208
+ }) => string;
209
+ readonly abbreviations: {
210
+ readonly thousands: "k";
211
+ readonly millions: "m";
212
+ readonly billions: "b";
213
+ };
214
+ };
215
+ readonly editor: {
216
+ readonly title: "Graphy Editor";
217
+ readonly description: "Edit your content here";
218
+ readonly graphTypes: {
219
+ readonly column: "Column";
220
+ readonly columnStacked: "Stacked";
221
+ readonly columnStackedFill: "100% Stacked";
222
+ readonly bar: "Bar";
223
+ readonly barStacked: "Stacked";
224
+ readonly barStackedFill: "100% Stacked";
225
+ readonly line: "Line";
226
+ readonly areaStacked: "Stacked Area";
227
+ readonly pie: "Pie";
228
+ readonly donut: "Donut";
229
+ readonly scatter: "Scatter";
230
+ readonly bubble: "Bubble";
231
+ readonly funnel: "Funnel";
232
+ readonly combo: "Combo";
233
+ readonly heatmap: "Heatmap";
234
+ readonly waterfall: "Waterfall";
235
+ readonly mekko: "Mekko";
236
+ readonly table: "Table";
237
+ };
238
+ readonly sizePanel: {
239
+ readonly toolbarButton: "Size";
240
+ readonly presetsSection: {
241
+ readonly title: "Presets";
242
+ };
243
+ readonly customSizeSection: {
244
+ readonly title: "Custom size";
245
+ };
246
+ readonly presets: {
247
+ readonly googleSlides: "Google Slides / PowerPoint";
248
+ readonly webEmail: "Web / email";
249
+ readonly linkedIn: "LinkedIn post";
250
+ readonly instagram: "Instagram post";
251
+ readonly tiktok: "TikTok / Instagram story";
252
+ readonly twitter: "X (Twitter)";
253
+ readonly mobile: "Mobile";
254
+ };
255
+ readonly inputs: {
256
+ readonly unitLabel: "px";
257
+ };
258
+ readonly validation: {
259
+ readonly maxSizeError: (params: {
260
+ max: number;
261
+ }) => string;
262
+ readonly minSizeError: (params: {
263
+ min: number;
264
+ }) => string;
265
+ };
266
+ };
267
+ readonly graphPanel: {
268
+ readonly toolbarButton: "Graph";
269
+ readonly graphTypeSection: {
270
+ readonly title: "Graph type";
271
+ };
272
+ readonly graphOptionsSection: {
273
+ readonly title: "Graph options";
274
+ };
275
+ readonly graphOptions: {
276
+ readonly sortBars: "Sort high → low";
277
+ readonly gridLines: "Grid lines";
278
+ readonly showPoints: "Show points";
279
+ readonly smoothLines: "Smooth lines";
280
+ readonly stackTotals: "Stack totals";
281
+ readonly dataLabels: "Data labels";
282
+ readonly showPercentages: "Show percentages";
283
+ readonly categoryLabels: "Category labels";
284
+ };
285
+ readonly legendSection: {
286
+ readonly title: "Legend";
287
+ readonly auto: "Auto";
288
+ readonly top: "Top";
289
+ readonly bottom: "Bottom";
290
+ readonly left: "Left";
291
+ readonly right: "Right";
292
+ readonly none: "None";
293
+ };
294
+ readonly numberFormatSection: {
295
+ readonly title: "Number format";
296
+ };
297
+ readonly numberFormat: {
298
+ readonly abbreviationLabel: "Abbreviation";
299
+ readonly valueLabel: "Value";
300
+ readonly decimalPlacesLabel: "Decimal places";
301
+ readonly options: {
302
+ readonly auto: "Auto";
303
+ readonly custom: "Custom";
304
+ readonly none: "None";
305
+ };
306
+ };
307
+ readonly headlineNumberSize: {
308
+ readonly sizeLabel: "Size";
309
+ readonly valueLabel: "Value";
310
+ readonly sizes: {
311
+ readonly small: "S";
312
+ readonly medium: "M";
313
+ readonly large: "L";
314
+ };
315
+ };
316
+ readonly lineThickness: {
317
+ readonly label: "Line thickness";
318
+ };
319
+ readonly pointSize: {
320
+ readonly label: "Point size";
321
+ readonly options: {
322
+ readonly auto: "Auto";
323
+ readonly custom: "Custom";
324
+ };
325
+ };
326
+ readonly headlineNumberSection: {
327
+ readonly title: "Headline number";
328
+ readonly toggle: "Visible";
329
+ readonly metricLabel: "Metric";
330
+ readonly compareWithLabel: "Compare with";
331
+ readonly metrics: {
332
+ readonly total: "Total";
333
+ readonly average: "Avg.";
334
+ readonly current: "Last";
335
+ readonly conversion: "Conversion";
336
+ readonly left: "Left";
337
+ };
338
+ readonly comparison: {
339
+ readonly first: "First";
340
+ readonly previous: "Previous";
341
+ };
342
+ readonly pieTotalPosition: {
343
+ readonly left: "Left";
344
+ readonly center: "Center";
345
+ };
346
+ };
347
+ readonly treatEmptyValues: {
348
+ readonly leaveGap: {
349
+ readonly label: "Leave gap in chart";
350
+ readonly description: "Leaves a visible break in the line where data is missing";
351
+ };
352
+ readonly fillZero: {
353
+ readonly label: "Fill with zero";
354
+ readonly description: "Displays missing data points as zero";
355
+ };
356
+ readonly connectGaps: {
357
+ readonly label: "Connect across gaps";
358
+ readonly description: "Joins the line between available points, skipping the gap";
359
+ };
360
+ };
361
+ readonly comboChartAppearance: {
362
+ readonly title: "Combo chart appearance";
363
+ readonly groupedBars: "Grouped bars";
364
+ readonly stackedBars: "Stacked bars";
365
+ readonly linesOnly: "Lines only";
366
+ };
367
+ };
368
+ readonly columnMapping: {
369
+ readonly title: "Data";
370
+ readonly xAxis: "X-axis";
371
+ readonly yAxis: "Y-axis";
372
+ readonly leftYAxis: "Y-axis (left)";
373
+ readonly rightYAxis: "Y-axis (right)";
374
+ readonly slices: "Values (slices)";
375
+ readonly labels: "Labels";
376
+ readonly size: "Size";
377
+ readonly shape: "Shape";
378
+ readonly reset: "Reset to auto";
379
+ readonly addSeries: "Add series";
380
+ readonly removeSeries: "Remove series";
381
+ };
382
+ readonly axesPanel: {
383
+ readonly toolbarButton: "Axes";
384
+ readonly mainAxisSection: {
385
+ readonly yAxis: "Y-axis";
386
+ readonly xAxis: "X-axis";
387
+ };
388
+ readonly crossAxisSection: {
389
+ readonly xAxis: "X-axis";
390
+ readonly yAxis: "Y-axis";
391
+ };
392
+ readonly controls: {
393
+ readonly visible: "Visible";
394
+ readonly labels: "Labels";
395
+ readonly position: "Position";
396
+ readonly scale: "Scale";
397
+ readonly startFrom: "Start from";
398
+ readonly endAt: "End at";
399
+ readonly value: "Value";
400
+ readonly numberOfAxes: "Number of axes";
401
+ readonly reverse: "Reverse";
402
+ };
403
+ readonly labelMode: {
404
+ readonly auto: "Auto";
405
+ readonly edges: "Edges";
406
+ };
407
+ readonly scale: {
408
+ readonly auto: "Auto";
409
+ readonly log: "Log";
410
+ };
411
+ readonly startFrom: {
412
+ readonly auto: "Auto";
413
+ readonly zero: "Zero";
414
+ readonly custom: "Custom";
415
+ };
416
+ readonly endAt: {
417
+ readonly auto: "Auto";
418
+ readonly custom: "Custom";
419
+ };
420
+ readonly axisCount: {
421
+ readonly single: "Single";
422
+ readonly double: "Double";
423
+ };
424
+ readonly position: {
425
+ readonly left: "Left";
426
+ readonly right: "Right";
427
+ readonly top: "Top";
428
+ readonly bottom: "Bottom";
429
+ };
430
+ readonly yesNo: {
431
+ readonly yes: "Yes";
432
+ readonly no: "No";
433
+ };
434
+ };
435
+ readonly colorPanel: {
436
+ readonly toolbarButton: "Color";
437
+ readonly themeSection: {
438
+ readonly title: "Theme";
439
+ };
440
+ readonly paletteSection: {
441
+ readonly title: "Palette";
442
+ readonly colorScheme: "Color scheme";
443
+ readonly colors: "Colors";
444
+ readonly colorPalettes: "Color palettes";
445
+ };
446
+ readonly paletteMode: {
447
+ readonly preset: "Preset";
448
+ readonly brand: "Brand";
449
+ readonly freestyle: "Freestyle";
450
+ };
451
+ readonly paletteThemes: {
452
+ readonly colorful: "Colorful";
453
+ readonly pastel: "Pastel";
454
+ readonly neon: "Neon";
455
+ };
456
+ readonly backgroundSection: {
457
+ readonly title: "Background";
458
+ readonly black: "Black";
459
+ readonly white: "White";
460
+ readonly grey: "Grey";
461
+ readonly tint: "Tint";
462
+ readonly custom: "Custom";
463
+ readonly none: "None";
464
+ };
465
+ readonly borderSection: {
466
+ readonly title: "Border";
467
+ readonly borderColor: "Border color";
468
+ readonly thickness: "Thickness";
469
+ readonly cornerRadius: "Corner radius";
470
+ };
471
+ readonly borderType: {
472
+ readonly solid: "Solid";
473
+ readonly gradient: "Gradient";
474
+ readonly grey: "Grey";
475
+ readonly preset: "Preset";
476
+ readonly custom: "Custom";
477
+ readonly none: "None";
478
+ };
479
+ readonly presetGradients: {
480
+ readonly lilac: "Lilac";
481
+ readonly neonPink: "Neon Pink";
482
+ readonly blackberry: "Blackberry";
483
+ readonly sun: "Sun";
484
+ readonly iceland: "Iceland";
485
+ readonly sunset: "Sunset";
486
+ readonly ultraviolet: "Ultraviolet";
487
+ readonly purple: "Purple";
488
+ readonly iceCream: "Ice Cream";
489
+ readonly mint: "Mint";
490
+ readonly cool: "Cool";
491
+ readonly fresh: "Fresh";
492
+ };
493
+ };
494
+ readonly designPanel: {
495
+ readonly toolbarButton: "Design";
496
+ readonly defaultExpanded: "Palette";
497
+ };
498
+ readonly annotatePanel: {
499
+ readonly toolbarButton: "Annotate";
500
+ readonly callOutSection: {
501
+ readonly title: "Call-out";
502
+ readonly text: "Text";
503
+ readonly arrow: "Arrow";
504
+ readonly box: "Box";
505
+ readonly differenceArrows: "Difference arrows";
506
+ };
507
+ readonly highlightSection: {
508
+ readonly title: "Highlight";
509
+ readonly button: "Highlight";
510
+ readonly colorLabel: "Highlight color";
511
+ };
512
+ };
513
+ readonly annotationsPanel: {
514
+ readonly toolbarButton: "Annotate";
515
+ readonly freeformSection: {
516
+ readonly title: "Freeform";
517
+ readonly text: "Text";
518
+ readonly arrow: "Arrow";
519
+ readonly box: "Box";
520
+ readonly difference: "Difference";
521
+ };
522
+ readonly goalSection: {
523
+ readonly title: "Goal";
524
+ readonly labelControl: "Label";
525
+ readonly labelPlaceholder: "Goal";
526
+ readonly labelAriaLabel: "Custom goal label";
527
+ readonly valueControl: "Goal value";
528
+ readonly valueAriaLabel: "Goal value";
529
+ readonly byDate: "By date";
530
+ readonly xAxisValue: "X-axis value";
531
+ readonly optional: "(optional)";
532
+ };
533
+ readonly trendsAndAveragesSection: {
534
+ readonly title: "Trends and Averages";
535
+ readonly trend: "Trend";
536
+ readonly average: "Average";
537
+ };
538
+ readonly trendType: {
539
+ readonly label: "Trend type";
540
+ readonly placeholder: "Trend type";
541
+ readonly options: {
542
+ readonly linear: "Linear";
543
+ readonly exponential: "Exponential";
544
+ readonly quadratic: "Quadratic";
545
+ readonly polynomial: "Polynomial";
546
+ readonly logarithmic: "Logarithmic";
547
+ readonly power: "Power";
548
+ readonly loess: "Loess";
549
+ };
550
+ };
551
+ readonly averageLineSeries: {
552
+ readonly label: "Average line series";
553
+ readonly placeholder: "Select series";
554
+ readonly ariaLabel: "Series dropdown for average line";
555
+ };
556
+ readonly highlightSection: {
557
+ readonly title: "Highlight";
558
+ readonly button: "Highlight";
559
+ readonly fadeColorLabel: "Fade color";
560
+ };
561
+ readonly titleAndSubtitleSection: {
562
+ readonly title: "Title & Subtitle";
563
+ readonly toggleTitle: "Title";
564
+ readonly subtitle: "Subtitle";
565
+ };
566
+ readonly captionAndSourceSection: {
567
+ readonly title: "Caption & Source";
568
+ readonly caption: "Caption";
569
+ readonly source: "Source";
570
+ readonly url: "URL";
571
+ readonly name: "Name";
572
+ };
573
+ };
574
+ readonly elementsPanel: {
575
+ readonly contentVisible: "Visible";
576
+ readonly contentValue: "Value";
577
+ readonly toolbarButton: "Elements";
578
+ readonly headerSection: {
579
+ readonly title: "Header";
580
+ readonly toggleTitle: "Title";
581
+ readonly subtitle: "Subtitle";
582
+ };
583
+ readonly footerSection: {
584
+ readonly title: "Footer";
585
+ readonly caption: "Caption";
586
+ readonly source: "Source";
587
+ readonly url: "URL";
588
+ readonly name: "Name";
589
+ };
590
+ readonly textSizeSection: {
591
+ readonly title: "Text size";
592
+ readonly scaleFormat: (params: {
593
+ value: string;
594
+ }) => string;
595
+ };
596
+ readonly fontSection: {
597
+ readonly title: "Font";
598
+ };
599
+ readonly sourceSection: {
600
+ readonly title: "Source";
601
+ readonly url: "URL";
602
+ readonly name: "Name";
603
+ };
604
+ };
605
+ readonly powerUpPanel: {
606
+ readonly toolbarButton: "Power-ups";
607
+ readonly goalSection: {
608
+ readonly title: "Goal";
609
+ readonly toggle: "Goal";
610
+ readonly labelControl: "Label";
611
+ readonly labelPlaceholder: "Goal";
612
+ readonly labelAriaLabel: "Custom goal label";
613
+ readonly valueControl: "Goal value";
614
+ readonly byDate: "By date";
615
+ readonly xAxisValue: "X-axis value";
616
+ readonly optional: " (optional)";
617
+ readonly xAxisReferenceAriaLabel: "X-axis reference value";
618
+ readonly anyXAxisValue: "Any x-axis value";
619
+ readonly selectValuePlaceholder: "Select value";
620
+ };
621
+ readonly trendSection: {
622
+ readonly title: "Trend";
623
+ readonly toggle: "Trend";
624
+ };
625
+ readonly averageSection: {
626
+ readonly title: "Average";
627
+ readonly toggle: "Average";
628
+ readonly seriesLabel: "Average line series";
629
+ readonly seriesPlaceholder: "Select series";
630
+ readonly seriesAriaLabel: "Series dropdown for average line";
631
+ };
632
+ readonly trendType: {
633
+ readonly label: "Trend type";
634
+ readonly placeholder: "Trend type";
635
+ readonly options: {
636
+ readonly linear: "Linear";
637
+ readonly exponential: "Exponential";
638
+ readonly quadratic: "Quadratic";
639
+ readonly polynomial: "Polynomial";
640
+ readonly logarithmic: "Logarithmic";
641
+ readonly power: "Power";
642
+ readonly loess: "Loess";
643
+ };
644
+ };
645
+ readonly valueInput: {
646
+ readonly percentagePlaceholder: "Percentage";
647
+ readonly numberPlaceholder: "Number";
648
+ readonly percentageSymbol: "%";
649
+ };
650
+ };
651
+ readonly highlighting: {
652
+ readonly modeHelper: {
653
+ readonly title: "Highlight mode";
654
+ readonly hover: "Hover";
655
+ readonly toHighlight: "to highlight";
656
+ readonly anyElement: "any element";
657
+ readonly escToExit: "to exit";
658
+ readonly esc: "ESC";
659
+ };
660
+ readonly emptyState: "No highlight options available";
661
+ readonly deleteAriaLabel: "Delete highlight";
662
+ readonly highlightStyle: {
663
+ readonly tint: "Tint";
664
+ readonly grey: "Grey";
665
+ };
666
+ };
667
+ readonly fineTunePanel: {
668
+ readonly toolbarButton: "Fine tune";
669
+ readonly detailSection: {
670
+ readonly title: "Detail";
671
+ readonly missingValues: "Missing values";
672
+ };
673
+ readonly lineStyleSection: {
674
+ readonly title: "Line style";
675
+ readonly lineCurve: "Line curve";
676
+ readonly sharp: "Sharp";
677
+ readonly smooth: "Smooth";
678
+ };
679
+ };
680
+ readonly customThemeEditor: {
681
+ readonly patternDropdownAriaLabel: "Pattern dropdown for series";
682
+ readonly patterns: {
683
+ readonly solid: "Solid";
684
+ readonly pattern: "Pattern";
685
+ readonly dotted: "Dotted";
686
+ readonly dashed: "Dashed";
687
+ readonly hatched: "Hatched";
688
+ };
689
+ readonly heatmapColorLabel: "Color";
690
+ };
691
+ readonly accessibility: {
692
+ readonly toggleSection: (params: {
693
+ title: string;
694
+ }) => string;
695
+ };
696
+ readonly graphyDefaults: {
697
+ readonly themeOptions: {
698
+ readonly light: "Light";
699
+ readonly dark: "Dark";
700
+ };
701
+ };
702
+ };
703
+ readonly graph: {
704
+ readonly loading: "Loading";
705
+ readonly error: "Something went wrong";
706
+ readonly axisLabels: {
707
+ readonly placeholder: "Add label";
708
+ };
709
+ readonly defaultPropertyLabels: {
710
+ readonly date: "Date";
711
+ readonly year: "Year";
712
+ readonly quarter: "Quarter";
713
+ readonly month: "Month";
714
+ readonly week: "Week";
715
+ readonly series: "Series";
716
+ readonly category: "Category";
717
+ readonly columnNumber: ({ number }: {
718
+ number: number;
719
+ }) => string;
720
+ readonly rowNumber: ({ number }: {
721
+ number: number;
722
+ }) => string;
723
+ readonly seriesNumber: ({ number }: {
724
+ number: number;
725
+ }) => string;
726
+ };
727
+ readonly trendComparison: {
728
+ readonly fromPrevious: {
729
+ readonly long: ({ value }: {
730
+ value: string;
731
+ }) => string;
732
+ readonly short: ({ value }: {
733
+ value: string;
734
+ }) => string;
735
+ };
736
+ readonly fromPreviousYear: {
737
+ readonly long: ({ value }: {
738
+ value: string;
739
+ }) => string;
740
+ readonly short: ({ value }: {
741
+ value: string;
742
+ }) => string;
743
+ };
744
+ readonly fromPreviousMonth: {
745
+ readonly long: ({ value }: {
746
+ value: string;
747
+ }) => string;
748
+ readonly short: ({ value }: {
749
+ value: string;
750
+ }) => string;
751
+ };
752
+ readonly fromPreviousWeek: {
753
+ readonly long: ({ value }: {
754
+ value: string;
755
+ }) => string;
756
+ readonly short: ({ value }: {
757
+ value: string;
758
+ }) => string;
759
+ };
760
+ readonly fromPreviousDay: {
761
+ readonly long: ({ value }: {
762
+ value: string;
763
+ }) => string;
764
+ readonly short: ({ value }: {
765
+ value: string;
766
+ }) => string;
767
+ };
768
+ readonly fromPreviousHour: {
769
+ readonly long: ({ value }: {
770
+ value: string;
771
+ }) => string;
772
+ readonly short: ({ value }: {
773
+ value: string;
774
+ }) => string;
775
+ };
776
+ };
777
+ readonly headlineMetrics: {
778
+ readonly averageLong: ({ value }: {
779
+ value: string;
780
+ }) => string;
781
+ readonly averageShort: ({ value }: {
782
+ value: string;
783
+ }) => string;
784
+ readonly total: ({ value }: {
785
+ value: string;
786
+ }) => string;
787
+ readonly totalConversionRate: ({ value }: {
788
+ value: string;
789
+ }) => string;
790
+ readonly current: ({ value }: {
791
+ value: string;
792
+ }) => string;
793
+ readonly comparisonReference: ({ value }: {
794
+ value: string;
795
+ }) => string;
796
+ };
797
+ readonly titleEditor: {
798
+ readonly titlePlaceholder: "Untitled";
799
+ readonly subtitlePlaceholder: "Add a subtitle";
800
+ };
801
+ readonly toolbar: {
802
+ readonly formatting: {
803
+ readonly bold: "Bold";
804
+ readonly italic: "Italic";
805
+ readonly underline: "Underline";
806
+ readonly link: "Link";
807
+ };
808
+ readonly link: {
809
+ readonly ariaLabel: "Create link";
810
+ readonly placeholder: "Type or paste a link...";
811
+ readonly submit: "Submit";
812
+ readonly urlLabel: "Link URL";
813
+ readonly apply: "Apply link";
814
+ };
815
+ readonly font: {
816
+ readonly label: "Font";
817
+ readonly ariaLabel: "Font family";
818
+ };
819
+ readonly heading: {
820
+ readonly label: "Heading level";
821
+ readonly ariaLabel: "Text style";
822
+ readonly text: "Text";
823
+ readonly caption: "Caption";
824
+ readonly heading1: "Heading 1";
825
+ readonly heading2: "Heading 2";
826
+ readonly heading3: "Heading 3";
827
+ };
828
+ readonly textAlign: {
829
+ readonly left: "Align left";
830
+ readonly center: "Align center";
831
+ readonly right: "Align right";
832
+ };
833
+ readonly color: {
834
+ readonly label: "Text color";
835
+ };
836
+ };
837
+ readonly colorDropdown: {
838
+ readonly colors: "Colors";
839
+ readonly chartColors: "Chart colors";
840
+ readonly custom: "Custom";
841
+ readonly opacity: "Opacity";
842
+ readonly transparent: "Transparent";
843
+ readonly pickCustom: "Pick custom color";
844
+ readonly pickColor: "Pick color";
845
+ };
846
+ readonly legend: {
847
+ readonly hiddenItems: "Hidden legend items";
848
+ };
849
+ readonly annotations: {
850
+ readonly differenceArrowToolbar: {
851
+ readonly label: "Difference arrow options";
852
+ readonly labelKind: {
853
+ readonly ariaLabel: "Label";
854
+ readonly absoluteDifference: "Absolute change";
855
+ readonly relativeDifference: "Percentage change";
856
+ readonly proportion: "Proportion";
857
+ readonly suspectValue: "This value divides by a baseline of zero.";
858
+ readonly incomparableEnds: "The two ends measure different quantities, so a difference between them has no meaning.";
859
+ };
860
+ readonly color: "Arrow colour";
861
+ readonly size: {
862
+ readonly ariaLabel: "Size";
863
+ readonly small: "Small";
864
+ readonly medium: "Medium";
865
+ readonly large: "Large";
866
+ };
867
+ readonly swap: "Swap direction";
868
+ readonly remove: "Remove arrow";
869
+ };
870
+ readonly baseMenu: {
871
+ readonly pinNumber: "Pin number";
872
+ readonly unpinNumber: "Unpin number";
873
+ readonly annotate: "Annotate";
874
+ readonly removeAnnotation: "Remove annotation";
875
+ readonly highlight: "Highlight";
876
+ readonly highlightWithLabel: (params: {
877
+ label: string;
878
+ }) => string;
879
+ readonly removeHighlight: "Remove highlight";
880
+ readonly differenceArrow: "Difference arrow";
881
+ readonly addSticker: "Add sticker";
882
+ readonly removeSticker: "Remove sticker";
883
+ };
884
+ readonly textMenu: {
885
+ readonly title: "Annotate";
886
+ readonly placeholder: "Add a comment";
887
+ readonly addButton: "Add";
888
+ };
889
+ readonly highlights: {
890
+ readonly menuTitle: "Highlight";
891
+ readonly labels: {
892
+ readonly bar: "bar";
893
+ readonly barGroup: "group";
894
+ readonly barStack: "stack";
895
+ readonly barSeries: "series";
896
+ readonly line: "line";
897
+ readonly linePoint: "point";
898
+ readonly lineSeries: "series";
899
+ readonly scatterPoint: "point";
900
+ readonly scatterSeries: "series";
901
+ readonly pieSlice: "slice";
902
+ readonly pointOrBar: "point / bar";
903
+ readonly lineOrSeries: "line / series";
904
+ };
905
+ };
906
+ readonly stickerMenu: {
907
+ readonly title: "Add sticker";
908
+ };
909
+ readonly delete: "Delete";
910
+ readonly arrow: {
911
+ readonly thickness: {
912
+ readonly label: "Thickness";
913
+ readonly thin: "Thin";
914
+ readonly medium: "Medium";
915
+ readonly thick: "Thick";
916
+ };
917
+ readonly arrowhead: {
918
+ readonly startPoint: "Start point";
919
+ readonly endPoint: "End point";
920
+ readonly lineArrow: "Line arrow";
921
+ readonly none: "None";
922
+ };
923
+ readonly lineStyle: {
924
+ readonly label: "Line style";
925
+ readonly solid: "Solid";
926
+ readonly dotted: "Dotted";
927
+ };
928
+ readonly stickerEffect: "Sticker effect";
929
+ readonly toolbarAriaLabel: "Free-form arrow toolbar";
930
+ readonly editorAriaLabel: "Arrow editor";
931
+ };
932
+ readonly differenceArrow: {
933
+ readonly type: {
934
+ readonly proportion: "Proportion";
935
+ readonly difference: ({ absoluteDifference }: {
936
+ absoluteDifference: string;
937
+ }) => string;
938
+ readonly increase: ({ absoluteDifference }: {
939
+ absoluteDifference: string;
940
+ }) => string;
941
+ readonly decrease: ({ absoluteDifference }: {
942
+ absoluteDifference: string;
943
+ }) => string;
944
+ readonly percentageChange: ({ percentageChange }: {
945
+ percentageChange: string;
946
+ }) => string;
947
+ readonly percentIncrease: ({ percentageChange }: {
948
+ percentageChange: string;
949
+ }) => string;
950
+ readonly percentDecrease: ({ percentageChange }: {
951
+ percentageChange: string;
952
+ }) => string;
953
+ };
954
+ readonly size: {
955
+ readonly label: "Size";
956
+ readonly small: "Small";
957
+ readonly medium: "Medium";
958
+ readonly large: "Large";
959
+ };
960
+ readonly flipArrow: "Flip arrow";
961
+ readonly color: "Color";
962
+ readonly toolbarAriaLabel: "Difference arrow toolbar";
963
+ readonly editorAriaLabel: "Difference arrow editor";
964
+ };
965
+ readonly shape: {
966
+ readonly color: "Color";
967
+ readonly border: {
968
+ readonly label: "Border";
969
+ readonly none: "None";
970
+ readonly thin: ({ value }: {
971
+ value: string;
972
+ }) => string;
973
+ readonly medium: ({ value }: {
974
+ value: string;
975
+ }) => string;
976
+ readonly thick: ({ value }: {
977
+ value: string;
978
+ }) => string;
979
+ };
980
+ };
981
+ };
982
+ };
983
+ readonly dir: "ltr";
984
+ };
985
+ readonly 'en-US': LooseLocaleShape;
986
+ readonly ar: {
987
+ readonly common: {
988
+ readonly save: "حفظ";
989
+ readonly cancel: "إلغاء";
990
+ readonly confirm: "تأكيد";
991
+ readonly delete: "حذف";
992
+ readonly confirmDelete: (params: {
993
+ item: string;
994
+ }) => string;
995
+ readonly abbreviations: {
996
+ readonly thousands: "ألف";
997
+ readonly millions: "مليون";
998
+ readonly billions: "مليار";
999
+ };
1000
+ };
1001
+ readonly editor: {
1002
+ readonly title: "محرر Graphy";
1003
+ readonly description: "قم بتحرير المحتوى الخاص بك هنا";
1004
+ readonly graphTypes: {
1005
+ readonly column: "أعمدة";
1006
+ readonly columnStacked: "مكدس";
1007
+ readonly columnStackedFill: "مكدس 100%";
1008
+ readonly bar: "شريطي";
1009
+ readonly barStacked: "مكدس";
1010
+ readonly barStackedFill: "مكدس 100%";
1011
+ readonly line: "خطي";
1012
+ readonly areaStacked: "مساحة مكدسة";
1013
+ readonly pie: "دائري";
1014
+ readonly donut: "حلقي";
1015
+ readonly scatter: "نقطي";
1016
+ readonly bubble: "فقاعي";
1017
+ readonly funnel: "قمعي";
1018
+ readonly combo: "مركب";
1019
+ readonly heatmap: "خريطة حرارية";
1020
+ readonly waterfall: "شلالي";
1021
+ readonly mekko: "ميكو";
1022
+ readonly table: "جدول";
1023
+ };
1024
+ readonly sizePanel: {
1025
+ readonly toolbarButton: "الحجم";
1026
+ readonly presetsSection: {
1027
+ readonly title: "إعدادات مسبقة";
1028
+ };
1029
+ readonly customSizeSection: {
1030
+ readonly title: "حجم مخصص";
1031
+ };
1032
+ readonly presets: {
1033
+ readonly googleSlides: "Google Slides / PowerPoint";
1034
+ readonly webEmail: "ويب / بريد إلكتروني";
1035
+ readonly linkedIn: "منشور LinkedIn";
1036
+ readonly instagram: "منشور Instagram";
1037
+ readonly tiktok: "TikTok / قصة Instagram";
1038
+ readonly twitter: "X (Twitter)";
1039
+ readonly mobile: "جوال";
1040
+ };
1041
+ readonly inputs: {
1042
+ readonly unitLabel: "بكسل";
1043
+ };
1044
+ readonly validation: {
1045
+ readonly maxSizeError: (params: {
1046
+ max: number;
1047
+ }) => string;
1048
+ readonly minSizeError: (params: {
1049
+ min: number;
1050
+ }) => string;
1051
+ };
1052
+ };
1053
+ readonly graphPanel: {
1054
+ readonly toolbarButton: "الرسم البياني";
1055
+ readonly graphTypeSection: {
1056
+ readonly title: "نوع الرسم البياني";
1057
+ };
1058
+ readonly graphOptionsSection: {
1059
+ readonly title: "خيارات الرسم البياني";
1060
+ };
1061
+ readonly graphOptions: {
1062
+ readonly sortBars: "ترتيب من الأعلى ← الأدنى";
1063
+ readonly gridLines: "خطوط الشبكة";
1064
+ readonly showPoints: "إظهار النقاط";
1065
+ readonly smoothLines: "خطوط ناعمة";
1066
+ readonly stackTotals: "مجاميع المكدس";
1067
+ readonly dataLabels: "تسميات البيانات";
1068
+ readonly showPercentages: "إظهار النسب المئوية";
1069
+ readonly categoryLabels: "تسميات الفئات";
1070
+ };
1071
+ readonly legendSection: {
1072
+ readonly title: "وسيلة الإيضاح";
1073
+ readonly auto: "تلقائي";
1074
+ readonly top: "أعلى";
1075
+ readonly bottom: "أسفل";
1076
+ readonly left: "يسار";
1077
+ readonly right: "يمين";
1078
+ readonly none: "بدون";
1079
+ };
1080
+ readonly numberFormatSection: {
1081
+ readonly title: "تنسيق الأرقام";
1082
+ };
1083
+ readonly numberFormat: {
1084
+ readonly abbreviationLabel: "الاختصار";
1085
+ readonly valueLabel: "القيمة";
1086
+ readonly decimalPlacesLabel: "المنازل العشرية";
1087
+ readonly options: {
1088
+ readonly auto: "تلقائي";
1089
+ readonly custom: "مخصص";
1090
+ readonly none: "بدون";
1091
+ };
1092
+ };
1093
+ readonly headlineNumberSize: {
1094
+ readonly sizeLabel: "الحجم";
1095
+ readonly valueLabel: "القيمة";
1096
+ readonly sizes: {
1097
+ readonly small: "ص";
1098
+ readonly medium: "م";
1099
+ readonly large: "ك";
1100
+ };
1101
+ };
1102
+ readonly lineThickness: {
1103
+ readonly label: "سمك الخط";
1104
+ };
1105
+ readonly pointSize: {
1106
+ readonly label: "حجم النقطة";
1107
+ readonly options: {
1108
+ readonly auto: "تلقائي";
1109
+ readonly custom: "مخصص";
1110
+ };
1111
+ };
1112
+ readonly headlineNumberSection: {
1113
+ readonly title: "الرقم الرئيسي";
1114
+ readonly toggle: "مرئي";
1115
+ readonly metricLabel: "المقياس";
1116
+ readonly compareWithLabel: "مقارنة مع";
1117
+ readonly metrics: {
1118
+ readonly total: "المجموع";
1119
+ readonly average: "المتوسط";
1120
+ readonly current: "الأخير";
1121
+ readonly conversion: "التحويل";
1122
+ readonly left: "يسار";
1123
+ };
1124
+ readonly comparison: {
1125
+ readonly first: "الأول";
1126
+ readonly previous: "السابق";
1127
+ };
1128
+ readonly pieTotalPosition: {
1129
+ readonly left: "يسار";
1130
+ readonly center: "وسط";
1131
+ };
1132
+ };
1133
+ readonly treatEmptyValues: {
1134
+ readonly leaveGap: {
1135
+ readonly label: "ترك فجوة في الرسم البياني";
1136
+ readonly description: "يترك فاصلاً مرئياً في الخط حيث تكون البيانات مفقودة";
1137
+ };
1138
+ readonly fillZero: {
1139
+ readonly label: "ملء بالصفر";
1140
+ readonly description: "يعرض نقاط البيانات المفقودة كصفر";
1141
+ };
1142
+ readonly connectGaps: {
1143
+ readonly label: "الاتصال عبر الفجوات";
1144
+ readonly description: "يربط الخط بين النقاط المتاحة، متخطياً الفجوة";
1145
+ };
1146
+ };
1147
+ readonly comboChartAppearance: {
1148
+ readonly title: "مظهر الرسم البياني المركب";
1149
+ readonly groupedBars: "أشرطة مجمعة";
1150
+ readonly stackedBars: "أشرطة مكدسة";
1151
+ readonly linesOnly: "خطوط فقط";
1152
+ };
1153
+ };
1154
+ readonly columnMapping: {
1155
+ readonly title: "البيانات";
1156
+ readonly xAxis: "المحور السيني";
1157
+ readonly yAxis: "المحور الصادي";
1158
+ readonly leftYAxis: "المحور الصادي (يسار)";
1159
+ readonly rightYAxis: "المحور الصادي (يمين)";
1160
+ readonly slices: "القيم (الشرائح)";
1161
+ readonly labels: "التسميات";
1162
+ readonly size: "الحجم";
1163
+ readonly shape: "الشكل";
1164
+ readonly reset: "إعادة التعيين إلى تلقائي";
1165
+ readonly addSeries: "إضافة سلسلة";
1166
+ readonly removeSeries: "إزالة السلسلة";
1167
+ };
1168
+ readonly axesPanel: {
1169
+ readonly toolbarButton: "المحاور";
1170
+ readonly mainAxisSection: {
1171
+ readonly yAxis: "المحور الصادي";
1172
+ readonly xAxis: "المحور السيني";
1173
+ };
1174
+ readonly crossAxisSection: {
1175
+ readonly xAxis: "المحور السيني";
1176
+ readonly yAxis: "المحور الصادي";
1177
+ };
1178
+ readonly controls: {
1179
+ readonly visible: "مرئي";
1180
+ readonly labels: "التسميات";
1181
+ readonly position: "الموضع";
1182
+ readonly scale: "المقياس";
1183
+ readonly startFrom: "البدء من";
1184
+ readonly endAt: "الانتهاء عند";
1185
+ readonly value: "القيمة";
1186
+ readonly numberOfAxes: "عدد المحاور";
1187
+ readonly reverse: "عكس";
1188
+ };
1189
+ readonly labelMode: {
1190
+ readonly auto: "تلقائي";
1191
+ readonly edges: "الحواف";
1192
+ };
1193
+ readonly scale: {
1194
+ readonly auto: "تلقائي";
1195
+ readonly log: "لوغاريتمي";
1196
+ };
1197
+ readonly startFrom: {
1198
+ readonly auto: "تلقائي";
1199
+ readonly zero: "صفر";
1200
+ readonly custom: "مخصص";
1201
+ };
1202
+ readonly endAt: {
1203
+ readonly auto: "تلقائي";
1204
+ readonly custom: "مخصص";
1205
+ };
1206
+ readonly axisCount: {
1207
+ readonly single: "مفرد";
1208
+ readonly double: "مزدوج";
1209
+ };
1210
+ readonly position: {
1211
+ readonly left: "يسار";
1212
+ readonly right: "يمين";
1213
+ readonly top: "أعلى";
1214
+ readonly bottom: "أسفل";
1215
+ };
1216
+ readonly yesNo: {
1217
+ readonly yes: "نعم";
1218
+ readonly no: "لا";
1219
+ };
1220
+ };
1221
+ readonly colorPanel: {
1222
+ readonly toolbarButton: "اللون";
1223
+ readonly themeSection: {
1224
+ readonly title: "السمة";
1225
+ };
1226
+ readonly paletteSection: {
1227
+ readonly title: "لوحة الألوان";
1228
+ readonly colorScheme: "نظام الألوان";
1229
+ readonly colors: "الألوان";
1230
+ readonly colorPalettes: "لوحات الألوان";
1231
+ };
1232
+ readonly paletteMode: {
1233
+ readonly preset: "مسبق";
1234
+ readonly brand: "العلامة التجارية";
1235
+ readonly freestyle: "حر";
1236
+ };
1237
+ readonly paletteThemes: {
1238
+ readonly colorful: "ملون";
1239
+ readonly pastel: "باستيل";
1240
+ readonly neon: "نيون";
1241
+ };
1242
+ readonly backgroundSection: {
1243
+ readonly title: "الخلفية";
1244
+ readonly black: "أسود";
1245
+ readonly white: "أبيض";
1246
+ readonly grey: "رمادي";
1247
+ readonly tint: "صبغة";
1248
+ readonly custom: "مخصص";
1249
+ readonly none: "بدون";
1250
+ };
1251
+ readonly borderSection: {
1252
+ readonly title: "الحدود";
1253
+ readonly borderColor: "لون الحدود";
1254
+ readonly thickness: "السمك";
1255
+ readonly cornerRadius: "نصف قطر الزاوية";
1256
+ };
1257
+ readonly borderType: {
1258
+ readonly solid: "صلب";
1259
+ readonly gradient: "متدرج";
1260
+ readonly grey: "رمادي";
1261
+ readonly preset: "مسبق";
1262
+ readonly custom: "مخصص";
1263
+ readonly none: "بدون";
1264
+ };
1265
+ readonly presetGradients: {
1266
+ readonly lilac: "ليلكي";
1267
+ readonly neonPink: "وردي نيون";
1268
+ readonly blackberry: "توت أسود";
1269
+ readonly sun: "شمس";
1270
+ readonly iceland: "آيسلندا";
1271
+ readonly sunset: "غروب";
1272
+ readonly ultraviolet: "فوق بنفسجي";
1273
+ readonly purple: "أرجواني";
1274
+ readonly iceCream: "آيس كريم";
1275
+ readonly mint: "نعناع";
1276
+ readonly cool: "بارد";
1277
+ readonly fresh: "منعش";
1278
+ };
1279
+ };
1280
+ readonly designPanel: {
1281
+ readonly toolbarButton: "التصميم";
1282
+ readonly defaultExpanded: "لوحة الألوان";
1283
+ };
1284
+ readonly annotatePanel: {
1285
+ readonly toolbarButton: "التعليقات";
1286
+ readonly callOutSection: {
1287
+ readonly title: "وسيلة الشرح";
1288
+ readonly text: "نص";
1289
+ readonly arrow: "سهم";
1290
+ readonly box: "مربع";
1291
+ readonly differenceArrows: "أسهم الفرق";
1292
+ };
1293
+ readonly highlightSection: {
1294
+ readonly title: "التمييز";
1295
+ readonly button: "تمييز";
1296
+ readonly colorLabel: "لون التمييز";
1297
+ };
1298
+ };
1299
+ readonly annotationsPanel: {
1300
+ readonly toolbarButton: "التعليقات";
1301
+ readonly freeformSection: {
1302
+ readonly title: "حر";
1303
+ readonly text: "نص";
1304
+ readonly arrow: "سهم";
1305
+ readonly box: "مربع";
1306
+ readonly difference: "فرق";
1307
+ };
1308
+ readonly goalSection: {
1309
+ readonly title: "الهدف";
1310
+ readonly labelControl: "التسمية";
1311
+ readonly labelPlaceholder: "الهدف";
1312
+ readonly labelAriaLabel: "تسمية الهدف المخصصة";
1313
+ readonly valueControl: "قيمة الهدف";
1314
+ readonly valueAriaLabel: "قيمة الهدف";
1315
+ readonly byDate: "حسب التاريخ";
1316
+ readonly xAxisValue: "قيمة المحور السيني";
1317
+ readonly optional: "(اختياري)";
1318
+ };
1319
+ readonly trendsAndAveragesSection: {
1320
+ readonly title: "الاتجاهات والمتوسطات";
1321
+ readonly trend: "الاتجاه";
1322
+ readonly average: "المتوسط";
1323
+ };
1324
+ readonly trendType: {
1325
+ readonly label: "نوع الاتجاه";
1326
+ readonly placeholder: "نوع الاتجاه";
1327
+ readonly options: {
1328
+ readonly linear: "خطي";
1329
+ readonly exponential: "أسي";
1330
+ readonly quadratic: "تربيعي";
1331
+ readonly polynomial: "متعدد الحدود";
1332
+ readonly logarithmic: "لوغاريتمي";
1333
+ readonly power: "قوة";
1334
+ readonly loess: "لويس";
1335
+ };
1336
+ };
1337
+ readonly averageLineSeries: {
1338
+ readonly label: "سلسلة خط المتوسط";
1339
+ readonly placeholder: "اختر السلسلة";
1340
+ readonly ariaLabel: "قائمة منسدلة للسلسلة لخط المتوسط";
1341
+ };
1342
+ readonly highlightSection: {
1343
+ readonly title: "التمييز";
1344
+ readonly button: "تمييز";
1345
+ readonly fadeColorLabel: "لون التلاشي";
1346
+ };
1347
+ readonly titleAndSubtitleSection: {
1348
+ readonly title: "العنوان والعنوان الفرعي";
1349
+ readonly toggleTitle: "العنوان";
1350
+ readonly subtitle: "العنوان الفرعي";
1351
+ };
1352
+ readonly captionAndSourceSection: {
1353
+ readonly title: "التسمية التوضيحية والمصدر";
1354
+ readonly caption: "التسمية التوضيحية";
1355
+ readonly source: "المصدر";
1356
+ readonly url: "الرابط";
1357
+ readonly name: "الاسم";
1358
+ };
1359
+ };
1360
+ readonly elementsPanel: {
1361
+ readonly contentVisible: "مرئي";
1362
+ readonly contentValue: "القيمة";
1363
+ readonly toolbarButton: "العناصر";
1364
+ readonly headerSection: {
1365
+ readonly title: "الرأس";
1366
+ readonly toggleTitle: "العنوان";
1367
+ readonly subtitle: "العنوان الفرعي";
1368
+ };
1369
+ readonly footerSection: {
1370
+ readonly title: "التذييل";
1371
+ readonly caption: "التسمية التوضيحية";
1372
+ readonly source: "المصدر";
1373
+ readonly url: "الرابط";
1374
+ readonly name: "الاسم";
1375
+ };
1376
+ readonly textSizeSection: {
1377
+ readonly title: "حجم النص";
1378
+ readonly scaleFormat: (params: {
1379
+ value: string;
1380
+ }) => string;
1381
+ };
1382
+ readonly fontSection: {
1383
+ readonly title: "الخط";
1384
+ };
1385
+ readonly sourceSection: {
1386
+ readonly title: "المصدر";
1387
+ readonly url: "الرابط";
1388
+ readonly name: "الاسم";
1389
+ };
1390
+ };
1391
+ readonly powerUpPanel: {
1392
+ readonly toolbarButton: "التحسينات";
1393
+ readonly goalSection: {
1394
+ readonly title: "الهدف";
1395
+ readonly toggle: "الهدف";
1396
+ readonly labelControl: "التسمية";
1397
+ readonly labelPlaceholder: "الهدف";
1398
+ readonly labelAriaLabel: "تسمية الهدف المخصصة";
1399
+ readonly valueControl: "قيمة الهدف";
1400
+ readonly byDate: "حسب التاريخ";
1401
+ readonly xAxisValue: "قيمة المحور السيني";
1402
+ readonly optional: " (اختياري)";
1403
+ readonly xAxisReferenceAriaLabel: "قيمة مرجعية للمحور السيني";
1404
+ readonly anyXAxisValue: "أي قيمة للمحور السيني";
1405
+ readonly selectValuePlaceholder: "اختر القيمة";
1406
+ };
1407
+ readonly trendSection: {
1408
+ readonly title: "الاتجاه";
1409
+ readonly toggle: "الاتجاه";
1410
+ };
1411
+ readonly averageSection: {
1412
+ readonly title: "المتوسط";
1413
+ readonly toggle: "المتوسط";
1414
+ readonly seriesLabel: "سلسلة خط المتوسط";
1415
+ readonly seriesPlaceholder: "اختر السلسلة";
1416
+ readonly seriesAriaLabel: "قائمة منسدلة للسلسلة لخط المتوسط";
1417
+ };
1418
+ readonly trendType: {
1419
+ readonly label: "نوع الاتجاه";
1420
+ readonly placeholder: "نوع الاتجاه";
1421
+ readonly options: {
1422
+ readonly linear: "خطي";
1423
+ readonly exponential: "أسي";
1424
+ readonly quadratic: "تربيعي";
1425
+ readonly polynomial: "متعدد الحدود";
1426
+ readonly logarithmic: "لوغاريتمي";
1427
+ readonly power: "قوة";
1428
+ readonly loess: "لويس";
1429
+ };
1430
+ };
1431
+ readonly valueInput: {
1432
+ readonly percentagePlaceholder: "النسبة المئوية";
1433
+ readonly numberPlaceholder: "الرقم";
1434
+ readonly percentageSymbol: "٪";
1435
+ };
1436
+ };
1437
+ readonly highlighting: {
1438
+ readonly modeHelper: {
1439
+ readonly title: "وضع التمييز";
1440
+ readonly hover: "مرر";
1441
+ readonly toHighlight: "للتمييز";
1442
+ readonly anyElement: "أي عنصر";
1443
+ readonly escToExit: "للخروج";
1444
+ readonly esc: "ESC";
1445
+ };
1446
+ readonly emptyState: "لا تتوفر خيارات تمييز";
1447
+ readonly deleteAriaLabel: "حذف التمييز";
1448
+ readonly highlightStyle: {
1449
+ readonly tint: "صبغة";
1450
+ readonly grey: "رمادي";
1451
+ };
1452
+ };
1453
+ readonly fineTunePanel: {
1454
+ readonly toolbarButton: "الضبط الدقيق";
1455
+ readonly detailSection: {
1456
+ readonly title: "التفاصيل";
1457
+ readonly missingValues: "القيم المفقودة";
1458
+ };
1459
+ readonly lineStyleSection: {
1460
+ readonly title: "نمط الخط";
1461
+ readonly lineCurve: "انحناء الخط";
1462
+ readonly sharp: "حاد";
1463
+ readonly smooth: "ناعم";
1464
+ };
1465
+ };
1466
+ readonly customThemeEditor: {
1467
+ readonly patternDropdownAriaLabel: "قائمة منسدلة للنمط للسلسلة";
1468
+ readonly patterns: {
1469
+ readonly solid: "صلب";
1470
+ readonly pattern: "نمط";
1471
+ readonly dotted: "منقط";
1472
+ readonly dashed: "متقطع";
1473
+ readonly hatched: "مظلل";
1474
+ };
1475
+ readonly heatmapColorLabel: "اللون";
1476
+ };
1477
+ readonly accessibility: {
1478
+ readonly toggleSection: (params: {
1479
+ title: string;
1480
+ }) => string;
1481
+ };
1482
+ readonly graphyDefaults: {
1483
+ readonly themeOptions: {
1484
+ readonly light: "فاتح";
1485
+ readonly dark: "داكن";
1486
+ };
1487
+ };
1488
+ };
1489
+ readonly graph: {
1490
+ readonly loading: "جاري التحميل";
1491
+ readonly error: "حدث خطأ ما";
1492
+ readonly axisLabels: {
1493
+ readonly placeholder: "إضافة تسمية";
1494
+ };
1495
+ readonly defaultPropertyLabels: {
1496
+ readonly date: "التاريخ";
1497
+ readonly year: "السنة";
1498
+ readonly quarter: "الربع";
1499
+ readonly month: "الشهر";
1500
+ readonly week: "الأسبوع";
1501
+ readonly series: "السلسلة";
1502
+ readonly category: "الفئة";
1503
+ readonly columnNumber: ({ number }: {
1504
+ number: number;
1505
+ }) => string;
1506
+ readonly rowNumber: ({ number }: {
1507
+ number: number;
1508
+ }) => string;
1509
+ readonly seriesNumber: ({ number }: {
1510
+ number: number;
1511
+ }) => string;
1512
+ };
1513
+ readonly trendComparison: {
1514
+ readonly fromPrevious: {
1515
+ readonly long: ({ value }: {
1516
+ value: string;
1517
+ }) => string;
1518
+ readonly short: ({ value }: {
1519
+ value: string;
1520
+ }) => string;
1521
+ };
1522
+ readonly fromPreviousYear: {
1523
+ readonly long: ({ value }: {
1524
+ value: string;
1525
+ }) => string;
1526
+ readonly short: ({ value }: {
1527
+ value: string;
1528
+ }) => string;
1529
+ };
1530
+ readonly fromPreviousMonth: {
1531
+ readonly long: ({ value }: {
1532
+ value: string;
1533
+ }) => string;
1534
+ readonly short: ({ value }: {
1535
+ value: string;
1536
+ }) => string;
1537
+ };
1538
+ readonly fromPreviousWeek: {
1539
+ readonly long: ({ value }: {
1540
+ value: string;
1541
+ }) => string;
1542
+ readonly short: ({ value }: {
1543
+ value: string;
1544
+ }) => string;
1545
+ };
1546
+ readonly fromPreviousDay: {
1547
+ readonly long: ({ value }: {
1548
+ value: string;
1549
+ }) => string;
1550
+ readonly short: ({ value }: {
1551
+ value: string;
1552
+ }) => string;
1553
+ };
1554
+ readonly fromPreviousHour: {
1555
+ readonly long: ({ value }: {
1556
+ value: string;
1557
+ }) => string;
1558
+ readonly short: ({ value }: {
1559
+ value: string;
1560
+ }) => string;
1561
+ };
1562
+ };
1563
+ readonly headlineMetrics: {
1564
+ readonly averageLong: ({ value }: {
1565
+ value: string;
1566
+ }) => string;
1567
+ readonly averageShort: ({ value }: {
1568
+ value: string;
1569
+ }) => string;
1570
+ readonly total: ({ value }: {
1571
+ value: string;
1572
+ }) => string;
1573
+ readonly totalConversionRate: ({ value }: {
1574
+ value: string;
1575
+ }) => string;
1576
+ readonly current: ({ value }: {
1577
+ value: string;
1578
+ }) => string;
1579
+ readonly comparisonReference: ({ value }: {
1580
+ value: string;
1581
+ }) => string;
1582
+ };
1583
+ readonly titleEditor: {
1584
+ readonly titlePlaceholder: "بدون عنوان";
1585
+ readonly subtitlePlaceholder: "إضافة عنوان فرعي";
1586
+ };
1587
+ readonly toolbar: {
1588
+ readonly formatting: {
1589
+ readonly bold: "عريض";
1590
+ readonly italic: "مائل";
1591
+ readonly underline: "تحته خط";
1592
+ readonly link: "رابط";
1593
+ };
1594
+ readonly link: {
1595
+ readonly ariaLabel: "إنشاء رابط";
1596
+ readonly placeholder: "اكتب أو الصق رابطاً...";
1597
+ readonly submit: "إرسال";
1598
+ readonly urlLabel: "عنوان الرابط";
1599
+ readonly apply: "تطبيق الرابط";
1600
+ };
1601
+ readonly font: {
1602
+ readonly label: "الخط";
1603
+ readonly ariaLabel: "عائلة الخط";
1604
+ };
1605
+ readonly heading: {
1606
+ readonly label: "مستوى العنوان";
1607
+ readonly ariaLabel: "نمط النص";
1608
+ readonly text: "نص";
1609
+ readonly caption: "تسمية توضيحية";
1610
+ readonly heading1: "عنوان 1";
1611
+ readonly heading2: "عنوان 2";
1612
+ readonly heading3: "عنوان 3";
1613
+ };
1614
+ readonly textAlign: {
1615
+ readonly left: "محاذاة لليسار";
1616
+ readonly center: "توسيط";
1617
+ readonly right: "محاذاة لليمين";
1618
+ };
1619
+ readonly color: {
1620
+ readonly label: "لون النص";
1621
+ };
1622
+ };
1623
+ readonly colorDropdown: {
1624
+ readonly colors: "الألوان";
1625
+ readonly chartColors: "ألوان الرسم البياني";
1626
+ readonly custom: "مخصص";
1627
+ readonly opacity: "الشفافية";
1628
+ readonly transparent: "شفاف";
1629
+ readonly pickCustom: "اختيار لون مخصص";
1630
+ readonly pickColor: "اختيار لون";
1631
+ };
1632
+ readonly legend: {
1633
+ readonly hiddenItems: "عناصر وسيلة الإيضاح المخفية";
1634
+ };
1635
+ readonly annotations: {
1636
+ readonly differenceArrowToolbar: {
1637
+ readonly label: "خيارات سهم الفرق";
1638
+ readonly labelKind: {
1639
+ readonly ariaLabel: "التسمية";
1640
+ readonly absoluteDifference: "التغير المطلق";
1641
+ readonly relativeDifference: "التغير المئوي";
1642
+ readonly proportion: "النسبة";
1643
+ readonly suspectValue: "تقسم هذه القيمة على أساس يساوي صفرًا.";
1644
+ readonly incomparableEnds: "يقيس الطرفان كميتين مختلفتين، لذا لا معنى للفرق بينهما.";
1645
+ };
1646
+ readonly color: "لون السهم";
1647
+ readonly size: {
1648
+ readonly ariaLabel: "الحجم";
1649
+ readonly small: "صغير";
1650
+ readonly medium: "متوسط";
1651
+ readonly large: "كبير";
1652
+ };
1653
+ readonly swap: "عكس الاتجاه";
1654
+ readonly remove: "إزالة السهم";
1655
+ };
1656
+ readonly baseMenu: {
1657
+ readonly pinNumber: "تثبيت الرقم";
1658
+ readonly unpinNumber: "إلغاء تثبيت الرقم";
1659
+ readonly annotate: "تعليق";
1660
+ readonly removeAnnotation: "إزالة التعليق";
1661
+ readonly highlight: "تمييز";
1662
+ readonly highlightWithLabel: (params: {
1663
+ label: string;
1664
+ }) => string;
1665
+ readonly removeHighlight: "إزالة التمييز";
1666
+ readonly differenceArrow: "سهم الفرق";
1667
+ readonly addSticker: "إضافة ملصق";
1668
+ readonly removeSticker: "إزالة الملصق";
1669
+ };
1670
+ readonly textMenu: {
1671
+ readonly title: "تعليق";
1672
+ readonly placeholder: "إضافة تعليق";
1673
+ readonly addButton: "إضافة";
1674
+ };
1675
+ readonly highlights: {
1676
+ readonly menuTitle: "تمييز";
1677
+ readonly labels: {
1678
+ readonly bar: "شريط";
1679
+ readonly barGroup: "مجموعة";
1680
+ readonly barStack: "مكدس";
1681
+ readonly barSeries: "سلسلة";
1682
+ readonly line: "خط";
1683
+ readonly linePoint: "نقطة";
1684
+ readonly lineSeries: "سلسلة";
1685
+ readonly scatterPoint: "نقطة";
1686
+ readonly scatterSeries: "سلسلة";
1687
+ readonly pieSlice: "شريحة";
1688
+ readonly pointOrBar: "نقطة / شريط";
1689
+ readonly lineOrSeries: "خط / سلسلة";
1690
+ };
1691
+ };
1692
+ readonly stickerMenu: {
1693
+ readonly title: "إضافة ملصق";
1694
+ };
1695
+ readonly delete: "حذف";
1696
+ readonly arrow: {
1697
+ readonly thickness: {
1698
+ readonly label: "السمك";
1699
+ readonly thin: "رفيع";
1700
+ readonly medium: "متوسط";
1701
+ readonly thick: "سميك";
1702
+ };
1703
+ readonly arrowhead: {
1704
+ readonly startPoint: "نقطة البداية";
1705
+ readonly endPoint: "نقطة النهاية";
1706
+ readonly lineArrow: "سهم الخط";
1707
+ readonly none: "بدون";
1708
+ };
1709
+ readonly lineStyle: {
1710
+ readonly label: "نمط الخط";
1711
+ readonly solid: "صلب";
1712
+ readonly dotted: "منقط";
1713
+ };
1714
+ readonly stickerEffect: "تأثير الملصق";
1715
+ readonly toolbarAriaLabel: "شريط أدوات السهم الحر";
1716
+ readonly editorAriaLabel: "محرر السهم";
1717
+ };
1718
+ readonly differenceArrow: {
1719
+ readonly type: {
1720
+ readonly proportion: "النسبة";
1721
+ readonly difference: ({ absoluteDifference }: {
1722
+ absoluteDifference: string;
1723
+ }) => string;
1724
+ readonly increase: ({ absoluteDifference }: {
1725
+ absoluteDifference: string;
1726
+ }) => string;
1727
+ readonly decrease: ({ absoluteDifference }: {
1728
+ absoluteDifference: string;
1729
+ }) => string;
1730
+ readonly percentageChange: ({ percentageChange }: {
1731
+ percentageChange: string;
1732
+ }) => string;
1733
+ readonly percentIncrease: ({ percentageChange }: {
1734
+ percentageChange: string;
1735
+ }) => string;
1736
+ readonly percentDecrease: ({ percentageChange }: {
1737
+ percentageChange: string;
1738
+ }) => string;
1739
+ };
1740
+ readonly size: {
1741
+ readonly label: "الحجم";
1742
+ readonly small: "صغير";
1743
+ readonly medium: "متوسط";
1744
+ readonly large: "كبير";
1745
+ };
1746
+ readonly flipArrow: "عكس السهم";
1747
+ readonly color: "اللون";
1748
+ readonly toolbarAriaLabel: "شريط أدوات سهم الفرق";
1749
+ readonly editorAriaLabel: "محرر سهم الفرق";
1750
+ };
1751
+ readonly shape: {
1752
+ readonly color: "اللون";
1753
+ readonly border: {
1754
+ readonly label: "الحدود";
1755
+ readonly none: "بدون";
1756
+ readonly thin: ({ value }: {
1757
+ value: string;
1758
+ }) => string;
1759
+ readonly medium: ({ value }: {
1760
+ value: string;
1761
+ }) => string;
1762
+ readonly thick: ({ value }: {
1763
+ value: string;
1764
+ }) => string;
1765
+ };
1766
+ };
1767
+ };
1768
+ };
1769
+ readonly dir: "rtl";
1770
+ };
1771
+ readonly 'pt-PT': {
1772
+ readonly common: {
1773
+ readonly save: "Guardar";
1774
+ readonly cancel: "Cancelar";
1775
+ readonly confirm: "Confirmar";
1776
+ readonly delete: "Eliminar";
1777
+ readonly confirmDelete: (params: {
1778
+ item: string;
1779
+ }) => string;
1780
+ readonly abbreviations: {
1781
+ readonly thousands: "mil";
1782
+ readonly millions: "M";
1783
+ readonly billions: "MM";
1784
+ };
1785
+ };
1786
+ readonly editor: {
1787
+ readonly title: "Editor Graphy";
1788
+ readonly description: "Edite o seu conteúdo aqui";
1789
+ readonly graphTypes: {
1790
+ readonly column: "Colunas";
1791
+ readonly columnStacked: "Colunas sobrepostas";
1792
+ readonly columnStackedFill: "100% Colunas sobrepostas";
1793
+ readonly bar: "Barras";
1794
+ readonly barStacked: "Barras sobrepostas";
1795
+ readonly barStackedFill: "100% Barras sobrepostas";
1796
+ readonly line: "Linha";
1797
+ readonly areaStacked: "Área sobreposta";
1798
+ readonly pie: "Circular";
1799
+ readonly donut: "Donut";
1800
+ readonly scatter: "Dispersão";
1801
+ readonly bubble: "Bolhas";
1802
+ readonly funnel: "Funil";
1803
+ readonly combo: "Combinado";
1804
+ readonly heatmap: "Mapa de Calor";
1805
+ readonly waterfall: "Cascata";
1806
+ readonly mekko: "Mekko";
1807
+ readonly table: "Tabela";
1808
+ };
1809
+ readonly sizePanel: {
1810
+ readonly toolbarButton: "Tamanho";
1811
+ readonly presetsSection: {
1812
+ readonly title: "Predefinições";
1813
+ };
1814
+ readonly customSizeSection: {
1815
+ readonly title: "Tamanho personalizado";
1816
+ };
1817
+ readonly presets: {
1818
+ readonly googleSlides: "Google Slides / PowerPoint";
1819
+ readonly webEmail: "Web / email";
1820
+ readonly linkedIn: "Publicação LinkedIn";
1821
+ readonly instagram: "Publicação Instagram";
1822
+ readonly tiktok: "TikTok / Instagram story";
1823
+ readonly twitter: "X (Twitter)";
1824
+ readonly mobile: "Móvel";
1825
+ };
1826
+ readonly inputs: {
1827
+ readonly unitLabel: "px";
1828
+ };
1829
+ readonly validation: {
1830
+ readonly maxSizeError: (params: {
1831
+ max: number;
1832
+ }) => string;
1833
+ readonly minSizeError: (params: {
1834
+ min: number;
1835
+ }) => string;
1836
+ };
1837
+ };
1838
+ readonly graphPanel: {
1839
+ readonly toolbarButton: "Gráfico";
1840
+ readonly graphTypeSection: {
1841
+ readonly title: "Tipo de gráfico";
1842
+ };
1843
+ readonly graphOptionsSection: {
1844
+ readonly title: "Opções do gráfico";
1845
+ };
1846
+ readonly graphOptions: {
1847
+ readonly sortBars: "Ordenar maior → menor";
1848
+ readonly gridLines: "Linhas de grelha";
1849
+ readonly showPoints: "Mostrar pontos";
1850
+ readonly smoothLines: "Linhas suaves";
1851
+ readonly stackTotals: "Totais sobrepostos";
1852
+ readonly dataLabels: "Etiquetas de dados";
1853
+ readonly showPercentages: "Mostrar percentagens";
1854
+ readonly categoryLabels: "Etiquetas de categorias";
1855
+ };
1856
+ readonly legendSection: {
1857
+ readonly title: "Legenda";
1858
+ readonly auto: "Automático";
1859
+ readonly top: "Topo";
1860
+ readonly bottom: "Fundo";
1861
+ readonly left: "Esquerda";
1862
+ readonly right: "Direita";
1863
+ readonly none: "Nenhuma";
1864
+ };
1865
+ readonly numberFormatSection: {
1866
+ readonly title: "Formato numérico";
1867
+ };
1868
+ readonly numberFormat: {
1869
+ readonly abbreviationLabel: "Abreviação";
1870
+ readonly valueLabel: "Valor";
1871
+ readonly decimalPlacesLabel: "Casas decimais";
1872
+ readonly options: {
1873
+ readonly auto: "Automático";
1874
+ readonly custom: "Personalizado";
1875
+ readonly none: "Nenhum";
1876
+ };
1877
+ };
1878
+ readonly headlineNumberSize: {
1879
+ readonly sizeLabel: "Tamanho";
1880
+ readonly valueLabel: "Valor";
1881
+ readonly sizes: {
1882
+ readonly small: "P";
1883
+ readonly medium: "M";
1884
+ readonly large: "G";
1885
+ };
1886
+ };
1887
+ readonly lineThickness: {
1888
+ readonly label: "Espessura da linha";
1889
+ };
1890
+ readonly pointSize: {
1891
+ readonly label: "Tamanho do ponto";
1892
+ readonly options: {
1893
+ readonly auto: "Automático";
1894
+ readonly custom: "Personalizado";
1895
+ };
1896
+ };
1897
+ readonly headlineNumberSection: {
1898
+ readonly title: "Número destaque";
1899
+ readonly toggle: "Visível";
1900
+ readonly metricLabel: "Métrica";
1901
+ readonly compareWithLabel: "Comparar com";
1902
+ readonly metrics: {
1903
+ readonly total: "Total";
1904
+ readonly average: "Média";
1905
+ readonly current: "Último";
1906
+ readonly conversion: "Conversão";
1907
+ readonly left: "Esquerda";
1908
+ };
1909
+ readonly comparison: {
1910
+ readonly first: "Primeiro";
1911
+ readonly previous: "Anterior";
1912
+ };
1913
+ readonly pieTotalPosition: {
1914
+ readonly left: "Esquerda";
1915
+ readonly center: "Centro";
1916
+ };
1917
+ };
1918
+ readonly treatEmptyValues: {
1919
+ readonly leaveGap: {
1920
+ readonly label: "Deixar espaço no gráfico";
1921
+ readonly description: "Deixa uma quebra visível na linha onde faltam dados";
1922
+ };
1923
+ readonly fillZero: {
1924
+ readonly label: "Preencher com zero";
1925
+ readonly description: "Exibe pontos de dados em falta como zero";
1926
+ };
1927
+ readonly connectGaps: {
1928
+ readonly label: "Ligar através dos espaços";
1929
+ readonly description: "Une a linha entre pontos disponíveis, ignorando o espaço";
1930
+ };
1931
+ };
1932
+ readonly comboChartAppearance: {
1933
+ readonly title: "Aparência do gráfico combinado";
1934
+ readonly groupedBars: "Barras agrupadas";
1935
+ readonly stackedBars: "Barras sobrepostas";
1936
+ readonly linesOnly: "Apenas linhas";
1937
+ };
1938
+ };
1939
+ readonly columnMapping: {
1940
+ readonly title: "Dados";
1941
+ readonly xAxis: "Eixo X";
1942
+ readonly yAxis: "Eixo Y";
1943
+ readonly leftYAxis: "Eixo Y (esquerda)";
1944
+ readonly rightYAxis: "Eixo Y (direita)";
1945
+ readonly slices: "Valores (fatias)";
1946
+ readonly labels: "Etiquetas";
1947
+ readonly size: "Tamanho";
1948
+ readonly shape: "Forma";
1949
+ readonly reset: "Repor para automático";
1950
+ readonly addSeries: "Adicionar série";
1951
+ readonly removeSeries: "Remover série";
1952
+ };
1953
+ readonly axesPanel: {
1954
+ readonly toolbarButton: "Eixos";
1955
+ readonly mainAxisSection: {
1956
+ readonly yAxis: "Eixo Y";
1957
+ readonly xAxis: "Eixo X";
1958
+ };
1959
+ readonly crossAxisSection: {
1960
+ readonly xAxis: "Eixo X";
1961
+ readonly yAxis: "Eixo Y";
1962
+ };
1963
+ readonly controls: {
1964
+ readonly visible: "Visível";
1965
+ readonly labels: "Etiquetas";
1966
+ readonly position: "Posição";
1967
+ readonly scale: "Escala";
1968
+ readonly startFrom: "Iniciar de";
1969
+ readonly endAt: "Terminar em";
1970
+ readonly value: "Valor";
1971
+ readonly numberOfAxes: "Número de eixos";
1972
+ readonly reverse: "Inverter";
1973
+ };
1974
+ readonly labelMode: {
1975
+ readonly auto: "Automático";
1976
+ readonly edges: "Extremos";
1977
+ };
1978
+ readonly scale: {
1979
+ readonly auto: "Automático";
1980
+ readonly log: "Logarítmico";
1981
+ };
1982
+ readonly startFrom: {
1983
+ readonly auto: "Automático";
1984
+ readonly zero: "Zero";
1985
+ readonly custom: "Personalizado";
1986
+ };
1987
+ readonly endAt: {
1988
+ readonly auto: "Automático";
1989
+ readonly custom: "Personalizado";
1990
+ };
1991
+ readonly axisCount: {
1992
+ readonly single: "Único";
1993
+ readonly double: "Duplo";
1994
+ };
1995
+ readonly position: {
1996
+ readonly left: "Esquerda";
1997
+ readonly right: "Direita";
1998
+ readonly top: "Topo";
1999
+ readonly bottom: "Fundo";
2000
+ };
2001
+ readonly yesNo: {
2002
+ readonly yes: "Sim";
2003
+ readonly no: "Não";
2004
+ };
2005
+ };
2006
+ readonly colorPanel: {
2007
+ readonly toolbarButton: "Cor";
2008
+ readonly themeSection: {
2009
+ readonly title: "Tema";
2010
+ };
2011
+ readonly paletteSection: {
2012
+ readonly title: "Paleta";
2013
+ readonly colorScheme: "Esquema de cores";
2014
+ readonly colors: "Cores";
2015
+ readonly colorPalettes: "Paletas de cores";
2016
+ };
2017
+ readonly paletteMode: {
2018
+ readonly preset: "Predefinido";
2019
+ readonly brand: "Marca";
2020
+ readonly freestyle: "Livre";
2021
+ };
2022
+ readonly paletteThemes: {
2023
+ readonly colorful: "Colorido";
2024
+ readonly pastel: "Pastel";
2025
+ readonly neon: "Néon";
2026
+ };
2027
+ readonly backgroundSection: {
2028
+ readonly title: "Fundo";
2029
+ readonly black: "Preto";
2030
+ readonly white: "Branco";
2031
+ readonly grey: "Cinzento";
2032
+ readonly tint: "Tonalidade";
2033
+ readonly custom: "Personalizado";
2034
+ readonly none: "Nenhum";
2035
+ };
2036
+ readonly borderSection: {
2037
+ readonly title: "Contorno";
2038
+ readonly borderColor: "Cor do contorno";
2039
+ readonly thickness: "Espessura";
2040
+ readonly cornerRadius: "Raio dos cantos";
2041
+ };
2042
+ readonly borderType: {
2043
+ readonly solid: "Sólido";
2044
+ readonly gradient: "Gradiente";
2045
+ readonly grey: "Cinzento";
2046
+ readonly preset: "Predefinido";
2047
+ readonly custom: "Personalizado";
2048
+ readonly none: "Nenhum";
2049
+ };
2050
+ readonly presetGradients: {
2051
+ readonly lilac: "Lilás";
2052
+ readonly neonPink: "Rosa Néon";
2053
+ readonly blackberry: "Amora";
2054
+ readonly sun: "Sol";
2055
+ readonly iceland: "Islândia";
2056
+ readonly sunset: "Pôr do Sol";
2057
+ readonly ultraviolet: "Ultravioleta";
2058
+ readonly purple: "Roxo";
2059
+ readonly iceCream: "Gelado";
2060
+ readonly mint: "Menta";
2061
+ readonly cool: "Frio";
2062
+ readonly fresh: "Fresco";
2063
+ };
2064
+ };
2065
+ readonly designPanel: {
2066
+ readonly toolbarButton: "Design";
2067
+ readonly defaultExpanded: "Paleta";
2068
+ };
2069
+ readonly annotatePanel: {
2070
+ readonly toolbarButton: "Anotar";
2071
+ readonly callOutSection: {
2072
+ readonly title: "Destaque";
2073
+ readonly text: "Texto";
2074
+ readonly arrow: "Seta";
2075
+ readonly box: "Caixa";
2076
+ readonly differenceArrows: "Setas de diferença";
2077
+ };
2078
+ readonly highlightSection: {
2079
+ readonly title: "Realce";
2080
+ readonly button: "Realçar";
2081
+ readonly colorLabel: "Cor do realce";
2082
+ };
2083
+ };
2084
+ readonly annotationsPanel: {
2085
+ readonly toolbarButton: "Anotar";
2086
+ readonly freeformSection: {
2087
+ readonly title: "Forma livre";
2088
+ readonly text: "Texto";
2089
+ readonly arrow: "Seta";
2090
+ readonly box: "Caixa";
2091
+ readonly difference: "Diferença";
2092
+ };
2093
+ readonly goalSection: {
2094
+ readonly title: "Objetivo";
2095
+ readonly labelControl: "Etiqueta";
2096
+ readonly labelPlaceholder: "Objetivo";
2097
+ readonly labelAriaLabel: "Etiqueta de objetivo personalizada";
2098
+ readonly valueControl: "Valor do objetivo";
2099
+ readonly valueAriaLabel: "Valor do objetivo";
2100
+ readonly byDate: "Por data";
2101
+ readonly xAxisValue: "Valor do eixo X";
2102
+ readonly optional: "(opcional)";
2103
+ };
2104
+ readonly trendsAndAveragesSection: {
2105
+ readonly title: "Tendências e Médias";
2106
+ readonly trend: "Tendência";
2107
+ readonly average: "Média";
2108
+ };
2109
+ readonly trendType: {
2110
+ readonly label: "Tipo de tendência";
2111
+ readonly placeholder: "Tipo de tendência";
2112
+ readonly options: {
2113
+ readonly linear: "Linear";
2114
+ readonly exponential: "Exponencial";
2115
+ readonly quadratic: "Quadrática";
2116
+ readonly polynomial: "Polinomial";
2117
+ readonly logarithmic: "Logarítmica";
2118
+ readonly power: "Potência";
2119
+ readonly loess: "Loess";
2120
+ };
2121
+ };
2122
+ readonly averageLineSeries: {
2123
+ readonly label: "Série da linha de média";
2124
+ readonly placeholder: "Selecionar série";
2125
+ readonly ariaLabel: "Dropdown de séries para linha de média";
2126
+ };
2127
+ readonly highlightSection: {
2128
+ readonly title: "Realce";
2129
+ readonly button: "Realçar";
2130
+ readonly fadeColorLabel: "Cor de esmaecimento";
2131
+ };
2132
+ readonly titleAndSubtitleSection: {
2133
+ readonly title: "Título e Subtítulo";
2134
+ readonly toggleTitle: "Título";
2135
+ readonly subtitle: "Subtítulo";
2136
+ };
2137
+ readonly captionAndSourceSection: {
2138
+ readonly title: "Legenda e Fonte";
2139
+ readonly caption: "Legenda";
2140
+ readonly source: "Fonte";
2141
+ readonly url: "URL";
2142
+ readonly name: "Nome";
2143
+ };
2144
+ };
2145
+ readonly elementsPanel: {
2146
+ readonly contentVisible: "Visível";
2147
+ readonly contentValue: "Valor";
2148
+ readonly toolbarButton: "Elementos";
2149
+ readonly headerSection: {
2150
+ readonly title: "Cabeçalho";
2151
+ readonly toggleTitle: "Título";
2152
+ readonly subtitle: "Subtítulo";
2153
+ };
2154
+ readonly footerSection: {
2155
+ readonly title: "Rodapé";
2156
+ readonly caption: "Legenda";
2157
+ readonly source: "Fonte";
2158
+ readonly url: "URL";
2159
+ readonly name: "Nome";
2160
+ };
2161
+ readonly textSizeSection: {
2162
+ readonly title: "Tamanho do texto";
2163
+ readonly scaleFormat: (params: {
2164
+ value: string;
2165
+ }) => string;
2166
+ };
2167
+ readonly fontSection: {
2168
+ readonly title: "Tipo de letra";
2169
+ };
2170
+ readonly sourceSection: {
2171
+ readonly title: "Fonte";
2172
+ readonly url: "URL";
2173
+ readonly name: "Nome";
2174
+ };
2175
+ };
2176
+ readonly powerUpPanel: {
2177
+ readonly toolbarButton: "Extras";
2178
+ readonly goalSection: {
2179
+ readonly title: "Objetivo";
2180
+ readonly toggle: "Objetivo";
2181
+ readonly labelControl: "Etiqueta";
2182
+ readonly labelPlaceholder: "Objetivo";
2183
+ readonly labelAriaLabel: "Etiqueta de objetivo personalizada";
2184
+ readonly valueControl: "Valor do objetivo";
2185
+ readonly byDate: "Por data";
2186
+ readonly xAxisValue: "Valor do eixo X";
2187
+ readonly optional: " (opcional)";
2188
+ readonly xAxisReferenceAriaLabel: "Valor de referência do eixo X";
2189
+ readonly anyXAxisValue: "Qualquer valor do eixo X";
2190
+ readonly selectValuePlaceholder: "Selecionar valor";
2191
+ };
2192
+ readonly trendSection: {
2193
+ readonly title: "Tendência";
2194
+ readonly toggle: "Tendência";
2195
+ };
2196
+ readonly averageSection: {
2197
+ readonly title: "Média";
2198
+ readonly toggle: "Média";
2199
+ readonly seriesLabel: "Série da linha de média";
2200
+ readonly seriesPlaceholder: "Selecionar série";
2201
+ readonly seriesAriaLabel: "Dropdown de séries para linha de média";
2202
+ };
2203
+ readonly trendType: {
2204
+ readonly label: "Tipo de tendência";
2205
+ readonly placeholder: "Tipo de tendência";
2206
+ readonly options: {
2207
+ readonly linear: "Linear";
2208
+ readonly exponential: "Exponencial";
2209
+ readonly quadratic: "Quadrática";
2210
+ readonly polynomial: "Polinomial";
2211
+ readonly logarithmic: "Logarítmica";
2212
+ readonly power: "Potência";
2213
+ readonly loess: "Loess";
2214
+ };
2215
+ };
2216
+ readonly valueInput: {
2217
+ readonly percentagePlaceholder: "Percentagem";
2218
+ readonly numberPlaceholder: "Número";
2219
+ readonly percentageSymbol: "%";
2220
+ };
2221
+ };
2222
+ readonly highlighting: {
2223
+ readonly modeHelper: {
2224
+ readonly title: "Modo de realce";
2225
+ readonly hover: "Passe";
2226
+ readonly toHighlight: "para realçar";
2227
+ readonly anyElement: "qualquer elemento";
2228
+ readonly escToExit: "para sair";
2229
+ readonly esc: "ESC";
2230
+ };
2231
+ readonly emptyState: "Sem opções de realce disponíveis";
2232
+ readonly deleteAriaLabel: "Eliminar realce";
2233
+ readonly highlightStyle: {
2234
+ readonly tint: "Tonalidade";
2235
+ readonly grey: "Cinzento";
2236
+ };
2237
+ };
2238
+ readonly fineTunePanel: {
2239
+ readonly toolbarButton: "Ajuste fino";
2240
+ readonly detailSection: {
2241
+ readonly title: "Detalhe";
2242
+ readonly missingValues: "Valores em falta";
2243
+ };
2244
+ readonly lineStyleSection: {
2245
+ readonly title: "Estilo de linha";
2246
+ readonly lineCurve: "Curva da linha";
2247
+ readonly sharp: "Angulosa";
2248
+ readonly smooth: "Suave";
2249
+ };
2250
+ };
2251
+ readonly customThemeEditor: {
2252
+ readonly patternDropdownAriaLabel: "Dropdown de padrões para série";
2253
+ readonly patterns: {
2254
+ readonly solid: "Sólido";
2255
+ readonly pattern: "Padrão";
2256
+ readonly dotted: "Pontilhado";
2257
+ readonly dashed: "Tracejado";
2258
+ readonly hatched: "Hachurado";
2259
+ };
2260
+ readonly heatmapColorLabel: "Cor";
2261
+ };
2262
+ readonly accessibility: {
2263
+ readonly toggleSection: (params: {
2264
+ title: string;
2265
+ }) => string;
2266
+ };
2267
+ readonly graphyDefaults: {
2268
+ readonly themeOptions: {
2269
+ readonly light: "Claro";
2270
+ readonly dark: "Escuro";
2271
+ };
2272
+ };
2273
+ };
2274
+ readonly graph: {
2275
+ readonly loading: "A carregar";
2276
+ readonly error: "Algo correu mal";
2277
+ readonly axisLabels: {
2278
+ readonly placeholder: "Adicionar etiqueta";
2279
+ };
2280
+ readonly defaultPropertyLabels: {
2281
+ readonly date: "Data";
2282
+ readonly year: "Ano";
2283
+ readonly quarter: "Trimestre";
2284
+ readonly month: "Mês";
2285
+ readonly week: "Semana";
2286
+ readonly series: "Série";
2287
+ readonly category: "Categoria";
2288
+ readonly columnNumber: ({ number }: {
2289
+ number: number;
2290
+ }) => string;
2291
+ readonly rowNumber: ({ number }: {
2292
+ number: number;
2293
+ }) => string;
2294
+ readonly seriesNumber: ({ number }: {
2295
+ number: number;
2296
+ }) => string;
2297
+ };
2298
+ readonly trendComparison: {
2299
+ readonly fromPrevious: {
2300
+ readonly long: ({ value }: {
2301
+ value: string;
2302
+ }) => string;
2303
+ readonly short: ({ value }: {
2304
+ value: string;
2305
+ }) => string;
2306
+ };
2307
+ readonly fromPreviousYear: {
2308
+ readonly long: ({ value }: {
2309
+ value: string;
2310
+ }) => string;
2311
+ readonly short: ({ value }: {
2312
+ value: string;
2313
+ }) => string;
2314
+ };
2315
+ readonly fromPreviousMonth: {
2316
+ readonly long: ({ value }: {
2317
+ value: string;
2318
+ }) => string;
2319
+ readonly short: ({ value }: {
2320
+ value: string;
2321
+ }) => string;
2322
+ };
2323
+ readonly fromPreviousWeek: {
2324
+ readonly long: ({ value }: {
2325
+ value: string;
2326
+ }) => string;
2327
+ readonly short: ({ value }: {
2328
+ value: string;
2329
+ }) => string;
2330
+ };
2331
+ readonly fromPreviousDay: {
2332
+ readonly long: ({ value }: {
2333
+ value: string;
2334
+ }) => string;
2335
+ readonly short: ({ value }: {
2336
+ value: string;
2337
+ }) => string;
2338
+ };
2339
+ readonly fromPreviousHour: {
2340
+ readonly long: ({ value }: {
2341
+ value: string;
2342
+ }) => string;
2343
+ readonly short: ({ value }: {
2344
+ value: string;
2345
+ }) => string;
2346
+ };
2347
+ };
2348
+ readonly headlineMetrics: {
2349
+ readonly averageLong: ({ value }: {
2350
+ value: string;
2351
+ }) => string;
2352
+ readonly averageShort: ({ value }: {
2353
+ value: string;
2354
+ }) => string;
2355
+ readonly total: ({ value }: {
2356
+ value: string;
2357
+ }) => string;
2358
+ readonly totalConversionRate: ({ value }: {
2359
+ value: string;
2360
+ }) => string;
2361
+ readonly current: ({ value }: {
2362
+ value: string;
2363
+ }) => string;
2364
+ readonly comparisonReference: ({ value }: {
2365
+ value: string;
2366
+ }) => string;
2367
+ };
2368
+ readonly titleEditor: {
2369
+ readonly titlePlaceholder: "Sem título";
2370
+ readonly subtitlePlaceholder: "Adicionar subtítulo";
2371
+ };
2372
+ readonly toolbar: {
2373
+ readonly formatting: {
2374
+ readonly bold: "Negrito";
2375
+ readonly italic: "Itálico";
2376
+ readonly underline: "Sublinhado";
2377
+ readonly link: "Ligação";
2378
+ };
2379
+ readonly link: {
2380
+ readonly ariaLabel: "Criar ligação";
2381
+ readonly placeholder: "Escreva ou cole uma ligação...";
2382
+ readonly submit: "Submeter";
2383
+ readonly urlLabel: "URL da ligação";
2384
+ readonly apply: "Aplicar ligação";
2385
+ };
2386
+ readonly font: {
2387
+ readonly label: "Tipo de letra";
2388
+ readonly ariaLabel: "Família do tipo de letra";
2389
+ };
2390
+ readonly heading: {
2391
+ readonly label: "Nível de título";
2392
+ readonly ariaLabel: "Estilo de texto";
2393
+ readonly text: "Texto";
2394
+ readonly caption: "Legenda";
2395
+ readonly heading1: "Título 1";
2396
+ readonly heading2: "Título 2";
2397
+ readonly heading3: "Título 3";
2398
+ };
2399
+ readonly textAlign: {
2400
+ readonly left: "Alinhar à esquerda";
2401
+ readonly center: "Alinhar ao centro";
2402
+ readonly right: "Alinhar à direita";
2403
+ };
2404
+ readonly color: {
2405
+ readonly label: "Cor do texto";
2406
+ };
2407
+ };
2408
+ readonly colorDropdown: {
2409
+ readonly colors: "Cores";
2410
+ readonly chartColors: "Cores do gráfico";
2411
+ readonly custom: "Personalizado";
2412
+ readonly opacity: "Opacidade";
2413
+ readonly transparent: "Transparente";
2414
+ readonly pickCustom: "Escolher cor personalizada";
2415
+ readonly pickColor: "Escolher cor";
2416
+ };
2417
+ readonly legend: {
2418
+ readonly hiddenItems: "Itens de legenda ocultos";
2419
+ };
2420
+ readonly annotations: {
2421
+ readonly differenceArrowToolbar: {
2422
+ readonly label: "Opções da seta de diferença";
2423
+ readonly labelKind: {
2424
+ readonly ariaLabel: "Etiqueta";
2425
+ readonly absoluteDifference: "Variação absoluta";
2426
+ readonly relativeDifference: "Variação percentual";
2427
+ readonly proportion: "Proporção";
2428
+ readonly suspectValue: "Este valor divide por uma base igual a zero.";
2429
+ readonly incomparableEnds: "As duas pontas medem quantidades diferentes, pelo que a diferença entre elas não tem significado.";
2430
+ };
2431
+ readonly color: "Cor da seta";
2432
+ readonly size: {
2433
+ readonly ariaLabel: "Tamanho";
2434
+ readonly small: "Pequeno";
2435
+ readonly medium: "Médio";
2436
+ readonly large: "Grande";
2437
+ };
2438
+ readonly swap: "Inverter sentido";
2439
+ readonly remove: "Remover seta";
2440
+ };
2441
+ readonly baseMenu: {
2442
+ readonly pinNumber: "Fixar número";
2443
+ readonly unpinNumber: "Desafixar número";
2444
+ readonly annotate: "Anotar";
2445
+ readonly removeAnnotation: "Remover anotação";
2446
+ readonly highlight: "Realçar";
2447
+ readonly highlightWithLabel: (params: {
2448
+ label: string;
2449
+ }) => string;
2450
+ readonly removeHighlight: "Remover realce";
2451
+ readonly differenceArrow: "Seta de diferença";
2452
+ readonly addSticker: "Adicionar autocolante";
2453
+ readonly removeSticker: "Remover autocolante";
2454
+ };
2455
+ readonly textMenu: {
2456
+ readonly title: "Anotar";
2457
+ readonly placeholder: "Adicionar comentário";
2458
+ readonly addButton: "Adicionar";
2459
+ };
2460
+ readonly highlights: {
2461
+ readonly menuTitle: "Realçar";
2462
+ readonly labels: {
2463
+ readonly bar: "Barra";
2464
+ readonly barGroup: "Grupo";
2465
+ readonly barStack: "Pilha";
2466
+ readonly barSeries: "Série";
2467
+ readonly line: "Linha";
2468
+ readonly linePoint: "Ponto";
2469
+ readonly lineSeries: "Série";
2470
+ readonly scatterPoint: "Ponto";
2471
+ readonly scatterSeries: "Série";
2472
+ readonly pieSlice: "Fatia";
2473
+ readonly pointOrBar: "Ponto / barra";
2474
+ readonly lineOrSeries: "Linha / série";
2475
+ };
2476
+ };
2477
+ readonly stickerMenu: {
2478
+ readonly title: "Adicionar autocolante";
2479
+ };
2480
+ readonly delete: "Eliminar";
2481
+ readonly arrow: {
2482
+ readonly thickness: {
2483
+ readonly label: "Espessura";
2484
+ readonly thin: "Fina";
2485
+ readonly medium: "Média";
2486
+ readonly thick: "Grossa";
2487
+ };
2488
+ readonly arrowhead: {
2489
+ readonly startPoint: "Ponto inicial";
2490
+ readonly endPoint: "Ponto final";
2491
+ readonly lineArrow: "Seta de linha";
2492
+ readonly none: "Nenhuma";
2493
+ };
2494
+ readonly lineStyle: {
2495
+ readonly label: "Estilo de linha";
2496
+ readonly solid: "Sólida";
2497
+ readonly dotted: "Pontilhada";
2498
+ };
2499
+ readonly stickerEffect: "Efeito de autocolante";
2500
+ readonly toolbarAriaLabel: "Barra de ferramentas de seta livre";
2501
+ readonly editorAriaLabel: "Editor de seta";
2502
+ };
2503
+ readonly differenceArrow: {
2504
+ readonly type: {
2505
+ readonly proportion: "Proporção";
2506
+ readonly difference: ({ absoluteDifference }: {
2507
+ absoluteDifference: string;
2508
+ }) => string;
2509
+ readonly increase: ({ absoluteDifference }: {
2510
+ absoluteDifference: string;
2511
+ }) => string;
2512
+ readonly decrease: ({ absoluteDifference }: {
2513
+ absoluteDifference: string;
2514
+ }) => string;
2515
+ readonly percentageChange: ({ percentageChange }: {
2516
+ percentageChange: string;
2517
+ }) => string;
2518
+ readonly percentIncrease: ({ percentageChange }: {
2519
+ percentageChange: string;
2520
+ }) => string;
2521
+ readonly percentDecrease: ({ percentageChange }: {
2522
+ percentageChange: string;
2523
+ }) => string;
2524
+ };
2525
+ readonly size: {
2526
+ readonly label: "Tamanho";
2527
+ readonly small: "Pequeno";
2528
+ readonly medium: "Médio";
2529
+ readonly large: "Grande";
2530
+ };
2531
+ readonly flipArrow: "Inverter seta";
2532
+ readonly color: "Cor";
2533
+ readonly toolbarAriaLabel: "Barra de ferramentas de seta de diferença";
2534
+ readonly editorAriaLabel: "Editor de seta de diferença";
2535
+ };
2536
+ readonly shape: {
2537
+ readonly color: "Cor";
2538
+ readonly border: {
2539
+ readonly label: "Contorno";
2540
+ readonly none: "Nenhum";
2541
+ readonly thin: ({ value }: {
2542
+ value: string;
2543
+ }) => string;
2544
+ readonly medium: ({ value }: {
2545
+ value: string;
2546
+ }) => string;
2547
+ readonly thick: ({ value }: {
2548
+ value: string;
2549
+ }) => string;
2550
+ };
2551
+ };
2552
+ };
2553
+ };
2554
+ readonly dir: "ltr";
2555
+ };
2556
+ };
2557
+
2558
+ declare type Dictionary<T> = {
2559
+ [K in keyof T]: T[K] extends object ? Dictionary<T[K]> : string;
2560
+ };
2561
+
2562
+ /**
2563
+ * A control where one gesture can only ever produce one change, so every change is its own undo
2564
+ * entry and there is nothing left to commit — a switch flipped, an option picked from a popup.
2565
+ *
2566
+ * Being single-valued is not the test. A radio grid holds one string and is still {@link
2567
+ * ContinuousControlProps}, because holding an arrow key sweeps its selection.
2568
+ */
2569
+ export declare interface DiscreteControlProps<Value> extends ControlBaseProps {
2570
+ value: Value;
2571
+ onChange: (value: Value) => void;
2572
+ }
2573
+
2574
+ declare type DotNotation<T> = T extends object ? {
2575
+ [K in keyof T & string]: T[K] extends (...args: never[]) => unknown ? K : T[K] extends object ? `${K}.${DotNotation<T[K]>}` : K;
2576
+ }[keyof T & string] : never;
2577
+
2578
+ /**
2579
+ * `GraphRenderer` with the editor layer wired in. A host toggles `mode` rather than swapping
2580
+ * components, so hover, animation, the compiled store and the undo history survive the toggle.
2581
+ *
2582
+ * The editor store is held from here, above the renderer, because the editing surface fills a slot
2583
+ * beside the plot rather than above it: a store it hosted would be out of reach of the geoms and chrome
2584
+ * painting inside the plot `<svg>`, which have to show a target being reached for or an endpoint being
2585
+ * moved. A chart rendered without this wrapper has no editor state at all, and reads it at rest.
2586
+ *
2587
+ * @example
2588
+ * ```tsx
2589
+ * <GraphProvider input={input} data={data}>
2590
+ * <EditableGraphRenderer mode={isEditing ? 'editable' : 'readonly'} />
2591
+ * </GraphProvider>
2592
+ * ```
2593
+ */
2594
+ export declare const EditableGraphRenderer: ({ slots, ...rest }: GraphRendererProps) => JSX.Element;
2595
+
2596
+ export { EditorPanel }
2597
+
2598
+ /** Props the renderer passes to the editor layer filling the `EditorSurface` slot. */
2599
+ declare interface EditorSurfaceSlotProps {
2600
+ /** The frame's content box — the element the layer measures, listens on and aligns its chrome to. */
2601
+ frameElement: HTMLElement;
2602
+ /** The panel's rect within that box, so chrome positioned from `layout` shares its origin. */
2603
+ panelRect: Rect;
2604
+ }
2605
+
2606
+ /**
2607
+ * The chart's text and its size: what the header and footer show, and how large everything is drawn.
2608
+ *
2609
+ * Section order follows the chart's own reading order: the text down the page, then its size.
2610
+ */
2611
+ export declare const ElementsPanel: ({ children, ...rootProps }: PanelProps) => JSX.Element;
2612
+
2613
+ declare const EN_GB: {
2614
+ readonly common: {
2615
+ readonly save: "Save";
2616
+ readonly cancel: "Cancel";
2617
+ readonly confirm: "Confirm";
2618
+ readonly delete: "Delete";
2619
+ readonly confirmDelete: (params: {
2620
+ item: string;
2621
+ }) => string;
2622
+ readonly abbreviations: {
2623
+ readonly thousands: "k";
2624
+ readonly millions: "m";
2625
+ readonly billions: "b";
2626
+ };
2627
+ };
2628
+ readonly editor: {
2629
+ readonly title: "Graphy Editor";
2630
+ readonly description: "Edit your content here";
2631
+ readonly graphTypes: {
2632
+ readonly column: "Column";
2633
+ readonly columnStacked: "Stacked";
2634
+ readonly columnStackedFill: "100% Stacked";
2635
+ readonly bar: "Bar";
2636
+ readonly barStacked: "Stacked";
2637
+ readonly barStackedFill: "100% Stacked";
2638
+ readonly line: "Line";
2639
+ readonly areaStacked: "Stacked Area";
2640
+ readonly pie: "Pie";
2641
+ readonly donut: "Donut";
2642
+ readonly scatter: "Scatter";
2643
+ readonly bubble: "Bubble";
2644
+ readonly funnel: "Funnel";
2645
+ readonly combo: "Combo";
2646
+ readonly heatmap: "Heatmap";
2647
+ readonly waterfall: "Waterfall";
2648
+ readonly mekko: "Mekko";
2649
+ readonly table: "Table";
2650
+ };
2651
+ readonly sizePanel: {
2652
+ readonly toolbarButton: "Size";
2653
+ readonly presetsSection: {
2654
+ readonly title: "Presets";
2655
+ };
2656
+ readonly customSizeSection: {
2657
+ readonly title: "Custom size";
2658
+ };
2659
+ readonly presets: {
2660
+ readonly googleSlides: "Google Slides / PowerPoint";
2661
+ readonly webEmail: "Web / email";
2662
+ readonly linkedIn: "LinkedIn post";
2663
+ readonly instagram: "Instagram post";
2664
+ readonly tiktok: "TikTok / Instagram story";
2665
+ readonly twitter: "X (Twitter)";
2666
+ readonly mobile: "Mobile";
2667
+ };
2668
+ readonly inputs: {
2669
+ readonly unitLabel: "px";
2670
+ };
2671
+ readonly validation: {
2672
+ readonly maxSizeError: (params: {
2673
+ max: number;
2674
+ }) => string;
2675
+ readonly minSizeError: (params: {
2676
+ min: number;
2677
+ }) => string;
2678
+ };
2679
+ };
2680
+ readonly graphPanel: {
2681
+ readonly toolbarButton: "Graph";
2682
+ readonly graphTypeSection: {
2683
+ readonly title: "Graph type";
2684
+ };
2685
+ readonly graphOptionsSection: {
2686
+ readonly title: "Graph options";
2687
+ };
2688
+ readonly graphOptions: {
2689
+ readonly sortBars: "Sort high → low";
2690
+ readonly gridLines: "Grid lines";
2691
+ readonly showPoints: "Show points";
2692
+ readonly smoothLines: "Smooth lines";
2693
+ readonly stackTotals: "Stack totals";
2694
+ readonly dataLabels: "Data labels";
2695
+ readonly showPercentages: "Show percentages";
2696
+ readonly categoryLabels: "Category labels";
2697
+ };
2698
+ readonly legendSection: {
2699
+ readonly title: "Legend";
2700
+ readonly auto: "Auto";
2701
+ readonly top: "Top";
2702
+ readonly bottom: "Bottom";
2703
+ readonly left: "Left";
2704
+ readonly right: "Right";
2705
+ readonly none: "None";
2706
+ };
2707
+ readonly numberFormatSection: {
2708
+ readonly title: "Number format";
2709
+ };
2710
+ readonly numberFormat: {
2711
+ readonly abbreviationLabel: "Abbreviation";
2712
+ readonly valueLabel: "Value";
2713
+ readonly decimalPlacesLabel: "Decimal places";
2714
+ readonly options: {
2715
+ readonly auto: "Auto";
2716
+ readonly custom: "Custom";
2717
+ readonly none: "None";
2718
+ };
2719
+ };
2720
+ readonly headlineNumberSize: {
2721
+ readonly sizeLabel: "Size";
2722
+ readonly valueLabel: "Value";
2723
+ readonly sizes: {
2724
+ readonly small: "S";
2725
+ readonly medium: "M";
2726
+ readonly large: "L";
2727
+ };
2728
+ };
2729
+ readonly lineThickness: {
2730
+ readonly label: "Line thickness";
2731
+ };
2732
+ readonly pointSize: {
2733
+ readonly label: "Point size";
2734
+ readonly options: {
2735
+ readonly auto: "Auto";
2736
+ readonly custom: "Custom";
2737
+ };
2738
+ };
2739
+ readonly headlineNumberSection: {
2740
+ readonly title: "Headline number";
2741
+ readonly toggle: "Visible";
2742
+ readonly metricLabel: "Metric";
2743
+ readonly compareWithLabel: "Compare with";
2744
+ readonly metrics: {
2745
+ readonly total: "Total";
2746
+ readonly average: "Avg.";
2747
+ readonly current: "Last";
2748
+ readonly conversion: "Conversion";
2749
+ readonly left: "Left";
2750
+ };
2751
+ readonly comparison: {
2752
+ readonly first: "First";
2753
+ readonly previous: "Previous";
2754
+ };
2755
+ readonly pieTotalPosition: {
2756
+ readonly left: "Left";
2757
+ readonly center: "Center";
2758
+ };
2759
+ };
2760
+ readonly treatEmptyValues: {
2761
+ readonly leaveGap: {
2762
+ readonly label: "Leave gap in chart";
2763
+ readonly description: "Leaves a visible break in the line where data is missing";
2764
+ };
2765
+ readonly fillZero: {
2766
+ readonly label: "Fill with zero";
2767
+ readonly description: "Displays missing data points as zero";
2768
+ };
2769
+ readonly connectGaps: {
2770
+ readonly label: "Connect across gaps";
2771
+ readonly description: "Joins the line between available points, skipping the gap";
2772
+ };
2773
+ };
2774
+ readonly comboChartAppearance: {
2775
+ readonly title: "Combo chart appearance";
2776
+ readonly groupedBars: "Grouped bars";
2777
+ readonly stackedBars: "Stacked bars";
2778
+ readonly linesOnly: "Lines only";
2779
+ };
2780
+ };
2781
+ readonly columnMapping: {
2782
+ readonly title: "Data";
2783
+ readonly xAxis: "X-axis";
2784
+ readonly yAxis: "Y-axis";
2785
+ readonly leftYAxis: "Y-axis (left)";
2786
+ readonly rightYAxis: "Y-axis (right)";
2787
+ readonly slices: "Values (slices)";
2788
+ readonly labels: "Labels";
2789
+ readonly size: "Size";
2790
+ readonly shape: "Shape";
2791
+ readonly reset: "Reset to auto";
2792
+ readonly addSeries: "Add series";
2793
+ readonly removeSeries: "Remove series";
2794
+ };
2795
+ readonly axesPanel: {
2796
+ readonly toolbarButton: "Axes";
2797
+ readonly mainAxisSection: {
2798
+ readonly yAxis: "Y-axis";
2799
+ readonly xAxis: "X-axis";
2800
+ };
2801
+ readonly crossAxisSection: {
2802
+ readonly xAxis: "X-axis";
2803
+ readonly yAxis: "Y-axis";
2804
+ };
2805
+ readonly controls: {
2806
+ readonly visible: "Visible";
2807
+ readonly labels: "Labels";
2808
+ readonly position: "Position";
2809
+ readonly scale: "Scale";
2810
+ readonly startFrom: "Start from";
2811
+ readonly endAt: "End at";
2812
+ readonly value: "Value";
2813
+ readonly numberOfAxes: "Number of axes";
2814
+ readonly reverse: "Reverse";
2815
+ };
2816
+ readonly labelMode: {
2817
+ readonly auto: "Auto";
2818
+ readonly edges: "Edges";
2819
+ };
2820
+ readonly scale: {
2821
+ readonly auto: "Auto";
2822
+ readonly log: "Log";
2823
+ };
2824
+ readonly startFrom: {
2825
+ readonly auto: "Auto";
2826
+ readonly zero: "Zero";
2827
+ readonly custom: "Custom";
2828
+ };
2829
+ readonly endAt: {
2830
+ readonly auto: "Auto";
2831
+ readonly custom: "Custom";
2832
+ };
2833
+ readonly axisCount: {
2834
+ readonly single: "Single";
2835
+ readonly double: "Double";
2836
+ };
2837
+ readonly position: {
2838
+ readonly left: "Left";
2839
+ readonly right: "Right";
2840
+ readonly top: "Top";
2841
+ readonly bottom: "Bottom";
2842
+ };
2843
+ readonly yesNo: {
2844
+ readonly yes: "Yes";
2845
+ readonly no: "No";
2846
+ };
2847
+ };
2848
+ readonly colorPanel: {
2849
+ readonly toolbarButton: "Color";
2850
+ readonly themeSection: {
2851
+ readonly title: "Theme";
2852
+ };
2853
+ readonly paletteSection: {
2854
+ readonly title: "Palette";
2855
+ readonly colorScheme: "Color scheme";
2856
+ readonly colors: "Colors";
2857
+ readonly colorPalettes: "Color palettes";
2858
+ };
2859
+ readonly paletteMode: {
2860
+ readonly preset: "Preset";
2861
+ readonly brand: "Brand";
2862
+ readonly freestyle: "Freestyle";
2863
+ };
2864
+ readonly paletteThemes: {
2865
+ readonly colorful: "Colorful";
2866
+ readonly pastel: "Pastel";
2867
+ readonly neon: "Neon";
2868
+ };
2869
+ readonly backgroundSection: {
2870
+ readonly title: "Background";
2871
+ readonly black: "Black";
2872
+ readonly white: "White";
2873
+ readonly grey: "Grey";
2874
+ readonly tint: "Tint";
2875
+ readonly custom: "Custom";
2876
+ readonly none: "None";
2877
+ };
2878
+ readonly borderSection: {
2879
+ readonly title: "Border";
2880
+ readonly borderColor: "Border color";
2881
+ readonly thickness: "Thickness";
2882
+ readonly cornerRadius: "Corner radius";
2883
+ };
2884
+ readonly borderType: {
2885
+ readonly solid: "Solid";
2886
+ readonly gradient: "Gradient";
2887
+ readonly grey: "Grey";
2888
+ readonly preset: "Preset";
2889
+ readonly custom: "Custom";
2890
+ readonly none: "None";
2891
+ };
2892
+ readonly presetGradients: {
2893
+ readonly lilac: "Lilac";
2894
+ readonly neonPink: "Neon Pink";
2895
+ readonly blackberry: "Blackberry";
2896
+ readonly sun: "Sun";
2897
+ readonly iceland: "Iceland";
2898
+ readonly sunset: "Sunset";
2899
+ readonly ultraviolet: "Ultraviolet";
2900
+ readonly purple: "Purple";
2901
+ readonly iceCream: "Ice Cream";
2902
+ readonly mint: "Mint";
2903
+ readonly cool: "Cool";
2904
+ readonly fresh: "Fresh";
2905
+ };
2906
+ };
2907
+ readonly designPanel: {
2908
+ readonly toolbarButton: "Design";
2909
+ readonly defaultExpanded: "Palette";
2910
+ };
2911
+ readonly annotatePanel: {
2912
+ readonly toolbarButton: "Annotate";
2913
+ readonly callOutSection: {
2914
+ readonly title: "Call-out";
2915
+ readonly text: "Text";
2916
+ readonly arrow: "Arrow";
2917
+ readonly box: "Box";
2918
+ readonly differenceArrows: "Difference arrows";
2919
+ };
2920
+ readonly highlightSection: {
2921
+ readonly title: "Highlight";
2922
+ readonly button: "Highlight";
2923
+ readonly colorLabel: "Highlight color";
2924
+ };
2925
+ };
2926
+ readonly annotationsPanel: {
2927
+ readonly toolbarButton: "Annotate";
2928
+ readonly freeformSection: {
2929
+ readonly title: "Freeform";
2930
+ readonly text: "Text";
2931
+ readonly arrow: "Arrow";
2932
+ readonly box: "Box";
2933
+ readonly difference: "Difference";
2934
+ };
2935
+ readonly goalSection: {
2936
+ readonly title: "Goal";
2937
+ readonly labelControl: "Label";
2938
+ readonly labelPlaceholder: "Goal";
2939
+ readonly labelAriaLabel: "Custom goal label";
2940
+ readonly valueControl: "Goal value";
2941
+ readonly valueAriaLabel: "Goal value";
2942
+ readonly byDate: "By date";
2943
+ readonly xAxisValue: "X-axis value";
2944
+ readonly optional: "(optional)";
2945
+ };
2946
+ readonly trendsAndAveragesSection: {
2947
+ readonly title: "Trends and Averages";
2948
+ readonly trend: "Trend";
2949
+ readonly average: "Average";
2950
+ };
2951
+ readonly trendType: {
2952
+ readonly label: "Trend type";
2953
+ readonly placeholder: "Trend type";
2954
+ readonly options: {
2955
+ readonly linear: "Linear";
2956
+ readonly exponential: "Exponential";
2957
+ readonly quadratic: "Quadratic";
2958
+ readonly polynomial: "Polynomial";
2959
+ readonly logarithmic: "Logarithmic";
2960
+ readonly power: "Power";
2961
+ readonly loess: "Loess";
2962
+ };
2963
+ };
2964
+ readonly averageLineSeries: {
2965
+ readonly label: "Average line series";
2966
+ readonly placeholder: "Select series";
2967
+ readonly ariaLabel: "Series dropdown for average line";
2968
+ };
2969
+ readonly highlightSection: {
2970
+ readonly title: "Highlight";
2971
+ readonly button: "Highlight";
2972
+ readonly fadeColorLabel: "Fade color";
2973
+ };
2974
+ readonly titleAndSubtitleSection: {
2975
+ readonly title: "Title & Subtitle";
2976
+ readonly toggleTitle: "Title";
2977
+ readonly subtitle: "Subtitle";
2978
+ };
2979
+ readonly captionAndSourceSection: {
2980
+ readonly title: "Caption & Source";
2981
+ readonly caption: "Caption";
2982
+ readonly source: "Source";
2983
+ readonly url: "URL";
2984
+ readonly name: "Name";
2985
+ };
2986
+ };
2987
+ readonly elementsPanel: {
2988
+ readonly contentVisible: "Visible";
2989
+ readonly contentValue: "Value";
2990
+ readonly toolbarButton: "Elements";
2991
+ readonly headerSection: {
2992
+ readonly title: "Header";
2993
+ readonly toggleTitle: "Title";
2994
+ readonly subtitle: "Subtitle";
2995
+ };
2996
+ readonly footerSection: {
2997
+ readonly title: "Footer";
2998
+ readonly caption: "Caption";
2999
+ readonly source: "Source";
3000
+ readonly url: "URL";
3001
+ readonly name: "Name";
3002
+ };
3003
+ readonly textSizeSection: {
3004
+ readonly title: "Text size";
3005
+ readonly scaleFormat: (params: {
3006
+ value: string;
3007
+ }) => string;
3008
+ };
3009
+ readonly fontSection: {
3010
+ readonly title: "Font";
3011
+ };
3012
+ readonly sourceSection: {
3013
+ readonly title: "Source";
3014
+ readonly url: "URL";
3015
+ readonly name: "Name";
3016
+ };
3017
+ };
3018
+ readonly powerUpPanel: {
3019
+ readonly toolbarButton: "Power-ups";
3020
+ readonly goalSection: {
3021
+ readonly title: "Goal";
3022
+ readonly toggle: "Goal";
3023
+ readonly labelControl: "Label";
3024
+ readonly labelPlaceholder: "Goal";
3025
+ readonly labelAriaLabel: "Custom goal label";
3026
+ readonly valueControl: "Goal value";
3027
+ readonly byDate: "By date";
3028
+ readonly xAxisValue: "X-axis value";
3029
+ readonly optional: " (optional)";
3030
+ readonly xAxisReferenceAriaLabel: "X-axis reference value";
3031
+ readonly anyXAxisValue: "Any x-axis value";
3032
+ readonly selectValuePlaceholder: "Select value";
3033
+ };
3034
+ readonly trendSection: {
3035
+ readonly title: "Trend";
3036
+ readonly toggle: "Trend";
3037
+ };
3038
+ readonly averageSection: {
3039
+ readonly title: "Average";
3040
+ readonly toggle: "Average";
3041
+ readonly seriesLabel: "Average line series";
3042
+ readonly seriesPlaceholder: "Select series";
3043
+ readonly seriesAriaLabel: "Series dropdown for average line";
3044
+ };
3045
+ readonly trendType: {
3046
+ readonly label: "Trend type";
3047
+ readonly placeholder: "Trend type";
3048
+ readonly options: {
3049
+ readonly linear: "Linear";
3050
+ readonly exponential: "Exponential";
3051
+ readonly quadratic: "Quadratic";
3052
+ readonly polynomial: "Polynomial";
3053
+ readonly logarithmic: "Logarithmic";
3054
+ readonly power: "Power";
3055
+ readonly loess: "Loess";
3056
+ };
3057
+ };
3058
+ readonly valueInput: {
3059
+ readonly percentagePlaceholder: "Percentage";
3060
+ readonly numberPlaceholder: "Number";
3061
+ readonly percentageSymbol: "%";
3062
+ };
3063
+ };
3064
+ readonly highlighting: {
3065
+ readonly modeHelper: {
3066
+ readonly title: "Highlight mode";
3067
+ readonly hover: "Hover";
3068
+ readonly toHighlight: "to highlight";
3069
+ readonly anyElement: "any element";
3070
+ readonly escToExit: "to exit";
3071
+ readonly esc: "ESC";
3072
+ };
3073
+ readonly emptyState: "No highlight options available";
3074
+ readonly deleteAriaLabel: "Delete highlight";
3075
+ readonly highlightStyle: {
3076
+ readonly tint: "Tint";
3077
+ readonly grey: "Grey";
3078
+ };
3079
+ };
3080
+ readonly fineTunePanel: {
3081
+ readonly toolbarButton: "Fine tune";
3082
+ readonly detailSection: {
3083
+ readonly title: "Detail";
3084
+ readonly missingValues: "Missing values";
3085
+ };
3086
+ readonly lineStyleSection: {
3087
+ readonly title: "Line style";
3088
+ readonly lineCurve: "Line curve";
3089
+ readonly sharp: "Sharp";
3090
+ readonly smooth: "Smooth";
3091
+ };
3092
+ };
3093
+ readonly customThemeEditor: {
3094
+ readonly patternDropdownAriaLabel: "Pattern dropdown for series";
3095
+ readonly patterns: {
3096
+ readonly solid: "Solid";
3097
+ readonly pattern: "Pattern";
3098
+ readonly dotted: "Dotted";
3099
+ readonly dashed: "Dashed";
3100
+ readonly hatched: "Hatched";
3101
+ };
3102
+ readonly heatmapColorLabel: "Color";
3103
+ };
3104
+ readonly accessibility: {
3105
+ readonly toggleSection: (params: {
3106
+ title: string;
3107
+ }) => string;
3108
+ };
3109
+ readonly graphyDefaults: {
3110
+ readonly themeOptions: {
3111
+ readonly light: "Light";
3112
+ readonly dark: "Dark";
3113
+ };
3114
+ };
3115
+ };
3116
+ readonly graph: {
3117
+ readonly loading: "Loading";
3118
+ readonly error: "Something went wrong";
3119
+ readonly axisLabels: {
3120
+ readonly placeholder: "Add label";
3121
+ };
3122
+ readonly defaultPropertyLabels: {
3123
+ readonly date: "Date";
3124
+ readonly year: "Year";
3125
+ readonly quarter: "Quarter";
3126
+ readonly month: "Month";
3127
+ readonly week: "Week";
3128
+ readonly series: "Series";
3129
+ readonly category: "Category";
3130
+ readonly columnNumber: ({ number }: {
3131
+ number: number;
3132
+ }) => string;
3133
+ readonly rowNumber: ({ number }: {
3134
+ number: number;
3135
+ }) => string;
3136
+ readonly seriesNumber: ({ number }: {
3137
+ number: number;
3138
+ }) => string;
3139
+ };
3140
+ readonly trendComparison: {
3141
+ readonly fromPrevious: {
3142
+ readonly long: ({ value }: {
3143
+ value: string;
3144
+ }) => string;
3145
+ readonly short: ({ value }: {
3146
+ value: string;
3147
+ }) => string;
3148
+ };
3149
+ readonly fromPreviousYear: {
3150
+ readonly long: ({ value }: {
3151
+ value: string;
3152
+ }) => string;
3153
+ readonly short: ({ value }: {
3154
+ value: string;
3155
+ }) => string;
3156
+ };
3157
+ readonly fromPreviousMonth: {
3158
+ readonly long: ({ value }: {
3159
+ value: string;
3160
+ }) => string;
3161
+ readonly short: ({ value }: {
3162
+ value: string;
3163
+ }) => string;
3164
+ };
3165
+ readonly fromPreviousWeek: {
3166
+ readonly long: ({ value }: {
3167
+ value: string;
3168
+ }) => string;
3169
+ readonly short: ({ value }: {
3170
+ value: string;
3171
+ }) => string;
3172
+ };
3173
+ readonly fromPreviousDay: {
3174
+ readonly long: ({ value }: {
3175
+ value: string;
3176
+ }) => string;
3177
+ readonly short: ({ value }: {
3178
+ value: string;
3179
+ }) => string;
3180
+ };
3181
+ readonly fromPreviousHour: {
3182
+ readonly long: ({ value }: {
3183
+ value: string;
3184
+ }) => string;
3185
+ readonly short: ({ value }: {
3186
+ value: string;
3187
+ }) => string;
3188
+ };
3189
+ };
3190
+ readonly headlineMetrics: {
3191
+ readonly averageLong: ({ value }: {
3192
+ value: string;
3193
+ }) => string;
3194
+ readonly averageShort: ({ value }: {
3195
+ value: string;
3196
+ }) => string;
3197
+ readonly total: ({ value }: {
3198
+ value: string;
3199
+ }) => string;
3200
+ readonly totalConversionRate: ({ value }: {
3201
+ value: string;
3202
+ }) => string;
3203
+ readonly current: ({ value }: {
3204
+ value: string;
3205
+ }) => string;
3206
+ readonly comparisonReference: ({ value }: {
3207
+ value: string;
3208
+ }) => string;
3209
+ };
3210
+ readonly titleEditor: {
3211
+ readonly titlePlaceholder: "Untitled";
3212
+ readonly subtitlePlaceholder: "Add a subtitle";
3213
+ };
3214
+ readonly toolbar: {
3215
+ readonly formatting: {
3216
+ readonly bold: "Bold";
3217
+ readonly italic: "Italic";
3218
+ readonly underline: "Underline";
3219
+ readonly link: "Link";
3220
+ };
3221
+ readonly link: {
3222
+ readonly ariaLabel: "Create link";
3223
+ readonly placeholder: "Type or paste a link...";
3224
+ readonly submit: "Submit";
3225
+ readonly urlLabel: "Link URL";
3226
+ readonly apply: "Apply link";
3227
+ };
3228
+ readonly font: {
3229
+ readonly label: "Font";
3230
+ readonly ariaLabel: "Font family";
3231
+ };
3232
+ readonly heading: {
3233
+ readonly label: "Heading level";
3234
+ readonly ariaLabel: "Text style";
3235
+ readonly text: "Text";
3236
+ readonly caption: "Caption";
3237
+ readonly heading1: "Heading 1";
3238
+ readonly heading2: "Heading 2";
3239
+ readonly heading3: "Heading 3";
3240
+ };
3241
+ readonly textAlign: {
3242
+ readonly left: "Align left";
3243
+ readonly center: "Align center";
3244
+ readonly right: "Align right";
3245
+ };
3246
+ readonly color: {
3247
+ readonly label: "Text color";
3248
+ };
3249
+ };
3250
+ readonly colorDropdown: {
3251
+ readonly colors: "Colors";
3252
+ readonly chartColors: "Chart colors";
3253
+ readonly custom: "Custom";
3254
+ readonly opacity: "Opacity";
3255
+ readonly transparent: "Transparent";
3256
+ readonly pickCustom: "Pick custom color";
3257
+ readonly pickColor: "Pick color";
3258
+ };
3259
+ readonly legend: {
3260
+ readonly hiddenItems: "Hidden legend items";
3261
+ };
3262
+ readonly annotations: {
3263
+ readonly differenceArrowToolbar: {
3264
+ readonly label: "Difference arrow options";
3265
+ readonly labelKind: {
3266
+ readonly ariaLabel: "Label";
3267
+ readonly absoluteDifference: "Absolute change";
3268
+ readonly relativeDifference: "Percentage change";
3269
+ readonly proportion: "Proportion";
3270
+ readonly suspectValue: "This value divides by a baseline of zero.";
3271
+ readonly incomparableEnds: "The two ends measure different quantities, so a difference between them has no meaning.";
3272
+ };
3273
+ readonly color: "Arrow colour";
3274
+ readonly size: {
3275
+ readonly ariaLabel: "Size";
3276
+ readonly small: "Small";
3277
+ readonly medium: "Medium";
3278
+ readonly large: "Large";
3279
+ };
3280
+ readonly swap: "Swap direction";
3281
+ readonly remove: "Remove arrow";
3282
+ };
3283
+ readonly baseMenu: {
3284
+ readonly pinNumber: "Pin number";
3285
+ readonly unpinNumber: "Unpin number";
3286
+ readonly annotate: "Annotate";
3287
+ readonly removeAnnotation: "Remove annotation";
3288
+ readonly highlight: "Highlight";
3289
+ readonly highlightWithLabel: (params: {
3290
+ label: string;
3291
+ }) => string;
3292
+ readonly removeHighlight: "Remove highlight";
3293
+ readonly differenceArrow: "Difference arrow";
3294
+ readonly addSticker: "Add sticker";
3295
+ readonly removeSticker: "Remove sticker";
3296
+ };
3297
+ readonly textMenu: {
3298
+ readonly title: "Annotate";
3299
+ readonly placeholder: "Add a comment";
3300
+ readonly addButton: "Add";
3301
+ };
3302
+ readonly highlights: {
3303
+ readonly menuTitle: "Highlight";
3304
+ readonly labels: {
3305
+ readonly bar: "bar";
3306
+ readonly barGroup: "group";
3307
+ readonly barStack: "stack";
3308
+ readonly barSeries: "series";
3309
+ readonly line: "line";
3310
+ readonly linePoint: "point";
3311
+ readonly lineSeries: "series";
3312
+ readonly scatterPoint: "point";
3313
+ readonly scatterSeries: "series";
3314
+ readonly pieSlice: "slice";
3315
+ readonly pointOrBar: "point / bar";
3316
+ readonly lineOrSeries: "line / series";
3317
+ };
3318
+ };
3319
+ readonly stickerMenu: {
3320
+ readonly title: "Add sticker";
3321
+ };
3322
+ readonly delete: "Delete";
3323
+ readonly arrow: {
3324
+ readonly thickness: {
3325
+ readonly label: "Thickness";
3326
+ readonly thin: "Thin";
3327
+ readonly medium: "Medium";
3328
+ readonly thick: "Thick";
3329
+ };
3330
+ readonly arrowhead: {
3331
+ readonly startPoint: "Start point";
3332
+ readonly endPoint: "End point";
3333
+ readonly lineArrow: "Line arrow";
3334
+ readonly none: "None";
3335
+ };
3336
+ readonly lineStyle: {
3337
+ readonly label: "Line style";
3338
+ readonly solid: "Solid";
3339
+ readonly dotted: "Dotted";
3340
+ };
3341
+ readonly stickerEffect: "Sticker effect";
3342
+ readonly toolbarAriaLabel: "Free-form arrow toolbar";
3343
+ readonly editorAriaLabel: "Arrow editor";
3344
+ };
3345
+ readonly differenceArrow: {
3346
+ readonly type: {
3347
+ readonly proportion: "Proportion";
3348
+ readonly difference: ({ absoluteDifference }: {
3349
+ absoluteDifference: string;
3350
+ }) => string;
3351
+ readonly increase: ({ absoluteDifference }: {
3352
+ absoluteDifference: string;
3353
+ }) => string;
3354
+ readonly decrease: ({ absoluteDifference }: {
3355
+ absoluteDifference: string;
3356
+ }) => string;
3357
+ readonly percentageChange: ({ percentageChange }: {
3358
+ percentageChange: string;
3359
+ }) => string;
3360
+ readonly percentIncrease: ({ percentageChange }: {
3361
+ percentageChange: string;
3362
+ }) => string;
3363
+ readonly percentDecrease: ({ percentageChange }: {
3364
+ percentageChange: string;
3365
+ }) => string;
3366
+ };
3367
+ readonly size: {
3368
+ readonly label: "Size";
3369
+ readonly small: "Small";
3370
+ readonly medium: "Medium";
3371
+ readonly large: "Large";
3372
+ };
3373
+ readonly flipArrow: "Flip arrow";
3374
+ readonly color: "Color";
3375
+ readonly toolbarAriaLabel: "Difference arrow toolbar";
3376
+ readonly editorAriaLabel: "Difference arrow editor";
3377
+ };
3378
+ readonly shape: {
3379
+ readonly color: "Color";
3380
+ readonly border: {
3381
+ readonly label: "Border";
3382
+ readonly none: "None";
3383
+ readonly thin: ({ value }: {
3384
+ value: string;
3385
+ }) => string;
3386
+ readonly medium: ({ value }: {
3387
+ value: string;
3388
+ }) => string;
3389
+ readonly thick: ({ value }: {
3390
+ value: string;
3391
+ }) => string;
3392
+ };
3393
+ };
3394
+ };
3395
+ };
3396
+ readonly dir: "ltr";
3397
+ };
3398
+
3399
+ /**
3400
+ * Props for the Footer slot, overridable via `slots.Footer` on `GraphRenderer`. Caption editing in
3401
+ * `editable` mode is internal to this default; an override replacing the region opts out of it.
3402
+ */
3403
+ declare interface FooterSlotProps {
3404
+ /** Forward this to the region's outer element — the layout measures the rendered DOM to reserve its space. */
3405
+ ref?: React.Ref<HTMLDivElement>;
3406
+ footerRect: Rect;
3407
+ mode?: GraphMode;
3408
+ caption: TextContent | null;
3409
+ isCaptionVisible: boolean;
3410
+ source: SourceContent | null;
3411
+ isSourceVisible: boolean;
3412
+ /**
3413
+ * Resolved badge visual for footer placement. `hidden` when the mark is off, below the min
3414
+ * footprint, or configured for header placement.
3415
+ */
3416
+ brandMark: BrandMarkVisual;
3417
+ }
3418
+
3419
+ declare interface GraphAnimationProps {
3420
+ /**
3421
+ * Settings for the intro animation played on first mount. `false` disables it, `true` forces it on,
3422
+ * an object overrides individual intro settings. Defaults on.
3423
+ */
3424
+ intro?: boolean | Partial<IntroAnimationOptions>;
3425
+ }
3426
+
3427
+ /** Write access to the graph's spec: applying {@link Command}s and closing the runs they form. */
3428
+ declare interface GraphCommands {
3429
+ /** Applies a command to the provider's live spec. */
3430
+ dispatch: (command: Command, options?: DispatchOptions) => void;
3431
+ /**
3432
+ * Closes a run of `{ transient: true }` dispatches and fires `onChange` once for it. Call it when
3433
+ * the gesture ends — pointer up, blur. Forgetting only delays the notification rather than
3434
+ * corrupting undo: the run covers one {@link EditTarget}, and the next committed dispatch, undo,
3435
+ * redo or external change closes it.
3436
+ */
3437
+ seal: () => void;
3438
+ }
3439
+
3440
+ /**
3441
+ * Imperative handle on a graph, for an app's key handling, toolbar or menu bar mounted above the
3442
+ * tree the hooks can reach. Obtained through {@link GraphProviderProps.handleRef}.
3443
+ */
3444
+ declare interface GraphHandle {
3445
+ /** Write access to the graph's spec, the same surface {@link useGraphCommands} serves inside the tree. */
3446
+ commands: GraphCommands;
3447
+ /**
3448
+ * Registers a listener fired on every change to the graph; returns the unsubscribe. With
3449
+ * {@link GraphHandle.getCompiled} it is what `useSyncExternalStore` needs, so a surface outside the
3450
+ * graph's tree stays in step with it. Subscribing before the graph compiles is valid.
3451
+ */
3452
+ subscribe: (onGraphChange: () => void) => () => void;
3453
+ /** The graph's compiled spec as of now, or `null` before its first successful compile. */
3454
+ getCompiled: () => CompiledSpec | null;
3455
+ /**
3456
+ * Reverse the most recent command. Returns whether the chart took the step, so a caller driving
3457
+ * this from a keystroke can leave the key to the app when the chart has nothing to undo or the
3458
+ * older spec no longer compiles.
3459
+ */
3460
+ undo: () => boolean;
3461
+ /** Re-apply the most recently undone command. Returns whether the chart took the step. */
3462
+ redo: () => boolean;
3463
+ /** What the chart holds selected as of now; empty when nothing is. */
3464
+ getSelection: () => readonly EditTarget[];
3465
+ /** Replace what the chart holds selected. */
3466
+ setSelection: (next: readonly EditTarget[]) => void;
3467
+ /** Registers a listener fired on every change to the selection; returns the unsubscribe. */
3468
+ subscribeSelection: (onSelectionChange: () => void) => () => void;
3469
+ }
3470
+
3471
+ /**
3472
+ * Chart display and interaction mode.
3473
+ * - 'readonly': Normal chart display with full interactivity but no editing (default)
3474
+ * - 'editable': Chart with inline editing capabilities for labels, titles, etc.
3475
+ */
3476
+ declare type GraphMode = 'readonly' | 'editable';
3477
+
3478
+ /** Props for {@link GraphRenderer}: container sizing, interaction toggles and per-region slot overrides. */
3479
+ declare interface GraphRendererProps {
3480
+ /** Controls how the graph responds to its container size. Defaults to filling the parent container. */
3481
+ sizing?: GraphSizing;
3482
+ /** Callback invoked when the graph's container is resized. Fires in every sizing mode. */
3483
+ onResize?: ResizeObserverOnResize;
3484
+ isAnimated?: boolean;
3485
+ animation?: GraphAnimationProps;
3486
+ showTooltips?: boolean;
3487
+ mode?: GraphMode;
3488
+ /** Per-region component overrides. Unspecified regions render their default. */
3489
+ slots?: GraphSlots;
3490
+ }
3491
+
3492
+ /** Controls how the graph claims space in its container. */
3493
+ declare type GraphSizing = {
3494
+ mode: 'responsive';
3495
+ } | {
3496
+ mode: 'fixed';
3497
+ width: number;
3498
+ height: number;
3499
+ } | {
3500
+ mode: 'keepAspectRatio';
3501
+ intrinsicWidth: number;
3502
+ intrinsicHeight: number;
3503
+ } | {
3504
+ mode: 'keepAspectRatio';
3505
+ intrinsicWidth: number;
3506
+ aspectRatio: number;
3507
+ } | {
3508
+ mode: 'keepAspectRatio';
3509
+ intrinsicHeight: number;
3510
+ aspectRatio: number;
3511
+ };
3512
+
3513
+ /**
3514
+ * Region overrides for `GraphRenderer`. A slot replaces how one region paints; the viz-engine `Spec`
3515
+ * still owns whether a region exists and what data it receives, and an override gets the same
3516
+ * render-ready props as its default.
3517
+ *
3518
+ * Layout-safe regions (`Header`, `Footer`, `Tooltip`, `Grid`, `Swatch`, `EditorSurface`) are bare
3519
+ * components — DOM-measured, reserving no edge space or painting inside a box the layout already sized.
3520
+ * Layout-coupled regions (`AxisTicks`, `AxisLabel`, `Legend`, `Headline`) are
3521
+ * {@link SlotOverride}s that also declare their reserved size via `measure`, else paint and the
3522
+ * reserved band desync. The tick and title bands are separate slots so overriding one leaves the other
3523
+ * on its default.
3524
+ */
3525
+ declare interface GraphSlots {
3526
+ Header?: ComponentType<HeaderSlotProps>;
3527
+ Footer?: ComponentType<FooterSlotProps>;
3528
+ Tooltip?: ComponentType<TooltipSlotProps>;
3529
+ Grid?: ComponentType<GridSlotProps>;
3530
+ Swatch?: ComponentType<SwatchSlotProps>;
3531
+ /**
3532
+ * The chart's editor layer, mounted over the frame in `mode="editable"`. Only
3533
+ * `@graphysdk/react-renderer/editable` exports something that fills it, so a read-only embed bundles
3534
+ * no editing code.
3535
+ */
3536
+ EditorSurface?: ComponentType<EditorSurfaceSlotProps>;
3537
+ Legend?: SlotOverride<LegendSlotProps, (legend: FormattedLegend, ctx: SlotMeasureContext) => number>;
3538
+ Headline?: SlotOverride<HeadlineSlotProps, HeadlineMeasurer>;
3539
+ AxisTicks?: SlotOverride<AxisTicksSlotProps, (axis: FormattedAxis, ctx: SlotMeasureContext) => number>;
3540
+ AxisLabel?: SlotOverride<AxisLabelSlotProps, (axis: FormattedAxis, ctx: SlotMeasureContext) => number>;
3541
+ }
3542
+
3543
+ /**
3544
+ * Props for the Grid slot, overridable via `slots.Grid` on `GraphRenderer`. `panelRect` is in
3545
+ * SVG-local coordinates.
3546
+ */
3547
+ declare interface GridSlotProps {
3548
+ axes: FormattedAxis[];
3549
+ panel: CompiledPanel;
3550
+ panelFrameRect: GraphLayout['panelFrame'];
3551
+ panelRect: GraphLayout['panel'];
3552
+ }
3553
+
3554
+ /**
3555
+ * Props for the Header slot, overridable via `slots.Header` on `GraphRenderer`. Title editing in
3556
+ * `editable` mode is internal to this default; an override replacing the region opts out of it.
3557
+ */
3558
+ declare interface HeaderSlotProps {
3559
+ /** Forward this to the region's outer element — the layout measures the rendered DOM to reserve its space. */
3560
+ ref?: React.Ref<HTMLDivElement>;
3561
+ headerRect: Rect;
3562
+ mode?: GraphMode;
3563
+ title: TextContent | null;
3564
+ isTitleVisible: boolean;
3565
+ subtitle: TextContent | null;
3566
+ isSubtitleVisible: boolean;
3567
+ /**
3568
+ * Resolved badge visual for header placement. `hidden` when the mark is off, below the min
3569
+ * footprint, or configured for footer placement.
3570
+ */
3571
+ brandMark: BrandMarkVisual;
3572
+ }
3573
+
3574
+ /** Props for the Headline slot, overridable via `slots.Headline` on `GraphRenderer`. */
3575
+ declare interface HeadlineSlotProps {
3576
+ headline: FormattedHeadline;
3577
+ rect: Rect;
3578
+ resolvedSize: ResolvedHeadlineSize;
3579
+ /** Leading strip items to paint; the rest are hidden because they would overflow the band. */
3580
+ visibleItemCount: number;
3581
+ }
3582
+
3583
+ declare type I18nLocale = keyof typeof dictionaries;
3584
+
3585
+ declare type I18nRuntimeOverrides = {
3586
+ dir?: TextDirection;
3587
+ } & {
3588
+ [K in TranslationKey]?: OverridePhrase<K>;
3589
+ };
3590
+
3591
+ export declare const IntlProvider: React.FC<CoreIntlProviderProps>;
3592
+
3593
+ declare interface IntroAnimationOptions {
3594
+ /** Whether the entrance plays at all */
3595
+ enabled: boolean;
3596
+ /** Multiplier applied to every entrance duration and stagger delay. */
3597
+ durationScale: number;
3598
+ /** Whether geoms that support staggered entrance (bars) enter staggered rather than all at once. */
3599
+ stagger: boolean;
3600
+ /** The order staggered point geoms enter in. Bars and slices always enter in visual order. */
3601
+ staggerOrder: IntroStaggerOrder;
3602
+ /** Total geom count across all layers above which the entrance is skipped entirely. */
3603
+ maxAnimatedGeoms: number;
3604
+ }
3605
+
3606
+ /**
3607
+ * Where the legend sits relative to the chart. Renders nothing until the graph has compiled, since
3608
+ * there is no position to show before then.
3609
+ *
3610
+ * `inline` by default: a narrowed chart offers two or three positions, which fit beside the heading.
3611
+ * A host that mounts it among collapsible sections passes `layout` rather than forking the section.
3612
+ */
3613
+ export declare const LegendSection: ({ positions, title, layout, preview }: LegendSectionProps) => JSX.Element | null;
3614
+
3615
+ declare interface LegendSectionProps extends OverridableSectionProps {
3616
+ /** Overrides the positions offered, for a host that knows its own layout constraints. */
3617
+ positions?: readonly LegendPosition[];
3618
+ }
3619
+
3620
+ /** Props for the Legend slot, overridable via `slots.Legend` on `GraphRenderer`. */
3621
+ declare interface LegendSlotProps {
3622
+ formattedLegends: FormattedLegend[];
3623
+ rects: Partial<Record<LayoutEdge, Rect>>;
3624
+ textScale: number;
3625
+ }
3626
+
3627
+ declare type LocaleShape = {
3628
+ dir?: TextDirection;
3629
+ } & Dictionary<typeof EN_GB>;
3630
+
3631
+ declare type LooseLocaleShape = {
3632
+ [K in keyof LocaleShape]?: LooseSection<LocaleShape[K]>;
3633
+ };
3634
+
3635
+ declare type LooseSection<T> = {
3636
+ [K in keyof T]?: T[K] extends object ? LooseSection<T[K]> : LooseValue<T[K]>;
3637
+ };
3638
+
3639
+ declare type LooseString<T> = T extends string ? string : T;
3640
+
3641
+ declare type LooseValue<T> = T extends (...args: infer A) => infer R ? (...args: A) => R : LooseString<T>;
3642
+
3643
+ /**
3644
+ * A number typed, scrubbed or stepped into a field.
3645
+ *
3646
+ * Base UI's `onValueCommitted` already fires on blur and at the end of a scrub or a button press,
3647
+ * which is exactly the grain `onCommit` wants — so a scrub is one undo entry, not one per pixel.
3648
+ */
3649
+ export declare const NumberField: ({ value, onChange, onCommit, min, max, step, prefix, suffix, isDisabled, hasError, ariaLabel, ariaLabelledBy, id, }: NumberFieldControlProps) => JSX.Element;
3650
+
3651
+ /** `null` is an empty field, which is a state of its own rather than zero. */
3652
+ export declare interface NumberFieldControlProps extends ContinuousControlProps<number | null> {
3653
+ min?: number;
3654
+ max?: number;
3655
+ step?: number;
3656
+ /**
3657
+ * Shown inside the field, before the number: a currency or a comparison symbol, `$` or `≥`.
3658
+ * Display only, never part of the value.
3659
+ */
3660
+ prefix?: string;
3661
+ /**
3662
+ * Shown inside the field, after the number: a unit that reads as one, `px`, `%` or `°`. Display
3663
+ * only, never part of the value.
3664
+ */
3665
+ suffix?: string;
3666
+ hasError?: boolean;
3667
+ }
3668
+
3669
+ /**
3670
+ * How every number in the chart reads: whether large values collapse to a suffix (`1.2k`, `3m`), and
3671
+ * how many decimals the rest keep.
3672
+ *
3673
+ * Both belong to the spec's config rather than to any one layer, so this is one setting the whole
3674
+ * chart shares.
3675
+ */
3676
+ export declare const NumberFormatSection: ({ title, layout, preview }: OverridableSectionProps) => JSX.Element | null;
3677
+
3678
+ /**
3679
+ * What a host may override per section, spread by every section onto its `Section`, so the same
3680
+ * section can be mounted at two layouts without being forked to get them.
3681
+ */
3682
+ export declare type OverridableSectionProps = Partial<Pick<SectionProps, 'title' | 'layout' | 'preview'>>;
3683
+
3684
+ declare type OverridePhrase<K extends TranslationKey> = PhraseOf<K> extends PhraseFn<infer P> ? PhraseFn<P> | string : string;
3685
+
3686
+ export { PANEL_ROOT_ATTRIBUTE }
3687
+
3688
+ declare interface PanelExpansion {
3689
+ expandSection: (title: string) => void;
3690
+ collapseAllSections: () => void;
3691
+ }
3692
+
3693
+ declare interface PanelProps extends Omit<PanelRootProps_2, 'children'> {
3694
+ /**
3695
+ * Replaces the sections entirely. A panel is a convenience over composing them by hand, so the
3696
+ * escape hatch is the composition it saves you writing rather than a set of flags on top of it.
3697
+ */
3698
+ children?: ReactNode;
3699
+ }
3700
+
3701
+ export { PanelRootProps }
3702
+
3703
+ declare type PhraseFn<P extends Record<string, unknown> = Record<string, unknown>> = (params: P) => string;
3704
+
3705
+ declare type PhraseOf<K extends TranslationKey> = DeepValue<typeof EN_GB, K>;
3706
+
3707
+ /**
3708
+ * A grid of picture-led choices, for settings that read faster as shapes than as words — chart
3709
+ * type, text size, a row of colour chips.
3710
+ *
3711
+ * A click is a whole gesture and commits immediately. A held arrow key is not: it sweeps the
3712
+ * selection across the options, firing a change for each one it passes through, so the run is
3713
+ * committed on key up instead. Without that, crossing six options would leave six undo entries behind
3714
+ * a single press. Blur commits too, for focus leaving before the key comes up.
3715
+ *
3716
+ * Base UI reports every change with the same reason, so which gesture is under way is tracked here
3717
+ * rather than read off the event.
3718
+ */
3719
+ export declare const RadioGrid: ({ options, value, onChange, onCommit, columns, itemLayout, isDisabled, ariaLabel, ariaLabelledBy, id, }: RadioGridControlProps) => JSX.Element;
3720
+
3721
+ /**
3722
+ * Single-select grid of icon buttons, for choices that read as pictures rather than words.
3723
+ *
3724
+ * Continuous despite holding a single string: arrow keys move the selection, so holding one sweeps
3725
+ * across the options and fires a change for each. `onCommit` lands once, on key up.
3726
+ */
3727
+ export declare interface RadioGridControlProps extends ContinuousControlProps<string> {
3728
+ options: readonly ControlOption[];
3729
+ /** Items per row. Defaults to the number of options, i.e. a single row. */
3730
+ columns?: number;
3731
+ /**
3732
+ * `tile` (default) captions each icon; `swatch` drops the caption for a dense grid of pure
3733
+ * pictures — colour chips a name would only clutter — naming each through `aria-label` instead.
3734
+ */
3735
+ itemLayout?: 'tile' | 'swatch';
3736
+ }
3737
+
3738
+ /** Fires on each deduped size change — the shape of `GraphRenderer`'s `onResize` callback. */
3739
+ declare type ResizeObserverOnResize = (state: ResizeObserverState) => void;
3740
+
3741
+ /** The observed element's content-box size in CSS pixels, rounded to integers. */
3742
+ declare interface ResizeObserverState {
3743
+ width: number;
3744
+ height: number;
3745
+ /** True until the first ResizeObserver measurement lands. */
3746
+ isDefault: boolean;
3747
+ }
3748
+
3749
+ /** A {@link ControlRegistry} with every member filled in, as sections consume it. */
3750
+ export declare type ResolvedControlRegistry = Required<ControlRegistry>;
3751
+
3752
+ /**
3753
+ * One labelled setting, wiring its own control: the row publishes its ids and each control takes the
3754
+ * half it can carry. The label reaches it with `htmlFor` rather than wrapping it, because a wrapping
3755
+ * `<label>` makes Base UI rename every option of a group inside it to the row's text.
3756
+ */
3757
+ export declare const Row: ({ label, layout, children }: SettingRowProps) => JSX.Element;
3758
+
3759
+ export declare type RowLayout = 'stack' | 'grid';
3760
+
3761
+ /**
3762
+ * One block of a panel: a heading, and the settings under it. Defaults to `fixed`, so a section that
3763
+ * forgot to declare a layout shows its controls rather than hiding them.
3764
+ *
3765
+ * Only `collapsible` is an accordion item — the other two always show their body, so an item that is
3766
+ * permanently open would carry the trigger and the panel semantics without ever using them.
3767
+ */
3768
+ export declare const Section: ({ title, layout, preview, accessory, onOpenChange, children }: SectionProps) => JSX.Element;
3769
+
3770
+ /**
3771
+ * `fixed` always shows its body; `collapsible` toggles it and only one section is open at a time;
3772
+ * `inline` is a single row, the control sitting where a preview otherwise would.
3773
+ */
3774
+ export declare type SectionLayout = 'fixed' | 'collapsible' | 'inline';
3775
+
3776
+ export declare interface SectionProps {
3777
+ /** Also the section's identity within the panel, so titles must be distinct. */
3778
+ title: string;
3779
+ layout?: SectionLayout;
3780
+ /** What the section says while closed — "Bottom". Not interactive; for that use `accessory`. */
3781
+ preview?: ReactNode;
3782
+ /** A live control at the header's end, whose clicks do not toggle the section. */
3783
+ accessory?: ReactNode;
3784
+ /**
3785
+ * Fired when a `collapsible` section opens or closes, so a section can couple a feature to being
3786
+ * looked at. An event rather than state to watch: an effect reading expansion would write the state
3787
+ * it reads and fire twice for one gesture.
3788
+ */
3789
+ onOpenChange?: (isOpen: boolean) => void;
3790
+ children: ReactNode;
3791
+ }
3792
+
3793
+ /** A single-choice dropdown, for a set too long or too wordy for a segmented row. */
3794
+ export declare const Select: ({ options, value, onChange, placeholder, isDisabled, hasError, ariaLabel, ariaLabelledBy, id, }: SelectControlProps) => JSX.Element;
3795
+
3796
+ /**
3797
+ * Single-choice dropdown, for a set too long or too wordy to sit in a segmented row.
3798
+ *
3799
+ * The value is nullable so a section can render "nothing chosen yet"; `onChange` only ever fires
3800
+ * with a real option, since clearing a required setting is not a gesture the panel offers.
3801
+ */
3802
+ export declare interface SelectControlProps extends DiscreteControlProps<string | null> {
3803
+ options: readonly ControlOption[];
3804
+ placeholder?: string;
3805
+ hasError?: boolean;
3806
+ }
3807
+
3808
+ declare interface SettingRowProps {
3809
+ label?: string;
3810
+ layout?: RowLayout;
3811
+ children: ReactNode;
3812
+ }
3813
+
3814
+ /**
3815
+ * A value dragged along a track.
3816
+ *
3817
+ * The gesture streams through `onChange`, which a section dispatches transiently, and commits through
3818
+ * `onCommit` when it ends — so sliding from one end to the other is one undo entry rather than one
3819
+ * per frame.
3820
+ *
3821
+ * A held arrow key is a gesture too. Base UI commits on every keyboard change, which would turn one
3822
+ * press-and-hold into an undo entry per auto-repeat, so those commits are swallowed and the run is
3823
+ * committed on key up instead — the keyboard's equivalent of releasing the thumb. Blur commits too,
3824
+ * for focus leaving mid-hold with no key up ever arriving.
3825
+ */
3826
+ export declare const Slider: ({ value, onChange, onCommit, min, max, step, suffix, formatValue, isDisabled, ariaLabel, ariaLabelledBy, }: SliderControlProps) => JSX.Element;
3827
+
3828
+ export declare interface SliderControlProps extends ContinuousControlProps<number> {
3829
+ min: number;
3830
+ max: number;
3831
+ step?: number;
3832
+ /**
3833
+ * Unit for the readout beside the track — `px`, `%`, `°`. Shows the value when given and hides it
3834
+ * when not, so a slider with nothing to say stays a bare track.
3835
+ */
3836
+ suffix?: string;
3837
+ /**
3838
+ * Formats the readout outright, for a value a unit cannot describe on its own — a thousands
3839
+ * separator, a ratio, a named step. Wins over {@link suffix} when both are given.
3840
+ */
3841
+ formatValue?: (value: number) => string;
3842
+ }
3843
+
3844
+ /**
3845
+ * Passed as the second argument to a layout-coupled slot's `measure`, so it can size its band from
3846
+ * real text metrics — the same Canvas-backed measurer the built-in measurers use — rather than
3847
+ * constructing its own. A `measure` whose size is unrelated to text can ignore it.
3848
+ */
3849
+ declare interface SlotMeasureContext {
3850
+ /** Measures a string at a given font; returns `{ width, height, ascent, descent }` in CSS pixels. */
3851
+ measureText: TextMeasurer['measureText'];
3852
+ /** Active text-scale multiplier; multiply an em size by this to get the pixel size to measure at. */
3853
+ textScale: number;
3854
+ }
3855
+
3856
+ /**
3857
+ * A layout-coupled slot: the region's `render` paired with the `measure` the layout uses to reserve
3858
+ * its space. `measure` mirrors the matching `LayoutMeasurer` method, so paint and reserved space can't
3859
+ * disagree. Give it a stable reference — a `measure` whose identity changes each render takes effect on
3860
+ * the next paint but doesn't retrigger layout.
3861
+ */
3862
+ declare interface SlotOverride<Props, Measure> {
3863
+ /** The component that paints the region. */
3864
+ render: ComponentType<Props>;
3865
+ /**
3866
+ * Returns the region's reserved size. Receives the region's formatted data plus a
3867
+ * {@link SlotMeasureContext} (`measureText`, `textScale`) for sizing from real text metrics.
3868
+ */
3869
+ measure: Measure;
3870
+ }
3871
+
3872
+ /**
3873
+ * Whether the chart shows its source, and the attribution it names.
3874
+ *
3875
+ * The only text slot typed here rather than on the chart: a source is never editable in place, so
3876
+ * the panel is the only way to set one.
3877
+ */
3878
+ export declare const SourceSection: ({ title, layout, preview }: OverridableSectionProps) => JSX.Element | null;
3879
+
3880
+ /**
3881
+ * Whether the chart shows its subtitle, and what it says.
3882
+ *
3883
+ * Hiding it leaves the text intact, so it comes back without being retyped. It is also editable in
3884
+ * place on the chart; the field here is the second way in, not the only one.
3885
+ */
3886
+ export declare const SubtitleSection: ({ title, layout, preview }: OverridableSectionProps) => JSX.Element | null;
3887
+
3888
+ /**
3889
+ * The vocabulary of legend/tooltip/headline marks the {@link Swatch} can paint. A geom picks the one
3890
+ * that best evokes its on-canvas mark via `swatchShape` on its render contract (see
3891
+ * {@link GeomRenderContract}); it is a render concern, so the engine never resolves it.
3892
+ *
3893
+ * - `square` — a filled rect (bars)
3894
+ * - `line` — a horizontal stroke (lines)
3895
+ * - `area` — a filled region with a stroke accent (areas)
3896
+ * - `circle` — a filled dot (points)
3897
+ * - `slice` — a pie / donut wedge (polar bars)
3898
+ */
3899
+ declare type SwatchShape = 'square' | 'line' | 'circle' | 'area' | 'slice';
3900
+
3901
+ /**
3902
+ * Props for the Swatch slot (`slots.Swatch` on `GraphRenderer`). An override must paint inside the
3903
+ * `width` × `height` box it receives.
3904
+ *
3905
+ * Switch on `shape`, `surface` or `label` and delegate the rest to
3906
+ * {@link DefaultSwatch}.
3907
+ */
3908
+ declare interface SwatchSlotProps {
3909
+ shape: SwatchShape;
3910
+ color: string;
3911
+ surface: SwatchSurface;
3912
+ label?: string;
3913
+ lineType?: LineStyleType;
3914
+ width?: number;
3915
+ height?: number;
3916
+ }
3917
+
3918
+ /** The UI surface a swatch is painted on. Lets a Swatch slot restyle one surface and delegate the rest. */
3919
+ declare type SwatchSurface = 'legend' | 'tooltip' | 'headline' | 'callout' | 'rule-label';
3920
+
3921
+ /** An on/off toggle, for a setting whose whole value is whether it is on. */
3922
+ export declare const Switch: ({ isChecked, onChange, isDisabled, ariaLabel, ariaLabelledBy, id }: SwitchControlProps) => JSX.Element;
3923
+
3924
+ /**
3925
+ * An on/off toggle.
3926
+ *
3927
+ * Named `isChecked` rather than `value`: the state is the whole value, and every flip is its own
3928
+ * undo entry, so there is no gesture left to commit.
3929
+ */
3930
+ export declare interface SwitchControlProps extends ControlBaseProps {
3931
+ isChecked: boolean;
3932
+ onChange: (isChecked: boolean) => void;
3933
+ }
3934
+
3935
+ declare type TextDirection = 'ltr' | 'rtl';
3936
+
3937
+ /**
3938
+ * A line of text.
3939
+ *
3940
+ * Typing fires `onChange` per keystroke and blur fires `onCommit`, so a burst of typing dispatches
3941
+ * transiently and seals into one undo entry when the field is left.
3942
+ */
3943
+ export declare const TextField: ({ value, onChange, onCommit, placeholder, isDisabled, hasError, ariaLabel, ariaLabelledBy, id, }: TextFieldControlProps) => JSX.Element;
3944
+
3945
+ export declare interface TextFieldControlProps extends ContinuousControlProps<string> {
3946
+ placeholder?: string;
3947
+ hasError?: boolean;
3948
+ }
3949
+
3950
+ /**
3951
+ * How large every text element in the chart is drawn, as one multiplier over the theme's own sizes.
3952
+ *
3953
+ * It applies to ticks and labels as much as to the title, so it belongs to the chart rather than to
3954
+ * any one piece of its content.
3955
+ */
3956
+ export declare const TextSizeSection: ({ title, layout, preview }: OverridableSectionProps) => JSX.Element | null;
3957
+
3958
+ /**
3959
+ * Whether the chart shows its title, and what it says.
3960
+ *
3961
+ * Hiding it leaves the text intact, so it comes back without being retyped. It is also editable in
3962
+ * place on the chart; the field here is the second way in, not the only one.
3963
+ */
3964
+ export declare const TitleSection: ({ title, layout, preview }: OverridableSectionProps) => JSX.Element | null;
3965
+
3966
+ /**
3967
+ * A section whose feature is switched on and off from its own header. The coupling runs both ways: on
3968
+ * opens it, off closes it, and opening it while off switches it on.
3969
+ */
3970
+ export declare const ToggledSection: ({ title, isChecked, onToggle, isDisabled, preview, children }: ToggledSectionProps) => JSX.Element;
3971
+
3972
+ declare interface ToggledSectionProps extends Omit<SectionProps, 'layout' | 'accessory' | 'onOpenChange'> {
3973
+ isChecked: boolean;
3974
+ onToggle: (isChecked: boolean) => void;
3975
+ isDisabled?: boolean;
3976
+ }
3977
+
3978
+ /**
3979
+ * A segmented single-choice row.
3980
+ *
3981
+ * Built on the radio primitive rather than the toggle one, which it resembles more closely by
3982
+ * name. Picking one of a fixed set is what a radio group is for, and the primitive is what makes
3983
+ * arrow keys move the selection instead of only the focus. Toggle buttons would have given the
3984
+ * behaviour of a radio group while announcing itself as something else.
3985
+ *
3986
+ * That makes this the picture grid in different clothes: same primitive, same contract, same
3987
+ * transient run sealed on key up. Only the layout differs — a row of words here, a grid of pictures
3988
+ * there — which is the whole of why they are two controls.
3989
+ */
3990
+ export declare const ToggleGroup: ({ options, value, onChange, onCommit, itemLayout, isDisabled, ariaLabel, ariaLabelledBy, id, }: ToggleGroupControlProps) => JSX.Element;
3991
+
3992
+ /**
3993
+ * Single-select segmented control.
3994
+ *
3995
+ * Continuous, on the same contract as the picture grid, so a section can swap one for the other
3996
+ * without changing how it dispatches.
3997
+ */
3998
+ export declare interface ToggleGroupControlProps extends ContinuousControlProps<string> {
3999
+ options: readonly ControlOption[];
4000
+ /**
4001
+ * `inline` (default) lays each option on one line — an icon, a label, or an icon standing in for
4002
+ * the label. `stacked` sits the icon above the label in a taller cell, for a row of options read
4003
+ * as pictures with a caption.
4004
+ */
4005
+ itemLayout?: 'inline' | 'stacked';
4006
+ }
4007
+
4008
+ /** Props for the Tooltip slot, overridable via `slots.Tooltip` on `GraphRenderer`. Positioning stays built in. */
4009
+ declare interface TooltipSlotProps {
4010
+ /** Render-ready tooltip body, already formatted by the viz-engine runtime. */
4011
+ content: TooltipContent;
4012
+ }
4013
+
4014
+ declare type TranslationKey = DotNotation<typeof EN_GB>;
4015
+
4016
+ /** The resolved controls for the surrounding panel. */
4017
+ export declare const useControls: () => ResolvedControlRegistry;
4018
+
4019
+ /**
4020
+ * How a section opens or closes itself.
4021
+ *
4022
+ * Write-only: which section is open is the accordion's, and reading it back would tempt a section
4023
+ * into an effect that watches the state it also writes.
4024
+ */
4025
+ export declare const usePanelExpansion: () => PanelExpansion;
4026
+
4027
+ /**
4028
+ * The graph the surrounding panel edits. Throws outside a bound panel: a section has nothing to
4029
+ * read or write without one, so an unbound panel is a composition mistake rather than a state to
4030
+ * render around.
4031
+ */
4032
+ export declare const usePanelGraph: () => GraphHandle;
4033
+
4034
+ export { }