@hyalo/angular 0.1.0 → 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 (198) hide show
  1. package/CHANGELOG.md +95 -41
  2. package/README.md +46 -32
  3. package/fesm2022/hyalo-angular-accordion.mjs +6 -6
  4. package/fesm2022/hyalo-angular-accordion.mjs.map +1 -1
  5. package/fesm2022/hyalo-angular-alert.mjs +171 -0
  6. package/fesm2022/hyalo-angular-alert.mjs.map +1 -0
  7. package/fesm2022/hyalo-angular-aspect-ratio.mjs +64 -0
  8. package/fesm2022/hyalo-angular-aspect-ratio.mjs.map +1 -0
  9. package/fesm2022/hyalo-angular-avatar.mjs +169 -0
  10. package/fesm2022/hyalo-angular-avatar.mjs.map +1 -0
  11. package/fesm2022/hyalo-angular-badge.mjs +268 -0
  12. package/fesm2022/hyalo-angular-badge.mjs.map +1 -0
  13. package/fesm2022/hyalo-angular-bento.mjs +132 -0
  14. package/fesm2022/hyalo-angular-bento.mjs.map +1 -0
  15. package/fesm2022/hyalo-angular-blocks.mjs +985 -0
  16. package/fesm2022/hyalo-angular-blocks.mjs.map +1 -0
  17. package/fesm2022/hyalo-angular-border-beam.mjs +73 -0
  18. package/fesm2022/hyalo-angular-border-beam.mjs.map +1 -0
  19. package/fesm2022/hyalo-angular-breadcrumb.mjs +77 -0
  20. package/fesm2022/hyalo-angular-breadcrumb.mjs.map +1 -0
  21. package/fesm2022/hyalo-angular-button-group.mjs +90 -0
  22. package/fesm2022/hyalo-angular-button-group.mjs.map +1 -0
  23. package/fesm2022/hyalo-angular-button.mjs +4 -3
  24. package/fesm2022/hyalo-angular-button.mjs.map +1 -1
  25. package/fesm2022/hyalo-angular-card.mjs +2 -2
  26. package/fesm2022/hyalo-angular-card.mjs.map +1 -1
  27. package/fesm2022/hyalo-angular-carousel.mjs +709 -0
  28. package/fesm2022/hyalo-angular-carousel.mjs.map +1 -0
  29. package/fesm2022/hyalo-angular-chapter-nav.mjs +336 -0
  30. package/fesm2022/hyalo-angular-chapter-nav.mjs.map +1 -0
  31. package/fesm2022/hyalo-angular-chart-engine-DSJop6He.mjs +5 -0
  32. package/fesm2022/hyalo-angular-chart-engine-DSJop6He.mjs.map +1 -0
  33. package/fesm2022/hyalo-angular-chart.mjs +391 -0
  34. package/fesm2022/hyalo-angular-chart.mjs.map +1 -0
  35. package/fesm2022/hyalo-angular-choice.mjs +2 -1
  36. package/fesm2022/hyalo-angular-choice.mjs.map +1 -1
  37. package/fesm2022/hyalo-angular-code-block-highlight-B20d5C76.mjs +40 -0
  38. package/fesm2022/hyalo-angular-code-block-highlight-B20d5C76.mjs.map +1 -0
  39. package/fesm2022/hyalo-angular-code-block.mjs +161 -0
  40. package/fesm2022/hyalo-angular-code-block.mjs.map +1 -0
  41. package/fesm2022/hyalo-angular-command.mjs +193 -0
  42. package/fesm2022/hyalo-angular-command.mjs.map +1 -0
  43. package/fesm2022/hyalo-angular-copy.mjs +138 -0
  44. package/fesm2022/hyalo-angular-copy.mjs.map +1 -0
  45. package/fesm2022/hyalo-angular-core.mjs +424 -0
  46. package/fesm2022/hyalo-angular-core.mjs.map +1 -0
  47. package/fesm2022/hyalo-angular-description-list.mjs +57 -0
  48. package/fesm2022/hyalo-angular-description-list.mjs.map +1 -0
  49. package/fesm2022/hyalo-angular-dialog.mjs +51 -22
  50. package/fesm2022/hyalo-angular-dialog.mjs.map +1 -1
  51. package/fesm2022/hyalo-angular-divider.mjs +66 -0
  52. package/fesm2022/hyalo-angular-divider.mjs.map +1 -0
  53. package/fesm2022/hyalo-angular-empty-state.mjs +123 -0
  54. package/fesm2022/hyalo-angular-empty-state.mjs.map +1 -0
  55. package/fesm2022/hyalo-angular-field.mjs +41 -9
  56. package/fesm2022/hyalo-angular-field.mjs.map +1 -1
  57. package/fesm2022/hyalo-angular-filter.mjs +309 -0
  58. package/fesm2022/hyalo-angular-filter.mjs.map +1 -0
  59. package/fesm2022/hyalo-angular-hotspot.mjs +225 -0
  60. package/fesm2022/hyalo-angular-hotspot.mjs.map +1 -0
  61. package/fesm2022/hyalo-angular-hover-card.mjs +233 -0
  62. package/fesm2022/hyalo-angular-hover-card.mjs.map +1 -0
  63. package/fesm2022/hyalo-angular-icon.mjs +42 -0
  64. package/fesm2022/hyalo-angular-icon.mjs.map +1 -1
  65. package/fesm2022/hyalo-angular-image-compare.mjs +168 -0
  66. package/fesm2022/hyalo-angular-image-compare.mjs.map +1 -0
  67. package/fesm2022/hyalo-angular-interaction.mjs +32 -41
  68. package/fesm2022/hyalo-angular-interaction.mjs.map +1 -1
  69. package/fesm2022/hyalo-angular-kbd.mjs +41 -0
  70. package/fesm2022/hyalo-angular-kbd.mjs.map +1 -0
  71. package/fesm2022/hyalo-angular-lightbox.mjs +228 -0
  72. package/fesm2022/hyalo-angular-lightbox.mjs.map +1 -0
  73. package/fesm2022/hyalo-angular-link.mjs +42 -0
  74. package/fesm2022/hyalo-angular-link.mjs.map +1 -0
  75. package/fesm2022/hyalo-angular-list.mjs +131 -0
  76. package/fesm2022/hyalo-angular-list.mjs.map +1 -0
  77. package/fesm2022/hyalo-angular-marquee.mjs +197 -0
  78. package/fesm2022/hyalo-angular-marquee.mjs.map +1 -0
  79. package/fesm2022/hyalo-angular-menu.mjs +423 -0
  80. package/fesm2022/hyalo-angular-menu.mjs.map +1 -0
  81. package/fesm2022/hyalo-angular-mesh.mjs +126 -0
  82. package/fesm2022/hyalo-angular-mesh.mjs.map +1 -0
  83. package/fesm2022/hyalo-angular-motion.mjs +620 -0
  84. package/fesm2022/hyalo-angular-motion.mjs.map +1 -0
  85. package/fesm2022/hyalo-angular-navbar.mjs +1 -1
  86. package/fesm2022/hyalo-angular-navbar.mjs.map +1 -1
  87. package/fesm2022/hyalo-angular-navigation-menu.mjs +222 -0
  88. package/fesm2022/hyalo-angular-navigation-menu.mjs.map +1 -0
  89. package/fesm2022/hyalo-angular-number-ticker.mjs +174 -0
  90. package/fesm2022/hyalo-angular-number-ticker.mjs.map +1 -0
  91. package/fesm2022/hyalo-angular-overlay.mjs +71 -2
  92. package/fesm2022/hyalo-angular-overlay.mjs.map +1 -1
  93. package/fesm2022/hyalo-angular-pagination.mjs +187 -0
  94. package/fesm2022/hyalo-angular-pagination.mjs.map +1 -0
  95. package/fesm2022/hyalo-angular-popover.mjs +34 -5
  96. package/fesm2022/hyalo-angular-popover.mjs.map +1 -1
  97. package/fesm2022/hyalo-angular-progress.mjs +209 -0
  98. package/fesm2022/hyalo-angular-progress.mjs.map +1 -0
  99. package/fesm2022/hyalo-angular-progressive-blur.mjs +73 -0
  100. package/fesm2022/hyalo-angular-progressive-blur.mjs.map +1 -0
  101. package/fesm2022/hyalo-angular-refraction-renderer-5ZA-kfsA.mjs +186 -0
  102. package/fesm2022/hyalo-angular-refraction-renderer-5ZA-kfsA.mjs.map +1 -0
  103. package/fesm2022/hyalo-angular-refraction.mjs +178 -0
  104. package/fesm2022/hyalo-angular-refraction.mjs.map +1 -0
  105. package/fesm2022/hyalo-angular-scroll-area.mjs +93 -0
  106. package/fesm2022/hyalo-angular-scroll-area.mjs.map +1 -0
  107. package/fesm2022/hyalo-angular-scroll-to-top.mjs +127 -0
  108. package/fesm2022/hyalo-angular-scroll-to-top.mjs.map +1 -0
  109. package/fesm2022/hyalo-angular-segmented.mjs +1 -1
  110. package/fesm2022/hyalo-angular-segmented.mjs.map +1 -1
  111. package/fesm2022/hyalo-angular-select.mjs +112 -15
  112. package/fesm2022/hyalo-angular-select.mjs.map +1 -1
  113. package/fesm2022/hyalo-angular-sidebar.mjs +241 -0
  114. package/fesm2022/hyalo-angular-sidebar.mjs.map +1 -0
  115. package/fesm2022/hyalo-angular-skeleton.mjs +131 -0
  116. package/fesm2022/hyalo-angular-skeleton.mjs.map +1 -0
  117. package/fesm2022/hyalo-angular-sparkline.mjs +110 -0
  118. package/fesm2022/hyalo-angular-sparkline.mjs.map +1 -0
  119. package/fesm2022/hyalo-angular-split-text.mjs +126 -0
  120. package/fesm2022/hyalo-angular-split-text.mjs.map +1 -0
  121. package/fesm2022/hyalo-angular-stat.mjs +193 -0
  122. package/fesm2022/hyalo-angular-stat.mjs.map +1 -0
  123. package/fesm2022/hyalo-angular-stepper.mjs +254 -0
  124. package/fesm2022/hyalo-angular-stepper.mjs.map +1 -0
  125. package/fesm2022/hyalo-angular-table.mjs +335 -0
  126. package/fesm2022/hyalo-angular-table.mjs.map +1 -0
  127. package/fesm2022/hyalo-angular-tabs.mjs +1 -1
  128. package/fesm2022/hyalo-angular-tabs.mjs.map +1 -1
  129. package/fesm2022/hyalo-angular-theme.mjs +1 -1
  130. package/fesm2022/hyalo-angular-theme.mjs.map +1 -1
  131. package/fesm2022/hyalo-angular-timeline.mjs +157 -0
  132. package/fesm2022/hyalo-angular-timeline.mjs.map +1 -0
  133. package/fesm2022/hyalo-angular-toast.mjs +2 -1
  134. package/fesm2022/hyalo-angular-toast.mjs.map +1 -1
  135. package/fesm2022/hyalo-angular.mjs +2 -473
  136. package/package.json +198 -2
  137. package/styles/parts/field.css +44 -36
  138. package/styles/parts/glass.css +2 -0
  139. package/styles/parts/motion.css +19 -0
  140. package/styles/parts/typography.css +17 -0
  141. package/types/hyalo-angular-accordion.d.ts +1 -1
  142. package/types/hyalo-angular-alert.d.ts +47 -0
  143. package/types/hyalo-angular-aspect-ratio.d.ts +13 -0
  144. package/types/hyalo-angular-avatar.d.ts +39 -0
  145. package/types/hyalo-angular-badge.d.ts +82 -0
  146. package/types/hyalo-angular-bento.d.ts +25 -0
  147. package/types/hyalo-angular-blocks.d.ts +272 -0
  148. package/types/hyalo-angular-border-beam.d.ts +15 -0
  149. package/types/hyalo-angular-breadcrumb.d.ts +22 -0
  150. package/types/hyalo-angular-button-group.d.ts +19 -0
  151. package/types/hyalo-angular-button.d.ts +4 -3
  152. package/types/hyalo-angular-card.d.ts +1 -1
  153. package/types/hyalo-angular-carousel.d.ts +147 -0
  154. package/types/hyalo-angular-chapter-nav.d.ts +79 -0
  155. package/types/hyalo-angular-chart.d.ts +90 -0
  156. package/types/hyalo-angular-code-block.d.ts +46 -0
  157. package/types/hyalo-angular-command.d.ts +41 -0
  158. package/types/hyalo-angular-copy.d.ts +39 -0
  159. package/types/hyalo-angular-core.d.ts +210 -0
  160. package/types/hyalo-angular-description-list.d.ts +16 -0
  161. package/types/hyalo-angular-dialog.d.ts +2 -1
  162. package/types/hyalo-angular-divider.d.ts +12 -0
  163. package/types/hyalo-angular-empty-state.d.ts +30 -0
  164. package/types/hyalo-angular-field.d.ts +10 -4
  165. package/types/hyalo-angular-filter.d.ts +122 -0
  166. package/types/hyalo-angular-hotspot.d.ts +70 -0
  167. package/types/hyalo-angular-hover-card.d.ts +47 -0
  168. package/types/hyalo-angular-image-compare.d.ts +55 -0
  169. package/types/hyalo-angular-kbd.d.ts +5 -0
  170. package/types/hyalo-angular-lightbox.d.ts +67 -0
  171. package/types/hyalo-angular-link.d.ts +5 -0
  172. package/types/hyalo-angular-list.d.ts +30 -0
  173. package/types/hyalo-angular-marquee.d.ts +48 -0
  174. package/types/hyalo-angular-menu.d.ts +105 -0
  175. package/types/hyalo-angular-mesh.d.ts +36 -0
  176. package/types/hyalo-angular-motion.d.ts +218 -0
  177. package/types/hyalo-angular-navigation-menu.d.ts +47 -0
  178. package/types/hyalo-angular-number-ticker.d.ts +52 -0
  179. package/types/hyalo-angular-overlay.d.ts +9 -0
  180. package/types/hyalo-angular-pagination.d.ts +59 -0
  181. package/types/hyalo-angular-popover.d.ts +10 -0
  182. package/types/hyalo-angular-progress.d.ts +46 -0
  183. package/types/hyalo-angular-progressive-blur.d.ts +14 -0
  184. package/types/hyalo-angular-refraction.d.ts +46 -0
  185. package/types/hyalo-angular-scroll-area.d.ts +18 -0
  186. package/types/hyalo-angular-scroll-to-top.d.ts +31 -0
  187. package/types/hyalo-angular-segmented.d.ts +1 -1
  188. package/types/hyalo-angular-select.d.ts +49 -3
  189. package/types/hyalo-angular-sidebar.d.ts +57 -0
  190. package/types/hyalo-angular-skeleton.d.ts +34 -0
  191. package/types/hyalo-angular-sparkline.d.ts +19 -0
  192. package/types/hyalo-angular-split-text.d.ts +24 -0
  193. package/types/hyalo-angular-stat.d.ts +56 -0
  194. package/types/hyalo-angular-stepper.d.ts +63 -0
  195. package/types/hyalo-angular-table.d.ts +125 -0
  196. package/types/hyalo-angular-timeline.d.ts +36 -0
  197. package/types/hyalo-angular.d.ts +2 -345
  198. package/fesm2022/hyalo-angular.mjs.map +0 -1
@@ -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":"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"}
@@ -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"}
@@ -1,9 +1,10 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import { ChangeDetectionStrategy, Component, ElementRef, booleanAttribute, computed, inject, input } from "@angular/core";
3
- import * as i1 from "@hyalo/angular";
4
- import { HY_CONFIG, HyFidelity, HyInteractive } from "@hyalo/angular";
3
+ import * as i1 from "@hyalo/angular/core";
4
+ import { HY_CONFIG, HyAppearance, HyFidelity, HyInteractive } from "@hyalo/angular/core";
5
5
  var HyButton = class HyButton {
6
6
  config = inject(HY_CONFIG);
7
+ appearance = inject(HyAppearance);
7
8
  fidelity = inject(HyFidelity);
8
9
  el = inject(ElementRef).nativeElement;
9
10
  isButton = this.el.tagName === "BUTTON";
@@ -24,7 +25,7 @@ var HyButton = class HyButton {
24
25
  });
25
26
  material = computed(() => {
26
27
  if (this.variant() !== "glass") return null;
27
- return this.fidelity.tier() === "low" ? "solid" : this.config.material;
28
+ return this.fidelity.tier() === "low" ? "solid" : this.appearance.material() ?? this.config.material;
28
29
  }, ...ngDevMode ? [{ debugName: "material" }] : /* istanbul ignore next */ []);
29
30
  blocked = computed(() => this.loading() || !this.isButton && this.disabled(), ...ngDevMode ? [{ debugName: "blocked" }] : /* istanbul ignore next */ []);
30
31
  constructor() {
@@ -1 +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 { HY_CONFIG, HyFidelity, HyInteractive, type HySize, type HyTone } from '@hyalo/angular';\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 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' ? 'solid' : 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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"}
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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"}
@@ -1,7 +1,7 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import { ChangeDetectionStrategy, Component, Directive, input } from "@angular/core";
3
- import * as i1 from "@hyalo/angular";
4
- import { HyMaterialDirective } from "@hyalo/angular";
3
+ import * as i1 from "@hyalo/angular/core";
4
+ import { HyMaterialDirective } from "@hyalo/angular/core";
5
5
  var HyCardMedia = class HyCardMedia {
6
6
  static ɵfac = i0.ɵɵngDeclareFactory({
7
7
  minVersion: "12.0.0",
@@ -1 +1 @@
1
- {"version":3,"file":"hyalo-angular-card.mjs","names":[],"sources":["../../../projects/hyalo/card/card.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Directive, input } from '@angular/core';\r\nimport { HyMaterialDirective } from '@hyalo/angular';\r\n\r\n/** Inner spacing of a card. */\r\nexport type HyCardPadding = 'none' | 'sm' | 'md' | 'lg';\r\n\r\n/** Full-bleed media at the top of a card: an image, video or canvas. */\r\n@Directive({ selector: '[hyCardMedia]', host: { class: 'hy-card__media' } })\r\nexport class HyCardMedia {}\r\n\r\n/** Title area. Put the card's heading here. */\r\n@Directive({ selector: '[hyCardHeader]', host: { class: 'hy-card__header' } })\r\nexport class HyCardHeader {}\r\n\r\n/** Actions or meta at the bottom. */\r\n@Directive({ selector: '[hyCardFooter]', host: { class: 'hy-card__footer' } })\r\nexport class HyCardFooter {}\r\n\r\n/**\r\n * Makes one link inside the card cover the whole card, so the card is\r\n * clickable while screen readers still hear a single, well-named link.\r\n * Other buttons in the card stay clickable on top of it.\r\n */\r\n@Directive({ selector: 'a[hyCardLink]', host: { class: 'hy-card__link' } })\r\nexport class HyCardLink {}\r\n\r\n/**\r\n * The kit's signature surface: a glass panel with optional media, header,\r\n * body and footer.\r\n *\r\n * ```html\r\n * <hy-card material=\"clear\" hyTilt>\r\n * <img hyCardMedia src=\"watch.avif\" alt=\"\" />\r\n * <h3 hyCardHeader><a hyCardLink routerLink=\"/watch/1\">Calibre 7</a></h3>\r\n * <p>Hand-wound, 42 mm, sapphire caseback.</p>\r\n * <div hyCardFooter>From 4 200 EUR</div>\r\n * </hy-card>\r\n * ```\r\n */\r\n@Component({\r\n selector: 'hy-card',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n hostDirectives: [{ directive: HyMaterialDirective, inputs: ['hyMaterial: material'] }],\r\n host: {\r\n class: 'hy-card',\r\n '[attr.data-padding]': 'padding()',\r\n },\r\n template: `\r\n <ng-content select=\"[hyCardMedia]\" />\r\n <ng-content select=\"[hyCardHeader]\" />\r\n <div class=\"hy-card__body\"><ng-content /></div>\r\n <ng-content select=\"[hyCardFooter]\" />\r\n `,\r\n styleUrl: './card.css',\r\n})\r\nexport class HyCard {\r\n /** Inner spacing. Media always stays full bleed. */\r\n readonly padding = input<HyCardPadding>('md');\r\n}\r\n\r\n/** Everything needed to build a card. */\r\nexport const HY_CARD = [HyCard, HyCardMedia, HyCardHeader, HyCardFooter, HyCardLink] as const;\r\n"],"mappings":";;;;AAQA,IAAa,cAAb,MAAa,YAAW;CAAX,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,MAAA,EAAA,gBAAA,iBAAA;EAAA,UAAA;CAAA,CAAA;;AAAX,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAW,YAAA,CAAA;EADvB,MAAA;EAAU,MAAA,CAAA;GAAE,UAAU;GAAiB,MAAM,EAAE,OAAO,iBAAgB;EAAE,CAAE;;;AAK3E,IAAa,eAAb,MAAa,aAAY;CAAZ,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,MAAA,EAAA,gBAAA,kBAAA;EAAA,UAAA;CAAA,CAAA;;AAAZ,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAY,YAAA,CAAA;EADxB,MAAA;EAAU,MAAA,CAAA;GAAE,UAAU;GAAkB,MAAM,EAAE,OAAO,kBAAiB;EAAE,CAAE;;;AAK7E,IAAa,eAAb,MAAa,aAAY;CAAZ,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,MAAA,EAAA,gBAAA,kBAAA;EAAA,UAAA;CAAA,CAAA;;AAAZ,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAY,YAAA,CAAA;EADxB,MAAA;EAAU,MAAA,CAAA;GAAE,UAAU;GAAkB,MAAM,EAAE,OAAO,kBAAiB;EAAE,CAAE;;;AAS7E,IAAa,aAAb,MAAa,WAAU;CAAV,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAU,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAV,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAU,cAAA;EAAA,UAAA;EAAA,MAAA,EAAA,gBAAA,gBAAA;EAAA,UAAA;CAAA,CAAA;;AAAV,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAU,YAAA,CAAA;EADtB,MAAA;EAAU,MAAA,CAAA;GAAE,UAAU;GAAiB,MAAM,EAAE,OAAO,gBAAe;EAAE,CAAE;;;AAgC1E,IAAa,SAAb,MAAa,OAAM;CAER,UAAU,MAAqB,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAFlC,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAM,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAN,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAM,cAAA;EAAA,UAAA;EAAA,QAAA,EAAA,SAAA;GAAA,mBAAA;GAAA,YAAA;GAAA,UAAA;GAAA,YAAA;GAAA,mBAAA;EAAA,EAAA;EAAA,MAAA;GAAA,YAAA,EAAA,qBAAA,YAAA;GAAA,gBAAA;EAAA;EAAA,gBAAA,CAAA;GAAA,WAAA,GAAA;GAAA,QAAA,CAAA,cAAA,UAAA;EAAA,CAAA;EAAA,UAAA;EAAA,UARP;;;;;;EAKT,UAAA;EAAA,QAAA,CAAA,ogBAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAGU,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAM,YAAA,CAAA;EAhBlB,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAS,iBACF,wBAAwB;GAAM,gBAC/B,CAAC;IAAE,WAAW;IAAqB,QAAQ,CAAC,sBAAsB;GAAC,CAAE;GAAC,MAChF;IACJ,OAAO;IACP,uBAAuB;GACxB;GAAA,UACS;;;;;;GAKT,QAAA,CAAA,ogBAAA;EAAA,CAAA;;;;;;;;;;;AASH,MAAa,UAAU;CAAC;CAAQ;CAAa;CAAc;CAAc;AAAU"}
1
+ {"version":3,"file":"hyalo-angular-card.mjs","names":[],"sources":["../../../projects/hyalo/card/card.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Directive, input } from '@angular/core';\r\nimport { HyMaterialDirective } from '@hyalo/angular/core';\r\n\r\n/** Inner spacing of a card. */\r\nexport type HyCardPadding = 'none' | 'sm' | 'md' | 'lg';\r\n\r\n/** Full-bleed media at the top of a card: an image, video or canvas. */\r\n@Directive({ selector: '[hyCardMedia]', host: { class: 'hy-card__media' } })\r\nexport class HyCardMedia {}\r\n\r\n/** Title area. Put the card's heading here. */\r\n@Directive({ selector: '[hyCardHeader]', host: { class: 'hy-card__header' } })\r\nexport class HyCardHeader {}\r\n\r\n/** Actions or meta at the bottom. */\r\n@Directive({ selector: '[hyCardFooter]', host: { class: 'hy-card__footer' } })\r\nexport class HyCardFooter {}\r\n\r\n/**\r\n * Makes one link inside the card cover the whole card, so the card is\r\n * clickable while screen readers still hear a single, well-named link.\r\n * Other buttons in the card stay clickable on top of it.\r\n */\r\n@Directive({ selector: 'a[hyCardLink]', host: { class: 'hy-card__link' } })\r\nexport class HyCardLink {}\r\n\r\n/**\r\n * The kit's signature surface: a glass panel with optional media, header,\r\n * body and footer.\r\n *\r\n * ```html\r\n * <hy-card material=\"clear\" hyTilt>\r\n * <img hyCardMedia src=\"watch.avif\" alt=\"\" />\r\n * <h3 hyCardHeader><a hyCardLink routerLink=\"/watch/1\">Calibre 7</a></h3>\r\n * <p>Hand-wound, 42 mm, sapphire caseback.</p>\r\n * <div hyCardFooter>From 4 200 EUR</div>\r\n * </hy-card>\r\n * ```\r\n */\r\n@Component({\r\n selector: 'hy-card',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n hostDirectives: [{ directive: HyMaterialDirective, inputs: ['hyMaterial: material'] }],\r\n host: {\r\n class: 'hy-card',\r\n '[attr.data-padding]': 'padding()',\r\n },\r\n template: `\r\n <ng-content select=\"[hyCardMedia]\" />\r\n <ng-content select=\"[hyCardHeader]\" />\r\n <div class=\"hy-card__body\"><ng-content /></div>\r\n <ng-content select=\"[hyCardFooter]\" />\r\n `,\r\n styleUrl: './card.css',\r\n})\r\nexport class HyCard {\r\n /** Inner spacing. Media always stays full bleed. */\r\n readonly padding = input<HyCardPadding>('md');\r\n}\r\n\r\n/** Everything needed to build a card. */\r\nexport const HY_CARD = [HyCard, HyCardMedia, HyCardHeader, HyCardFooter, HyCardLink] as const;\r\n"],"mappings":"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"}