@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,197 @@
1
+ import * as i0 from "@angular/core";
2
+ import { ChangeDetectionStrategy, Component, Directive, TemplateRef, booleanAttribute, computed, contentChildren, inject, input, signal } from "@angular/core";
3
+ import { NgTemplateOutlet } from "@angular/common";
4
+ import { HyMotion } from "@hyalo/angular/motion";
5
+ var HyMarqueeItem = class HyMarqueeItem {
6
+ template = inject(TemplateRef);
7
+ static ɵfac = i0.ɵɵngDeclareFactory({
8
+ minVersion: "12.0.0",
9
+ version: "22.2.3",
10
+ ngImport: i0,
11
+ type: HyMarqueeItem,
12
+ deps: [],
13
+ target: i0.ɵɵFactoryTarget.Directive
14
+ });
15
+ static ɵdir = i0.ɵɵngDeclareDirective({
16
+ minVersion: "14.0.0",
17
+ version: "22.2.3",
18
+ type: HyMarqueeItem,
19
+ isStandalone: true,
20
+ selector: "ng-template[hyMarqueeItem]",
21
+ ngImport: i0
22
+ });
23
+ };
24
+ i0.ɵɵngDeclareClassMetadata({
25
+ minVersion: "12.0.0",
26
+ version: "22.2.3",
27
+ ngImport: i0,
28
+ type: HyMarqueeItem,
29
+ decorators: [{
30
+ type: Directive,
31
+ args: [{ selector: "ng-template[hyMarqueeItem]" }]
32
+ }]
33
+ });
34
+ var HyMarquee = class HyMarquee {
35
+ motion = inject(HyMotion);
36
+ label = input("Partners", ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
37
+ duration = input("30s", ...ngDevMode ? [{ debugName: "duration" }] : /* istanbul ignore next */ []);
38
+ reverse = input(false, {
39
+ ...ngDevMode ? { debugName: "reverse" } : /* istanbul ignore next */ {},
40
+ transform: booleanAttribute
41
+ });
42
+ pauseLabel = input("Pause animation", ...ngDevMode ? [{ debugName: "pauseLabel" }] : /* istanbul ignore next */ []);
43
+ playLabel = input("Play animation", ...ngDevMode ? [{ debugName: "playLabel" }] : /* istanbul ignore next */ []);
44
+ paused = signal(false, ...ngDevMode ? [{ debugName: "paused" }] : /* istanbul ignore next */ []);
45
+ motionEnabled = computed(() => this.motion.enabled(), ...ngDevMode ? [{ debugName: "motionEnabled" }] : /* istanbul ignore next */ []);
46
+ running = computed(() => this.motion.enabled() && !this.paused(), ...ngDevMode ? [{ debugName: "running" }] : /* istanbul ignore next */ []);
47
+ items = contentChildren(HyMarqueeItem, ...ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []);
48
+ static ɵfac = i0.ɵɵngDeclareFactory({
49
+ minVersion: "12.0.0",
50
+ version: "22.2.3",
51
+ ngImport: i0,
52
+ type: HyMarquee,
53
+ deps: [],
54
+ target: i0.ɵɵFactoryTarget.Component
55
+ });
56
+ static ɵcmp = i0.ɵɵngDeclareComponent({
57
+ minVersion: "17.0.0",
58
+ version: "22.2.3",
59
+ type: HyMarquee,
60
+ isStandalone: true,
61
+ selector: "hy-marquee",
62
+ inputs: {
63
+ label: {
64
+ classPropertyName: "label",
65
+ publicName: "label",
66
+ isSignal: true,
67
+ isRequired: false,
68
+ transformFunction: null
69
+ },
70
+ duration: {
71
+ classPropertyName: "duration",
72
+ publicName: "duration",
73
+ isSignal: true,
74
+ isRequired: false,
75
+ transformFunction: null
76
+ },
77
+ reverse: {
78
+ classPropertyName: "reverse",
79
+ publicName: "reverse",
80
+ isSignal: true,
81
+ isRequired: false,
82
+ transformFunction: null
83
+ },
84
+ pauseLabel: {
85
+ classPropertyName: "pauseLabel",
86
+ publicName: "pauseLabel",
87
+ isSignal: true,
88
+ isRequired: false,
89
+ transformFunction: null
90
+ },
91
+ playLabel: {
92
+ classPropertyName: "playLabel",
93
+ publicName: "playLabel",
94
+ isSignal: true,
95
+ isRequired: false,
96
+ transformFunction: null
97
+ }
98
+ },
99
+ host: { properties: {
100
+ "attr.data-running": "running()",
101
+ "attr.data-motion": "motionEnabled()",
102
+ "style.--hy-marquee-duration": "duration()",
103
+ "attr.data-reverse": "reverse()"
104
+ } },
105
+ queries: [{
106
+ propertyName: "items",
107
+ predicate: HyMarqueeItem,
108
+ isSignal: true
109
+ }],
110
+ ngImport: i0,
111
+ template: "<div class=\"window\" role=\"group\" [attr.aria-label]=\"label()\">\r\n <div class=\"track\">\r\n <div class=\"group\">\r\n @for (item of items(); track item) {\r\n <ng-container [ngTemplateOutlet]=\"item.template\" />\r\n }\r\n </div>\r\n <div class=\"group copy\" aria-hidden=\"true\" inert>\r\n @for (item of items(); track item) {\r\n <ng-container [ngTemplateOutlet]=\"item.template\" />\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n@if (motionEnabled()) {\r\n <button type=\"button\" (click)=\"paused.set(!paused())\" [attr.aria-pressed]=\"paused()\">\r\n {{ paused() ? playLabel() : pauseLabel() }}\r\n </button>\r\n}\r\n<ng-content />\r\n",
112
+ styles: [":host{display:block}.window{overflow:clip}.track{display:flex;inline-size:max-content;animation:hy-marquee var(--hy-marquee-duration, 30s) linear infinite;animation-play-state:paused;direction:ltr}.group{display:flex;align-items:center;gap:var(--hy-space-9);padding-inline-end:var(--hy-space-9)}:host([data-running=\"true\"]) .track{animation-play-state:running}:host([data-reverse=\"true\"]) .track{animation-direction:reverse}:host(:focus-within) .track{animation-play-state:paused}@media(hover:hover){:host(:hover) .track{animation-play-state:paused}}@keyframes hy-marquee{to{transform:translate(-50%)}}button{margin-block-start:var(--hy-space-3);min-block-size:2rem;border:1px solid var(--hy-line);border-radius:var(--hy-radius-s);padding-inline:var(--hy-space-3);background:var(--hy-surface-2);color:var(--hy-ink);font:inherit;cursor:pointer}button:focus-visible{outline:2px solid var(--hy-primary);outline-offset:2px}@media(prefers-reduced-motion:reduce){.track{animation:none;inline-size:auto}.group{flex-wrap:wrap}.copy{display:none}}:host([data-running=\"false\"]) .window{overflow-x:auto}:host([data-motion=\"false\"]) .track{animation:none;inline-size:auto}:host([data-motion=\"false\"]) .group{flex-wrap:wrap}:host([data-motion=\"false\"]) .copy{display:none}\n"],
113
+ dependencies: [{
114
+ kind: "directive",
115
+ type: NgTemplateOutlet,
116
+ selector: "[ngTemplateOutlet]",
117
+ inputs: [
118
+ "ngTemplateOutletContext",
119
+ "ngTemplateOutlet",
120
+ "ngTemplateOutletInjector"
121
+ ]
122
+ }],
123
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
124
+ });
125
+ };
126
+ i0.ɵɵngDeclareClassMetadata({
127
+ minVersion: "12.0.0",
128
+ version: "22.2.3",
129
+ ngImport: i0,
130
+ type: HyMarquee,
131
+ decorators: [{
132
+ type: Component,
133
+ args: [{
134
+ selector: "hy-marquee",
135
+ imports: [NgTemplateOutlet],
136
+ changeDetection: ChangeDetectionStrategy.OnPush,
137
+ host: {
138
+ "[attr.data-running]": "running()",
139
+ "[attr.data-motion]": "motionEnabled()",
140
+ "[style.--hy-marquee-duration]": "duration()",
141
+ "[attr.data-reverse]": "reverse()"
142
+ },
143
+ template: "<div class=\"window\" role=\"group\" [attr.aria-label]=\"label()\">\r\n <div class=\"track\">\r\n <div class=\"group\">\r\n @for (item of items(); track item) {\r\n <ng-container [ngTemplateOutlet]=\"item.template\" />\r\n }\r\n </div>\r\n <div class=\"group copy\" aria-hidden=\"true\" inert>\r\n @for (item of items(); track item) {\r\n <ng-container [ngTemplateOutlet]=\"item.template\" />\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n@if (motionEnabled()) {\r\n <button type=\"button\" (click)=\"paused.set(!paused())\" [attr.aria-pressed]=\"paused()\">\r\n {{ paused() ? playLabel() : pauseLabel() }}\r\n </button>\r\n}\r\n<ng-content />\r\n",
144
+ styles: [":host{display:block}.window{overflow:clip}.track{display:flex;inline-size:max-content;animation:hy-marquee var(--hy-marquee-duration, 30s) linear infinite;animation-play-state:paused;direction:ltr}.group{display:flex;align-items:center;gap:var(--hy-space-9);padding-inline-end:var(--hy-space-9)}:host([data-running=\"true\"]) .track{animation-play-state:running}:host([data-reverse=\"true\"]) .track{animation-direction:reverse}:host(:focus-within) .track{animation-play-state:paused}@media(hover:hover){:host(:hover) .track{animation-play-state:paused}}@keyframes hy-marquee{to{transform:translate(-50%)}}button{margin-block-start:var(--hy-space-3);min-block-size:2rem;border:1px solid var(--hy-line);border-radius:var(--hy-radius-s);padding-inline:var(--hy-space-3);background:var(--hy-surface-2);color:var(--hy-ink);font:inherit;cursor:pointer}button:focus-visible{outline:2px solid var(--hy-primary);outline-offset:2px}@media(prefers-reduced-motion:reduce){.track{animation:none;inline-size:auto}.group{flex-wrap:wrap}.copy{display:none}}:host([data-running=\"false\"]) .window{overflow-x:auto}:host([data-motion=\"false\"]) .track{animation:none;inline-size:auto}:host([data-motion=\"false\"]) .group{flex-wrap:wrap}:host([data-motion=\"false\"]) .copy{display:none}\n"]
145
+ }]
146
+ }],
147
+ propDecorators: {
148
+ label: [{
149
+ type: i0.Input,
150
+ args: [{
151
+ isSignal: true,
152
+ alias: "label",
153
+ required: false
154
+ }]
155
+ }],
156
+ duration: [{
157
+ type: i0.Input,
158
+ args: [{
159
+ isSignal: true,
160
+ alias: "duration",
161
+ required: false
162
+ }]
163
+ }],
164
+ reverse: [{
165
+ type: i0.Input,
166
+ args: [{
167
+ isSignal: true,
168
+ alias: "reverse",
169
+ required: false
170
+ }]
171
+ }],
172
+ pauseLabel: [{
173
+ type: i0.Input,
174
+ args: [{
175
+ isSignal: true,
176
+ alias: "pauseLabel",
177
+ required: false
178
+ }]
179
+ }],
180
+ playLabel: [{
181
+ type: i0.Input,
182
+ args: [{
183
+ isSignal: true,
184
+ alias: "playLabel",
185
+ required: false
186
+ }]
187
+ }],
188
+ items: [{
189
+ type: i0.ContentChildren,
190
+ args: [i0.forwardRef(() => HyMarqueeItem), { isSignal: true }]
191
+ }]
192
+ }
193
+ });
194
+ const HY_MARQUEE = [HyMarquee, HyMarqueeItem];
195
+ export { HY_MARQUEE, HyMarquee, HyMarqueeItem };
196
+
197
+ //# sourceMappingURL=hyalo-angular-marquee.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hyalo-angular-marquee.mjs","names":[],"sources":["../../../projects/hyalo/marquee/marquee.ts","../../../projects/hyalo/marquee/marquee.html"],"sourcesContent":["import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n Directive,\r\n TemplateRef,\r\n booleanAttribute,\r\n computed,\r\n contentChildren,\r\n inject,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { HyMotion } from '@hyalo/angular/motion';\r\n@Directive({ selector: 'ng-template[hyMarqueeItem]' })\r\nexport class HyMarqueeItem {\r\n readonly template = inject<TemplateRef<unknown>>(TemplateRef);\r\n}\r\n@Component({\r\n selector: 'hy-marquee',\r\n imports: [NgTemplateOutlet],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[attr.data-running]': 'running()',\r\n '[attr.data-motion]': 'motionEnabled()',\r\n '[style.--hy-marquee-duration]': 'duration()',\r\n '[attr.data-reverse]': 'reverse()',\r\n },\r\n templateUrl: './marquee.html',\r\n styleUrl: './marquee.css',\r\n})\r\nexport class HyMarquee {\r\n private readonly motion = inject(HyMotion);\r\n readonly label = input('Partners');\r\n readonly duration = input('30s');\r\n readonly reverse = input(false, { transform: booleanAttribute });\r\n readonly pauseLabel = input('Pause animation');\r\n readonly playLabel = input('Play animation');\r\n protected readonly paused = signal(false);\r\n protected readonly motionEnabled = computed(() => this.motion.enabled());\r\n protected readonly running = computed(() => this.motion.enabled() && !this.paused());\r\n protected readonly items = contentChildren(HyMarqueeItem);\r\n}\r\nexport const HY_MARQUEE = [HyMarquee, HyMarqueeItem] as const;\r\n","<div class=\"window\" role=\"group\" [attr.aria-label]=\"label()\">\r\n <div class=\"track\">\r\n <div class=\"group\">\r\n @for (item of items(); track item) {\r\n <ng-container [ngTemplateOutlet]=\"item.template\" />\r\n }\r\n </div>\r\n <div class=\"group copy\" aria-hidden=\"true\" inert>\r\n @for (item of items(); track item) {\r\n <ng-container [ngTemplateOutlet]=\"item.template\" />\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n@if (motionEnabled()) {\r\n <button type=\"button\" (click)=\"paused.set(!paused())\" [attr.aria-pressed]=\"paused()\">\r\n {{ paused() ? playLabel() : pauseLabel() }}\r\n </button>\r\n}\r\n<ng-content />\r\n"],"mappings":"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"}
@@ -0,0 +1,423 @@
1
+ import * as i1 from "@angular/cdk/menu";
2
+ import { CdkMenu, CdkMenuItem, CdkMenuItemCheckbox, CdkMenuItemRadio, CdkMenuTrigger } from "@angular/cdk/menu";
3
+ import * as i0 from "@angular/core";
4
+ import { ChangeDetectionStrategy, Component, Directive, input, output } from "@angular/core";
5
+ import * as i2 from "@hyalo/angular/core";
6
+ import { HyMaterialDirective } from "@hyalo/angular/core";
7
+ import { HyButton } from "@hyalo/angular/button";
8
+ import { HyIcon } from "@hyalo/angular/icon";
9
+ var HyMenu = class HyMenu {
10
+ static ɵfac = i0.ɵɵngDeclareFactory({
11
+ minVersion: "12.0.0",
12
+ version: "22.2.3",
13
+ ngImport: i0,
14
+ type: HyMenu,
15
+ deps: [],
16
+ target: i0.ɵɵFactoryTarget.Component
17
+ });
18
+ static ɵcmp = i0.ɵɵngDeclareComponent({
19
+ minVersion: "14.0.0",
20
+ version: "22.2.3",
21
+ type: HyMenu,
22
+ isStandalone: true,
23
+ selector: "hy-menu",
24
+ hostDirectives: [{ directive: i1.CdkMenu }, {
25
+ directive: i2.HyMaterialDirective,
26
+ inputs: ["hyMaterial", "material"]
27
+ }],
28
+ ngImport: i0,
29
+ template: "<ng-content />\r\n",
30
+ styles: [":host{display:flex;flex-direction:column;gap:.125rem;min-inline-size:12rem;max-inline-size:min(24rem,calc(100vw - 2rem));max-block-size:min(32rem,calc(100dvh - 2rem));overflow:auto;box-sizing:border-box;padding:.375rem;border-radius:var(--hy-radius-m);border:1px solid var(--hy-line-strong);outline:none}\n"],
31
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
32
+ });
33
+ };
34
+ i0.ɵɵngDeclareClassMetadata({
35
+ minVersion: "12.0.0",
36
+ version: "22.2.3",
37
+ ngImport: i0,
38
+ type: HyMenu,
39
+ decorators: [{
40
+ type: Component,
41
+ args: [{
42
+ selector: "hy-menu",
43
+ hostDirectives: [CdkMenu, {
44
+ directive: HyMaterialDirective,
45
+ inputs: ["hyMaterial: material"]
46
+ }],
47
+ changeDetection: ChangeDetectionStrategy.OnPush,
48
+ template: "<ng-content />\r\n",
49
+ styles: [":host{display:flex;flex-direction:column;gap:.125rem;min-inline-size:12rem;max-inline-size:min(24rem,calc(100vw - 2rem));max-block-size:min(32rem,calc(100dvh - 2rem));overflow:auto;box-sizing:border-box;padding:.375rem;border-radius:var(--hy-radius-m);border:1px solid var(--hy-line-strong);outline:none}\n"]
50
+ }]
51
+ }]
52
+ });
53
+ var HyMenuTrigger = class HyMenuTrigger {
54
+ static ɵfac = i0.ɵɵngDeclareFactory({
55
+ minVersion: "12.0.0",
56
+ version: "22.2.3",
57
+ ngImport: i0,
58
+ type: HyMenuTrigger,
59
+ deps: [],
60
+ target: i0.ɵɵFactoryTarget.Directive
61
+ });
62
+ static ɵdir = i0.ɵɵngDeclareDirective({
63
+ minVersion: "14.0.0",
64
+ version: "22.2.3",
65
+ type: HyMenuTrigger,
66
+ isStandalone: true,
67
+ selector: "[hyMenuTriggerFor]",
68
+ hostDirectives: [{
69
+ directive: i1.CdkMenuTrigger,
70
+ inputs: [
71
+ "cdkMenuTriggerFor",
72
+ "hyMenuTriggerFor",
73
+ "cdkMenuPosition",
74
+ "menuPosition",
75
+ "cdkMenuTriggerData",
76
+ "menuData"
77
+ ],
78
+ outputs: [
79
+ "cdkMenuOpened",
80
+ "menuOpened",
81
+ "cdkMenuClosed",
82
+ "menuClosed"
83
+ ]
84
+ }],
85
+ ngImport: i0
86
+ });
87
+ };
88
+ i0.ɵɵngDeclareClassMetadata({
89
+ minVersion: "12.0.0",
90
+ version: "22.2.3",
91
+ ngImport: i0,
92
+ type: HyMenuTrigger,
93
+ decorators: [{
94
+ type: Directive,
95
+ args: [{
96
+ selector: "[hyMenuTriggerFor]",
97
+ hostDirectives: [{
98
+ directive: CdkMenuTrigger,
99
+ inputs: [
100
+ "cdkMenuTriggerFor: hyMenuTriggerFor",
101
+ "cdkMenuPosition: menuPosition",
102
+ "cdkMenuTriggerData: menuData"
103
+ ],
104
+ outputs: ["cdkMenuOpened: menuOpened", "cdkMenuClosed: menuClosed"]
105
+ }]
106
+ }]
107
+ }]
108
+ });
109
+ var HyMenuItem = class HyMenuItem {
110
+ static ɵfac = i0.ɵɵngDeclareFactory({
111
+ minVersion: "12.0.0",
112
+ version: "22.2.3",
113
+ ngImport: i0,
114
+ type: HyMenuItem,
115
+ deps: [],
116
+ target: i0.ɵɵFactoryTarget.Component
117
+ });
118
+ static ɵcmp = i0.ɵɵngDeclareComponent({
119
+ minVersion: "14.0.0",
120
+ version: "22.2.3",
121
+ type: HyMenuItem,
122
+ isStandalone: true,
123
+ selector: "button[hyMenuItem],a[hyMenuItem]",
124
+ hostDirectives: [{
125
+ directive: i1.CdkMenuItem,
126
+ inputs: [
127
+ "cdkMenuItemDisabled",
128
+ "disabled",
129
+ "cdkMenuitemTypeaheadLabel",
130
+ "typeaheadLabel"
131
+ ],
132
+ outputs: ["cdkMenuItemTriggered", "triggered"]
133
+ }],
134
+ ngImport: i0,
135
+ template: "<ng-content />",
136
+ isInline: true,
137
+ styles: [":host{display:flex;align-items:center;gap:.75rem;inline-size:100%;min-block-size:44px;padding:.5rem .75rem;border:0;border-radius:var(--hy-radius-s);background:transparent;color:var(--hy-ink);font:inherit;text-align:start;text-decoration:none;cursor:pointer;box-sizing:border-box}:host(:focus){outline:2px solid var(--hy-primary);outline-offset:-2px;background:var(--hy-primary-wash)}:host(:hover){background:var(--hy-surface-3)}:host([aria-disabled=true]){opacity:.45;cursor:default}:host([aria-checked=true]){background:var(--hy-primary-wash)}:host([aria-checked=true]):after{content:\"\";inline-size:.4rem;block-size:.7rem;border:solid currentColor;border-width:0 2px 2px 0;transform:rotate(45deg);margin-inline-start:auto}\n"],
138
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
139
+ });
140
+ };
141
+ i0.ɵɵngDeclareClassMetadata({
142
+ minVersion: "12.0.0",
143
+ version: "22.2.3",
144
+ ngImport: i0,
145
+ type: HyMenuItem,
146
+ decorators: [{
147
+ type: Component,
148
+ args: [{
149
+ selector: "button[hyMenuItem],a[hyMenuItem]",
150
+ hostDirectives: [{
151
+ directive: CdkMenuItem,
152
+ inputs: ["cdkMenuItemDisabled: disabled", "cdkMenuitemTypeaheadLabel: typeaheadLabel"],
153
+ outputs: ["cdkMenuItemTriggered: triggered"]
154
+ }],
155
+ changeDetection: ChangeDetectionStrategy.OnPush,
156
+ template: "<ng-content />",
157
+ styles: [":host{display:flex;align-items:center;gap:.75rem;inline-size:100%;min-block-size:44px;padding:.5rem .75rem;border:0;border-radius:var(--hy-radius-s);background:transparent;color:var(--hy-ink);font:inherit;text-align:start;text-decoration:none;cursor:pointer;box-sizing:border-box}:host(:focus){outline:2px solid var(--hy-primary);outline-offset:-2px;background:var(--hy-primary-wash)}:host(:hover){background:var(--hy-surface-3)}:host([aria-disabled=true]){opacity:.45;cursor:default}:host([aria-checked=true]){background:var(--hy-primary-wash)}:host([aria-checked=true]):after{content:\"\";inline-size:.4rem;block-size:.7rem;border:solid currentColor;border-width:0 2px 2px 0;transform:rotate(45deg);margin-inline-start:auto}\n"]
158
+ }]
159
+ }]
160
+ });
161
+ var HyMenuCheckbox = class HyMenuCheckbox {
162
+ static ɵfac = i0.ɵɵngDeclareFactory({
163
+ minVersion: "12.0.0",
164
+ version: "22.2.3",
165
+ ngImport: i0,
166
+ type: HyMenuCheckbox,
167
+ deps: [],
168
+ target: i0.ɵɵFactoryTarget.Component
169
+ });
170
+ static ɵcmp = i0.ɵɵngDeclareComponent({
171
+ minVersion: "14.0.0",
172
+ version: "22.2.3",
173
+ type: HyMenuCheckbox,
174
+ isStandalone: true,
175
+ selector: "button[hyMenuCheckbox]",
176
+ hostDirectives: [{
177
+ directive: i1.CdkMenuItemCheckbox,
178
+ inputs: [
179
+ "cdkMenuItemDisabled",
180
+ "disabled",
181
+ "cdkMenuItemChecked",
182
+ "checked"
183
+ ],
184
+ outputs: ["cdkMenuItemTriggered", "triggered"]
185
+ }],
186
+ ngImport: i0,
187
+ template: "<ng-content />",
188
+ isInline: true,
189
+ styles: [":host{display:flex;align-items:center;gap:.75rem;inline-size:100%;min-block-size:44px;padding:.5rem .75rem;border:0;border-radius:var(--hy-radius-s);background:transparent;color:var(--hy-ink);font:inherit;text-align:start;text-decoration:none;cursor:pointer;box-sizing:border-box}:host(:focus){outline:2px solid var(--hy-primary);outline-offset:-2px;background:var(--hy-primary-wash)}:host(:hover){background:var(--hy-surface-3)}:host([aria-disabled=true]){opacity:.45;cursor:default}:host([aria-checked=true]){background:var(--hy-primary-wash)}:host([aria-checked=true]):after{content:\"\";inline-size:.4rem;block-size:.7rem;border:solid currentColor;border-width:0 2px 2px 0;transform:rotate(45deg);margin-inline-start:auto}\n"],
190
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
191
+ });
192
+ };
193
+ i0.ɵɵngDeclareClassMetadata({
194
+ minVersion: "12.0.0",
195
+ version: "22.2.3",
196
+ ngImport: i0,
197
+ type: HyMenuCheckbox,
198
+ decorators: [{
199
+ type: Component,
200
+ args: [{
201
+ selector: "button[hyMenuCheckbox]",
202
+ hostDirectives: [{
203
+ directive: CdkMenuItemCheckbox,
204
+ inputs: ["cdkMenuItemDisabled: disabled", "cdkMenuItemChecked: checked"],
205
+ outputs: ["cdkMenuItemTriggered: triggered"]
206
+ }],
207
+ changeDetection: ChangeDetectionStrategy.OnPush,
208
+ template: "<ng-content />",
209
+ styles: [":host{display:flex;align-items:center;gap:.75rem;inline-size:100%;min-block-size:44px;padding:.5rem .75rem;border:0;border-radius:var(--hy-radius-s);background:transparent;color:var(--hy-ink);font:inherit;text-align:start;text-decoration:none;cursor:pointer;box-sizing:border-box}:host(:focus){outline:2px solid var(--hy-primary);outline-offset:-2px;background:var(--hy-primary-wash)}:host(:hover){background:var(--hy-surface-3)}:host([aria-disabled=true]){opacity:.45;cursor:default}:host([aria-checked=true]){background:var(--hy-primary-wash)}:host([aria-checked=true]):after{content:\"\";inline-size:.4rem;block-size:.7rem;border:solid currentColor;border-width:0 2px 2px 0;transform:rotate(45deg);margin-inline-start:auto}\n"]
210
+ }]
211
+ }]
212
+ });
213
+ var HyMenuRadio = class HyMenuRadio {
214
+ static ɵfac = i0.ɵɵngDeclareFactory({
215
+ minVersion: "12.0.0",
216
+ version: "22.2.3",
217
+ ngImport: i0,
218
+ type: HyMenuRadio,
219
+ deps: [],
220
+ target: i0.ɵɵFactoryTarget.Component
221
+ });
222
+ static ɵcmp = i0.ɵɵngDeclareComponent({
223
+ minVersion: "14.0.0",
224
+ version: "22.2.3",
225
+ type: HyMenuRadio,
226
+ isStandalone: true,
227
+ selector: "button[hyMenuRadio]",
228
+ hostDirectives: [{
229
+ directive: i1.CdkMenuItemRadio,
230
+ inputs: [
231
+ "cdkMenuItemDisabled",
232
+ "disabled",
233
+ "cdkMenuItemChecked",
234
+ "checked"
235
+ ],
236
+ outputs: ["cdkMenuItemTriggered", "triggered"]
237
+ }],
238
+ ngImport: i0,
239
+ template: "<ng-content />",
240
+ isInline: true,
241
+ styles: [":host{display:flex;align-items:center;gap:.75rem;inline-size:100%;min-block-size:44px;padding:.5rem .75rem;border:0;border-radius:var(--hy-radius-s);background:transparent;color:var(--hy-ink);font:inherit;text-align:start;text-decoration:none;cursor:pointer;box-sizing:border-box}:host(:focus){outline:2px solid var(--hy-primary);outline-offset:-2px;background:var(--hy-primary-wash)}:host(:hover){background:var(--hy-surface-3)}:host([aria-disabled=true]){opacity:.45;cursor:default}:host([aria-checked=true]){background:var(--hy-primary-wash)}:host([aria-checked=true]):after{content:\"\";inline-size:.4rem;block-size:.7rem;border:solid currentColor;border-width:0 2px 2px 0;transform:rotate(45deg);margin-inline-start:auto}\n"],
242
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
243
+ });
244
+ };
245
+ i0.ɵɵngDeclareClassMetadata({
246
+ minVersion: "12.0.0",
247
+ version: "22.2.3",
248
+ ngImport: i0,
249
+ type: HyMenuRadio,
250
+ decorators: [{
251
+ type: Component,
252
+ args: [{
253
+ selector: "button[hyMenuRadio]",
254
+ hostDirectives: [{
255
+ directive: CdkMenuItemRadio,
256
+ inputs: ["cdkMenuItemDisabled: disabled", "cdkMenuItemChecked: checked"],
257
+ outputs: ["cdkMenuItemTriggered: triggered"]
258
+ }],
259
+ changeDetection: ChangeDetectionStrategy.OnPush,
260
+ template: "<ng-content />",
261
+ styles: [":host{display:flex;align-items:center;gap:.75rem;inline-size:100%;min-block-size:44px;padding:.5rem .75rem;border:0;border-radius:var(--hy-radius-s);background:transparent;color:var(--hy-ink);font:inherit;text-align:start;text-decoration:none;cursor:pointer;box-sizing:border-box}:host(:focus){outline:2px solid var(--hy-primary);outline-offset:-2px;background:var(--hy-primary-wash)}:host(:hover){background:var(--hy-surface-3)}:host([aria-disabled=true]){opacity:.45;cursor:default}:host([aria-checked=true]){background:var(--hy-primary-wash)}:host([aria-checked=true]):after{content:\"\";inline-size:.4rem;block-size:.7rem;border:solid currentColor;border-width:0 2px 2px 0;transform:rotate(45deg);margin-inline-start:auto}\n"]
262
+ }]
263
+ }]
264
+ });
265
+ var HySplitButton = class HySplitButton {
266
+ label = input.required(...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
267
+ menu = input.required(...ngDevMode ? [{ debugName: "menu" }] : /* istanbul ignore next */ []);
268
+ menuLabel = input("More actions", ...ngDevMode ? [{ debugName: "menuLabel" }] : /* istanbul ignore next */ []);
269
+ disabled = input(false, ...ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []);
270
+ activated = output();
271
+ static ɵfac = i0.ɵɵngDeclareFactory({
272
+ minVersion: "12.0.0",
273
+ version: "22.2.3",
274
+ ngImport: i0,
275
+ type: HySplitButton,
276
+ deps: [],
277
+ target: i0.ɵɵFactoryTarget.Component
278
+ });
279
+ static ɵcmp = i0.ɵɵngDeclareComponent({
280
+ minVersion: "17.1.0",
281
+ version: "22.2.3",
282
+ type: HySplitButton,
283
+ isStandalone: true,
284
+ selector: "hy-split-button",
285
+ inputs: {
286
+ label: {
287
+ classPropertyName: "label",
288
+ publicName: "label",
289
+ isSignal: true,
290
+ isRequired: true,
291
+ transformFunction: null
292
+ },
293
+ menu: {
294
+ classPropertyName: "menu",
295
+ publicName: "menu",
296
+ isSignal: true,
297
+ isRequired: true,
298
+ transformFunction: null
299
+ },
300
+ menuLabel: {
301
+ classPropertyName: "menuLabel",
302
+ publicName: "menuLabel",
303
+ isSignal: true,
304
+ isRequired: false,
305
+ transformFunction: null
306
+ },
307
+ disabled: {
308
+ classPropertyName: "disabled",
309
+ publicName: "disabled",
310
+ isSignal: true,
311
+ isRequired: false,
312
+ transformFunction: null
313
+ }
314
+ },
315
+ outputs: { activated: "activated" },
316
+ ngImport: i0,
317
+ template: "<button hyButton type=\"button\" [disabled]=\"disabled()\" (click)=\"activated.emit()\">{{label()}}</button><button hyButton type=\"button\" [disabled]=\"disabled()\" [hyMenuTriggerFor]=\"menu()\" [attr.aria-label]=\"menuLabel()\"><hy-icon class=\"chevron\" name=\"chevron-down\" size=\"1rem\" /></button>",
318
+ isInline: true,
319
+ styles: [":host{display:inline-flex;gap:1px}button:first-child{border-start-end-radius:0;border-end-end-radius:0}button:last-child{border-start-start-radius:0;border-end-start-radius:0;min-inline-size:44px}.chevron{transition:rotate var(--hy-dur-quick) var(--hy-ease-out)}button[aria-expanded=true] .chevron{rotate:180deg}@media(prefers-reduced-motion:reduce){.chevron{transition:none}}\n"],
320
+ dependencies: [
321
+ {
322
+ kind: "component",
323
+ type: HyButton,
324
+ selector: "button[hyButton], a[hyButton]",
325
+ inputs: [
326
+ "variant",
327
+ "size",
328
+ "tone",
329
+ "iconOnly",
330
+ "loading",
331
+ "disabled"
332
+ ]
333
+ },
334
+ {
335
+ kind: "directive",
336
+ type: HyMenuTrigger,
337
+ selector: "[hyMenuTriggerFor]"
338
+ },
339
+ {
340
+ kind: "component",
341
+ type: HyIcon,
342
+ selector: "hy-icon",
343
+ inputs: [
344
+ "name",
345
+ "icon",
346
+ "label",
347
+ "size",
348
+ "strokeWidth"
349
+ ]
350
+ }
351
+ ],
352
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
353
+ });
354
+ };
355
+ i0.ɵɵngDeclareClassMetadata({
356
+ minVersion: "12.0.0",
357
+ version: "22.2.3",
358
+ ngImport: i0,
359
+ type: HySplitButton,
360
+ decorators: [{
361
+ type: Component,
362
+ args: [{
363
+ selector: "hy-split-button",
364
+ imports: [
365
+ HyButton,
366
+ HyMenuTrigger,
367
+ HyIcon
368
+ ],
369
+ changeDetection: ChangeDetectionStrategy.OnPush,
370
+ template: "<button hyButton type=\"button\" [disabled]=\"disabled()\" (click)=\"activated.emit()\">{{label()}}</button><button hyButton type=\"button\" [disabled]=\"disabled()\" [hyMenuTriggerFor]=\"menu()\" [attr.aria-label]=\"menuLabel()\"><hy-icon class=\"chevron\" name=\"chevron-down\" size=\"1rem\" /></button>",
371
+ styles: [":host{display:inline-flex;gap:1px}button:first-child{border-start-end-radius:0;border-end-end-radius:0}button:last-child{border-start-start-radius:0;border-end-start-radius:0;min-inline-size:44px}.chevron{transition:rotate var(--hy-dur-quick) var(--hy-ease-out)}button[aria-expanded=true] .chevron{rotate:180deg}@media(prefers-reduced-motion:reduce){.chevron{transition:none}}\n"]
372
+ }]
373
+ }],
374
+ propDecorators: {
375
+ label: [{
376
+ type: i0.Input,
377
+ args: [{
378
+ isSignal: true,
379
+ alias: "label",
380
+ required: true
381
+ }]
382
+ }],
383
+ menu: [{
384
+ type: i0.Input,
385
+ args: [{
386
+ isSignal: true,
387
+ alias: "menu",
388
+ required: true
389
+ }]
390
+ }],
391
+ menuLabel: [{
392
+ type: i0.Input,
393
+ args: [{
394
+ isSignal: true,
395
+ alias: "menuLabel",
396
+ required: false
397
+ }]
398
+ }],
399
+ disabled: [{
400
+ type: i0.Input,
401
+ args: [{
402
+ isSignal: true,
403
+ alias: "disabled",
404
+ required: false
405
+ }]
406
+ }],
407
+ activated: [{
408
+ type: i0.Output,
409
+ args: ["activated"]
410
+ }]
411
+ }
412
+ });
413
+ const HY_MENU = [
414
+ HyMenu,
415
+ HyMenuItem,
416
+ HyMenuTrigger,
417
+ HyMenuCheckbox,
418
+ HyMenuRadio,
419
+ HySplitButton
420
+ ];
421
+ export { HY_MENU, HyMenu, HyMenuCheckbox, HyMenuItem, HyMenuRadio, HyMenuTrigger, HySplitButton };
422
+
423
+ //# sourceMappingURL=hyalo-angular-menu.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hyalo-angular-menu.mjs","names":[],"sources":["../../../projects/hyalo/menu/menu.ts","../../../projects/hyalo/menu/menu.html"],"sourcesContent":["import {\n CdkMenu,\n CdkMenuItem,\n CdkMenuItemCheckbox,\n CdkMenuItemRadio,\n CdkMenuTrigger,\n} from '@angular/cdk/menu';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n TemplateRef,\n input,\n output,\n} from '@angular/core';\nimport { HyMaterialDirective } from '@hyalo/angular/core';\nimport { HyButton } from '@hyalo/angular/button';\nimport { HyIcon } from '@hyalo/angular/icon';\n@Component({\n selector: 'hy-menu',\n hostDirectives: [CdkMenu, { directive: HyMaterialDirective, inputs: ['hyMaterial: material'] }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './menu.html',\n styleUrl: './menu.css',\n})\nexport class HyMenu {}\n@Directive({\n selector: '[hyMenuTriggerFor]',\n hostDirectives: [\n {\n directive: CdkMenuTrigger,\n inputs: [\n 'cdkMenuTriggerFor: hyMenuTriggerFor',\n 'cdkMenuPosition: menuPosition',\n 'cdkMenuTriggerData: menuData',\n ],\n outputs: ['cdkMenuOpened: menuOpened', 'cdkMenuClosed: menuClosed'],\n },\n ],\n})\nexport class HyMenuTrigger {}\nconst itemStyles =\n ':host{display:flex;align-items:center;gap:.75rem;inline-size:100%;min-block-size:44px;padding:.5rem .75rem;border:0;border-radius:var(--hy-radius-s);background:transparent;color:var(--hy-ink);font:inherit;text-align:start;text-decoration:none;cursor:pointer;box-sizing:border-box}:host(:focus){outline:2px solid var(--hy-primary);outline-offset:-2px;background:var(--hy-primary-wash)}:host(:hover){background:var(--hy-surface-3)}:host([aria-disabled=true]){opacity:.45;cursor:default}:host([aria-checked=true]){background:var(--hy-primary-wash)}:host([aria-checked=true])::after{content:\"\";inline-size:.4rem;block-size:.7rem;border:solid currentColor;border-width:0 2px 2px 0;transform:rotate(45deg);margin-inline-start:auto}';\n@Component({\n // Native elements preserve link, list, key, and button semantics.\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[hyMenuItem],a[hyMenuItem]',\n hostDirectives: [\n {\n directive: CdkMenuItem,\n inputs: ['cdkMenuItemDisabled: disabled', 'cdkMenuitemTypeaheadLabel: typeaheadLabel'],\n outputs: ['cdkMenuItemTriggered: triggered'],\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content />',\n styles: itemStyles,\n})\nexport class HyMenuItem {}\n@Component({\n // Native elements preserve link, list, key, and button semantics.\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[hyMenuCheckbox]',\n hostDirectives: [\n {\n directive: CdkMenuItemCheckbox,\n inputs: ['cdkMenuItemDisabled: disabled', 'cdkMenuItemChecked: checked'],\n outputs: ['cdkMenuItemTriggered: triggered'],\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content />',\n styles: itemStyles,\n})\nexport class HyMenuCheckbox {}\n@Component({\n // Native elements preserve link, list, key, and button semantics.\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[hyMenuRadio]',\n hostDirectives: [\n {\n directive: CdkMenuItemRadio,\n inputs: ['cdkMenuItemDisabled: disabled', 'cdkMenuItemChecked: checked'],\n outputs: ['cdkMenuItemTriggered: triggered'],\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: '<ng-content />',\n styles: itemStyles,\n})\nexport class HyMenuRadio {}\n@Component({\n selector: 'hy-split-button',\n imports: [HyButton, HyMenuTrigger, HyIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n template:\n '<button hyButton type=\"button\" [disabled]=\"disabled()\" (click)=\"activated.emit()\">{{label()}}</button><button hyButton type=\"button\" [disabled]=\"disabled()\" [hyMenuTriggerFor]=\"menu()\" [attr.aria-label]=\"menuLabel()\"><hy-icon class=\"chevron\" name=\"chevron-down\" size=\"1rem\" /></button>',\n styles:\n ':host{display:inline-flex;gap:1px}button:first-child{border-start-end-radius:0;border-end-end-radius:0}button:last-child{border-start-start-radius:0;border-end-start-radius:0;min-inline-size:44px}.chevron{transition:rotate var(--hy-dur-quick) var(--hy-ease-out)}button[aria-expanded=true] .chevron{rotate:180deg}@media(prefers-reduced-motion:reduce){.chevron{transition:none}}',\n})\nexport class HySplitButton {\n readonly label = input.required<string>();\n readonly menu = input.required<TemplateRef<unknown>>();\n readonly menuLabel = input('More actions');\n readonly disabled = input(false);\n readonly activated = output<void>();\n}\nexport const HY_MENU = [\n HyMenu,\n HyMenuItem,\n HyMenuTrigger,\n HyMenuCheckbox,\n HyMenuRadio,\n HySplitButton,\n] as const;\n","<ng-content />\r\n"],"mappings":"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"}