@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 @@
1
+ {"version":3,"file":"hyalo-angular-blocks.mjs","names":[],"sources":["../../../projects/hyalo/blocks/blocks.ts","../../../projects/hyalo/blocks/hero-block.html","../../../projects/hyalo/blocks/pricing-block.html","../../../projects/hyalo/blocks/feature-block.html","../../../projects/hyalo/blocks/testimonials-block.html","../../../projects/hyalo/blocks/product-block.html","../../../projects/hyalo/blocks/dashboard-block.html","../../../projects/hyalo/blocks/kpi-strip-block.html","../../../projects/hyalo/blocks/activity-block.html","../../../projects/hyalo/blocks/filter-toolbar-block.html"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input, model } from '@angular/core';\nimport { HyButton } from '@hyalo/angular/button';\nimport { HyCard } from '@hyalo/angular/card';\nimport { HyNumberTicker } from '@hyalo/angular/number-ticker';\nimport { HyStat } from '@hyalo/angular/stat';\nimport { HyFilterBar, type HyFilterField, type HyFilterToken } from '@hyalo/angular/filter';\n\n@Component({\n selector: 'hy-hero-block',\n imports: [HyButton],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './hero-block.html',\n styleUrl: './hero-block.css',\n})\nexport class HyHeroBlock {\n readonly eyebrow = input('');\n readonly heading = input.required<string>();\n readonly description = input('');\n readonly actionHref = input('');\n readonly actionLabel = input('Get started');\n}\nexport interface HyPricingPlan {\n readonly id: string;\n readonly name: string;\n readonly description: string;\n readonly monthly: number;\n readonly annual: number;\n readonly features: readonly string[];\n readonly href: string;\n readonly featured?: boolean;\n}\n@Component({\n selector: 'hy-pricing-block',\n imports: [HyCard, HyButton, HyNumberTicker],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './pricing-block.html',\n styleUrl: './pricing-block.css',\n})\nexport class HyPricingBlock {\n readonly heading = input('Plans for your next chapter');\n readonly plans = input.required<readonly HyPricingPlan[]>();\n readonly billing = model<'monthly' | 'annual'>('monthly');\n readonly locale = input<string>();\n readonly currencyFormat = input<Intl.NumberFormatOptions>({\n style: 'currency',\n currency: 'USD',\n maximumFractionDigits: 0,\n });\n readonly monthlyLabel = input('Monthly');\n readonly annualLabel = input('Annual');\n readonly billingLabel = input('Billing period');\n readonly actionLabel = input('Choose');\n}\nexport interface HyFeature {\n readonly id: string;\n readonly title: string;\n readonly description: string;\n}\n@Component({\n selector: 'hy-feature-block',\n imports: [HyCard],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './feature-block.html',\n styleUrl: './feature-block.css',\n})\nexport class HyFeatureBlock {\n readonly heading = input('Built for the way you work');\n readonly features = input.required<readonly HyFeature[]>();\n}\nexport interface HyTestimonial {\n readonly id: string;\n readonly quote: string;\n readonly author: string;\n readonly role: string;\n}\n@Component({\n selector: 'hy-testimonials-block',\n imports: [HyCard],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './testimonials-block.html',\n styleUrl: './testimonials-block.css',\n})\nexport class HyTestimonialsBlock {\n readonly heading = input('Trusted by thoughtful teams');\n readonly items = input.required<readonly HyTestimonial[]>();\n}\n@Component({\n selector: 'hy-product-block',\n imports: [HyButton],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './product-block.html',\n styleUrl: './product-block.css',\n})\nexport class HyProductBlock {\n readonly category = input('');\n readonly heading = input.required<string>();\n readonly description = input('');\n readonly price = input.required<string>();\n readonly actionHref = input.required<string>();\n readonly actionLabel = input('View product');\n}\n@Component({\n selector: 'hy-dashboard-block',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './dashboard-block.html',\n styleUrl: './dashboard-block.css',\n})\nexport class HyDashboardBlock {}\nexport interface HyKpi {\n readonly id: string;\n readonly label: string;\n readonly value: number;\n readonly trend?: string;\n readonly prefix?: string;\n readonly suffix?: string;\n}\n@Component({\n selector: 'hy-kpi-strip-block',\n imports: [HyStat],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './kpi-strip-block.html',\n styleUrl: './kpi-strip-block.css',\n})\nexport class HyKpiStripBlock {\n readonly items = input.required<readonly HyKpi[]>();\n readonly locale = input<string>();\n}\nexport interface HyActivity {\n readonly id: string;\n readonly heading: string;\n readonly description: string;\n readonly time: string;\n readonly dateTime: string;\n}\n@Component({\n selector: 'hy-activity-block',\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './activity-block.html',\n styleUrl: './activity-block.css',\n})\nexport class HyActivityBlock {\n readonly heading = input('Recent activity');\n readonly items = input.required<readonly HyActivity[]>();\n}\n@Component({\n selector: 'hy-filter-toolbar-block',\n imports: [HyFilterBar],\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './filter-toolbar-block.html',\n})\nexport class HyFilterToolbarBlock<C extends HyFilterToken> {\n readonly fields = input.required<readonly HyFilterField<C>[]>();\n readonly clauses = model<readonly C[]>([]);\n readonly label = input('Filter results');\n}\n","<section>\n <div>\n <p class=\"eyebrow\">{{ eyebrow() }}</p>\n <h2>{{ heading() }}</h2>\n <p>{{ description() }}</p>\n <div class=\"actions\">\n @if (actionHref()) {\n <a hyButton [href]=\"actionHref()\">{{ actionLabel() }}</a>\n }\n <ng-content select=\"[hyBlockActions]\" />\n </div>\n </div>\n <div class=\"stage\"><ng-content select=\"[hyBlockMedia]\" /></div>\n</section>\n","<section>\n <h2>{{ heading() }}</h2>\n <div class=\"billing\" role=\"group\" [attr.aria-label]=\"billingLabel()\">\n <button\n type=\"button\"\n [attr.aria-pressed]=\"billing() === 'monthly'\"\n (click)=\"billing.set('monthly')\"\n >\n {{ monthlyLabel() }}</button\n ><button\n type=\"button\"\n [attr.aria-pressed]=\"billing() === 'annual'\"\n (click)=\"billing.set('annual')\"\n >\n {{ annualLabel() }}\n </button>\n </div>\n <div class=\"plans\">\n @for (plan of plans(); track plan.id) {\n <hy-card material=\"tinted\" [class.featured]=\"plan.featured\"\n ><h3>{{ plan.name }}</h3>\n <p>{{ plan.description }}</p>\n <strong\n ><hy-number-ticker\n [value]=\"billing() === 'monthly' ? plan.monthly : plan.annual\"\n [locale]=\"locale()\"\n [format]=\"currencyFormat()\"\n /></strong>\n <p>{{ billing() === 'monthly' ? monthlyLabel() : annualLabel() }}</p>\n <ul>\n @for (feature of plan.features; track feature) {\n <li>{{ feature }}</li>\n }\n </ul>\n <a hyButton [href]=\"plan.href\">{{ actionLabel() }} {{ plan.name }}</a></hy-card\n >\n }\n </div>\n</section>\n","<section>\n <h2>{{ heading() }}</h2>\n <div class=\"grid\">\n @for (feature of features(); track feature.id) {\n <hy-card material=\"tinted\"\n ><h3>{{ feature.title }}</h3>\n <p>{{ feature.description }}</p></hy-card\n >\n }\n <ng-content />\n </div>\n</section>\n","<section>\n <h2>{{ heading() }}</h2>\n <div class=\"wall\">\n @for (item of items(); track item.id) {\n <hy-card material=\"tinted\"\n ><figure>\n <blockquote>{{ item.quote }}</blockquote>\n <figcaption>\n <strong>{{ item.author }}</strong\n ><span>{{ item.role }}</span>\n </figcaption>\n </figure></hy-card\n >\n }\n </div>\n</section>\n","<section>\n <div class=\"media\"><ng-content select=\"[hyBlockMedia]\" /></div>\n <div>\n <p>{{ category() }}</p>\n <h2>{{ heading() }}</h2>\n <p>{{ description() }}</p>\n <strong>{{ price() }}</strong>\n <div class=\"choices\"><ng-content select=\"[hyBlockOptions]\" /></div>\n <a hyButton [href]=\"actionHref()\">{{ actionLabel() }}</a\n ><ng-content />\n </div>\n</section>\n","<div class=\"shell\">\n <aside><ng-content select=\"[hyBlockSidebar]\" /></aside>\n <div class=\"main\">\n <header><ng-content select=\"[hyBlockToolbar]\" /></header>\n <ng-content />\n </div>\n</div>\n","<div class=\"strip\">\n @for (item of items(); track item.id) {\n <hy-stat\n [label]=\"item.label\"\n [value]=\"item.value\"\n [trend]=\"item.trend ?? ''\"\n [prefix]=\"item.prefix ?? ''\"\n [suffix]=\"item.suffix ?? ''\"\n [locale]=\"locale()\"\n />\n }\n</div>\n","<section>\n <h2>{{ heading() }}</h2>\n <ol>\n @for (item of items(); track item.id) {\n <li>\n <div>\n <strong>{{ item.heading }}</strong>\n <p>{{ item.description }}</p>\n </div>\n <time [attr.datetime]=\"item.dateTime\">{{ item.time }}</time>\n </li>\n }\n </ol>\n <ng-content />\n</section>\n","<hy-filter-bar\n [fields]=\"fields()\"\n [clauses]=\"clauses()\"\n (clausesChange)=\"clauses.set($event)\"\n [label]=\"label()\"\n ><ng-content\n/></hy-filter-bar>\n"],"mappings":";;;;;;;AAcA,IAAa,cAAb,MAAa,YAAW;CACb,UAAU,MAAM,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CACnB,UAAU,MAAM,SAAkB,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAClC,cAAc,MAAM,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,cAAA,CAAA,+BAAA,CAAA,CAAA;CACvB,aAAa,MAAM,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,aAAA,CAAA,+BAAA,CAAA,CAAA;CACtB,cAAc,MAAM,eAAc,GAAA,YAAA,CAAA,EAAA,WAAA,cAAA,CAAA,+BAAA,CAAA,CAAA;CALhC,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAW,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAX,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAW,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,aAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,YAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,aAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,UAAA;EAAA,UCdxB;EAcA,QAAA,CAAA,sfAAA;EAAA,cAAA,CAAA;GAAA,MAAA;GAAA,MDLY;GAAQ,UAAA;GAAA,QAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;GAAA;EAAA,CAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAKP,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAW,YAAA,CAAA;EAPvB,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAe,SAChB,CAAC,QAAQ;GAAC,iBACF,wBAAwB;GAAM,UAAA;GAAA,QAAA,CAAA,sfAAA;EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BjD,IAAa,iBAAb,MAAa,eAAc;CAChB,UAAU,MAAM,+BAA8B,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAC9C,QAAQ,MAAM,SAAoC,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAClD,UAAU,MAA4B,WAAU,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAChD,SAAS,MAAe,GAAA,YAAA,CAAA,QAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;CACxB,iBAAiB,MAAgC;EACxD,OAAO;EACP,UAAU;EACV,uBAAuB;CACxB,GAAC,GAAA,YAAA,CAAA,EAAA,WAAA,iBAAA,CAAA,+BAAA,CAAA,CAAA;CACO,eAAe,MAAM,WAAU,GAAA,YAAA,CAAA,EAAA,WAAA,eAAA,CAAA,+BAAA,CAAA,CAAA;CAC/B,cAAc,MAAM,UAAS,GAAA,YAAA,CAAA,EAAA,WAAA,cAAA,CAAA,+BAAA,CAAA,CAAA;CAC7B,eAAe,MAAM,kBAAiB,GAAA,YAAA,CAAA,EAAA,WAAA,eAAA,CAAA,+BAAA,CAAA,CAAA;CACtC,cAAc,MAAM,UAAS,GAAA,YAAA,CAAA,EAAA,WAAA,cAAA,CAAA,+BAAA,CAAA,CAAA;CAb3B,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAc,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAd,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAc,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,QAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,gBAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,cAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,aAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,cAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,aAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,SAAA,EAAA,SAAA,gBAAA;EAAA,UAAA;EAAA,UEtC3B;EAuCA,QAAA,CAAA,4pBAAA;EAAA,cAAA;GAAA;IAAA,MAAA;IAAA,MFNY;IAAM,UAAA;IAAA,QAAA,CAAA,SAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAQ,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;IAAA;GAAA;GAAA;IAAA,MAAA;IAAA,MAAE;IAAc,UAAA;IAAA,QAAA;KAAA;KAAA;KAAA;KAAA;KAAA;KAAA;IAAA;GAAA;EAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAK/B,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAc,YAAA,CAAA;EAP1B,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAkB,SACnB;IAAC;IAAQ;IAAU;GAAc;GAAC,iBAC1B,wBAAwB;GAAM,UAAA;GAAA,QAAA,CAAA,4pBAAA;EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BjD,IAAa,iBAAb,MAAa,eAAc;CAChB,UAAU,MAAM,8BAA6B,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAC7C,WAAW,MAAM,SAAgC,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;CAF/C,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAc,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAd,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAc,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,UAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,UAAA;EAAA,UGjE3B;EAYA,QAAA,CAAA,sSAAA;EAAA,cAAA,CAAA;GAAA,MAAA;GAAA,MHgDY;GAAM,UAAA;GAAA,QAAA,CAAA,SAAA;EAAA,CAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAKL,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAc,YAAA,CAAA;EAP1B,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAkB,SACnB,CAAC,MAAM;GAAC,iBACA,wBAAwB;GAAM,UAAA;GAAA,QAAA,CAAA,sSAAA;EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;AAqBjD,IAAa,sBAAb,MAAa,oBAAmB;CACrB,UAAU,MAAM,+BAA8B,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAC9C,QAAQ,MAAM,SAAoC,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAFhD,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAmB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAnB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAmB,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,UAAA;EAAA,UIlFhC;EAgBA,QAAA,CAAA,0SAAA;EAAA,cAAA,CAAA;GAAA,MAAA;GAAA,MJ6DY;GAAM,UAAA;GAAA,QAAA,CAAA,SAAA;EAAA,CAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAKL,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAmB,YAAA,CAAA;EAP/B,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAuB,SACxB,CAAC,MAAM;GAAC,iBACA,wBAAwB;GAAM,UAAA;GAAA,QAAA,CAAA,0SAAA;EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;AAejD,IAAa,iBAAb,MAAa,eAAc;CAChB,WAAW,MAAM,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;CACpB,UAAU,MAAM,SAAkB,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAClC,cAAc,MAAM,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,cAAA,CAAA,+BAAA,CAAA,CAAA;CACvB,QAAQ,MAAM,SAAkB,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAChC,aAAa,MAAM,SAAkB,GAAA,YAAA,CAAA,EAAA,WAAA,aAAA,CAAA,+BAAA,CAAA,CAAA;CACrC,cAAc,MAAM,gBAAe,GAAA,YAAA,CAAA,EAAA,WAAA,cAAA,CAAA,+BAAA,CAAA,CAAA;CANjC,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAc,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAd,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAc,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,UAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,aAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,YAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,aAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,UAAA;EAAA,UK7F3B;EAYA,QAAA,CAAA,6UAAA;EAAA,cAAA,CAAA;GAAA,MAAA;GAAA,ML4EY;GAAQ,UAAA;GAAA,QAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;GAAA;EAAA,CAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAKP,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAc,YAAA,CAAA;EAP1B,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAkB,SACnB,CAAC,QAAQ;GAAC,iBACF,wBAAwB;GAAM,UAAA;GAAA,QAAA,CAAA,6UAAA;EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBjD,IAAa,mBAAb,MAAa,iBAAgB;CAAhB,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAgB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAhB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAgB,cAAA;EAAA,UAAA;EAAA,UAAA;EAAA,UM3G7B;EAOA,QAAA,CAAA,+SAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;ANoGa,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAgB,YAAA,CAAA;EAN5B,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAoB,iBACb,wBAAwB;GAAM,UAAA;GAAA,QAAA,CAAA,+SAAA;EAAA,CAAA;;;AAoBjD,IAAa,kBAAb,MAAa,gBAAe;CACjB,QAAQ,MAAM,SAA4B,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAC1C,SAAS,MAAe,GAAA,YAAA,CAAA,QAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;CAFtB,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAe,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAf,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAe,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,QAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,UAAA;EAAA,UO3H5B;EAYA,QAAA,CAAA,wHAAA;EAAA,cAAA,CAAA;GAAA,MAAA;GAAA,MP0GY;GAAM,UAAA;GAAA,QAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;GAAA;EAAA,CAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAKL,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAe,YAAA,CAAA;EAP3B,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAoB,SACrB,CAAC,MAAM;GAAC,iBACA,wBAAwB;GAAM,UAAA;GAAA,QAAA,CAAA,wHAAA;EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;AAqBjD,IAAa,kBAAb,MAAa,gBAAe;CACjB,UAAU,MAAM,mBAAkB,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAClC,QAAQ,MAAM,SAAiC,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAF7C,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAe,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAf,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAe,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,UAAA;EAAA,UQ5I5B;EAeA,QAAA,CAAA,uQAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AR6Ha,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAe,YAAA,CAAA;EAN3B,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAmB,iBACZ,wBAAwB;GAAM,UAAA;GAAA,QAAA,CAAA,uQAAA;EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;AAcjD,IAAa,uBAAb,MAAa,qBAAoB;CACtB,SAAS,MAAM,SAAuC,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;CACtD,UAAU,MAAoB,CAAA,GAAG,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CACjC,QAAQ,MAAM,kBAAiB,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAH7B,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAoB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAApB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAoB,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,QAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,SAAA,EAAA,SAAA,gBAAA;EAAA,UAAA;EAAA,UStJjC;EAOA,cAAA,CAAA;GAAA,MAAA;GAAA,MT2IY;GAAW,UAAA;GAAA,QAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;IAAA;GAAA;GAAA,SAAA,CAAA,eAAA;EAAA,CAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAIV,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAoB,YAAA,CAAA;EANhC,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAyB,SAC1B,CAAC,WAAW;GAAC,iBACL,wBAAwB;GAAM,UAAA;EAAA,CAAA"}
@@ -0,0 +1,73 @@
1
+ import * as i0 from "@angular/core";
2
+ import { ChangeDetectionStrategy, Component, booleanAttribute, computed, inject, input } from "@angular/core";
3
+ import { HyMotion, injectHyVisibility } from "@hyalo/angular/motion";
4
+ var HyBorderBeam = class HyBorderBeam {
5
+ animated = input(false, {
6
+ ...ngDevMode ? { debugName: "animated" } : /* istanbul ignore next */ {},
7
+ transform: booleanAttribute
8
+ });
9
+ motion = inject(HyMotion);
10
+ visible = injectHyVisibility();
11
+ moving = computed(() => this.animated() && this.motion.enabled() && this.visible(), ...ngDevMode ? [{ debugName: "moving" }] : /* istanbul ignore next */ []);
12
+ static ɵfac = i0.ɵɵngDeclareFactory({
13
+ minVersion: "12.0.0",
14
+ version: "22.2.3",
15
+ ngImport: i0,
16
+ type: HyBorderBeam,
17
+ deps: [],
18
+ target: i0.ɵɵFactoryTarget.Component
19
+ });
20
+ static ɵcmp = i0.ɵɵngDeclareComponent({
21
+ minVersion: "17.1.0",
22
+ version: "22.2.3",
23
+ type: HyBorderBeam,
24
+ isStandalone: true,
25
+ selector: "hy-border-beam",
26
+ inputs: { animated: {
27
+ classPropertyName: "animated",
28
+ publicName: "animated",
29
+ isSignal: true,
30
+ isRequired: false,
31
+ transformFunction: null
32
+ } },
33
+ host: {
34
+ attributes: { "aria-hidden": "true" },
35
+ properties: { "class.moving": "moving()" }
36
+ },
37
+ ngImport: i0,
38
+ template: "",
39
+ isInline: true,
40
+ styles: [":host{display:block;position:absolute;inset:0;border:1px solid var(--hy-line-strong);border-radius:inherit;pointer-events:none;overflow:clip}:host:before{content:\"\";position:absolute;inset:-100%;background:conic-gradient(from 0deg,transparent 75%,var(--hy-primary),transparent);opacity:.45;animation:hy-beam 8s linear infinite;animation-play-state:paused;-webkit-mask-image:radial-gradient(ellipse,transparent 60%,black 62%);mask-image:radial-gradient(ellipse,transparent 60%,black 62%)}:host(.moving):before{animation-play-state:running}@keyframes hy-beam{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce),(forced-colors:active){:host:before{display:none}}\n"],
41
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
42
+ });
43
+ };
44
+ i0.ɵɵngDeclareClassMetadata({
45
+ minVersion: "12.0.0",
46
+ version: "22.2.3",
47
+ ngImport: i0,
48
+ type: HyBorderBeam,
49
+ decorators: [{
50
+ type: Component,
51
+ args: [{
52
+ selector: "hy-border-beam",
53
+ changeDetection: ChangeDetectionStrategy.OnPush,
54
+ host: {
55
+ "aria-hidden": "true",
56
+ "[class.moving]": "moving()"
57
+ },
58
+ template: "",
59
+ styles: [":host{display:block;position:absolute;inset:0;border:1px solid var(--hy-line-strong);border-radius:inherit;pointer-events:none;overflow:clip}:host:before{content:\"\";position:absolute;inset:-100%;background:conic-gradient(from 0deg,transparent 75%,var(--hy-primary),transparent);opacity:.45;animation:hy-beam 8s linear infinite;animation-play-state:paused;-webkit-mask-image:radial-gradient(ellipse,transparent 60%,black 62%);mask-image:radial-gradient(ellipse,transparent 60%,black 62%)}:host(.moving):before{animation-play-state:running}@keyframes hy-beam{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce),(forced-colors:active){:host:before{display:none}}\n"]
60
+ }]
61
+ }],
62
+ propDecorators: { animated: [{
63
+ type: i0.Input,
64
+ args: [{
65
+ isSignal: true,
66
+ alias: "animated",
67
+ required: false
68
+ }]
69
+ }] }
70
+ });
71
+ export { HyBorderBeam };
72
+
73
+ //# sourceMappingURL=hyalo-angular-border-beam.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hyalo-angular-border-beam.mjs","names":[],"sources":["../../../projects/hyalo/border-beam/border-beam.ts"],"sourcesContent":["import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n} from '@angular/core';\nimport { HyMotion, injectHyVisibility } from '@hyalo/angular/motion';\n@Component({\n selector: 'hy-border-beam',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'aria-hidden': 'true', '[class.moving]': 'moving()' },\n template: '',\n styleUrl: './border-beam.css',\n})\nexport class HyBorderBeam {\n readonly animated = input(false, { transform: booleanAttribute });\n private readonly motion = inject(HyMotion);\n private readonly visible = injectHyVisibility();\n protected readonly moving = computed(\n () => this.animated() && this.motion.enabled() && this.visible(),\n );\n}\n"],"mappings":";;;AAgBA,IAAa,eAAb,MAAa,aAAY;CACd,WAAW,MAAM,OAAK;EAAA,GAAA,YAAA,EAAA,WAAA,WAAA,+BAAA,CAAA;EAAI,WAAW;CAAgB,CAAA;CAC7C,SAAS,OAAO,QAAQ;CACxB,UAAU,mBAAkB;CAC1B,SAAS,eACpB,KAAK,SAAQ,KAAM,KAAK,OAAO,QAAO,KAAM,KAAK,QAAO,GAC/D,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;CANU,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAY,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAZ,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAY,cAAA;EAAA,UAAA;EAAA,QAAA,EAAA,UAAA;GAAA,mBAAA;GAAA,YAAA;GAAA,UAAA;GAAA,YAAA;GAAA,mBAAA;EAAA,EAAA;EAAA,MAAA;GAAA,YAAA,EAAA,eAAA,OAAA;GAAA,YAAA,EAAA,gBAAA,WAAA;EAAA;EAAA,UAAA;EAAA,UAHb;EAAE,UAAA;EAAA,QAAA,CAAA,wqBAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAGD,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAY,YAAA,CAAA;EAPxB,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAgB,iBACT,wBAAwB;GAAM,MACzC;IAAE,eAAe;IAAQ,kBAAkB;GAAU;GAAE,UACnD;GAAE,QAAA,CAAA,wqBAAA;EAAA,CAAA"}
@@ -0,0 +1,77 @@
1
+ import * as i0 from "@angular/core";
2
+ import { ChangeDetectionStrategy, Component, input } from "@angular/core";
3
+ var HyBreadcrumb = class HyBreadcrumb {
4
+ items = input.required(...ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []);
5
+ label = input("Breadcrumb", ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
6
+ static ɵfac = i0.ɵɵngDeclareFactory({
7
+ minVersion: "12.0.0",
8
+ version: "22.2.3",
9
+ ngImport: i0,
10
+ type: HyBreadcrumb,
11
+ deps: [],
12
+ target: i0.ɵɵFactoryTarget.Component
13
+ });
14
+ static ɵcmp = i0.ɵɵngDeclareComponent({
15
+ minVersion: "17.0.0",
16
+ version: "22.2.3",
17
+ type: HyBreadcrumb,
18
+ isStandalone: true,
19
+ selector: "hy-breadcrumb",
20
+ inputs: {
21
+ items: {
22
+ classPropertyName: "items",
23
+ publicName: "items",
24
+ isSignal: true,
25
+ isRequired: true,
26
+ transformFunction: null
27
+ },
28
+ label: {
29
+ classPropertyName: "label",
30
+ publicName: "label",
31
+ isSignal: true,
32
+ isRequired: false,
33
+ transformFunction: null
34
+ }
35
+ },
36
+ ngImport: i0,
37
+ template: "<nav [attr.aria-label]=\"label()\">\r\n <ol>\r\n @for (item of items(); track $index; let last = $last) {\r\n <li>\r\n @if (item.href && !last) {\r\n <a [href]=\"item.href\">{{ item.label }}</a>\r\n } @else {\r\n <span [attr.aria-current]=\"last ? 'page' : null\">{{ item.label }}</span>\r\n }\r\n @if (!last) {\r\n <span class=\"separator\" aria-hidden=\"true\">/</span>\r\n }\r\n </li>\r\n }\r\n </ol>\r\n</nav>\r\n",
38
+ styles: [":host{display:block}ol{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;list-style:none;margin:0;padding:0}li{display:flex;align-items:center;gap:.5rem}a{color:var(--hy-ink-2);text-underline-offset:.25em;padding-block:.5rem}span[aria-current]{color:var(--hy-ink);font-weight:600}.separator{color:var(--hy-ink-3)}:is(button,a,input):focus-visible{outline:2px solid var(--hy-primary);outline-offset:3px}\n"],
39
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
40
+ });
41
+ };
42
+ i0.ɵɵngDeclareClassMetadata({
43
+ minVersion: "12.0.0",
44
+ version: "22.2.3",
45
+ ngImport: i0,
46
+ type: HyBreadcrumb,
47
+ decorators: [{
48
+ type: Component,
49
+ args: [{
50
+ selector: "hy-breadcrumb",
51
+ changeDetection: ChangeDetectionStrategy.OnPush,
52
+ template: "<nav [attr.aria-label]=\"label()\">\r\n <ol>\r\n @for (item of items(); track $index; let last = $last) {\r\n <li>\r\n @if (item.href && !last) {\r\n <a [href]=\"item.href\">{{ item.label }}</a>\r\n } @else {\r\n <span [attr.aria-current]=\"last ? 'page' : null\">{{ item.label }}</span>\r\n }\r\n @if (!last) {\r\n <span class=\"separator\" aria-hidden=\"true\">/</span>\r\n }\r\n </li>\r\n }\r\n </ol>\r\n</nav>\r\n",
53
+ styles: [":host{display:block}ol{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;list-style:none;margin:0;padding:0}li{display:flex;align-items:center;gap:.5rem}a{color:var(--hy-ink-2);text-underline-offset:.25em;padding-block:.5rem}span[aria-current]{color:var(--hy-ink);font-weight:600}.separator{color:var(--hy-ink-3)}:is(button,a,input):focus-visible{outline:2px solid var(--hy-primary);outline-offset:3px}\n"]
54
+ }]
55
+ }],
56
+ propDecorators: {
57
+ items: [{
58
+ type: i0.Input,
59
+ args: [{
60
+ isSignal: true,
61
+ alias: "items",
62
+ required: true
63
+ }]
64
+ }],
65
+ label: [{
66
+ type: i0.Input,
67
+ args: [{
68
+ isSignal: true,
69
+ alias: "label",
70
+ required: false
71
+ }]
72
+ }]
73
+ }
74
+ });
75
+ export { HyBreadcrumb };
76
+
77
+ //# sourceMappingURL=hyalo-angular-breadcrumb.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hyalo-angular-breadcrumb.mjs","names":[],"sources":["../../../projects/hyalo/breadcrumb/breadcrumb.ts","../../../projects/hyalo/breadcrumb/breadcrumb.html"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\nexport interface HyBreadcrumbItem {\r\n readonly label: string;\r\n readonly href?: string;\r\n}\r\n@Component({\r\n selector: 'hy-breadcrumb',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: './breadcrumb.html',\r\n styleUrl: './breadcrumb.css',\r\n})\r\nexport class HyBreadcrumb {\r\n readonly items = input.required<readonly HyBreadcrumbItem[]>();\r\n readonly label = input('Breadcrumb');\r\n}\r\n","<nav [attr.aria-label]=\"label()\">\r\n <ol>\r\n @for (item of items(); track $index; let last = $last) {\r\n <li>\r\n @if (item.href && !last) {\r\n <a [href]=\"item.href\">{{ item.label }}</a>\r\n } @else {\r\n <span [attr.aria-current]=\"last ? 'page' : null\">{{ item.label }}</span>\r\n }\r\n @if (!last) {\r\n <span class=\"separator\" aria-hidden=\"true\">/</span>\r\n }\r\n </li>\r\n }\r\n </ol>\r\n</nav>\r\n"],"mappings":";;AAWA,IAAa,eAAb,MAAa,aAAY;CACd,QAAQ,MAAM,SAAuC,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CACrD,QAAQ,MAAM,cAAa,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAFzB,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAY,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAZ,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAY,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,UAAA;EAAA,UCXzB;EAgBA,QAAA,CAAA,6ZAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;ADLa,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAY,YAAA,CAAA;EANxB,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAe,iBACR,wBAAwB;GAAM,UAAA;GAAA,QAAA,CAAA,6ZAAA;EAAA,CAAA"}
@@ -0,0 +1,90 @@
1
+ import * as i0 from "@angular/core";
2
+ import { ChangeDetectionStrategy, Component, input } from "@angular/core";
3
+ var HyButtonGroup = class HyButtonGroup {
4
+ label = input.required(...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
5
+ orientation = input("horizontal", ...ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []);
6
+ static ɵfac = i0.ɵɵngDeclareFactory({
7
+ minVersion: "12.0.0",
8
+ version: "22.2.3",
9
+ ngImport: i0,
10
+ type: HyButtonGroup,
11
+ deps: [],
12
+ target: i0.ɵɵFactoryTarget.Component
13
+ });
14
+ static ɵcmp = i0.ɵɵngDeclareComponent({
15
+ minVersion: "17.1.0",
16
+ version: "22.2.3",
17
+ type: HyButtonGroup,
18
+ isStandalone: true,
19
+ selector: "hy-button-group",
20
+ inputs: {
21
+ label: {
22
+ classPropertyName: "label",
23
+ publicName: "label",
24
+ isSignal: true,
25
+ isRequired: true,
26
+ transformFunction: null
27
+ },
28
+ orientation: {
29
+ classPropertyName: "orientation",
30
+ publicName: "orientation",
31
+ isSignal: true,
32
+ isRequired: false,
33
+ transformFunction: null
34
+ }
35
+ },
36
+ host: {
37
+ attributes: { "role": "group" },
38
+ properties: {
39
+ "attr.aria-label": "label()",
40
+ "attr.data-orientation": "orientation()"
41
+ }
42
+ },
43
+ ngImport: i0,
44
+ template: "<ng-content />",
45
+ isInline: true,
46
+ styles: [":host{display:inline-flex;flex-wrap:wrap;gap:var(--hy-space-1);padding:var(--hy-space-1);border:1px solid var(--hy-line);border-radius:var(--hy-radius-m)}:host([data-orientation=\"vertical\"]){flex-direction:column}\n"],
47
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
48
+ });
49
+ };
50
+ i0.ɵɵngDeclareClassMetadata({
51
+ minVersion: "12.0.0",
52
+ version: "22.2.3",
53
+ ngImport: i0,
54
+ type: HyButtonGroup,
55
+ decorators: [{
56
+ type: Component,
57
+ args: [{
58
+ selector: "hy-button-group",
59
+ changeDetection: ChangeDetectionStrategy.OnPush,
60
+ host: {
61
+ role: "group",
62
+ "[attr.aria-label]": "label()",
63
+ "[attr.data-orientation]": "orientation()"
64
+ },
65
+ template: "<ng-content />",
66
+ styles: [":host{display:inline-flex;flex-wrap:wrap;gap:var(--hy-space-1);padding:var(--hy-space-1);border:1px solid var(--hy-line);border-radius:var(--hy-radius-m)}:host([data-orientation=\"vertical\"]){flex-direction:column}\n"]
67
+ }]
68
+ }],
69
+ propDecorators: {
70
+ label: [{
71
+ type: i0.Input,
72
+ args: [{
73
+ isSignal: true,
74
+ alias: "label",
75
+ required: true
76
+ }]
77
+ }],
78
+ orientation: [{
79
+ type: i0.Input,
80
+ args: [{
81
+ isSignal: true,
82
+ alias: "orientation",
83
+ required: false
84
+ }]
85
+ }]
86
+ }
87
+ });
88
+ export { HyButtonGroup };
89
+
90
+ //# sourceMappingURL=hyalo-angular-button-group.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hyalo-angular-button-group.mjs","names":[],"sources":["../../../projects/hyalo/button-group/button-group.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input } from '@angular/core';\r\n/** Groups native buttons. For mutually exclusive choices use HySegmented. */\r\n@Component({\r\n selector: 'hy-button-group',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n role: 'group',\r\n '[attr.aria-label]': 'label()',\r\n '[attr.data-orientation]': 'orientation()',\r\n },\r\n template: '<ng-content />',\r\n styleUrl: './button-group.css',\r\n})\r\nexport class HyButtonGroup {\r\n readonly label = input.required<string>();\r\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\r\n}\r\n"],"mappings":";;AAaA,IAAa,gBAAb,MAAa,cAAa;CACf,QAAQ,MAAM,SAAkB,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;CAChC,cAAc,MAAiC,cAAa,GAAA,YAAA,CAAA,EAAA,WAAA,cAAA,CAAA,+BAAA,CAAA,CAAA;CAF1D,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAa,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAb,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAa,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,OAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,aAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,MAAA;GAAA,YAAA,EAAA,QAAA,QAAA;GAAA,YAAA;IAAA,mBAAA;IAAA,yBAAA;GAAA;EAAA;EAAA,UAAA;EAAA,UAHd;EAAgB,UAAA;EAAA,QAAA,CAAA,2NAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAGf,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAa,YAAA,CAAA;EAXzB,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAiB,iBACV,wBAAwB;GAAM,MACzC;IACJ,MAAM;IACN,qBAAqB;IACrB,2BAA2B;GAC5B;GAAA,UACS;GAAgB,QAAA,CAAA,2NAAA;EAAA,CAAA"}
@@ -0,0 +1,204 @@
1
+ import * as i0 from "@angular/core";
2
+ import { ChangeDetectionStrategy, Component, ElementRef, booleanAttribute, computed, inject, input } from "@angular/core";
3
+ import * as i1 from "@hyalo/angular/core";
4
+ import { HY_CONFIG, HyAppearance, HyFidelity, HyInteractive } from "@hyalo/angular/core";
5
+ var HyButton = class HyButton {
6
+ config = inject(HY_CONFIG);
7
+ appearance = inject(HyAppearance);
8
+ fidelity = inject(HyFidelity);
9
+ el = inject(ElementRef).nativeElement;
10
+ isButton = this.el.tagName === "BUTTON";
11
+ variant = input("solid", ...ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []);
12
+ size = input(this.config.size, ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
13
+ tone = input(this.config.tone, ...ngDevMode ? [{ debugName: "tone" }] : /* istanbul ignore next */ []);
14
+ iconOnly = input(false, {
15
+ ...ngDevMode ? { debugName: "iconOnly" } : /* istanbul ignore next */ {},
16
+ transform: booleanAttribute
17
+ });
18
+ loading = input(false, {
19
+ ...ngDevMode ? { debugName: "loading" } : /* istanbul ignore next */ {},
20
+ transform: booleanAttribute
21
+ });
22
+ disabled = input(false, {
23
+ ...ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {},
24
+ transform: booleanAttribute
25
+ });
26
+ material = computed(() => {
27
+ if (this.variant() !== "glass") return null;
28
+ return this.fidelity.tier() === "low" ? "solid" : this.appearance.material() ?? this.config.material;
29
+ }, ...ngDevMode ? [{ debugName: "material" }] : /* istanbul ignore next */ []);
30
+ blocked = computed(() => this.loading() || !this.isButton && this.disabled(), ...ngDevMode ? [{ debugName: "blocked" }] : /* istanbul ignore next */ []);
31
+ constructor() {
32
+ this.el.addEventListener("click", (event) => {
33
+ if (!this.blocked()) return;
34
+ event.preventDefault();
35
+ event.stopImmediatePropagation();
36
+ }, { capture: true });
37
+ }
38
+ static ɵfac = i0.ɵɵngDeclareFactory({
39
+ minVersion: "12.0.0",
40
+ version: "22.2.3",
41
+ ngImport: i0,
42
+ type: HyButton,
43
+ deps: [],
44
+ target: i0.ɵɵFactoryTarget.Component
45
+ });
46
+ static ɵcmp = i0.ɵɵngDeclareComponent({
47
+ minVersion: "17.0.0",
48
+ version: "22.2.3",
49
+ type: HyButton,
50
+ isStandalone: true,
51
+ selector: "button[hyButton], a[hyButton]",
52
+ inputs: {
53
+ variant: {
54
+ classPropertyName: "variant",
55
+ publicName: "variant",
56
+ isSignal: true,
57
+ isRequired: false,
58
+ transformFunction: null
59
+ },
60
+ size: {
61
+ classPropertyName: "size",
62
+ publicName: "size",
63
+ isSignal: true,
64
+ isRequired: false,
65
+ transformFunction: null
66
+ },
67
+ tone: {
68
+ classPropertyName: "tone",
69
+ publicName: "tone",
70
+ isSignal: true,
71
+ isRequired: false,
72
+ transformFunction: null
73
+ },
74
+ iconOnly: {
75
+ classPropertyName: "iconOnly",
76
+ publicName: "iconOnly",
77
+ isSignal: true,
78
+ isRequired: false,
79
+ transformFunction: null
80
+ },
81
+ loading: {
82
+ classPropertyName: "loading",
83
+ publicName: "loading",
84
+ isSignal: true,
85
+ isRequired: false,
86
+ transformFunction: null
87
+ },
88
+ disabled: {
89
+ classPropertyName: "disabled",
90
+ publicName: "disabled",
91
+ isSignal: true,
92
+ isRequired: false,
93
+ transformFunction: null
94
+ }
95
+ },
96
+ host: {
97
+ properties: {
98
+ "class.hy-glass": "variant() === \"glass\"",
99
+ "attr.data-material": "material()",
100
+ "attr.data-thickness": "variant() === \"glass\" ? \"thin\" : null",
101
+ "attr.data-variant": "variant()",
102
+ "attr.data-size": "size()",
103
+ "attr.data-tone": "tone()",
104
+ "attr.data-icon-only": "iconOnly() || null",
105
+ "attr.data-loading": "loading() || null",
106
+ "attr.aria-busy": "loading() || null",
107
+ "attr.aria-disabled": "blocked() || null",
108
+ "attr.disabled": "isButton && disabled() ? \"\" : null",
109
+ "attr.tabindex": "!isButton && disabled() ? -1 : null"
110
+ },
111
+ classAttribute: "hy-button"
112
+ },
113
+ hostDirectives: [{ directive: i1.HyInteractive }],
114
+ ngImport: i0,
115
+ template: "<span class=\"hy-button__label\"><ng-content /></span>\r\n@if (loading()) {\r\n <!-- Inline, so a button does not pull in the icon registry. -->\r\n <span class=\"hy-button__spinner\" aria-hidden=\"true\">\r\n <svg viewBox=\"0 0 24 24\"><path d=\"M21 12a9 9 0 1 1-6.219-8.56\" /></svg>\r\n </span>\r\n}\r\n",
116
+ styles: [":host{--_c: var(--hy-primary);--_on: var(--hy-primary-ink);--_h: var(--hy-control-md);--_px: var(--hy-space-4);position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--hy-space-2);block-size:var(--_h);min-inline-size:var(--_h);padding-inline:var(--_px);border:1px solid transparent;border-radius:var(--hy-button-radius, var(--hy-radius-pill));font:inherit;font-size:var(--hy-step-0);font-weight:var(--hy-button-font-weight, 560);line-height:1;white-space:nowrap;text-decoration:none;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;transition:background-color var(--hy-dur-quick) var(--hy-ease-out),color var(--hy-dur-quick) var(--hy-ease-out),box-shadow var(--hy-dur-quick) var(--hy-ease-out),scale var(--hy-dur-quick) var(--hy-ease-out),translate var(--hy-dur-settle) var(--hy-ease-out),--hy-glow var(--hy-dur-settle) var(--hy-ease-out)}:host([data-size=\"sm\"]){--_h: var(--hy-control-sm);--_px: var(--hy-space-3);font-size:var(--hy-step--1);letter-spacing:var(--hy-tracking-small)}:host([data-size=\"lg\"]){--_h: var(--hy-control-lg);--_px: var(--hy-space-6);font-size:var(--hy-step-1)}:host([data-icon-only]){padding-inline:0;inline-size:var(--_h)}:host([data-tone=\"secondary\"]){--_c: var(--hy-secondary, var(--hy-primary));--_on: var(--hy-secondary-ink, var(--hy-primary-ink))}:host([data-tone=\"neutral\"]){--_c: var(--hy-ink);--_on: var(--hy-bg)}:host([data-tone=\"danger\"]){--_c: var(--hy-danger);--_on: var(--hy-danger-ink)}:host([data-tone=\"success\"]){--_c: var(--hy-success);--_on: var(--hy-bg)}:host([data-tone=\"warning\"]){--_c: var(--hy-warning);--_on: var(--hy-bg)}:host([data-variant=\"solid\"]){background-color:var(--_c);color:var(--_on);box-shadow:inset 0 1px #ffffff38,0 6px 16px -8px color-mix(in srgb,var(--_c) 70%,transparent)}:host([data-variant=\"solid\"][data-hover]){background-color:color-mix(in srgb,var(--_c) 88%,var(--hy-ink))}:host([data-variant=\"glass\"]){color:var(--hy-ink)}:host([data-variant=\"glass\"][data-hover]){--hy-glow: .25}:host([data-variant=\"soft\"]){background-color:color-mix(in srgb,var(--_c) 13%,transparent);color:var(--_c)}:host([data-variant=\"soft\"][data-hover]){background-color:color-mix(in srgb,var(--_c) 20%,transparent)}:host([data-variant=\"ghost\"]){background-color:transparent;color:var(--_c)}:host([data-variant=\"ghost\"][data-hover]){background-color:color-mix(in srgb,var(--_c) 10%,transparent)}:host([data-press]){scale:.97;transition-duration:min(.1s,var(--hy-dur-quick))}:host([data-variant=\"solid\"][data-press]){background-color:color-mix(in srgb,var(--_c) 78%,var(--hy-ink))}:host([data-variant=\"soft\"][data-press]){background-color:color-mix(in srgb,var(--_c) 26%,transparent)}:host([data-variant=\"ghost\"][data-press]){background-color:color-mix(in srgb,var(--_c) 16%,transparent)}:host([data-variant=\"glass\"][data-press]){--hy-glow: .45}:host(:focus-visible){outline:none;box-shadow:var(--hy-focus-ring)}:host(:disabled),:host([aria-disabled=\"true\"]:not([data-loading])){opacity:.45;cursor:not-allowed;pointer-events:none}:host([data-loading]){cursor:progress}.hy-button__label{display:inline-flex;align-items:center;gap:inherit}:host([data-loading]) .hy-button__label{visibility:hidden}.hy-button__spinner{position:absolute;inset:0;display:grid;place-items:center}.hy-button__spinner svg{inline-size:1.25em;block-size:1.25em;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;animation:hy-spin .8s linear infinite}@keyframes hy-spin{to{rotate:1turn}}@media(prefers-reduced-motion:reduce){.hy-button__spinner svg{animation-duration:2.4s}}@media(forced-colors:active){:host{border-color:ButtonText}}\n"],
117
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
118
+ });
119
+ };
120
+ i0.ɵɵngDeclareClassMetadata({
121
+ minVersion: "12.0.0",
122
+ version: "22.2.3",
123
+ ngImport: i0,
124
+ type: HyButton,
125
+ decorators: [{
126
+ type: Component,
127
+ args: [{
128
+ selector: "button[hyButton], a[hyButton]",
129
+ changeDetection: ChangeDetectionStrategy.OnPush,
130
+ hostDirectives: [HyInteractive],
131
+ host: {
132
+ class: "hy-button",
133
+ "[class.hy-glass]": "variant() === \"glass\"",
134
+ "[attr.data-material]": "material()",
135
+ "[attr.data-thickness]": "variant() === \"glass\" ? \"thin\" : null",
136
+ "[attr.data-variant]": "variant()",
137
+ "[attr.data-size]": "size()",
138
+ "[attr.data-tone]": "tone()",
139
+ "[attr.data-icon-only]": "iconOnly() || null",
140
+ "[attr.data-loading]": "loading() || null",
141
+ "[attr.aria-busy]": "loading() || null",
142
+ "[attr.aria-disabled]": "blocked() || null",
143
+ "[attr.disabled]": "isButton && disabled() ? \"\" : null",
144
+ "[attr.tabindex]": "!isButton && disabled() ? -1 : null"
145
+ },
146
+ template: "<span class=\"hy-button__label\"><ng-content /></span>\r\n@if (loading()) {\r\n <!-- Inline, so a button does not pull in the icon registry. -->\r\n <span class=\"hy-button__spinner\" aria-hidden=\"true\">\r\n <svg viewBox=\"0 0 24 24\"><path d=\"M21 12a9 9 0 1 1-6.219-8.56\" /></svg>\r\n </span>\r\n}\r\n",
147
+ styles: [":host{--_c: var(--hy-primary);--_on: var(--hy-primary-ink);--_h: var(--hy-control-md);--_px: var(--hy-space-4);position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--hy-space-2);block-size:var(--_h);min-inline-size:var(--_h);padding-inline:var(--_px);border:1px solid transparent;border-radius:var(--hy-button-radius, var(--hy-radius-pill));font:inherit;font-size:var(--hy-step-0);font-weight:var(--hy-button-font-weight, 560);line-height:1;white-space:nowrap;text-decoration:none;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;transition:background-color var(--hy-dur-quick) var(--hy-ease-out),color var(--hy-dur-quick) var(--hy-ease-out),box-shadow var(--hy-dur-quick) var(--hy-ease-out),scale var(--hy-dur-quick) var(--hy-ease-out),translate var(--hy-dur-settle) var(--hy-ease-out),--hy-glow var(--hy-dur-settle) var(--hy-ease-out)}:host([data-size=\"sm\"]){--_h: var(--hy-control-sm);--_px: var(--hy-space-3);font-size:var(--hy-step--1);letter-spacing:var(--hy-tracking-small)}:host([data-size=\"lg\"]){--_h: var(--hy-control-lg);--_px: var(--hy-space-6);font-size:var(--hy-step-1)}:host([data-icon-only]){padding-inline:0;inline-size:var(--_h)}:host([data-tone=\"secondary\"]){--_c: var(--hy-secondary, var(--hy-primary));--_on: var(--hy-secondary-ink, var(--hy-primary-ink))}:host([data-tone=\"neutral\"]){--_c: var(--hy-ink);--_on: var(--hy-bg)}:host([data-tone=\"danger\"]){--_c: var(--hy-danger);--_on: var(--hy-danger-ink)}:host([data-tone=\"success\"]){--_c: var(--hy-success);--_on: var(--hy-bg)}:host([data-tone=\"warning\"]){--_c: var(--hy-warning);--_on: var(--hy-bg)}:host([data-variant=\"solid\"]){background-color:var(--_c);color:var(--_on);box-shadow:inset 0 1px #ffffff38,0 6px 16px -8px color-mix(in srgb,var(--_c) 70%,transparent)}:host([data-variant=\"solid\"][data-hover]){background-color:color-mix(in srgb,var(--_c) 88%,var(--hy-ink))}:host([data-variant=\"glass\"]){color:var(--hy-ink)}:host([data-variant=\"glass\"][data-hover]){--hy-glow: .25}:host([data-variant=\"soft\"]){background-color:color-mix(in srgb,var(--_c) 13%,transparent);color:var(--_c)}:host([data-variant=\"soft\"][data-hover]){background-color:color-mix(in srgb,var(--_c) 20%,transparent)}:host([data-variant=\"ghost\"]){background-color:transparent;color:var(--_c)}:host([data-variant=\"ghost\"][data-hover]){background-color:color-mix(in srgb,var(--_c) 10%,transparent)}:host([data-press]){scale:.97;transition-duration:min(.1s,var(--hy-dur-quick))}:host([data-variant=\"solid\"][data-press]){background-color:color-mix(in srgb,var(--_c) 78%,var(--hy-ink))}:host([data-variant=\"soft\"][data-press]){background-color:color-mix(in srgb,var(--_c) 26%,transparent)}:host([data-variant=\"ghost\"][data-press]){background-color:color-mix(in srgb,var(--_c) 16%,transparent)}:host([data-variant=\"glass\"][data-press]){--hy-glow: .45}:host(:focus-visible){outline:none;box-shadow:var(--hy-focus-ring)}:host(:disabled),:host([aria-disabled=\"true\"]:not([data-loading])){opacity:.45;cursor:not-allowed;pointer-events:none}:host([data-loading]){cursor:progress}.hy-button__label{display:inline-flex;align-items:center;gap:inherit}:host([data-loading]) .hy-button__label{visibility:hidden}.hy-button__spinner{position:absolute;inset:0;display:grid;place-items:center}.hy-button__spinner svg{inline-size:1.25em;block-size:1.25em;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;animation:hy-spin .8s linear infinite}@keyframes hy-spin{to{rotate:1turn}}@media(prefers-reduced-motion:reduce){.hy-button__spinner svg{animation-duration:2.4s}}@media(forced-colors:active){:host{border-color:ButtonText}}\n"]
148
+ }]
149
+ }],
150
+ ctorParameters: () => [],
151
+ propDecorators: {
152
+ variant: [{
153
+ type: i0.Input,
154
+ args: [{
155
+ isSignal: true,
156
+ alias: "variant",
157
+ required: false
158
+ }]
159
+ }],
160
+ size: [{
161
+ type: i0.Input,
162
+ args: [{
163
+ isSignal: true,
164
+ alias: "size",
165
+ required: false
166
+ }]
167
+ }],
168
+ tone: [{
169
+ type: i0.Input,
170
+ args: [{
171
+ isSignal: true,
172
+ alias: "tone",
173
+ required: false
174
+ }]
175
+ }],
176
+ iconOnly: [{
177
+ type: i0.Input,
178
+ args: [{
179
+ isSignal: true,
180
+ alias: "iconOnly",
181
+ required: false
182
+ }]
183
+ }],
184
+ loading: [{
185
+ type: i0.Input,
186
+ args: [{
187
+ isSignal: true,
188
+ alias: "loading",
189
+ required: false
190
+ }]
191
+ }],
192
+ disabled: [{
193
+ type: i0.Input,
194
+ args: [{
195
+ isSignal: true,
196
+ alias: "disabled",
197
+ required: false
198
+ }]
199
+ }]
200
+ }
201
+ });
202
+ export { HyButton };
203
+
204
+ //# sourceMappingURL=hyalo-angular-button.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hyalo-angular-button.mjs","names":[],"sources":["../../../projects/hyalo/button/button.ts","../../../projects/hyalo/button/button.html"],"sourcesContent":["import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n booleanAttribute,\r\n computed,\r\n inject,\r\n input,\r\n} from '@angular/core';\r\nimport {\r\n HyAppearance,\r\n HY_CONFIG,\r\n HyFidelity,\r\n HyInteractive,\r\n type HySize,\r\n type HyTone,\r\n} from '@hyalo/angular/core';\r\n\r\n/**\r\n * - `solid`: filled with the tone colour. The main action on a view.\r\n * - `glass`: a glass surface with tone-coloured text.\r\n * - `soft`: a light wash of the tone colour.\r\n * - `ghost`: text only, a surface appears on hover.\r\n */\r\nexport type HyButtonVariant = 'solid' | 'glass' | 'soft' | 'ghost';\r\n\r\n/**\r\n * Button and link button.\r\n *\r\n * ```html\r\n * <button hyButton (click)=\"save()\">Save</button>\r\n * <a hyButton variant=\"glass\" routerLink=\"/pricing\">Pricing</a>\r\n * <button hyButton iconOnly aria-label=\"Close\"><hy-icon name=\"x\" /></button>\r\n * ```\r\n *\r\n * It stays a native `<button>` or `<a>`, so forms, routing and keyboard\r\n * behaviour work as usual. A press dims and shrinks it the moment the\r\n * pointer goes down. Add `hyMagnetic` for the magnetic hover effect, or\r\n * `hyRipple` for a press ripple.\r\n *\r\n * While `loading`, the button keeps its focus and width, sets `aria-busy`\r\n * and ignores clicks. A disabled link gets `aria-disabled` and leaves the\r\n * tab order, since links have no native disabled state.\r\n */\r\n@Component({\r\n // Attribute selector so the host stays a native <button> or <a>.\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: 'button[hyButton], a[hyButton]',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n hostDirectives: [HyInteractive],\r\n host: {\r\n class: 'hy-button',\r\n '[class.hy-glass]': 'variant() === \"glass\"',\r\n '[attr.data-material]': 'material()',\r\n // Buttons are small chips of glass, so they get the thinnest material.\r\n '[attr.data-thickness]': 'variant() === \"glass\" ? \"thin\" : null',\r\n '[attr.data-variant]': 'variant()',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-tone]': 'tone()',\r\n '[attr.data-icon-only]': 'iconOnly() || null',\r\n '[attr.data-loading]': 'loading() || null',\r\n '[attr.aria-busy]': 'loading() || null',\r\n '[attr.aria-disabled]': 'blocked() || null',\r\n '[attr.disabled]': 'isButton && disabled() ? \"\" : null',\r\n '[attr.tabindex]': '!isButton && disabled() ? -1 : null',\r\n },\r\n templateUrl: './button.html',\r\n styleUrl: './button.css',\r\n})\r\nexport class HyButton {\r\n private readonly config = inject(HY_CONFIG);\r\n private readonly appearance = inject(HyAppearance);\r\n private readonly fidelity = inject(HyFidelity);\r\n private readonly el = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\r\n protected readonly isButton = this.el.tagName === 'BUTTON';\r\n\r\n /** Visual style. */\r\n readonly variant = input<HyButtonVariant>('solid');\r\n /** Height and padding. Defaults to the configured size. */\r\n readonly size = input<HySize>(this.config.size);\r\n /** Colour role. Defaults to the configured tone. */\r\n readonly tone = input<HyTone>(this.config.tone);\r\n /** Square button for a single icon. Give it an `aria-label`. */\r\n readonly iconOnly = input(false, { transform: booleanAttribute });\r\n /** Shows a spinner and blocks clicks without dropping focus. */\r\n readonly loading = input(false, { transform: booleanAttribute });\r\n /** Disables the button. On links this sets `aria-disabled`. */\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n /** Glass follows the configured material and goes solid on the low tier. */\r\n protected readonly material = computed(() => {\r\n if (this.variant() !== 'glass') return null;\r\n return this.fidelity.tier() === 'low'\r\n ? 'solid'\r\n : (this.appearance.material() ?? this.config.material);\r\n });\r\n\r\n /** True when clicks should be ignored. */\r\n protected readonly blocked = computed(\r\n () => this.loading() || (!this.isButton && this.disabled()),\r\n );\r\n\r\n constructor() {\r\n // A capture listener on the element runs before the app's own (click)\r\n // handlers, so a blocked click never reaches them.\r\n this.el.addEventListener(\r\n 'click',\r\n (event) => {\r\n if (!this.blocked()) return;\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n },\r\n { capture: true },\r\n );\r\n }\r\n}\r\n","<span class=\"hy-button__label\"><ng-content /></span>\r\n@if (loading()) {\r\n <!-- Inline, so a button does not pull in the icon registry. -->\r\n <span class=\"hy-button__spinner\" aria-hidden=\"true\">\r\n <svg viewBox=\"0 0 24 24\"><path d=\"M21 12a9 9 0 1 1-6.219-8.56\" /></svg>\r\n </span>\r\n}\r\n"],"mappings":"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"}