@area8975/ui 0.2.2-dev.48 → 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 -16269
  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 -4464
  182. package/fesm2022/area8975-ui.mjs.map +0 -1
@@ -0,0 +1,45 @@
1
+ import * as i0 from "@angular/core";
2
+ import { ElementRef, TemplateRef } from "@angular/core";
3
+ import { UiOverlayCloseBehaviour } from "@area8975/ui/overlay";
4
+ type ModalSize = 'sm' | 'md' | 'lg';
5
+ export declare class UiModalComponent {
6
+ readonly isOpen: import("@angular/core").ModelSignal<boolean>;
7
+ readonly closeBehaviour: import("@angular/core").InputSignal<UiOverlayCloseBehaviour>;
8
+ readonly title: import("@angular/core").InputSignal<string>;
9
+ readonly size: import("@angular/core").InputSignal<ModalSize>;
10
+ readonly classes: import("@angular/core").InputSignal<string>;
11
+ readonly headerElement: import("@angular/core").Signal<TemplateRef<unknown> | undefined>;
12
+ readonly footerElement: import("@angular/core").Signal<TemplateRef<unknown> | undefined>;
13
+ readonly panelElement: import("@angular/core").Signal<ElementRef<any> | undefined>;
14
+ readonly generatedClasses: import("@angular/core").Signal<string>;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiModalComponent, never>;
16
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiModalComponent, "ui-modal", never, {
17
+ "isOpen": {
18
+ "alias": "isOpen";
19
+ "required": true;
20
+ "isSignal": true;
21
+ };
22
+ "closeBehaviour": {
23
+ "alias": "closeBehaviour";
24
+ "required": false;
25
+ "isSignal": true;
26
+ };
27
+ "title": {
28
+ "alias": "title";
29
+ "required": false;
30
+ "isSignal": true;
31
+ };
32
+ "size": {
33
+ "alias": "size";
34
+ "required": false;
35
+ "isSignal": true;
36
+ };
37
+ "classes": {
38
+ "alias": "classes";
39
+ "required": false;
40
+ "isSignal": true;
41
+ };
42
+ }, {
43
+ "isOpen": "isOpenChange";
44
+ }, ["headerElement", "footerElement"], ["*"], true, never>;
45
+ }
@@ -0,0 +1,77 @@
1
+ import * as i0 from "@angular/core";
2
+ /**
3
+ * Formats a money value, e.g. -42.1 as "-£42.10".
4
+ */
5
+ export declare class UiMoneyComponent {
6
+ private readonly defaults;
7
+ private readonly privacy;
8
+ readonly value: import("@angular/core").InputSignal<number | null>;
9
+ /** Defaults to the currency from `provideUiFormat`. */
10
+ readonly currency: import("@angular/core").InputSignal<string>;
11
+ /** Defaults to the locale from `provideUiFormat`. */
12
+ readonly locale: import("@angular/core").InputSignal<string>;
13
+ readonly signDisplay: import("@angular/core").InputSignal<"auto" | "always" | "exceptZero" | "never">;
14
+ /** Green for money in, red for money out. */
15
+ readonly colourBySign: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
16
+ /** Rounds to whole units, e.g. "£2,235" for headline figures where pence are noise. */
17
+ readonly wholeUnits: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
18
+ /** Short form like "£12K", the full amount goes in the title. */
19
+ readonly compact: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
20
+ /** Shown when there's no value. */
21
+ readonly placeholder: import("@angular/core").InputSignal<string>;
22
+ private readonly amount;
23
+ protected readonly masked: import("@angular/core").Signal<boolean>;
24
+ protected readonly mask: import("@angular/core").Signal<string>;
25
+ protected readonly formatted: import("@angular/core").Signal<string>;
26
+ protected readonly title: import("@angular/core").Signal<string | null>;
27
+ readonly generatedClasses: import("@angular/core").Signal<string>;
28
+ private readonly signClass;
29
+ private format;
30
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiMoneyComponent, never>;
31
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiMoneyComponent, "ui-money", never, {
32
+ "value": {
33
+ "alias": "value";
34
+ "required": true;
35
+ "isSignal": true;
36
+ };
37
+ "currency": {
38
+ "alias": "currency";
39
+ "required": false;
40
+ "isSignal": true;
41
+ };
42
+ "locale": {
43
+ "alias": "locale";
44
+ "required": false;
45
+ "isSignal": true;
46
+ };
47
+ "signDisplay": {
48
+ "alias": "signDisplay";
49
+ "required": false;
50
+ "isSignal": true;
51
+ };
52
+ "colourBySign": {
53
+ "alias": "colourBySign";
54
+ "required": false;
55
+ "isSignal": true;
56
+ };
57
+ "wholeUnits": {
58
+ "alias": "wholeUnits";
59
+ "required": false;
60
+ "isSignal": true;
61
+ };
62
+ "compact": {
63
+ "alias": "compact";
64
+ "required": false;
65
+ "isSignal": true;
66
+ };
67
+ "placeholder": {
68
+ "alias": "placeholder";
69
+ "required": false;
70
+ "isSignal": true;
71
+ };
72
+ }, {}, never, never, true, never>;
73
+ }
74
+ /** Intl signDisplay values, controls when a + or - is shown. */
75
+ export declare const MoneySignDisplays: readonly ["auto", "always", "exceptZero", "never"];
76
+ /** @see {@link MoneySignDisplays} */
77
+ export type MoneySignDisplay = typeof MoneySignDisplays[number];
@@ -0,0 +1,75 @@
1
+ import * as i0 from "@angular/core";
2
+ import { ElementRef, WritableSignal } from "@angular/core";
3
+ import { Placement } from "@floating-ui/dom";
4
+ /** Defines if and when a `ui-overlay` should close when the user clicks. */
5
+ export type UiOverlayCloseBehaviour = 'none' | 'whenClickOutside' | 'whenClickAnywhere';
6
+ export type UiOverlayMatchWidth = 'minWidth' | 'maxWidth' | 'both';
7
+ export interface UiOverlayOptions {
8
+ placement: Placement;
9
+ offset: number;
10
+ viewportPadding: number;
11
+ }
12
+ export interface UiOverlayStackEntry {
13
+ onDocumentClick: (event: MouseEvent) => void;
14
+ onKeyDown: (event: KeyboardEvent) => void;
15
+ }
16
+ export declare class UiOverlayComponent implements UiOverlayStackEntry {
17
+ private readonly positioner;
18
+ private readonly stack;
19
+ readonly content: import("@angular/core").InputSignal<ElementRef<HTMLInputElement> | undefined>;
20
+ readonly anchor: import("@angular/core").InputSignal<ElementRef<HTMLElement> | undefined>;
21
+ readonly closeBehaviour: import("@angular/core").InputSignal<UiOverlayCloseBehaviour>;
22
+ readonly isOpen: import("@angular/core").InputSignal<WritableSignal<boolean>>;
23
+ readonly placement: import("@angular/core").InputSignal<Placement>;
24
+ readonly offset: import("@angular/core").InputSignal<number>;
25
+ readonly viewportPadding: import("@angular/core").InputSignal<number>;
26
+ /** Forces this element to match the width of its anchor element. */
27
+ readonly matchWidth: import("@angular/core").InputSignal<UiOverlayMatchWidth | null>;
28
+ constructor();
29
+ private readonly close;
30
+ readonly onDocumentClick: (event: MouseEvent) => void;
31
+ readonly onKeyDown: (event: KeyboardEvent) => void;
32
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiOverlayComponent, never>;
33
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiOverlayComponent, "ui-overlay", ["uiOverlay"], {
34
+ "content": {
35
+ "alias": "content";
36
+ "required": false;
37
+ "isSignal": true;
38
+ };
39
+ "anchor": {
40
+ "alias": "anchor";
41
+ "required": false;
42
+ "isSignal": true;
43
+ };
44
+ "closeBehaviour": {
45
+ "alias": "closeBehaviour";
46
+ "required": false;
47
+ "isSignal": true;
48
+ };
49
+ "isOpen": {
50
+ "alias": "isOpen";
51
+ "required": true;
52
+ "isSignal": true;
53
+ };
54
+ "placement": {
55
+ "alias": "placement";
56
+ "required": false;
57
+ "isSignal": true;
58
+ };
59
+ "offset": {
60
+ "alias": "offset";
61
+ "required": false;
62
+ "isSignal": true;
63
+ };
64
+ "viewportPadding": {
65
+ "alias": "viewportPadding";
66
+ "required": false;
67
+ "isSignal": true;
68
+ };
69
+ "matchWidth": {
70
+ "alias": "matchWidth";
71
+ "required": false;
72
+ "isSignal": true;
73
+ };
74
+ }, {}, never, ["*"], true, never>;
75
+ }
@@ -0,0 +1,27 @@
1
+ import * as i0 from "@angular/core";
2
+ /** A page index, or a gap between page numbers. */
3
+ export type PaginationItem = number | 'ellipsis';
4
+ export declare class UiPaginationComponent {
5
+ readonly page: import("@angular/core").ModelSignal<number>;
6
+ readonly totalPages: import("@angular/core").InputSignal<number>;
7
+ readonly isFirstPage: import("@angular/core").Signal<boolean>;
8
+ readonly isLastPage: import("@angular/core").Signal<boolean>;
9
+ readonly items: import("@angular/core").Signal<PaginationItem[]>;
10
+ pageLabel(page: number): string;
11
+ goToPage(page: number): void;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiPaginationComponent, never>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiPaginationComponent, "ui-pagination", never, {
14
+ "page": {
15
+ "alias": "page";
16
+ "required": false;
17
+ "isSignal": true;
18
+ };
19
+ "totalPages": {
20
+ "alias": "totalPages";
21
+ "required": true;
22
+ "isSignal": true;
23
+ };
24
+ }, {
25
+ "page": "pageChange";
26
+ }, never, never, true, never>;
27
+ }
@@ -0,0 +1,20 @@
1
+ import * as i0 from "@angular/core";
2
+ /**
3
+ * Text that privacy mode masks, e.g. a transaction's description.
4
+ */
5
+ export declare class UiPrivateComponent {
6
+ private readonly privacy;
7
+ readonly text: import("@angular/core").InputSignal<string | null | undefined>;
8
+ protected readonly mask = "- - -";
9
+ protected readonly label = "text hidden";
10
+ protected readonly masked: import("@angular/core").Signal<boolean>;
11
+ readonly generatedClasses: import("@angular/core").Signal<string>;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiPrivateComponent, never>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiPrivateComponent, "ui-private", never, {
14
+ "text": {
15
+ "alias": "text";
16
+ "required": true;
17
+ "isSignal": true;
18
+ };
19
+ }, {}, never, never, true, never>;
20
+ }
@@ -0,0 +1,127 @@
1
+ import * as i0 from "@angular/core";
2
+ /** Same names as badges, so a status reads the same wherever it shows. */
3
+ export declare const ProgressIntents: readonly ["primary", "secondary", "success", "warning", "danger"];
4
+ /** @see {@link ProgressIntents} */
5
+ export type ProgressIntent = typeof ProgressIntents[number];
6
+ /** Track thickness, md matches Preline's default and xl fits a label inside. */
7
+ export declare const ProgressSizes: readonly ["sm", "md", "lg", "xl"];
8
+ /** @see {@link ProgressSizes} */
9
+ export type ProgressSize = typeof ProgressSizes[number];
10
+ /** Where the value label goes, if anywhere. */
11
+ export declare const ProgressLabelPositions: readonly ["none", "inside", "end", "top", "floating"];
12
+ /** @see {@link ProgressLabelPositions} */
13
+ export type ProgressLabelPosition = typeof ProgressLabelPositions[number];
14
+ /** rounded: both ends round, square: no rounding, straight: square track with a round fill. */
15
+ export declare const ProgressShapes: readonly ["rounded", "square", "straight"];
16
+ /** @see {@link ProgressShapes} */
17
+ export type ProgressShape = typeof ProgressShapes[number];
18
+ export declare const ProgressOrientations: readonly ["horizontal", "vertical"];
19
+ /** @see {@link ProgressOrientations} */
20
+ export type ProgressOrientation = typeof ProgressOrientations[number];
21
+ /** One part of a stacked bar, e.g. spending in one category. */
22
+ export interface ProgressSegment {
23
+ value: number;
24
+ intent?: ProgressIntent;
25
+ label?: string;
26
+ }
27
+ interface SegmentView {
28
+ percent: number;
29
+ intent: ProgressIntent;
30
+ label: string;
31
+ }
32
+ /**
33
+ * A progress bar. Leave `value` null for work of unknown length, a value over
34
+ * `max` fills the bar but the label still shows the real amount.
35
+ */
36
+ export declare class UiProgressComponent {
37
+ readonly value: import("@angular/core").InputSignal<number | null>;
38
+ readonly max: import("@angular/core").InputSignal<number>;
39
+ readonly intent: import("@angular/core").InputSignal<"primary" | "secondary" | "success" | "warning" | "danger">;
40
+ readonly size: import("@angular/core").InputSignal<"sm" | "md" | "lg" | "xl">;
41
+ readonly shape: import("@angular/core").InputSignal<"rounded" | "square" | "straight">;
42
+ readonly orientation: import("@angular/core").InputSignal<"horizontal" | "vertical">;
43
+ readonly title: import("@angular/core").InputSignal<string>;
44
+ readonly labelPosition: import("@angular/core").InputSignal<"none" | "inside" | "end" | "top" | "floating">;
45
+ readonly labelWith: import("@angular/core").InputSignal<(value: number, max: number) => string>;
46
+ /** Splits the bar into this many blocks. */
47
+ readonly steps: import("@angular/core").InputSignal<number | null>;
48
+ /** Several fills stacked in one track, each with its own colour. */
49
+ readonly segments: import("@angular/core").InputSignal<ProgressSegment[] | null>;
50
+ /** Needed when there's no visible title. */
51
+ readonly ariaLabel: import("@angular/core").InputSignal<string>;
52
+ protected readonly isIndeterminate: import("@angular/core").Signal<boolean>;
53
+ protected readonly total: import("@angular/core").Signal<number>;
54
+ /** 0 to 100, what the bar actually draws. */
55
+ protected readonly fillPercent: import("@angular/core").Signal<number>;
56
+ protected readonly label: import("@angular/core").Signal<string>;
57
+ protected readonly segmentViews: import("@angular/core").Signal<SegmentView[]>;
58
+ protected readonly stepStates: import("@angular/core").Signal<boolean[]>;
59
+ protected readonly floatingOffset: import("@angular/core").Signal<string>;
60
+ protected readonly isVertical: import("@angular/core").Signal<boolean>;
61
+ protected readonly rootClasses: import("@angular/core").Signal<string>;
62
+ protected fillClasses(intent: ProgressIntent): string;
63
+ private clampPercent;
64
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiProgressComponent, never>;
65
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiProgressComponent, "ui-progress", never, {
66
+ "value": {
67
+ "alias": "value";
68
+ "required": false;
69
+ "isSignal": true;
70
+ };
71
+ "max": {
72
+ "alias": "max";
73
+ "required": false;
74
+ "isSignal": true;
75
+ };
76
+ "intent": {
77
+ "alias": "intent";
78
+ "required": false;
79
+ "isSignal": true;
80
+ };
81
+ "size": {
82
+ "alias": "size";
83
+ "required": false;
84
+ "isSignal": true;
85
+ };
86
+ "shape": {
87
+ "alias": "shape";
88
+ "required": false;
89
+ "isSignal": true;
90
+ };
91
+ "orientation": {
92
+ "alias": "orientation";
93
+ "required": false;
94
+ "isSignal": true;
95
+ };
96
+ "title": {
97
+ "alias": "title";
98
+ "required": false;
99
+ "isSignal": true;
100
+ };
101
+ "labelPosition": {
102
+ "alias": "labelPosition";
103
+ "required": false;
104
+ "isSignal": true;
105
+ };
106
+ "labelWith": {
107
+ "alias": "labelWith";
108
+ "required": false;
109
+ "isSignal": true;
110
+ };
111
+ "steps": {
112
+ "alias": "steps";
113
+ "required": false;
114
+ "isSignal": true;
115
+ };
116
+ "segments": {
117
+ "alias": "segments";
118
+ "required": false;
119
+ "isSignal": true;
120
+ };
121
+ "ariaLabel": {
122
+ "alias": "ariaLabel";
123
+ "required": false;
124
+ "isSignal": true;
125
+ };
126
+ }, {}, never, never, true, never>;
127
+ }
@@ -0,0 +1,61 @@
1
+ import { InputValidation } from "@area8975/ui/input";
2
+ import * as i0 from "@angular/core";
3
+ export declare class UiRadioComponent<ValueType = unknown> {
4
+ readonly value: import("@angular/core").ModelSignal<ValueType>;
5
+ readonly option: import("@angular/core").InputSignal<ValueType>;
6
+ readonly id: import("@angular/core").InputSignal<string>;
7
+ readonly name: import("@angular/core").InputSignal<string>;
8
+ readonly required: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
9
+ readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
10
+ /** true/false shows valid/invalid styling. null means not validated yet. */
11
+ readonly validationState: import("@angular/core").ModelSignal<InputValidation>;
12
+ readonly compareWith: import("@angular/core").InputSignal<(a: ValueType, b: ValueType) => boolean>;
13
+ readonly checked: import("@angular/core").Signal<boolean>;
14
+ select(): void;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiRadioComponent<any>, never>;
16
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiRadioComponent<any>, "ui-radio", never, {
17
+ "value": {
18
+ "alias": "value";
19
+ "required": true;
20
+ "isSignal": true;
21
+ };
22
+ "option": {
23
+ "alias": "option";
24
+ "required": true;
25
+ "isSignal": true;
26
+ };
27
+ "id": {
28
+ "alias": "id";
29
+ "required": false;
30
+ "isSignal": true;
31
+ };
32
+ "name": {
33
+ "alias": "name";
34
+ "required": false;
35
+ "isSignal": true;
36
+ };
37
+ "required": {
38
+ "alias": "required";
39
+ "required": false;
40
+ "isSignal": true;
41
+ };
42
+ "disabled": {
43
+ "alias": "disabled";
44
+ "required": false;
45
+ "isSignal": true;
46
+ };
47
+ "validationState": {
48
+ "alias": "validationState";
49
+ "required": false;
50
+ "isSignal": true;
51
+ };
52
+ "compareWith": {
53
+ "alias": "compareWith";
54
+ "required": false;
55
+ "isSignal": true;
56
+ };
57
+ }, {
58
+ "value": "valueChange";
59
+ "validationState": "validationStateChange";
60
+ }, never, never, true, never>;
61
+ }
@@ -0,0 +1,165 @@
1
+ import { ChainedCommands, Editor } from "@tiptap/core";
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Every tool the editor's toolbar can show. Leaving a formatting tool out of
5
+ * `tools` also turns that formatting off - its shortcut stops working and
6
+ * pasted content loses it - so the value only ever holds what the toolbar offers.
7
+ * `undo` and `redo` only control the buttons; history and its shortcuts are always on.
8
+ */
9
+ export declare const RichTextTools: readonly ["bold", "italic", "underline", "strike", "code", "heading1", "heading2", "heading3", "bulletList", "orderedList", "blockquote", "codeBlock", "horizontalRule", "link", "undo", "redo"];
10
+ /** @see {@link RichTextTools} */
11
+ export type RichTextTool = typeof RichTextTools[number];
12
+ /** The toolbar's groups, in order, with a divider drawn between each. */
13
+ export declare const RichTextToolGroups: readonly (readonly RichTextTool[])[];
14
+ /** true is valid, false is invalid, null is not yet validated. */
15
+ export type RichTextEditorValidation = boolean | null;
16
+ interface ToolDefinition {
17
+ label: string;
18
+ icon: string;
19
+ /** Whether the tool is "on" at the cursor. Tools without it aren't toggles. */
20
+ active?: (editor: Editor) => boolean;
21
+ run: (chain: ChainedCommands) => ChainedCommands;
22
+ }
23
+ /**
24
+ * A WYSIWYG editor whose value is an HTML string, with a toolbar of formatting tools.
25
+ */
26
+ export declare class UiRichTextEditorComponent {
27
+ /** The content as HTML. An empty editor is `''`. */
28
+ readonly value: import("@angular/core").ModelSignal<string>;
29
+ readonly classes: import("@angular/core").InputSignal<string>;
30
+ /** Which toolbar tools to show, and so which formatting is allowed. @see {@link RichTextTools} */
31
+ readonly tools: import("@angular/core").InputSignal<readonly ("bold" | "italic" | "underline" | "strike" | "code" | "heading1" | "heading2" | "heading3" | "bulletList" | "orderedList" | "blockquote" | "codeBlock" | "horizontalRule" | "link" | "undo" | "redo")[]>;
32
+ readonly id: import("@angular/core").InputSignal<string>;
33
+ readonly placeholder: import("@angular/core").InputSignal<string>;
34
+ readonly required: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
35
+ readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
36
+ readonly readonly: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
37
+ /** true/false shows valid/invalid styling. null means not validated yet. */
38
+ readonly validationState: import("@angular/core").ModelSignal<RichTextEditorValidation>;
39
+ readonly spellcheck: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
40
+ readonly ariaLabel: import("@angular/core").InputSignal<string>;
41
+ readonly describedBy: import("@angular/core").InputSignal<string>;
42
+ /**
43
+ * Ids of the elements that name the editor. Defaults to the label of the
44
+ * `ui-field` it sits in, when that field's `for` is this editor's `id` -
45
+ * a `<label for>` can't name a contenteditable on its own.
46
+ */
47
+ readonly labelledBy: import("@angular/core").InputSignal<string>;
48
+ readonly focused: import("@angular/core").OutputEmitterRef<FocusEvent>;
49
+ readonly blurred: import("@angular/core").OutputEmitterRef<FocusEvent>;
50
+ private readonly injector;
51
+ private readonly field;
52
+ private readonly host;
53
+ private readonly content;
54
+ private readonly editor;
55
+ /** Bumped on every editor transaction, so toolbar state re-reads the editor. */
56
+ private readonly revision;
57
+ /** The HTML the editor last held, to tell our own updates from outside ones. */
58
+ private lastHtml;
59
+ protected readonly contentId: string;
60
+ protected readonly linkInputId: string;
61
+ protected readonly linkOpen: import("@angular/core").WritableSignal<boolean>;
62
+ protected readonly linkHref: import("@angular/core").WritableSignal<string>;
63
+ /** Index of the toolbar button that takes the toolbar's single tab stop. */
64
+ protected readonly focusIndex: import("@angular/core").WritableSignal<number>;
65
+ private readonly resolvedLabelledBy;
66
+ protected readonly editable: import("@angular/core").Signal<boolean>;
67
+ protected readonly toolGroups: import("@angular/core").Signal<("bold" | "italic" | "underline" | "strike" | "code" | "heading1" | "heading2" | "heading3" | "bulletList" | "orderedList" | "blockquote" | "codeBlock" | "horizontalRule" | "link" | "undo" | "redo")[][]>;
68
+ protected readonly flatTools: import("@angular/core").Signal<("bold" | "italic" | "underline" | "strike" | "code" | "heading1" | "heading2" | "heading3" | "bulletList" | "orderedList" | "blockquote" | "codeBlock" | "horizontalRule" | "link" | "undo" | "redo")[]>;
69
+ protected readonly showToolbar: import("@angular/core").Signal<boolean>;
70
+ /** Per tool: whether it's on at the cursor, and whether it can run right now. */
71
+ protected readonly toolState: import("@angular/core").Signal<Record<"bold" | "italic" | "underline" | "strike" | "code" | "heading1" | "heading2" | "heading3" | "bulletList" | "orderedList" | "blockquote" | "codeBlock" | "horizontalRule" | "link" | "undo" | "redo", {
72
+ active: boolean;
73
+ enabled: boolean;
74
+ }>>;
75
+ protected readonly generatedClasses: import("@angular/core").Signal<string>;
76
+ /** Attributes for the contenteditable element, which Tiptap renders. */
77
+ private readonly contentAttributes;
78
+ /** Each tool left out of `tools` switches its extension off. */
79
+ private readonly extensions;
80
+ constructor();
81
+ protected toolDefinition(tool: RichTextTool): ToolDefinition;
82
+ protected readonly runTool: (tool: RichTextTool) => void;
83
+ /** Arrow keys move between toolbar buttons, so the toolbar is one tab stop. */
84
+ protected readonly onToolbarKeydown: (event: KeyboardEvent) => void;
85
+ protected readonly openLink: () => void;
86
+ protected readonly applyLink: () => void;
87
+ protected readonly removeLink: () => void;
88
+ protected readonly closeLink: () => void;
89
+ protected readonly onLinkKeydown: (event: KeyboardEvent) => void;
90
+ private createEditor;
91
+ private htmlOf;
92
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiRichTextEditorComponent, never>;
93
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiRichTextEditorComponent, "ui-rich-text-editor", never, {
94
+ "value": {
95
+ "alias": "value";
96
+ "required": true;
97
+ "isSignal": true;
98
+ };
99
+ "classes": {
100
+ "alias": "classes";
101
+ "required": false;
102
+ "isSignal": true;
103
+ };
104
+ "tools": {
105
+ "alias": "tools";
106
+ "required": false;
107
+ "isSignal": true;
108
+ };
109
+ "id": {
110
+ "alias": "id";
111
+ "required": false;
112
+ "isSignal": true;
113
+ };
114
+ "placeholder": {
115
+ "alias": "placeholder";
116
+ "required": false;
117
+ "isSignal": true;
118
+ };
119
+ "required": {
120
+ "alias": "required";
121
+ "required": false;
122
+ "isSignal": true;
123
+ };
124
+ "disabled": {
125
+ "alias": "disabled";
126
+ "required": false;
127
+ "isSignal": true;
128
+ };
129
+ "readonly": {
130
+ "alias": "readonly";
131
+ "required": false;
132
+ "isSignal": true;
133
+ };
134
+ "validationState": {
135
+ "alias": "validationState";
136
+ "required": false;
137
+ "isSignal": true;
138
+ };
139
+ "spellcheck": {
140
+ "alias": "spellcheck";
141
+ "required": false;
142
+ "isSignal": true;
143
+ };
144
+ "ariaLabel": {
145
+ "alias": "ariaLabel";
146
+ "required": false;
147
+ "isSignal": true;
148
+ };
149
+ "describedBy": {
150
+ "alias": "describedBy";
151
+ "required": false;
152
+ "isSignal": true;
153
+ };
154
+ "labelledBy": {
155
+ "alias": "labelledBy";
156
+ "required": false;
157
+ "isSignal": true;
158
+ };
159
+ }, {
160
+ "value": "valueChange";
161
+ "validationState": "validationStateChange";
162
+ "focused": "focused";
163
+ "blurred": "blurred";
164
+ }, never, never, true, never>;
165
+ }
@@ -0,0 +1,56 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class UiSearchComponent {
3
+ private readonly host;
4
+ private readonly registry;
5
+ readonly value: import("@angular/core").ModelSignal<string>;
6
+ readonly placeholder: import("@angular/core").InputSignal<string>;
7
+ readonly ariaLabel: import("@angular/core").InputSignal<string>;
8
+ readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
9
+ /** How long typing has to pause before `searched` fires, in milliseconds. */
10
+ readonly debounce: import("@angular/core").InputSignalWithTransform<number, unknown>;
11
+ /** The `tableId` of a ui-table to search, it can render before or after this. */
12
+ readonly table: import("@angular/core").InputSignal<string | null>;
13
+ /** The value once typing pauses, for running a search. Clearing fires straight away. */
14
+ readonly searched: import("@angular/core").OutputEmitterRef<string>;
15
+ private readonly linked;
16
+ private timer;
17
+ constructor();
18
+ protected onInput(value: string): void;
19
+ protected clear(): void;
20
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiSearchComponent, never>;
21
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiSearchComponent, "ui-search", never, {
22
+ "value": {
23
+ "alias": "value";
24
+ "required": false;
25
+ "isSignal": true;
26
+ };
27
+ "placeholder": {
28
+ "alias": "placeholder";
29
+ "required": false;
30
+ "isSignal": true;
31
+ };
32
+ "ariaLabel": {
33
+ "alias": "ariaLabel";
34
+ "required": false;
35
+ "isSignal": true;
36
+ };
37
+ "disabled": {
38
+ "alias": "disabled";
39
+ "required": false;
40
+ "isSignal": true;
41
+ };
42
+ "debounce": {
43
+ "alias": "debounce";
44
+ "required": false;
45
+ "isSignal": true;
46
+ };
47
+ "table": {
48
+ "alias": "table";
49
+ "required": false;
50
+ "isSignal": true;
51
+ };
52
+ }, {
53
+ "value": "valueChange";
54
+ "searched": "searched";
55
+ }, never, never, true, never>;
56
+ }