@area8975/ui 0.2.2-dev.49 → 0.2.2-dev.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/README.md +3 -2
  2. package/fesm2022/area8975-ui-alert.mjs +113 -0
  3. package/fesm2022/area8975-ui-alert.mjs.map +1 -0
  4. package/fesm2022/area8975-ui-avatar.mjs +157 -0
  5. package/fesm2022/area8975-ui-avatar.mjs.map +1 -0
  6. package/fesm2022/area8975-ui-badge.mjs +116 -0
  7. package/fesm2022/area8975-ui-badge.mjs.map +1 -0
  8. package/fesm2022/area8975-ui-button.mjs +314 -0
  9. package/fesm2022/area8975-ui-button.mjs.map +1 -0
  10. package/fesm2022/area8975-ui-calendar.mjs +549 -0
  11. package/fesm2022/area8975-ui-calendar.mjs.map +1 -0
  12. package/fesm2022/area8975-ui-card-header.mjs +96 -0
  13. package/fesm2022/area8975-ui-card-header.mjs.map +1 -0
  14. package/fesm2022/area8975-ui-card.mjs +73 -0
  15. package/fesm2022/area8975-ui-card.mjs.map +1 -0
  16. package/fesm2022/area8975-ui-chart-palette.mjs +225 -0
  17. package/fesm2022/area8975-ui-chart-palette.mjs.map +1 -0
  18. package/fesm2022/area8975-ui-charts.mjs +2813 -0
  19. package/fesm2022/area8975-ui-charts.mjs.map +1 -0
  20. package/fesm2022/area8975-ui-checkbox.mjs +202 -0
  21. package/fesm2022/area8975-ui-checkbox.mjs.map +1 -0
  22. package/fesm2022/area8975-ui-colour.mjs +200 -0
  23. package/fesm2022/area8975-ui-colour.mjs.map +1 -0
  24. package/fesm2022/area8975-ui-container.mjs +40 -0
  25. package/fesm2022/area8975-ui-container.mjs.map +1 -0
  26. package/fesm2022/area8975-ui-counter.mjs +246 -0
  27. package/fesm2022/area8975-ui-counter.mjs.map +1 -0
  28. package/fesm2022/area8975-ui-date-range-picker.mjs +554 -0
  29. package/fesm2022/area8975-ui-date-range-picker.mjs.map +1 -0
  30. package/fesm2022/area8975-ui-datepicker.mjs +547 -0
  31. package/fesm2022/area8975-ui-datepicker.mjs.map +1 -0
  32. package/fesm2022/area8975-ui-disclosure.mjs +279 -0
  33. package/fesm2022/area8975-ui-disclosure.mjs.map +1 -0
  34. package/fesm2022/area8975-ui-drawer.mjs +106 -0
  35. package/fesm2022/area8975-ui-drawer.mjs.map +1 -0
  36. package/fesm2022/area8975-ui-dropdown-button.mjs +141 -0
  37. package/fesm2022/area8975-ui-dropdown-button.mjs.map +1 -0
  38. package/fesm2022/area8975-ui-dropdown-menu.mjs +96 -0
  39. package/fesm2022/area8975-ui-dropdown-menu.mjs.map +1 -0
  40. package/fesm2022/area8975-ui-dropdown.mjs +208 -0
  41. package/fesm2022/area8975-ui-dropdown.mjs.map +1 -0
  42. package/fesm2022/area8975-ui-dropzone.mjs +332 -0
  43. package/fesm2022/area8975-ui-dropzone.mjs.map +1 -0
  44. package/fesm2022/area8975-ui-field.mjs +191 -0
  45. package/fesm2022/area8975-ui-field.mjs.map +1 -0
  46. package/fesm2022/area8975-ui-file-input.mjs +340 -0
  47. package/fesm2022/area8975-ui-file-input.mjs.map +1 -0
  48. package/fesm2022/area8975-ui-file.mjs +47 -0
  49. package/fesm2022/area8975-ui-file.mjs.map +1 -0
  50. package/fesm2022/area8975-ui-format.mjs +70 -0
  51. package/fesm2022/area8975-ui-format.mjs.map +1 -0
  52. package/fesm2022/area8975-ui-input-addon.mjs +42 -0
  53. package/fesm2022/area8975-ui-input-addon.mjs.map +1 -0
  54. package/fesm2022/area8975-ui-input-group.mjs +86 -0
  55. package/fesm2022/area8975-ui-input-group.mjs.map +1 -0
  56. package/fesm2022/area8975-ui-input.mjs +682 -0
  57. package/fesm2022/area8975-ui-input.mjs.map +1 -0
  58. package/fesm2022/area8975-ui-kpi.mjs +167 -0
  59. package/fesm2022/area8975-ui-kpi.mjs.map +1 -0
  60. package/fesm2022/area8975-ui-layout.mjs +63 -0
  61. package/fesm2022/area8975-ui-layout.mjs.map +1 -0
  62. package/fesm2022/area8975-ui-loading.mjs +76 -0
  63. package/fesm2022/area8975-ui-loading.mjs.map +1 -0
  64. package/fesm2022/area8975-ui-modal-close-btn.mjs +89 -0
  65. package/fesm2022/area8975-ui-modal-close-btn.mjs.map +1 -0
  66. package/fesm2022/area8975-ui-modal.mjs +235 -0
  67. package/fesm2022/area8975-ui-modal.mjs.map +1 -0
  68. package/fesm2022/area8975-ui-money.mjs +230 -0
  69. package/fesm2022/area8975-ui-money.mjs.map +1 -0
  70. package/fesm2022/area8975-ui-overlay.mjs +317 -0
  71. package/fesm2022/area8975-ui-overlay.mjs.map +1 -0
  72. package/fesm2022/area8975-ui-pagination.mjs +152 -0
  73. package/fesm2022/area8975-ui-pagination.mjs.map +1 -0
  74. package/fesm2022/area8975-ui-private.mjs +63 -0
  75. package/fesm2022/area8975-ui-private.mjs.map +1 -0
  76. package/fesm2022/area8975-ui-progress.mjs +307 -0
  77. package/fesm2022/area8975-ui-progress.mjs.map +1 -0
  78. package/fesm2022/area8975-ui-radio.mjs +199 -0
  79. package/fesm2022/area8975-ui-radio.mjs.map +1 -0
  80. package/fesm2022/area8975-ui-rich-text-editor.mjs +778 -0
  81. package/fesm2022/area8975-ui-rich-text-editor.mjs.map +1 -0
  82. package/fesm2022/area8975-ui-search.mjs +266 -0
  83. package/fesm2022/area8975-ui-search.mjs.map +1 -0
  84. package/fesm2022/area8975-ui-segmented.mjs +118 -0
  85. package/fesm2022/area8975-ui-segmented.mjs.map +1 -0
  86. package/fesm2022/area8975-ui-select.mjs +926 -0
  87. package/fesm2022/area8975-ui-select.mjs.map +1 -0
  88. package/fesm2022/area8975-ui-sidebar-group.mjs +60 -0
  89. package/fesm2022/area8975-ui-sidebar-group.mjs.map +1 -0
  90. package/fesm2022/area8975-ui-sidebar-item.mjs +107 -0
  91. package/fesm2022/area8975-ui-sidebar-item.mjs.map +1 -0
  92. package/fesm2022/area8975-ui-sidebar.mjs +109 -0
  93. package/fesm2022/area8975-ui-sidebar.mjs.map +1 -0
  94. package/fesm2022/area8975-ui-skeleton.mjs +116 -0
  95. package/fesm2022/area8975-ui-skeleton.mjs.map +1 -0
  96. package/fesm2022/area8975-ui-stat.mjs +55 -0
  97. package/fesm2022/area8975-ui-stat.mjs.map +1 -0
  98. package/fesm2022/area8975-ui-switch.mjs +132 -0
  99. package/fesm2022/area8975-ui-switch.mjs.map +1 -0
  100. package/fesm2022/area8975-ui-tab.mjs +217 -0
  101. package/fesm2022/area8975-ui-tab.mjs.map +1 -0
  102. package/fesm2022/area8975-ui-table-filters.mjs +499 -0
  103. package/fesm2022/area8975-ui-table-filters.mjs.map +1 -0
  104. package/fesm2022/area8975-ui-table.mjs +1237 -0
  105. package/fesm2022/area8975-ui-table.mjs.map +1 -0
  106. package/fesm2022/area8975-ui-textarea.mjs +375 -0
  107. package/fesm2022/area8975-ui-textarea.mjs.map +1 -0
  108. package/fesm2022/area8975-ui-theme.mjs +246 -0
  109. package/fesm2022/area8975-ui-theme.mjs.map +1 -0
  110. package/fesm2022/area8975-ui-time-select.mjs +170 -0
  111. package/fesm2022/area8975-ui-time-select.mjs.map +1 -0
  112. package/fesm2022/area8975-ui-toast.mjs +269 -0
  113. package/fesm2022/area8975-ui-toast.mjs.map +1 -0
  114. package/fesm2022/area8975-ui-toaster.mjs +117 -0
  115. package/fesm2022/area8975-ui-toaster.mjs.map +1 -0
  116. package/fesm2022/area8975-ui-tooltip.mjs +196 -0
  117. package/fesm2022/area8975-ui-tooltip.mjs.map +1 -0
  118. package/fesm2022/area8975-ui-user-menu.mjs +186 -0
  119. package/fesm2022/area8975-ui-user-menu.mjs.map +1 -0
  120. package/fesm2022/area8975-ui.mjs +0 -16520
  121. package/package.json +237 -1
  122. package/types/area8975-ui-alert.d.ts +25 -0
  123. package/types/area8975-ui-avatar.d.ts +40 -0
  124. package/types/area8975-ui-badge.d.ts +31 -0
  125. package/types/area8975-ui-button.d.ts +129 -0
  126. package/types/area8975-ui-calendar.d.ts +177 -0
  127. package/types/area8975-ui-card-header.d.ts +28 -0
  128. package/types/area8975-ui-card.d.ts +18 -0
  129. package/types/area8975-ui-chart-palette.d.ts +176 -0
  130. package/types/area8975-ui-charts.d.ts +747 -0
  131. package/types/area8975-ui-checkbox.d.ts +61 -0
  132. package/types/area8975-ui-colour.d.ts +31 -0
  133. package/types/area8975-ui-container.d.ts +5 -0
  134. package/types/area8975-ui-counter.d.ts +43 -0
  135. package/types/area8975-ui-date-range-picker.d.ts +132 -0
  136. package/types/area8975-ui-datepicker.d.ts +124 -0
  137. package/types/area8975-ui-disclosure.d.ts +79 -0
  138. package/types/area8975-ui-drawer.d.ts +25 -0
  139. package/types/area8975-ui-dropdown-button.d.ts +32 -0
  140. package/types/area8975-ui-dropdown-menu.d.ts +25 -0
  141. package/types/area8975-ui-dropdown.d.ts +56 -0
  142. package/types/area8975-ui-dropzone.d.ts +96 -0
  143. package/types/area8975-ui-field.d.ts +72 -0
  144. package/types/area8975-ui-file-input.d.ts +72 -0
  145. package/types/area8975-ui-file.d.ts +21 -0
  146. package/types/area8975-ui-format.d.ts +37 -0
  147. package/types/area8975-ui-input-addon.d.ts +10 -0
  148. package/types/area8975-ui-input-group.d.ts +18 -0
  149. package/types/area8975-ui-input.d.ts +224 -0
  150. package/types/area8975-ui-kpi.d.ts +36 -0
  151. package/types/area8975-ui-layout.d.ts +7 -0
  152. package/types/area8975-ui-loading.d.ts +16 -0
  153. package/types/area8975-ui-modal-close-btn.d.ts +14 -0
  154. package/types/area8975-ui-modal.d.ts +45 -0
  155. package/types/area8975-ui-money.d.ts +77 -0
  156. package/types/area8975-ui-overlay.d.ts +75 -0
  157. package/types/area8975-ui-pagination.d.ts +27 -0
  158. package/types/area8975-ui-private.d.ts +20 -0
  159. package/types/area8975-ui-progress.d.ts +127 -0
  160. package/types/area8975-ui-radio.d.ts +61 -0
  161. package/types/area8975-ui-rich-text-editor.d.ts +165 -0
  162. package/types/area8975-ui-search.d.ts +56 -0
  163. package/types/area8975-ui-segmented.d.ts +41 -0
  164. package/types/area8975-ui-select.d.ts +293 -0
  165. package/types/area8975-ui-sidebar-group.d.ts +15 -0
  166. package/types/area8975-ui-sidebar-item.d.ts +20 -0
  167. package/types/area8975-ui-sidebar.d.ts +16 -0
  168. package/types/area8975-ui-skeleton.d.ts +35 -0
  169. package/types/area8975-ui-stat.d.ts +13 -0
  170. package/types/area8975-ui-switch.d.ts +32 -0
  171. package/types/area8975-ui-tab.d.ts +45 -0
  172. package/types/area8975-ui-table-filters.d.ts +138 -0
  173. package/types/area8975-ui-table.d.ts +371 -0
  174. package/types/area8975-ui-textarea.d.ts +126 -0
  175. package/types/area8975-ui-theme.d.ts +61 -0
  176. package/types/area8975-ui-time-select.d.ts +35 -0
  177. package/types/area8975-ui-toast.d.ts +78 -0
  178. package/types/area8975-ui-toaster.d.ts +23 -0
  179. package/types/area8975-ui-tooltip.d.ts +47 -0
  180. package/types/area8975-ui-user-menu.d.ts +39 -0
  181. package/types/area8975-ui.d.ts +1 -4546
  182. package/fesm2022/area8975-ui.mjs.map +0 -1
@@ -0,0 +1,747 @@
1
+ import { ChartInk, ChartSeriesStyle } from "@area8975/ui/chart-palette";
2
+ import * as i0 from "@angular/core";
3
+ import { Signal, WritableSignal } from "@angular/core";
4
+ import ApexCharts$1 from "apexcharts";
5
+ /** One entry in a legend, the colour ties it to its marks. */
6
+ export interface ChartLegendItem {
7
+ name: string;
8
+ colour: string;
9
+ /** Shows the key as a dashed line, for series told apart by line style. */
10
+ dashed?: boolean;
11
+ /** Text to show instead of `name`. `name` still ties the item to its series. */
12
+ label?: string;
13
+ }
14
+ /** Anything a legend can be linked to with `for`, every chart is one. */
15
+ export interface ChartLegendSource {
16
+ readonly legendItems: Signal<ChartLegendItem[]>;
17
+ readonly legendNote: Signal<string>;
18
+ /** Series switched off from the legend. */
19
+ readonly hiddenSeries: WritableSignal<string[]>;
20
+ /** The series the legend is pointing at, the others fade while it's set. */
21
+ readonly emphasis: WritableSignal<string | null>;
22
+ }
23
+ /** Where a chart draws its own legend, `none` when one is linked elsewhere. */
24
+ export type ChartLegendPosition = 'auto' | 'none';
25
+ export type ChartOptions = ApexCharts$1.ApexOptions;
26
+ /** One named set of values, one per category. */
27
+ export interface ChartSeries {
28
+ name: string;
29
+ data: (number | null)[];
30
+ /** Overrides the palette slot, keep it for when a series must match something else. */
31
+ colour?: string;
32
+ /** Draws the line dashed, e.g. to set projected figures apart from actual ones. Bars ignore it. */
33
+ dashed?: boolean;
34
+ }
35
+ /** `fill` takes the host's height, which has to come from layout. */
36
+ export type ChartHeight = number | 'fill';
37
+ /** Turns a raw value into what the axis, tooltip and table show, e.g. money. */
38
+ export type ChartValueFormatter = (value: number) => string;
39
+ /** Inputs, privacy handling and legend wiring every chart shares, whatever it draws. */
40
+ declare abstract class UiChartBase implements ChartLegendSource {
41
+ protected readonly uiFormat: import("@area8975/ui/format").UiFormat;
42
+ private readonly privacy;
43
+ protected readonly dark: import("@angular/core").WritableSignal<boolean>;
44
+ protected readonly ink: Signal<import("@area8975/ui/chart-palette").ChartInk>;
45
+ /** Says what the chart shows, e.g. "Spending by month". */
46
+ readonly ariaLabel: import("@angular/core").InputSignal<string>;
47
+ readonly height: import("@angular/core").InputSignal<ChartHeight>;
48
+ /** Used on the value axis, the tooltip and the table, e.g. to show money. */
49
+ readonly valueFormatter: import("@angular/core").InputSignal<ChartValueFormatter>;
50
+ /** Masks the values in privacy mode. Defaults to whether `valueFormatter` came from `injectMoneyFormatter`. */
51
+ readonly sensitive: import("@angular/core").InputSignalWithTransform<boolean | undefined, unknown>;
52
+ /** Heading for the category column in the data table. */
53
+ readonly categoryLabel: import("@angular/core").InputSignal<string>;
54
+ readonly loading: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
55
+ readonly emptyText: import("@angular/core").InputSignal<string>;
56
+ /** Shows the data table under the chart instead of only to screen readers. */
57
+ readonly showTable: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
58
+ /** Raw ApexCharts options merged over the defaults, for anything not covered here. */
59
+ readonly options: import("@angular/core").InputSignal<ApexCharts.ApexOptions | null>;
60
+ /** `none` leaves the legend out, for when a `ui-chart-legend` is linked with `for`. */
61
+ readonly legend: import("@angular/core").InputSignal<ChartLegendPosition>;
62
+ /** Series switched off in the legend. */
63
+ readonly hiddenSeries: import("@angular/core").WritableSignal<string[]>;
64
+ /** The series the legend is pointing at, the others fade while it's set. */
65
+ readonly emphasis: import("@angular/core").WritableSignal<string | null>;
66
+ abstract readonly legendItems: Signal<ChartLegendItem[]>;
67
+ abstract readonly legendNote: Signal<string>;
68
+ protected abstract readonly isEmpty: Signal<boolean>;
69
+ private readonly money;
70
+ protected readonly privacyMode: Signal<"visible" | "discreet" | "hidden">;
71
+ protected readonly masked: Signal<boolean>;
72
+ protected readonly concealed: Signal<boolean>;
73
+ protected readonly displayFormatter: Signal<ChartValueFormatter>;
74
+ protected readonly apexHeight: Signal<number | "100%">;
75
+ protected formatValue(value: number | null | undefined): string;
76
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiChartBase, never>;
77
+ static ɵdir: i0.ɵɵDirectiveDeclaration<UiChartBase, never, never, {
78
+ "ariaLabel": {
79
+ "alias": "ariaLabel";
80
+ "required": true;
81
+ "isSignal": true;
82
+ };
83
+ "height": {
84
+ "alias": "height";
85
+ "required": false;
86
+ "isSignal": true;
87
+ };
88
+ "valueFormatter": {
89
+ "alias": "valueFormatter";
90
+ "required": false;
91
+ "isSignal": true;
92
+ };
93
+ "sensitive": {
94
+ "alias": "sensitive";
95
+ "required": false;
96
+ "isSignal": true;
97
+ };
98
+ "categoryLabel": {
99
+ "alias": "categoryLabel";
100
+ "required": false;
101
+ "isSignal": true;
102
+ };
103
+ "loading": {
104
+ "alias": "loading";
105
+ "required": false;
106
+ "isSignal": true;
107
+ };
108
+ "emptyText": {
109
+ "alias": "emptyText";
110
+ "required": false;
111
+ "isSignal": true;
112
+ };
113
+ "showTable": {
114
+ "alias": "showTable";
115
+ "required": false;
116
+ "isSignal": true;
117
+ };
118
+ "options": {
119
+ "alias": "options";
120
+ "required": false;
121
+ "isSignal": true;
122
+ };
123
+ "legend": {
124
+ "alias": "legend";
125
+ "required": false;
126
+ "isSignal": true;
127
+ };
128
+ }, {}, never, never, true, never>;
129
+ }
130
+ /** Inputs every chart with categories along one axis and values up the other shares. */
131
+ declare abstract class UiAxisChartBase extends UiChartBase {
132
+ readonly series: import("@angular/core").InputSignal<ChartSeries[]>;
133
+ readonly categories: import("@angular/core").InputSignal<string[]>;
134
+ /**
135
+ * Only these series get palette colours, the rest go grey so the few that
136
+ * matter stand out. The way to show more series than there are colours.
137
+ */
138
+ readonly highlight: import("@angular/core").InputSignal<string[] | null>;
139
+ readonly highlightKeepsColours: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
140
+ /** Charts that draw lines can tell series apart by dashes too, bars can't. */
141
+ protected readonly supportsDashes: boolean;
142
+ protected readonly isEmpty: import("@angular/core").Signal<boolean>;
143
+ protected readonly isMuted: import("@angular/core").Signal<boolean[]>;
144
+ private readonly colourOrder;
145
+ protected readonly styles: import("@angular/core").Signal<ChartSeriesStyle[]>;
146
+ protected readonly colours: import("@angular/core").Signal<string[]>;
147
+ protected readonly dashed: import("@angular/core").Signal<boolean[]>;
148
+ /** Grey context series stay out of the legend, the note says how many there are. */
149
+ readonly legendItems: import("@angular/core").Signal<ChartLegendItem[]>;
150
+ readonly legendNote: import("@angular/core").Signal<string>;
151
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiAxisChartBase, never>;
152
+ static ɵdir: i0.ɵɵDirectiveDeclaration<UiAxisChartBase, never, never, {
153
+ "series": {
154
+ "alias": "series";
155
+ "required": true;
156
+ "isSignal": true;
157
+ };
158
+ "categories": {
159
+ "alias": "categories";
160
+ "required": true;
161
+ "isSignal": true;
162
+ };
163
+ "highlight": {
164
+ "alias": "highlight";
165
+ "required": false;
166
+ "isSignal": true;
167
+ };
168
+ "highlightKeepsColours": {
169
+ "alias": "highlightKeepsColours";
170
+ "required": false;
171
+ "isSignal": true;
172
+ };
173
+ }, {}, never, never, true, never>;
174
+ }
175
+ /**
176
+ * Bars or columns for comparing amounts across categories. Several series
177
+ * sit side by side, or on top of each other with `stacked`.
178
+ */
179
+ export declare class UiBarChartComponent extends UiAxisChartBase {
180
+ readonly orientation: import("@angular/core").InputSignal<"vertical" | "horizontal">;
181
+ readonly stacked: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
182
+ /** Picks out one category, e.g. the month a page is showing, and fades the rest. */
183
+ readonly highlightCategory: import("@angular/core").InputSignal<string | null>;
184
+ protected readonly chartOptions: import("@angular/core").Signal<ApexCharts.ApexOptions>;
185
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiBarChartComponent, never>;
186
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiBarChartComponent, "ui-bar-chart", never, {
187
+ "orientation": {
188
+ "alias": "orientation";
189
+ "required": false;
190
+ "isSignal": true;
191
+ };
192
+ "stacked": {
193
+ "alias": "stacked";
194
+ "required": false;
195
+ "isSignal": true;
196
+ };
197
+ "highlightCategory": {
198
+ "alias": "highlightCategory";
199
+ "required": false;
200
+ "isSignal": true;
201
+ };
202
+ }, {}, never, never, true, never>;
203
+ }
204
+ /** vertical draws columns rising from the bottom, horizontal draws bars from the left. */
205
+ export declare const BarChartOrientations: readonly ["vertical", "horizontal"];
206
+ /** @see {@link BarChartOrientations} */
207
+ export type BarChartOrientation = typeof BarChartOrientations[number];
208
+ /**
209
+ * Draws raw ApexCharts options. The typed charts (bar, line and so on) are
210
+ * built on this, reach for it directly only when they can't do what you need.
211
+ */
212
+ export declare class UiChartComponent {
213
+ readonly options: import("@angular/core").InputSignal<ApexCharts$1.ApexOptions>;
214
+ /** What the chart shows, e.g. "Spending by month". Screen readers get this instead of the SVG. */
215
+ readonly ariaLabel: import("@angular/core").InputSignal<string>;
216
+ /** Series names to keep off the plot, e.g. switched off in the legend. */
217
+ readonly hiddenSeries: import("@angular/core").InputSignal<string[]>;
218
+ /** Fades every other series so this one stands out, e.g. while its legend item is hovered. */
219
+ readonly emphasis: import("@angular/core").InputSignal<string | null>;
220
+ private readonly canvas;
221
+ private readonly chart;
222
+ private destroyed;
223
+ private drawnNames;
224
+ private readonly host;
225
+ private resizeObserver;
226
+ constructor();
227
+ private withOwnParentResizing;
228
+ private redrawWhenResized;
229
+ private isDrawnAtHostSize;
230
+ private applyHidden;
231
+ private applyEmphasis;
232
+ private seriesNames;
233
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiChartComponent, never>;
234
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiChartComponent, "ui-chart", never, {
235
+ "options": {
236
+ "alias": "options";
237
+ "required": true;
238
+ "isSignal": true;
239
+ };
240
+ "ariaLabel": {
241
+ "alias": "ariaLabel";
242
+ "required": true;
243
+ "isSignal": true;
244
+ };
245
+ "hiddenSeries": {
246
+ "alias": "hiddenSeries";
247
+ "required": false;
248
+ "isSignal": true;
249
+ };
250
+ "emphasis": {
251
+ "alias": "emphasis";
252
+ "required": false;
253
+ "isSignal": true;
254
+ };
255
+ }, {}, never, never, true, never>;
256
+ }
257
+ /** The loading, empty and data table states around a chart, shared by every chart type. */
258
+ export declare class UiChartFrameComponent {
259
+ /** ApexCharts options to draw, or null for a chart that draws itself as projected content. */
260
+ readonly options: import("@angular/core").InputSignal<ApexCharts.ApexOptions | null>;
261
+ readonly ariaLabel: import("@angular/core").InputSignal<string>;
262
+ readonly categories: import("@angular/core").InputSignal<string[]>;
263
+ readonly series: import("@angular/core").InputSignal<ChartSeries[]>;
264
+ readonly legendItems: import("@angular/core").InputSignal<ChartLegendItem[]>;
265
+ readonly legendNote: import("@angular/core").InputSignal<string>;
266
+ readonly hiddenSeries: import("@angular/core").ModelSignal<string[]>;
267
+ readonly valueFormatter: import("@angular/core").InputSignal<ChartValueFormatter>;
268
+ readonly categoryLabel: import("@angular/core").InputSignal<string>;
269
+ readonly height: import("@angular/core").InputSignal<ChartHeight>;
270
+ readonly emptyText: import("@angular/core").InputSignal<string>;
271
+ readonly loading: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
272
+ readonly empty: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
273
+ readonly showTable: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
274
+ readonly masked: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
275
+ readonly showLegend: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
276
+ /** The series the legend is pointing at, the others fade while it's set. */
277
+ readonly emphasis: import("@angular/core").ModelSignal<string | null>;
278
+ protected readonly fill: import("@angular/core").Signal<boolean>;
279
+ protected readonly fixedHeight: import("@angular/core").Signal<number | null>;
280
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiChartFrameComponent, never>;
281
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiChartFrameComponent, "ui-chart-frame", never, {
282
+ "options": {
283
+ "alias": "options";
284
+ "required": true;
285
+ "isSignal": true;
286
+ };
287
+ "ariaLabel": {
288
+ "alias": "ariaLabel";
289
+ "required": true;
290
+ "isSignal": true;
291
+ };
292
+ "categories": {
293
+ "alias": "categories";
294
+ "required": true;
295
+ "isSignal": true;
296
+ };
297
+ "series": {
298
+ "alias": "series";
299
+ "required": true;
300
+ "isSignal": true;
301
+ };
302
+ "legendItems": {
303
+ "alias": "legendItems";
304
+ "required": true;
305
+ "isSignal": true;
306
+ };
307
+ "legendNote": {
308
+ "alias": "legendNote";
309
+ "required": false;
310
+ "isSignal": true;
311
+ };
312
+ "hiddenSeries": {
313
+ "alias": "hiddenSeries";
314
+ "required": false;
315
+ "isSignal": true;
316
+ };
317
+ "valueFormatter": {
318
+ "alias": "valueFormatter";
319
+ "required": true;
320
+ "isSignal": true;
321
+ };
322
+ "categoryLabel": {
323
+ "alias": "categoryLabel";
324
+ "required": true;
325
+ "isSignal": true;
326
+ };
327
+ "height": {
328
+ "alias": "height";
329
+ "required": true;
330
+ "isSignal": true;
331
+ };
332
+ "emptyText": {
333
+ "alias": "emptyText";
334
+ "required": true;
335
+ "isSignal": true;
336
+ };
337
+ "loading": {
338
+ "alias": "loading";
339
+ "required": false;
340
+ "isSignal": true;
341
+ };
342
+ "empty": {
343
+ "alias": "empty";
344
+ "required": false;
345
+ "isSignal": true;
346
+ };
347
+ "showTable": {
348
+ "alias": "showTable";
349
+ "required": false;
350
+ "isSignal": true;
351
+ };
352
+ "masked": {
353
+ "alias": "masked";
354
+ "required": false;
355
+ "isSignal": true;
356
+ };
357
+ "showLegend": {
358
+ "alias": "showLegend";
359
+ "required": false;
360
+ "isSignal": true;
361
+ };
362
+ "emphasis": {
363
+ "alias": "emphasis";
364
+ "required": false;
365
+ "isSignal": true;
366
+ };
367
+ }, {
368
+ "hiddenSeries": "hiddenSeriesChange";
369
+ "emphasis": "emphasisChange";
370
+ }, never, ["*"], true, never>;
371
+ }
372
+ /**
373
+ * The numbers behind a chart as a table. Hidden visually by default so screen
374
+ * readers still get the data, `visible` shows it for everyone.
375
+ */
376
+ export declare class UiChartTableComponent {
377
+ readonly caption: import("@angular/core").InputSignal<string>;
378
+ readonly categories: import("@angular/core").InputSignal<string[]>;
379
+ readonly series: import("@angular/core").InputSignal<ChartSeries[]>;
380
+ readonly valueFormatter: import("@angular/core").InputSignal<ChartValueFormatter>;
381
+ readonly categoryLabel: import("@angular/core").InputSignal<string>;
382
+ readonly visible: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
383
+ /** Values are masks, screen readers hear "amount hidden" instead. */
384
+ readonly masked: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
385
+ protected isValue(value: number | null | undefined): value is number;
386
+ protected format(value: number | null | undefined): string;
387
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiChartTableComponent, never>;
388
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiChartTableComponent, "ui-chart-table", never, {
389
+ "caption": {
390
+ "alias": "caption";
391
+ "required": true;
392
+ "isSignal": true;
393
+ };
394
+ "categories": {
395
+ "alias": "categories";
396
+ "required": true;
397
+ "isSignal": true;
398
+ };
399
+ "series": {
400
+ "alias": "series";
401
+ "required": true;
402
+ "isSignal": true;
403
+ };
404
+ "valueFormatter": {
405
+ "alias": "valueFormatter";
406
+ "required": true;
407
+ "isSignal": true;
408
+ };
409
+ "categoryLabel": {
410
+ "alias": "categoryLabel";
411
+ "required": false;
412
+ "isSignal": true;
413
+ };
414
+ "visible": {
415
+ "alias": "visible";
416
+ "required": false;
417
+ "isSignal": true;
418
+ };
419
+ "masked": {
420
+ "alias": "masked";
421
+ "required": false;
422
+ "isSignal": true;
423
+ };
424
+ }, {}, never, never, true, never>;
425
+ }
426
+ /**
427
+ * A row of colour keys naming what each colour means. Link it to a chart
428
+ * with `for`, or pass `items` to use it next to anything coloured by series.
429
+ */
430
+ export declare class UiChartLegendComponent {
431
+ readonly items: import("@angular/core").InputSignal<ChartLegendItem[]>;
432
+ /** Small text after the items, e.g. how many series aren't listed. */
433
+ readonly note: import("@angular/core").InputSignal<string>;
434
+ /** A chart to take items from and hide or fade series on, set its `legend` to `none`. */
435
+ readonly for: import("@angular/core").InputSignal<ChartLegendSource | null>;
436
+ /** Adjusts the linked chart's items, e.g. to relabel them. Keep each `name`. */
437
+ readonly itemsWith: import("@angular/core").InputSignal<((items: ChartLegendItem[]) => ChartLegendItem[]) | null>;
438
+ /** Names of items switched off, bound two-way when `toggleable`. */
439
+ readonly hidden: import("@angular/core").ModelSignal<string[]>;
440
+ /** Lets each item be clicked to hide or show its series. */
441
+ readonly toggleable: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
442
+ /** The item being hovered or focused, null when it leaves. Charts fade the other series. */
443
+ readonly focusChange: import("@angular/core").OutputEmitterRef<string | null>;
444
+ private readonly hovered;
445
+ private readonly focused;
446
+ private readonly pointedAt;
447
+ protected readonly shownItems: import("@angular/core").Signal<ChartLegendItem[]>;
448
+ protected readonly shownNote: import("@angular/core").Signal<string>;
449
+ private readonly hiddenNames;
450
+ protected readonly visibleCount: import("@angular/core").Signal<number>;
451
+ constructor();
452
+ protected hover(name: string | null): void;
453
+ protected focus(name: string | null, event?: FocusEvent): void;
454
+ protected isHidden(item: ChartLegendItem): boolean;
455
+ protected isLocked(item: ChartLegendItem): boolean;
456
+ protected toggle(item: ChartLegendItem): void;
457
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiChartLegendComponent, never>;
458
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiChartLegendComponent, "ui-chart-legend", never, {
459
+ "items": {
460
+ "alias": "items";
461
+ "required": false;
462
+ "isSignal": true;
463
+ };
464
+ "note": {
465
+ "alias": "note";
466
+ "required": false;
467
+ "isSignal": true;
468
+ };
469
+ "for": {
470
+ "alias": "for";
471
+ "required": false;
472
+ "isSignal": true;
473
+ };
474
+ "itemsWith": {
475
+ "alias": "itemsWith";
476
+ "required": false;
477
+ "isSignal": true;
478
+ };
479
+ "hidden": {
480
+ "alias": "hidden";
481
+ "required": false;
482
+ "isSignal": true;
483
+ };
484
+ "toggleable": {
485
+ "alias": "toggleable";
486
+ "required": false;
487
+ "isSignal": true;
488
+ };
489
+ }, {
490
+ "hidden": "hiddenChange";
491
+ "focusChange": "focusChange";
492
+ }, never, never, true, never>;
493
+ }
494
+ /**
495
+ * Lines for showing how values change over something ordered, usually time.
496
+ * Hovering anywhere shows every series at that point.
497
+ */
498
+ export declare class UiLineChartComponent extends UiAxisChartBase {
499
+ protected readonly supportsDashes = true;
500
+ readonly curve: import("@angular/core").InputSignal<"straight" | "smooth" | "stepline">;
501
+ /** Draws a dot on every point, not just the hovered one. Handy with few points. */
502
+ readonly showPoints: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
503
+ /** Shades this category and everything after it as a forecast. */
504
+ readonly projectedFrom: import("@angular/core").InputSignal<string | null>;
505
+ readonly projectedLabel: import("@angular/core").InputSignal<string>;
506
+ private readonly projectedAnnotations;
507
+ protected readonly chartOptions: import("@angular/core").Signal<ApexCharts.ApexOptions>;
508
+ private tooltipOrder;
509
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiLineChartComponent, never>;
510
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiLineChartComponent, "ui-line-chart", never, {
511
+ "curve": {
512
+ "alias": "curve";
513
+ "required": false;
514
+ "isSignal": true;
515
+ };
516
+ "showPoints": {
517
+ "alias": "showPoints";
518
+ "required": false;
519
+ "isSignal": true;
520
+ };
521
+ "projectedFrom": {
522
+ "alias": "projectedFrom";
523
+ "required": false;
524
+ "isSignal": true;
525
+ };
526
+ "projectedLabel": {
527
+ "alias": "projectedLabel";
528
+ "required": false;
529
+ "isSignal": true;
530
+ };
531
+ }, {}, never, never, true, never>;
532
+ }
533
+ /** How points are joined, straight segments, a smooth curve, or steps. */
534
+ export declare const LineChartCurves: readonly ["straight", "smooth", "stepline"];
535
+ /** @see {@link LineChartCurves} */
536
+ export type LineChartCurve = typeof LineChartCurves[number];
537
+ /**
538
+ * Slices for showing how a whole splits into parts. Each category is a
539
+ * slice, only the first series is drawn. Best kept to a handful of slices,
540
+ * fold the small ones into "Other".
541
+ */
542
+ export declare class UiPieChartComponent extends UiAxisChartBase {
543
+ readonly variant: import("@angular/core").InputSignal<"pie" | "donut">;
544
+ private readonly percentFormatter;
545
+ /** Shown above the total in the middle of a donut. */
546
+ readonly totalLabel: import("@angular/core").InputSignal<string>;
547
+ /**
548
+ * A colour per slice, lined up with `categories`, e.g. each category's own
549
+ * colour. A slice without one takes its palette slot. Muted slices stay grey.
550
+ */
551
+ readonly sliceColours: import("@angular/core").InputSignal<(string | null | undefined)[]>;
552
+ protected readonly values: import("@angular/core").Signal<(number | null)[]>;
553
+ protected readonly isEmpty: import("@angular/core").Signal<boolean>;
554
+ protected readonly isMuted: import("@angular/core").Signal<boolean[]>;
555
+ protected readonly styles: import("@angular/core").Signal<ChartSeriesStyle[]>;
556
+ readonly legendItems: import("@angular/core").Signal<{
557
+ colour: string;
558
+ dashed: boolean;
559
+ name: string;
560
+ }[]>;
561
+ private readonly slices;
562
+ protected readonly chartOptions: import("@angular/core").Signal<ApexCharts.ApexOptions>;
563
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiPieChartComponent, never>;
564
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiPieChartComponent, "ui-pie-chart", never, {
565
+ "variant": {
566
+ "alias": "variant";
567
+ "required": false;
568
+ "isSignal": true;
569
+ };
570
+ "totalLabel": {
571
+ "alias": "totalLabel";
572
+ "required": false;
573
+ "isSignal": true;
574
+ };
575
+ "sliceColours": {
576
+ "alias": "sliceColours";
577
+ "required": false;
578
+ "isSignal": true;
579
+ };
580
+ }, {}, never, never, true, never>;
581
+ }
582
+ /** pie fills the whole circle, donut leaves a hole with the total in it. */
583
+ export declare const PieChartVariants: readonly ["pie", "donut"];
584
+ /** @see {@link PieChartVariants} */
585
+ export type PieChartVariant = typeof PieChartVariants[number];
586
+ /** One block inside a group, sized by its value. */
587
+ export interface TreemapItem {
588
+ name: string;
589
+ value: number;
590
+ }
591
+ /** A set of items drawn together in one colour, e.g. a category and who it went to. */
592
+ export interface TreemapGroup {
593
+ name: string;
594
+ items: TreemapItem[];
595
+ /** Overrides the palette slot, keep it for when a group must match something else. */
596
+ colour?: string;
597
+ }
598
+ /** What `itemSelect` emits when a block is clicked. */
599
+ export interface TreemapSelection {
600
+ group: string;
601
+ item: string;
602
+ }
603
+ declare const TREEMAP_GROUP_GAP = 8;
604
+ declare const TREEMAP_BLOCK_GAP = 3;
605
+ declare const TREEMAP_HEADER_HEIGHT = 24;
606
+ interface TreemapRect {
607
+ x: number;
608
+ y: number;
609
+ width: number;
610
+ height: number;
611
+ }
612
+ /** One block as it's drawn, with the colours worked out. */
613
+ interface TreemapBlock {
614
+ group: string;
615
+ item: string;
616
+ value: number;
617
+ fill: string;
618
+ labelInk: string;
619
+ }
620
+ /** A group as it's drawn: only its items with something to show. */
621
+ interface DrawnTreemapGroup {
622
+ name: string;
623
+ colour: string;
624
+ total: number;
625
+ blocks: TreemapBlock[];
626
+ }
627
+ /** How much of its label a block has room for. */
628
+ type TreemapLabel = 'none' | 'name' | 'full';
629
+ interface PlacedTreemapBlock extends TreemapBlock {
630
+ rect: TreemapRect;
631
+ label: TreemapLabel;
632
+ }
633
+ interface PlacedTreemapGroup extends DrawnTreemapGroup {
634
+ rect: TreemapRect;
635
+ hasHeader: boolean;
636
+ placedBlocks: PlacedTreemapBlock[];
637
+ }
638
+ /** A group's own colour, or its palette slot, then grey once the palette runs out. */
639
+ declare function treemapGroupColours(groups: TreemapGroup[], dark: boolean): string[];
640
+ /**
641
+ * The groups worth drawing: hidden ones and items of zero or less are left out,
642
+ * then any group left with nothing.
643
+ */
644
+ declare function drawnTreemapGroups(groups: TreemapGroup[], colours: string[], hidden: string[], shades: boolean, ink: ChartInk): DrawnTreemapGroup[];
645
+ /** Every block as one row of the data table, named "<group> – <item>". */
646
+ declare function treemapTableRows(groups: TreemapGroup[]): {
647
+ categories: string[];
648
+ values: number[];
649
+ };
650
+ /**
651
+ * Places each group in `bounds`, a header strip along its top when there's
652
+ * room, and its blocks under that. Positions are relative to `bounds`, and
653
+ * each block's are relative to its group.
654
+ */
655
+ declare function placeTreemapGroups(groups: DrawnTreemapGroup[], bounds: TreemapRect): PlacedTreemapGroup[];
656
+ /**
657
+ * Splits `bounds` into one rectangle per value, each sized by its share and
658
+ * kept as close to square as the others allow (the squarified treemap of
659
+ * Bruls, Huizing and van Wijk). Rectangles come back in the order of
660
+ * `values`, with `gap` between neighbours but none at the edges.
661
+ */
662
+ declare function squarify(values: number[], bounds: TreemapRect, gap?: number): TreemapRect[];
663
+ interface PointedBlock {
664
+ group: PlacedTreemapGroup;
665
+ block: PlacedTreemapBlock;
666
+ x: number;
667
+ y: number;
668
+ }
669
+ /**
670
+ * Nested blocks sized by value, for showing how a whole splits into groups
671
+ * and each group into items, e.g. spending by category and who it went to.
672
+ * Past eight groups the palette runs out and the rest go grey, so give each
673
+ * group a `colour` when there can be more.
674
+ */
675
+ export declare class UiTreemapChartComponent extends UiChartBase {
676
+ readonly groups: import("@angular/core").InputSignal<TreemapGroup[]>;
677
+ readonly height: import("@angular/core").InputSignal<ChartHeight>;
678
+ /** Shades each group's items from its colour, biggest strongest, so they stay told apart. */
679
+ readonly shades: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
680
+ /** Makes each block a button that emits `itemSelect`. */
681
+ readonly selectable: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
682
+ /** Heading for the value column in the data table. */
683
+ readonly valueLabel: import("@angular/core").InputSignal<string>;
684
+ readonly itemSelect: import("@angular/core").OutputEmitterRef<TreemapSelection>;
685
+ private readonly canvas;
686
+ private readonly size;
687
+ protected readonly pointed: import("@angular/core").WritableSignal<PointedBlock | null>;
688
+ /** Set once the first layout is drawn, so blocks glide to new places after that but don't grow in from nothing. */
689
+ protected readonly settled: import("@angular/core").WritableSignal<boolean>;
690
+ private readonly percentFormatter;
691
+ protected readonly fill: import("@angular/core").Signal<boolean>;
692
+ protected readonly fixedHeight: import("@angular/core").Signal<number | null>;
693
+ private readonly colours;
694
+ private readonly drawnGroups;
695
+ protected readonly placedGroups: import("@angular/core").Signal<PlacedTreemapGroup[]>;
696
+ private readonly total;
697
+ private readonly tableRows;
698
+ protected readonly categories: import("@angular/core").Signal<string[]>;
699
+ protected readonly series: import("@angular/core").Signal<ChartSeries[]>;
700
+ protected readonly isEmpty: import("@angular/core").Signal<boolean>;
701
+ readonly legendItems: import("@angular/core").Signal<ChartLegendItem[]>;
702
+ readonly legendNote: import("@angular/core").Signal<string>;
703
+ private readonly emphasised;
704
+ protected readonly tooltipFooter: import("@angular/core").Signal<string>;
705
+ protected readonly tooltipPosition: import("@angular/core").Signal<{
706
+ left: number | null;
707
+ right: number | null;
708
+ top: number;
709
+ } | null>;
710
+ constructor();
711
+ protected isFaded(group: PlacedTreemapGroup): boolean;
712
+ protected point(event: PointerEvent, group: PlacedTreemapGroup, block: PlacedTreemapBlock): void;
713
+ protected focus(group: PlacedTreemapGroup, block: PlacedTreemapBlock): void;
714
+ protected select(block: PlacedTreemapBlock): void;
715
+ protected accessibleName(block: PlacedTreemapBlock): string;
716
+ private percent;
717
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiTreemapChartComponent, never>;
718
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiTreemapChartComponent, "ui-treemap-chart", never, {
719
+ "groups": {
720
+ "alias": "groups";
721
+ "required": true;
722
+ "isSignal": true;
723
+ };
724
+ "height": {
725
+ "alias": "height";
726
+ "required": false;
727
+ "isSignal": true;
728
+ };
729
+ "shades": {
730
+ "alias": "shades";
731
+ "required": false;
732
+ "isSignal": true;
733
+ };
734
+ "selectable": {
735
+ "alias": "selectable";
736
+ "required": false;
737
+ "isSignal": true;
738
+ };
739
+ "valueLabel": {
740
+ "alias": "valueLabel";
741
+ "required": false;
742
+ "isSignal": true;
743
+ };
744
+ }, {
745
+ "itemSelect": "itemSelect";
746
+ }, never, never, true, never>;
747
+ }