@hyalo/angular 0.0.0-stage → 0.3.1

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 (229) hide show
  1. package/CHANGELOG.md +95 -0
  2. package/LICENSE +21 -0
  3. package/README.md +45 -2
  4. package/fesm2022/hyalo-angular-accordion.mjs +230 -0
  5. package/fesm2022/hyalo-angular-accordion.mjs.map +1 -0
  6. package/fesm2022/hyalo-angular-alert.mjs +171 -0
  7. package/fesm2022/hyalo-angular-alert.mjs.map +1 -0
  8. package/fesm2022/hyalo-angular-aspect-ratio.mjs +64 -0
  9. package/fesm2022/hyalo-angular-aspect-ratio.mjs.map +1 -0
  10. package/fesm2022/hyalo-angular-avatar.mjs +169 -0
  11. package/fesm2022/hyalo-angular-avatar.mjs.map +1 -0
  12. package/fesm2022/hyalo-angular-badge.mjs +268 -0
  13. package/fesm2022/hyalo-angular-badge.mjs.map +1 -0
  14. package/fesm2022/hyalo-angular-bento.mjs +132 -0
  15. package/fesm2022/hyalo-angular-bento.mjs.map +1 -0
  16. package/fesm2022/hyalo-angular-blocks.mjs +985 -0
  17. package/fesm2022/hyalo-angular-blocks.mjs.map +1 -0
  18. package/fesm2022/hyalo-angular-border-beam.mjs +73 -0
  19. package/fesm2022/hyalo-angular-border-beam.mjs.map +1 -0
  20. package/fesm2022/hyalo-angular-breadcrumb.mjs +77 -0
  21. package/fesm2022/hyalo-angular-breadcrumb.mjs.map +1 -0
  22. package/fesm2022/hyalo-angular-button-group.mjs +90 -0
  23. package/fesm2022/hyalo-angular-button-group.mjs.map +1 -0
  24. package/fesm2022/hyalo-angular-button.mjs +204 -0
  25. package/fesm2022/hyalo-angular-button.mjs.map +1 -0
  26. package/fesm2022/hyalo-angular-card.mjs +221 -0
  27. package/fesm2022/hyalo-angular-card.mjs.map +1 -0
  28. package/fesm2022/hyalo-angular-carousel.mjs +709 -0
  29. package/fesm2022/hyalo-angular-carousel.mjs.map +1 -0
  30. package/fesm2022/hyalo-angular-chapter-nav.mjs +336 -0
  31. package/fesm2022/hyalo-angular-chapter-nav.mjs.map +1 -0
  32. package/fesm2022/hyalo-angular-chart-engine-DSJop6He.mjs +5 -0
  33. package/fesm2022/hyalo-angular-chart-engine-DSJop6He.mjs.map +1 -0
  34. package/fesm2022/hyalo-angular-chart.mjs +391 -0
  35. package/fesm2022/hyalo-angular-chart.mjs.map +1 -0
  36. package/fesm2022/hyalo-angular-choice.mjs +789 -0
  37. package/fesm2022/hyalo-angular-choice.mjs.map +1 -0
  38. package/fesm2022/hyalo-angular-code-block-highlight-B20d5C76.mjs +40 -0
  39. package/fesm2022/hyalo-angular-code-block-highlight-B20d5C76.mjs.map +1 -0
  40. package/fesm2022/hyalo-angular-code-block.mjs +161 -0
  41. package/fesm2022/hyalo-angular-code-block.mjs.map +1 -0
  42. package/fesm2022/hyalo-angular-command.mjs +193 -0
  43. package/fesm2022/hyalo-angular-command.mjs.map +1 -0
  44. package/fesm2022/hyalo-angular-copy.mjs +138 -0
  45. package/fesm2022/hyalo-angular-copy.mjs.map +1 -0
  46. package/fesm2022/hyalo-angular-core.mjs +424 -0
  47. package/fesm2022/hyalo-angular-core.mjs.map +1 -0
  48. package/fesm2022/hyalo-angular-description-list.mjs +57 -0
  49. package/fesm2022/hyalo-angular-description-list.mjs.map +1 -0
  50. package/fesm2022/hyalo-angular-dialog.mjs +600 -0
  51. package/fesm2022/hyalo-angular-dialog.mjs.map +1 -0
  52. package/fesm2022/hyalo-angular-divider.mjs +66 -0
  53. package/fesm2022/hyalo-angular-divider.mjs.map +1 -0
  54. package/fesm2022/hyalo-angular-empty-state.mjs +123 -0
  55. package/fesm2022/hyalo-angular-empty-state.mjs.map +1 -0
  56. package/fesm2022/hyalo-angular-field.mjs +344 -0
  57. package/fesm2022/hyalo-angular-field.mjs.map +1 -0
  58. package/fesm2022/hyalo-angular-filter.mjs +309 -0
  59. package/fesm2022/hyalo-angular-filter.mjs.map +1 -0
  60. package/fesm2022/hyalo-angular-hotspot.mjs +225 -0
  61. package/fesm2022/hyalo-angular-hotspot.mjs.map +1 -0
  62. package/fesm2022/hyalo-angular-hover-card.mjs +233 -0
  63. package/fesm2022/hyalo-angular-hover-card.mjs.map +1 -0
  64. package/fesm2022/hyalo-angular-icon.mjs +385 -0
  65. package/fesm2022/hyalo-angular-icon.mjs.map +1 -0
  66. package/fesm2022/hyalo-angular-image-compare.mjs +168 -0
  67. package/fesm2022/hyalo-angular-image-compare.mjs.map +1 -0
  68. package/fesm2022/hyalo-angular-interaction.mjs +446 -0
  69. package/fesm2022/hyalo-angular-interaction.mjs.map +1 -0
  70. package/fesm2022/hyalo-angular-kbd.mjs +41 -0
  71. package/fesm2022/hyalo-angular-kbd.mjs.map +1 -0
  72. package/fesm2022/hyalo-angular-lightbox.mjs +228 -0
  73. package/fesm2022/hyalo-angular-lightbox.mjs.map +1 -0
  74. package/fesm2022/hyalo-angular-link.mjs +42 -0
  75. package/fesm2022/hyalo-angular-link.mjs.map +1 -0
  76. package/fesm2022/hyalo-angular-list.mjs +131 -0
  77. package/fesm2022/hyalo-angular-list.mjs.map +1 -0
  78. package/fesm2022/hyalo-angular-marquee.mjs +197 -0
  79. package/fesm2022/hyalo-angular-marquee.mjs.map +1 -0
  80. package/fesm2022/hyalo-angular-menu.mjs +423 -0
  81. package/fesm2022/hyalo-angular-menu.mjs.map +1 -0
  82. package/fesm2022/hyalo-angular-mesh.mjs +126 -0
  83. package/fesm2022/hyalo-angular-mesh.mjs.map +1 -0
  84. package/fesm2022/hyalo-angular-motion.mjs +620 -0
  85. package/fesm2022/hyalo-angular-motion.mjs.map +1 -0
  86. package/fesm2022/hyalo-angular-navbar.mjs +343 -0
  87. package/fesm2022/hyalo-angular-navbar.mjs.map +1 -0
  88. package/fesm2022/hyalo-angular-navigation-menu.mjs +222 -0
  89. package/fesm2022/hyalo-angular-navigation-menu.mjs.map +1 -0
  90. package/fesm2022/hyalo-angular-number-ticker.mjs +174 -0
  91. package/fesm2022/hyalo-angular-number-ticker.mjs.map +1 -0
  92. package/fesm2022/hyalo-angular-overlay.mjs +163 -0
  93. package/fesm2022/hyalo-angular-overlay.mjs.map +1 -0
  94. package/fesm2022/hyalo-angular-pagination.mjs +187 -0
  95. package/fesm2022/hyalo-angular-pagination.mjs.map +1 -0
  96. package/fesm2022/hyalo-angular-popover-overlay-kit-6wPwnxln.mjs +3 -0
  97. package/fesm2022/hyalo-angular-popover.mjs +516 -0
  98. package/fesm2022/hyalo-angular-popover.mjs.map +1 -0
  99. package/fesm2022/hyalo-angular-progress.mjs +209 -0
  100. package/fesm2022/hyalo-angular-progress.mjs.map +1 -0
  101. package/fesm2022/hyalo-angular-progressive-blur.mjs +73 -0
  102. package/fesm2022/hyalo-angular-progressive-blur.mjs.map +1 -0
  103. package/fesm2022/hyalo-angular-refraction-renderer-5ZA-kfsA.mjs +186 -0
  104. package/fesm2022/hyalo-angular-refraction-renderer-5ZA-kfsA.mjs.map +1 -0
  105. package/fesm2022/hyalo-angular-refraction.mjs +178 -0
  106. package/fesm2022/hyalo-angular-refraction.mjs.map +1 -0
  107. package/fesm2022/hyalo-angular-scroll-area.mjs +93 -0
  108. package/fesm2022/hyalo-angular-scroll-area.mjs.map +1 -0
  109. package/fesm2022/hyalo-angular-scroll-to-top.mjs +127 -0
  110. package/fesm2022/hyalo-angular-scroll-to-top.mjs.map +1 -0
  111. package/fesm2022/hyalo-angular-segmented.mjs +223 -0
  112. package/fesm2022/hyalo-angular-segmented.mjs.map +1 -0
  113. package/fesm2022/hyalo-angular-select.mjs +561 -0
  114. package/fesm2022/hyalo-angular-select.mjs.map +1 -0
  115. package/fesm2022/hyalo-angular-sidebar.mjs +241 -0
  116. package/fesm2022/hyalo-angular-sidebar.mjs.map +1 -0
  117. package/fesm2022/hyalo-angular-skeleton.mjs +131 -0
  118. package/fesm2022/hyalo-angular-skeleton.mjs.map +1 -0
  119. package/fesm2022/hyalo-angular-sparkline.mjs +110 -0
  120. package/fesm2022/hyalo-angular-sparkline.mjs.map +1 -0
  121. package/fesm2022/hyalo-angular-split-text.mjs +126 -0
  122. package/fesm2022/hyalo-angular-split-text.mjs.map +1 -0
  123. package/fesm2022/hyalo-angular-stat.mjs +193 -0
  124. package/fesm2022/hyalo-angular-stat.mjs.map +1 -0
  125. package/fesm2022/hyalo-angular-stepper.mjs +254 -0
  126. package/fesm2022/hyalo-angular-stepper.mjs.map +1 -0
  127. package/fesm2022/hyalo-angular-table.mjs +335 -0
  128. package/fesm2022/hyalo-angular-table.mjs.map +1 -0
  129. package/fesm2022/hyalo-angular-tabs.mjs +324 -0
  130. package/fesm2022/hyalo-angular-tabs.mjs.map +1 -0
  131. package/fesm2022/hyalo-angular-theme.mjs +94 -0
  132. package/fesm2022/hyalo-angular-theme.mjs.map +1 -0
  133. package/fesm2022/hyalo-angular-timeline.mjs +157 -0
  134. package/fesm2022/hyalo-angular-timeline.mjs.map +1 -0
  135. package/fesm2022/hyalo-angular-toast.mjs +323 -0
  136. package/fesm2022/hyalo-angular-toast.mjs.map +1 -0
  137. package/fesm2022/hyalo-angular.mjs +2 -0
  138. package/package.json +329 -3
  139. package/styles/hyalo-core.css +25 -0
  140. package/styles/hyalo.css +17 -0
  141. package/styles/overlays/dialog.css +9 -0
  142. package/styles/overlays/popover.css +9 -0
  143. package/styles/overlays/select.css +9 -0
  144. package/styles/overlays/toast.css +8 -0
  145. package/styles/palettes/aurora.css +47 -0
  146. package/styles/palettes/ember.css +47 -0
  147. package/styles/palettes/graphite.css +47 -0
  148. package/styles/palettes/ocean.css +47 -0
  149. package/styles/palettes/orchid.css +47 -0
  150. package/styles/palettes/rose.css +47 -0
  151. package/styles/parts/card.css +49 -0
  152. package/styles/parts/dialog.css +116 -0
  153. package/styles/parts/drawer.css +124 -0
  154. package/styles/parts/field.css +44 -0
  155. package/styles/parts/glass.css +139 -0
  156. package/styles/parts/motion.css +101 -0
  157. package/styles/parts/navbar.css +55 -0
  158. package/styles/parts/popover.css +27 -0
  159. package/styles/parts/presence.css +55 -0
  160. package/styles/parts/reset.css +42 -0
  161. package/styles/parts/select.css +46 -0
  162. package/styles/parts/themes.css +105 -0
  163. package/styles/parts/toast.css +128 -0
  164. package/styles/parts/tokens.css +151 -0
  165. package/styles/parts/typography.css +81 -0
  166. package/types/hyalo-angular-accordion.d.ts +74 -0
  167. package/types/hyalo-angular-alert.d.ts +47 -0
  168. package/types/hyalo-angular-aspect-ratio.d.ts +13 -0
  169. package/types/hyalo-angular-avatar.d.ts +39 -0
  170. package/types/hyalo-angular-badge.d.ts +82 -0
  171. package/types/hyalo-angular-bento.d.ts +25 -0
  172. package/types/hyalo-angular-blocks.d.ts +272 -0
  173. package/types/hyalo-angular-border-beam.d.ts +15 -0
  174. package/types/hyalo-angular-breadcrumb.d.ts +22 -0
  175. package/types/hyalo-angular-button-group.d.ts +19 -0
  176. package/types/hyalo-angular-button.d.ts +89 -0
  177. package/types/hyalo-angular-card.d.ts +61 -0
  178. package/types/hyalo-angular-carousel.d.ts +147 -0
  179. package/types/hyalo-angular-chapter-nav.d.ts +79 -0
  180. package/types/hyalo-angular-chart.d.ts +90 -0
  181. package/types/hyalo-angular-choice.d.ts +259 -0
  182. package/types/hyalo-angular-code-block.d.ts +46 -0
  183. package/types/hyalo-angular-command.d.ts +41 -0
  184. package/types/hyalo-angular-copy.d.ts +39 -0
  185. package/types/hyalo-angular-core.d.ts +210 -0
  186. package/types/hyalo-angular-description-list.d.ts +16 -0
  187. package/types/hyalo-angular-dialog.d.ts +171 -0
  188. package/types/hyalo-angular-divider.d.ts +12 -0
  189. package/types/hyalo-angular-empty-state.d.ts +30 -0
  190. package/types/hyalo-angular-field.d.ts +141 -0
  191. package/types/hyalo-angular-filter.d.ts +122 -0
  192. package/types/hyalo-angular-hotspot.d.ts +70 -0
  193. package/types/hyalo-angular-hover-card.d.ts +47 -0
  194. package/types/hyalo-angular-icon.d.ts +122 -0
  195. package/types/hyalo-angular-image-compare.d.ts +55 -0
  196. package/types/hyalo-angular-interaction.d.ts +131 -0
  197. package/types/hyalo-angular-kbd.d.ts +5 -0
  198. package/types/hyalo-angular-lightbox.d.ts +67 -0
  199. package/types/hyalo-angular-link.d.ts +5 -0
  200. package/types/hyalo-angular-list.d.ts +30 -0
  201. package/types/hyalo-angular-marquee.d.ts +48 -0
  202. package/types/hyalo-angular-menu.d.ts +105 -0
  203. package/types/hyalo-angular-mesh.d.ts +36 -0
  204. package/types/hyalo-angular-motion.d.ts +218 -0
  205. package/types/hyalo-angular-navbar.d.ts +110 -0
  206. package/types/hyalo-angular-navigation-menu.d.ts +47 -0
  207. package/types/hyalo-angular-number-ticker.d.ts +52 -0
  208. package/types/hyalo-angular-overlay.d.ts +40 -0
  209. package/types/hyalo-angular-pagination.d.ts +59 -0
  210. package/types/hyalo-angular-popover.d.ts +152 -0
  211. package/types/hyalo-angular-progress.d.ts +46 -0
  212. package/types/hyalo-angular-progressive-blur.d.ts +14 -0
  213. package/types/hyalo-angular-refraction.d.ts +46 -0
  214. package/types/hyalo-angular-scroll-area.d.ts +18 -0
  215. package/types/hyalo-angular-scroll-to-top.d.ts +31 -0
  216. package/types/hyalo-angular-segmented.d.ts +79 -0
  217. package/types/hyalo-angular-select.d.ts +176 -0
  218. package/types/hyalo-angular-sidebar.d.ts +57 -0
  219. package/types/hyalo-angular-skeleton.d.ts +34 -0
  220. package/types/hyalo-angular-sparkline.d.ts +19 -0
  221. package/types/hyalo-angular-split-text.d.ts +24 -0
  222. package/types/hyalo-angular-stat.d.ts +56 -0
  223. package/types/hyalo-angular-stepper.d.ts +63 -0
  224. package/types/hyalo-angular-table.d.ts +125 -0
  225. package/types/hyalo-angular-tabs.d.ts +102 -0
  226. package/types/hyalo-angular-theme.d.ts +46 -0
  227. package/types/hyalo-angular-timeline.d.ts +36 -0
  228. package/types/hyalo-angular-toast.d.ts +79 -0
  229. package/types/hyalo-angular.d.ts +2 -0
@@ -0,0 +1,122 @@
1
+ import * as i0 from "@angular/core";
2
+ import { TemplateRef } from "@angular/core";
3
+ import { HySelectOption } from "@hyalo/angular/select";
4
+ export type HyFilterScalar = string | number | boolean;
5
+ export type HyDatePreset = '24H' | '7D' | '30D' | '1Y';
6
+ export type HyDateRangeValue = {
7
+ readonly kind: 'preset';
8
+ readonly preset: HyDatePreset;
9
+ readonly timeZone: string;
10
+ } | {
11
+ readonly kind: 'absolute';
12
+ readonly start: string;
13
+ readonly end: string;
14
+ readonly timeZone: string;
15
+ };
16
+ export type HyFilterRule = {
17
+ readonly operator: 'eq';
18
+ readonly value: HyFilterScalar;
19
+ } | {
20
+ readonly operator: 'in';
21
+ readonly value: readonly HyFilterScalar[];
22
+ } | {
23
+ readonly operator: 'contains';
24
+ readonly value: string;
25
+ } | {
26
+ readonly operator: 'between';
27
+ readonly value: readonly [number, number] | HyDateRangeValue;
28
+ };
29
+ export type HyFilterClause<S> = { [K in keyof S]: {
30
+ readonly id: string;
31
+ readonly field: K;
32
+ } & S[K]; }[keyof S];
33
+ export type HyFilterToken = {
34
+ readonly id: string;
35
+ readonly field: string;
36
+ } & HyFilterRule;
37
+ export interface HyFilterCodec<C extends HyFilterToken> {
38
+ readonly accepts: (value: unknown) => value is C;
39
+ }
40
+ export declare function encodeFilters<C extends HyFilterToken>(clauses: readonly C[]): string;
41
+ export declare function decodeFilters<C extends HyFilterToken>(text: string, codec: HyFilterCodec<C>): readonly C[];
42
+ export declare function isFilterToken(value: unknown): value is HyFilterToken;
43
+ /** Presets are rolling elapsed intervals; both editors use start-inclusive/end-exclusive instants. */
44
+ export declare function resolveDateRange(value: HyDateRangeValue, now: Date): {
45
+ readonly start: string;
46
+ readonly end: string;
47
+ };
48
+ export interface HyFilterEditorContext<C> {
49
+ readonly $implicit: C;
50
+ readonly update: (clause: C) => void;
51
+ }
52
+ export interface HyFilterField<C extends HyFilterToken> {
53
+ readonly field: C['field'];
54
+ readonly label: string;
55
+ readonly options?: readonly HySelectOption<string>[];
56
+ readonly create: (id: string, value: string) => C | null;
57
+ readonly editor?: TemplateRef<HyFilterEditorContext<C>>;
58
+ readonly format?: (clause: C) => string;
59
+ }
60
+ export declare class HyFilterBar<C extends HyFilterToken> {
61
+ readonly fields: import("@angular/core").InputSignal<readonly HyFilterField<C>[]>;
62
+ readonly clauses: import("@angular/core").ModelSignal<readonly C[]>;
63
+ readonly label: import("@angular/core").InputSignal<string>;
64
+ readonly clearLabel: import("@angular/core").InputSignal<string>;
65
+ readonly removeLabel: import("@angular/core").InputSignal<string>;
66
+ readonly anyLabel: import("@angular/core").InputSignal<string>;
67
+ readonly activeLabel: import("@angular/core").InputSignal<string>;
68
+ protected readonly view: import("@angular/core").Signal<{
69
+ clause: C;
70
+ label: string;
71
+ text: string;
72
+ editor: TemplateRef<HyFilterEditorContext<C>> | undefined;
73
+ context: {
74
+ $implicit: C;
75
+ update: (next: C) => void;
76
+ };
77
+ }[]>;
78
+ protected raw(field: string): string;
79
+ protected change(field: HyFilterField<C>, raw: string): void;
80
+ protected remove(id: string): void;
81
+ private update;
82
+ static ɵfac: i0.ɵɵFactoryDeclaration<HyFilterBar<any>, never>;
83
+ static ɵcmp: i0.ɵɵComponentDeclaration<HyFilterBar<any>, "hy-filter-bar", never, {
84
+ "fields": {
85
+ "alias": "fields";
86
+ "required": true;
87
+ "isSignal": true;
88
+ };
89
+ "clauses": {
90
+ "alias": "clauses";
91
+ "required": false;
92
+ "isSignal": true;
93
+ };
94
+ "label": {
95
+ "alias": "label";
96
+ "required": false;
97
+ "isSignal": true;
98
+ };
99
+ "clearLabel": {
100
+ "alias": "clearLabel";
101
+ "required": false;
102
+ "isSignal": true;
103
+ };
104
+ "removeLabel": {
105
+ "alias": "removeLabel";
106
+ "required": false;
107
+ "isSignal": true;
108
+ };
109
+ "anyLabel": {
110
+ "alias": "anyLabel";
111
+ "required": false;
112
+ "isSignal": true;
113
+ };
114
+ "activeLabel": {
115
+ "alias": "activeLabel";
116
+ "required": false;
117
+ "isSignal": true;
118
+ };
119
+ }, {
120
+ "clauses": "clausesChange";
121
+ }, never, ["*"], true, never>;
122
+ }
@@ -0,0 +1,70 @@
1
+ import { HyMotion } from "@hyalo/angular/motion";
2
+ import { HyPlacement } from "@hyalo/angular/overlay";
3
+ import * as i0 from "@angular/core";
4
+ export type HyHotspotMode = 'label' | 'pin';
5
+ export interface HyHotspotPosition {
6
+ readonly x: number;
7
+ readonly y: number;
8
+ readonly visible?: boolean;
9
+ }
10
+ /** Pass screen coordinates from your scene's projection. Position is relative to its frame. */
11
+ export declare class HyHotspot {
12
+ protected readonly motion: HyMotion;
13
+ readonly label: import("@angular/core").InputSignal<string>;
14
+ readonly position: import("@angular/core").InputSignal<HyHotspotPosition>;
15
+ readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
16
+ /** Optional detail panel. Without a description this stays a plain action button. */
17
+ readonly description: import("@angular/core").InputSignal<string>;
18
+ readonly mode: import("@angular/core").InputSignal<HyHotspotMode>;
19
+ readonly open: import("@angular/core").ModelSignal<boolean>;
20
+ readonly placement: import("@angular/core").InputSignal<HyPlacement>;
21
+ readonly closeLabel: import("@angular/core").InputSignal<string>;
22
+ readonly activated: import("@angular/core").OutputEmitterRef<void>;
23
+ protected readonly visible: import("@angular/core").Signal<boolean>;
24
+ static ɵfac: i0.ɵɵFactoryDeclaration<HyHotspot, never>;
25
+ static ɵcmp: i0.ɵɵComponentDeclaration<HyHotspot, "hy-hotspot", never, {
26
+ "label": {
27
+ "alias": "label";
28
+ "required": true;
29
+ "isSignal": true;
30
+ };
31
+ "position": {
32
+ "alias": "position";
33
+ "required": true;
34
+ "isSignal": true;
35
+ };
36
+ "disabled": {
37
+ "alias": "disabled";
38
+ "required": false;
39
+ "isSignal": true;
40
+ };
41
+ "description": {
42
+ "alias": "description";
43
+ "required": false;
44
+ "isSignal": true;
45
+ };
46
+ "mode": {
47
+ "alias": "mode";
48
+ "required": false;
49
+ "isSignal": true;
50
+ };
51
+ "open": {
52
+ "alias": "open";
53
+ "required": false;
54
+ "isSignal": true;
55
+ };
56
+ "placement": {
57
+ "alias": "placement";
58
+ "required": false;
59
+ "isSignal": true;
60
+ };
61
+ "closeLabel": {
62
+ "alias": "closeLabel";
63
+ "required": false;
64
+ "isSignal": true;
65
+ };
66
+ }, {
67
+ "open": "openChange";
68
+ "activated": "activated";
69
+ }, never, never, true, never>;
70
+ }
@@ -0,0 +1,47 @@
1
+ import * as i0 from "@angular/core";
2
+ import { TemplateRef } from "@angular/core";
3
+ import { HyPlacement } from "@hyalo/angular/overlay";
4
+ export declare class HyHoverCard {
5
+ readonly content: import("@angular/core").InputSignal<TemplateRef<unknown>>;
6
+ readonly hoverCardLabel: import("@angular/core").InputSignal<string>;
7
+ readonly placement: import("@angular/core").InputSignal<HyPlacement>;
8
+ readonly open: import("@angular/core").WritableSignal<boolean>;
9
+ protected readonly id: string;
10
+ private readonly injector;
11
+ private readonly host;
12
+ private readonly container;
13
+ private readonly fidelity;
14
+ private readonly document;
15
+ private readonly intent;
16
+ private ref;
17
+ private timer;
18
+ private disposed;
19
+ private suppressFocus;
20
+ protected focusTrigger(): void;
21
+ constructor();
22
+ protected enter(event: PointerEvent): void;
23
+ protected leave(event?: PointerEvent): void;
24
+ protected focusOut(event: FocusEvent): void;
25
+ protected escape(event: Event): void;
26
+ protected focusCard(event: Event): void;
27
+ show(): void;
28
+ hide(): void;
29
+ static ɵfac: i0.ɵɵFactoryDeclaration<HyHoverCard, never>;
30
+ static ɵdir: i0.ɵɵDirectiveDeclaration<HyHoverCard, "[hyHoverCard]", ["hyHoverCard"], {
31
+ "content": {
32
+ "alias": "hyHoverCard";
33
+ "required": true;
34
+ "isSignal": true;
35
+ };
36
+ "hoverCardLabel": {
37
+ "alias": "hoverCardLabel";
38
+ "required": true;
39
+ "isSignal": true;
40
+ };
41
+ "placement": {
42
+ "alias": "placement";
43
+ "required": false;
44
+ "isSignal": true;
45
+ };
46
+ }, {}, never, never, true, never>;
47
+ }
@@ -0,0 +1,122 @@
1
+ import * as i0 from "@angular/core";
2
+ import { InjectionToken, Provider } from "@angular/core";
3
+ /**
4
+ * Icon data in the same shape Lucide uses (`IconNode`), so any Lucide icon
5
+ * can be registered as is:
6
+ *
7
+ * ```ts
8
+ * import { ArrowRight } from 'lucide';
9
+ * provideHyaloIcons({ 'arrow-right': ArrowRight })
10
+ * ```
11
+ *
12
+ * Icons are data, not SVG strings, so nothing is ever parsed as HTML.
13
+ */
14
+ export type HyIconNode = readonly (readonly [string, Readonly<Record<string, string | number>>])[];
15
+ /** An icon plus how it behaves in right-to-left layouts. */
16
+ export interface HyIconDef {
17
+ readonly node: HyIconNode;
18
+ /** Mirror the icon in RTL. Set it for icons that point somewhere, like arrows. */
19
+ readonly mirrorRtl?: boolean;
20
+ }
21
+ export declare const HY_BUILTIN_ICONS: Readonly<Record<string, HyIconDef>>;
22
+ type HyIconSet = Readonly<Record<string, HyIconDef | HyIconNode>>;
23
+ /** Icons added with {@link provideHyaloIcons}. Collected from every provider. */
24
+ export declare const HY_ICONS: InjectionToken<readonly Readonly<Record<string, HyIconDef | HyIconNode>>[]>;
25
+ /**
26
+ * Registers icons by name. Only the icons you import end up in the bundle.
27
+ *
28
+ * ```ts
29
+ * provideHyaloIcons({ search: Search, 'arrow-end': { node: ArrowRight, mirrorRtl: true } })
30
+ * ```
31
+ *
32
+ * Works in `app.config.ts` and in a route's or component's `providers`.
33
+ * Icons from the nearest provider win over app-wide ones.
34
+ */
35
+ export declare function provideHyaloIcons(icons: Readonly<Record<string, HyIconDef | HyIconNode>>): Provider;
36
+ /** Looks up icons by name: built-ins first, then registered sets in order. */
37
+ export declare class HyIconRegistry {
38
+ private readonly icons;
39
+ private readonly sets;
40
+ constructor();
41
+ /** Adds or replaces an icon at runtime. */
42
+ register(name: string, icon: HyIconDef | HyIconNode): void;
43
+ /** Returns the icon, or undefined when the name is unknown. */
44
+ get(name: string): HyIconDef | undefined;
45
+ /**
46
+ * @internal Looks in sets from a route or component injector first. This
47
+ * registry lives in the root injector, so it never sees those itself.
48
+ */
49
+ lookup(name: string, sets: readonly HyIconSet[] | null): HyIconDef | undefined;
50
+ static ɵfac: i0.ɵɵFactoryDeclaration<HyIconRegistry, never>;
51
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
52
+ }
53
+ /** Copies whitelisted geometry attributes onto an SVG child element. */
54
+ export declare class HyIconAttrs {
55
+ private readonly el;
56
+ private readonly renderer;
57
+ readonly hyIconAttrs: import("@angular/core").InputSignal<Readonly<Record<string, string | number>>>;
58
+ constructor();
59
+ static ɵfac: i0.ɵɵFactoryDeclaration<HyIconAttrs, never>;
60
+ static ɵdir: i0.ɵɵDirectiveDeclaration<HyIconAttrs, "[hyIconAttrs]", never, {
61
+ "hyIconAttrs": {
62
+ "alias": "hyIconAttrs";
63
+ "required": true;
64
+ "isSignal": true;
65
+ };
66
+ }, {}, never, never, true, never>;
67
+ }
68
+ /**
69
+ * An SVG icon from the registry, or passed in directly.
70
+ *
71
+ * ```html
72
+ * <hy-icon name="check" />
73
+ * <hy-icon [icon]="ArrowRight" label="Next" />
74
+ * ```
75
+ *
76
+ * Icons are decorative (`aria-hidden`) unless `label` is set, in which case
77
+ * they get `role="img"` and that label. The size follows the font size.
78
+ */
79
+ export declare class HyIcon {
80
+ private readonly registry;
81
+ private readonly sets;
82
+ /** Registered icon name. */
83
+ readonly name: import("@angular/core").InputSignal<string | undefined>;
84
+ /** Icon data, used instead of `name`. */
85
+ readonly icon: import("@angular/core").InputSignal<HyIconDef | HyIconNode | undefined>;
86
+ /** Accessible name. Leave empty for decorative icons. */
87
+ readonly label: import("@angular/core").InputSignal<string | undefined>;
88
+ /** Any CSS length. Defaults to 1.25em. */
89
+ readonly size: import("@angular/core").InputSignal<string | undefined>;
90
+ /** Stroke width in viewBox units. */
91
+ readonly strokeWidth: import("@angular/core").InputSignal<number>;
92
+ protected readonly def: import("@angular/core").Signal<HyIconDef | undefined>;
93
+ static ɵfac: i0.ɵɵFactoryDeclaration<HyIcon, never>;
94
+ static ɵcmp: i0.ɵɵComponentDeclaration<HyIcon, "hy-icon", never, {
95
+ "name": {
96
+ "alias": "name";
97
+ "required": false;
98
+ "isSignal": true;
99
+ };
100
+ "icon": {
101
+ "alias": "icon";
102
+ "required": false;
103
+ "isSignal": true;
104
+ };
105
+ "label": {
106
+ "alias": "label";
107
+ "required": false;
108
+ "isSignal": true;
109
+ };
110
+ "size": {
111
+ "alias": "size";
112
+ "required": false;
113
+ "isSignal": true;
114
+ };
115
+ "strokeWidth": {
116
+ "alias": "strokeWidth";
117
+ "required": false;
118
+ "isSignal": true;
119
+ };
120
+ }, {}, never, never, true, never>;
121
+ }
122
+ export {};
@@ -0,0 +1,55 @@
1
+ import * as i0 from "@angular/core";
2
+ /** Native range input provides pointer, touch, keyboard and screen reader controls. */
3
+ export declare class HyImageCompare {
4
+ readonly before: import("@angular/core").InputSignal<string>;
5
+ readonly after: import("@angular/core").InputSignal<string>;
6
+ readonly beforeAlt: import("@angular/core").InputSignal<string>;
7
+ readonly afterAlt: import("@angular/core").InputSignal<string>;
8
+ readonly label: import("@angular/core").InputSignal<string>;
9
+ readonly value: import("@angular/core").ModelSignal<number>;
10
+ readonly ratio: import("@angular/core").InputSignal<string>;
11
+ protected readonly id: string;
12
+ protected readonly position: import("@angular/core").Signal<number>;
13
+ protected readonly clip: import("@angular/core").Signal<string>;
14
+ protected change(event: Event): void;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<HyImageCompare, never>;
16
+ static ɵcmp: i0.ɵɵComponentDeclaration<HyImageCompare, "hy-image-compare", never, {
17
+ "before": {
18
+ "alias": "before";
19
+ "required": true;
20
+ "isSignal": true;
21
+ };
22
+ "after": {
23
+ "alias": "after";
24
+ "required": true;
25
+ "isSignal": true;
26
+ };
27
+ "beforeAlt": {
28
+ "alias": "beforeAlt";
29
+ "required": true;
30
+ "isSignal": true;
31
+ };
32
+ "afterAlt": {
33
+ "alias": "afterAlt";
34
+ "required": true;
35
+ "isSignal": true;
36
+ };
37
+ "label": {
38
+ "alias": "label";
39
+ "required": false;
40
+ "isSignal": true;
41
+ };
42
+ "value": {
43
+ "alias": "value";
44
+ "required": false;
45
+ "isSignal": true;
46
+ };
47
+ "ratio": {
48
+ "alias": "ratio";
49
+ "required": false;
50
+ "isSignal": true;
51
+ };
52
+ }, {
53
+ "value": "valueChange";
54
+ }, never, never, true, never>;
55
+ }
@@ -0,0 +1,131 @@
1
+ import * as i0 from "@angular/core";
2
+ /** Where a revealed element comes from. */
3
+ export type HyRevealFrom = 'up' | 'fade' | 'scale';
4
+ /**
5
+ * Fades and lifts an element in when it scrolls into view.
6
+ *
7
+ * ```html
8
+ * @for (item of items; track item.id; let i = $index) {
9
+ * <article hyReveal [revealDelay]="i * 60">...</article>
10
+ * }
11
+ * ```
12
+ *
13
+ * Content is never hidden by default. The directive only hides an element
14
+ * after hydration, only when it is below the fold, and only when motion is
15
+ * enabled. Elements already on screen are left alone, so server-rendered
16
+ * content does not flash. CSS transitions do the work, so it also runs on the
17
+ * low tier when reduced motion is off.
18
+ *
19
+ * Put it on the glass element itself (`<hy-card hyReveal>`), not on a
20
+ * wrapper around glass. While a wrapper fades, its glass children cannot
21
+ * blur what is behind it, and the blur snaps in when the fade ends.
22
+ */
23
+ export declare class HyReveal {
24
+ private readonly el;
25
+ private readonly motion;
26
+ /** Delay in milliseconds, for staggering. */
27
+ readonly revealDelay: import("@angular/core").InputSignalWithTransform<number, unknown>;
28
+ /** The starting pose. */
29
+ readonly revealFrom: import("@angular/core").InputSignal<HyRevealFrom>;
30
+ /** Reveal again each time the element re-enters the viewport. */
31
+ readonly revealRepeat: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
32
+ constructor();
33
+ static ɵfac: i0.ɵɵFactoryDeclaration<HyReveal, never>;
34
+ static ɵdir: i0.ɵɵDirectiveDeclaration<HyReveal, "[hyReveal]", never, {
35
+ "revealDelay": {
36
+ "alias": "revealDelay";
37
+ "required": false;
38
+ "isSignal": true;
39
+ };
40
+ "revealFrom": {
41
+ "alias": "revealFrom";
42
+ "required": false;
43
+ "isSignal": true;
44
+ };
45
+ "revealRepeat": {
46
+ "alias": "revealRepeat";
47
+ "required": false;
48
+ "isSignal": true;
49
+ };
50
+ }, {}, never, never, true, never>;
51
+ }
52
+ /**
53
+ * Tilts the element toward the cursor and moves a soft glow under it.
54
+ *
55
+ * ```html
56
+ * <hy-card hyTilt [tiltMax]="8">...</hy-card>
57
+ * ```
58
+ *
59
+ * Runs only with a fine pointer, with motion enabled and above the low
60
+ * fidelity tier. The glow uses `--hy-px`, `--hy-py` and `--hy-glow`, which the
61
+ * glass material already reads.
62
+ */
63
+ export declare class HyTilt {
64
+ private readonly el;
65
+ private readonly motion;
66
+ /** Maximum rotation in degrees. */
67
+ readonly tiltMax: import("@angular/core").InputSignalWithTransform<number, unknown>;
68
+ /** Whether to show the pointer glow. */
69
+ readonly tiltGlow: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
70
+ constructor();
71
+ static ɵfac: i0.ɵɵFactoryDeclaration<HyTilt, never>;
72
+ static ɵdir: i0.ɵɵDirectiveDeclaration<HyTilt, "[hyTilt]", never, {
73
+ "tiltMax": {
74
+ "alias": "tiltMax";
75
+ "required": false;
76
+ "isSignal": true;
77
+ };
78
+ "tiltGlow": {
79
+ "alias": "tiltGlow";
80
+ "required": false;
81
+ "isSignal": true;
82
+ };
83
+ }, {}, never, never, true, never>;
84
+ }
85
+ /**
86
+ * Pulls the element a little toward the cursor while it hovers.
87
+ *
88
+ * Uses the `translate` property, so it never fights with a `transform` the
89
+ * element already has.
90
+ */
91
+ export declare class HyMagnetic {
92
+ private readonly el;
93
+ private readonly motion;
94
+ /** How far the element follows the cursor, as a share of the distance. */
95
+ readonly magneticStrength: import("@angular/core").InputSignalWithTransform<number, unknown>;
96
+ /** Upper limit for the offset in pixels. */
97
+ readonly magneticMax: import("@angular/core").InputSignalWithTransform<number, unknown>;
98
+ constructor();
99
+ static ɵfac: i0.ɵɵFactoryDeclaration<HyMagnetic, never>;
100
+ static ɵdir: i0.ɵɵDirectiveDeclaration<HyMagnetic, "[hyMagnetic]", never, {
101
+ "magneticStrength": {
102
+ "alias": "magneticStrength";
103
+ "required": false;
104
+ "isSignal": true;
105
+ };
106
+ "magneticMax": {
107
+ "alias": "magneticMax";
108
+ "required": false;
109
+ "isSignal": true;
110
+ };
111
+ }, {}, never, never, true, never>;
112
+ }
113
+ /**
114
+ * A soft light ripple from the press point. Purely decorative: it is
115
+ * skipped with reduced motion and never affects layout.
116
+ */
117
+ export declare class HyRipple {
118
+ private readonly el;
119
+ private readonly motion;
120
+ /** Turns the ripple off without removing the directive. */
121
+ readonly rippleDisabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
122
+ constructor();
123
+ static ɵfac: i0.ɵɵFactoryDeclaration<HyRipple, never>;
124
+ static ɵdir: i0.ɵɵDirectiveDeclaration<HyRipple, "[hyRipple]", never, {
125
+ "rippleDisabled": {
126
+ "alias": "rippleDisabled";
127
+ "required": false;
128
+ "isSignal": true;
129
+ };
130
+ }, {}, never, never, true, never>;
131
+ }
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class HyKbd {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<HyKbd, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<HyKbd, "kbd[hyKbd]", never, {}, {}, never, ["*"], true, never>;
5
+ }
@@ -0,0 +1,67 @@
1
+ import { HyDialogRef } from "@hyalo/angular/dialog";
2
+ import * as i0 from "@angular/core";
3
+ export interface HyGalleryImage {
4
+ readonly src: string;
5
+ readonly alt: string;
6
+ readonly thumbnail?: string;
7
+ readonly caption?: string;
8
+ }
9
+ export interface HyLightboxOptions {
10
+ readonly index?: number;
11
+ readonly label?: string;
12
+ readonly closeLabel?: string;
13
+ readonly previousLabel?: string;
14
+ readonly nextLabel?: string;
15
+ }
16
+ interface GalleryData extends HyLightboxOptions {
17
+ readonly images: readonly HyGalleryImage[];
18
+ }
19
+ export declare class HyLightboxView {
20
+ protected readonly data: GalleryData;
21
+ protected readonly ref: HyDialogRef<any>;
22
+ protected readonly index: import("@angular/core").WritableSignal<number>;
23
+ protected readonly image: import("@angular/core").Signal<HyGalleryImage | undefined>;
24
+ protected move(delta: number): void;
25
+ protected onKey(event: KeyboardEvent): void;
26
+ static ɵfac: i0.ɵɵFactoryDeclaration<HyLightboxView, never>;
27
+ static ɵcmp: i0.ɵɵComponentDeclaration<HyLightboxView, "hy-lightbox-view", never, {}, {}, never, never, true, never>;
28
+ }
29
+ /** Opens a gallery using the kit dialog's focus trap, Escape handling and focus restore. */
30
+ export declare class HyLightbox {
31
+ private readonly dialog;
32
+ open(images: readonly HyGalleryImage[], options?: HyLightboxOptions): HyDialogRef | null;
33
+ static ɵfac: i0.ɵɵFactoryDeclaration<HyLightbox, never>;
34
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
35
+ }
36
+ export declare class HyGallery {
37
+ private readonly lightbox;
38
+ readonly images: import("@angular/core").InputSignal<readonly HyGalleryImage[]>;
39
+ readonly label: import("@angular/core").InputSignal<string>;
40
+ readonly openLabel: import("@angular/core").InputSignal<string>;
41
+ readonly options: import("@angular/core").InputSignal<HyLightboxOptions>;
42
+ open(index: number): void;
43
+ static ɵfac: i0.ɵɵFactoryDeclaration<HyGallery, never>;
44
+ static ɵcmp: i0.ɵɵComponentDeclaration<HyGallery, "hy-gallery", never, {
45
+ "images": {
46
+ "alias": "images";
47
+ "required": true;
48
+ "isSignal": true;
49
+ };
50
+ "label": {
51
+ "alias": "label";
52
+ "required": false;
53
+ "isSignal": true;
54
+ };
55
+ "openLabel": {
56
+ "alias": "openLabel";
57
+ "required": false;
58
+ "isSignal": true;
59
+ };
60
+ "options": {
61
+ "alias": "options";
62
+ "required": false;
63
+ "isSignal": true;
64
+ };
65
+ }, {}, never, never, true, never>;
66
+ }
67
+ export {};
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class HyLink {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<HyLink, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<HyLink, "a[hyLink]", never, {}, {}, never, ["*"], true, never>;
5
+ }
@@ -0,0 +1,30 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class HyList {
3
+ readonly label: import("@angular/core").InputSignal<string>;
4
+ static ɵfac: i0.ɵɵFactoryDeclaration<HyList, never>;
5
+ static ɵcmp: i0.ɵɵComponentDeclaration<HyList, "hy-list", never, {
6
+ "label": {
7
+ "alias": "label";
8
+ "required": true;
9
+ "isSignal": true;
10
+ };
11
+ }, {}, never, ["*"], true, never>;
12
+ }
13
+ export declare class HyListItem {
14
+ readonly heading: import("@angular/core").InputSignal<string>;
15
+ readonly description: import("@angular/core").InputSignal<string>;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<HyListItem, never>;
17
+ static ɵcmp: i0.ɵɵComponentDeclaration<HyListItem, "li[hyListItem]", never, {
18
+ "heading": {
19
+ "alias": "heading";
20
+ "required": true;
21
+ "isSignal": true;
22
+ };
23
+ "description": {
24
+ "alias": "description";
25
+ "required": false;
26
+ "isSignal": true;
27
+ };
28
+ }, {}, never, ["*"], true, never>;
29
+ }
30
+ export declare const HY_LIST: readonly [typeof HyList, typeof HyListItem];