@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.
- package/CHANGELOG.md +95 -41
- package/README.md +46 -32
- package/fesm2022/hyalo-angular-accordion.mjs +6 -6
- package/fesm2022/hyalo-angular-accordion.mjs.map +1 -1
- package/fesm2022/hyalo-angular-alert.mjs +171 -0
- package/fesm2022/hyalo-angular-alert.mjs.map +1 -0
- package/fesm2022/hyalo-angular-aspect-ratio.mjs +64 -0
- package/fesm2022/hyalo-angular-aspect-ratio.mjs.map +1 -0
- package/fesm2022/hyalo-angular-avatar.mjs +169 -0
- package/fesm2022/hyalo-angular-avatar.mjs.map +1 -0
- package/fesm2022/hyalo-angular-badge.mjs +268 -0
- package/fesm2022/hyalo-angular-badge.mjs.map +1 -0
- package/fesm2022/hyalo-angular-bento.mjs +132 -0
- package/fesm2022/hyalo-angular-bento.mjs.map +1 -0
- package/fesm2022/hyalo-angular-blocks.mjs +985 -0
- package/fesm2022/hyalo-angular-blocks.mjs.map +1 -0
- package/fesm2022/hyalo-angular-border-beam.mjs +73 -0
- package/fesm2022/hyalo-angular-border-beam.mjs.map +1 -0
- package/fesm2022/hyalo-angular-breadcrumb.mjs +77 -0
- package/fesm2022/hyalo-angular-breadcrumb.mjs.map +1 -0
- package/fesm2022/hyalo-angular-button-group.mjs +90 -0
- package/fesm2022/hyalo-angular-button-group.mjs.map +1 -0
- package/fesm2022/hyalo-angular-button.mjs +4 -3
- package/fesm2022/hyalo-angular-button.mjs.map +1 -1
- package/fesm2022/hyalo-angular-card.mjs +2 -2
- package/fesm2022/hyalo-angular-card.mjs.map +1 -1
- package/fesm2022/hyalo-angular-carousel.mjs +709 -0
- package/fesm2022/hyalo-angular-carousel.mjs.map +1 -0
- package/fesm2022/hyalo-angular-chapter-nav.mjs +336 -0
- package/fesm2022/hyalo-angular-chapter-nav.mjs.map +1 -0
- package/fesm2022/hyalo-angular-chart-engine-DSJop6He.mjs +5 -0
- package/fesm2022/hyalo-angular-chart-engine-DSJop6He.mjs.map +1 -0
- package/fesm2022/hyalo-angular-chart.mjs +391 -0
- package/fesm2022/hyalo-angular-chart.mjs.map +1 -0
- package/fesm2022/hyalo-angular-choice.mjs +2 -1
- package/fesm2022/hyalo-angular-choice.mjs.map +1 -1
- package/fesm2022/hyalo-angular-code-block-highlight-B20d5C76.mjs +40 -0
- package/fesm2022/hyalo-angular-code-block-highlight-B20d5C76.mjs.map +1 -0
- package/fesm2022/hyalo-angular-code-block.mjs +161 -0
- package/fesm2022/hyalo-angular-code-block.mjs.map +1 -0
- package/fesm2022/hyalo-angular-command.mjs +193 -0
- package/fesm2022/hyalo-angular-command.mjs.map +1 -0
- package/fesm2022/hyalo-angular-copy.mjs +138 -0
- package/fesm2022/hyalo-angular-copy.mjs.map +1 -0
- package/fesm2022/hyalo-angular-core.mjs +424 -0
- package/fesm2022/hyalo-angular-core.mjs.map +1 -0
- package/fesm2022/hyalo-angular-description-list.mjs +57 -0
- package/fesm2022/hyalo-angular-description-list.mjs.map +1 -0
- package/fesm2022/hyalo-angular-dialog.mjs +51 -22
- package/fesm2022/hyalo-angular-dialog.mjs.map +1 -1
- package/fesm2022/hyalo-angular-divider.mjs +66 -0
- package/fesm2022/hyalo-angular-divider.mjs.map +1 -0
- package/fesm2022/hyalo-angular-empty-state.mjs +123 -0
- package/fesm2022/hyalo-angular-empty-state.mjs.map +1 -0
- package/fesm2022/hyalo-angular-field.mjs +41 -9
- package/fesm2022/hyalo-angular-field.mjs.map +1 -1
- package/fesm2022/hyalo-angular-filter.mjs +309 -0
- package/fesm2022/hyalo-angular-filter.mjs.map +1 -0
- package/fesm2022/hyalo-angular-hotspot.mjs +225 -0
- package/fesm2022/hyalo-angular-hotspot.mjs.map +1 -0
- package/fesm2022/hyalo-angular-hover-card.mjs +233 -0
- package/fesm2022/hyalo-angular-hover-card.mjs.map +1 -0
- package/fesm2022/hyalo-angular-icon.mjs +42 -0
- package/fesm2022/hyalo-angular-icon.mjs.map +1 -1
- package/fesm2022/hyalo-angular-image-compare.mjs +168 -0
- package/fesm2022/hyalo-angular-image-compare.mjs.map +1 -0
- package/fesm2022/hyalo-angular-interaction.mjs +32 -41
- package/fesm2022/hyalo-angular-interaction.mjs.map +1 -1
- package/fesm2022/hyalo-angular-kbd.mjs +41 -0
- package/fesm2022/hyalo-angular-kbd.mjs.map +1 -0
- package/fesm2022/hyalo-angular-lightbox.mjs +228 -0
- package/fesm2022/hyalo-angular-lightbox.mjs.map +1 -0
- package/fesm2022/hyalo-angular-link.mjs +42 -0
- package/fesm2022/hyalo-angular-link.mjs.map +1 -0
- package/fesm2022/hyalo-angular-list.mjs +131 -0
- package/fesm2022/hyalo-angular-list.mjs.map +1 -0
- package/fesm2022/hyalo-angular-marquee.mjs +197 -0
- package/fesm2022/hyalo-angular-marquee.mjs.map +1 -0
- package/fesm2022/hyalo-angular-menu.mjs +423 -0
- package/fesm2022/hyalo-angular-menu.mjs.map +1 -0
- package/fesm2022/hyalo-angular-mesh.mjs +126 -0
- package/fesm2022/hyalo-angular-mesh.mjs.map +1 -0
- package/fesm2022/hyalo-angular-motion.mjs +620 -0
- package/fesm2022/hyalo-angular-motion.mjs.map +1 -0
- package/fesm2022/hyalo-angular-navbar.mjs +1 -1
- package/fesm2022/hyalo-angular-navbar.mjs.map +1 -1
- package/fesm2022/hyalo-angular-navigation-menu.mjs +222 -0
- package/fesm2022/hyalo-angular-navigation-menu.mjs.map +1 -0
- package/fesm2022/hyalo-angular-number-ticker.mjs +174 -0
- package/fesm2022/hyalo-angular-number-ticker.mjs.map +1 -0
- package/fesm2022/hyalo-angular-overlay.mjs +71 -2
- package/fesm2022/hyalo-angular-overlay.mjs.map +1 -1
- package/fesm2022/hyalo-angular-pagination.mjs +187 -0
- package/fesm2022/hyalo-angular-pagination.mjs.map +1 -0
- package/fesm2022/hyalo-angular-popover.mjs +34 -5
- package/fesm2022/hyalo-angular-popover.mjs.map +1 -1
- package/fesm2022/hyalo-angular-progress.mjs +209 -0
- package/fesm2022/hyalo-angular-progress.mjs.map +1 -0
- package/fesm2022/hyalo-angular-progressive-blur.mjs +73 -0
- package/fesm2022/hyalo-angular-progressive-blur.mjs.map +1 -0
- package/fesm2022/hyalo-angular-refraction-renderer-5ZA-kfsA.mjs +186 -0
- package/fesm2022/hyalo-angular-refraction-renderer-5ZA-kfsA.mjs.map +1 -0
- package/fesm2022/hyalo-angular-refraction.mjs +178 -0
- package/fesm2022/hyalo-angular-refraction.mjs.map +1 -0
- package/fesm2022/hyalo-angular-scroll-area.mjs +93 -0
- package/fesm2022/hyalo-angular-scroll-area.mjs.map +1 -0
- package/fesm2022/hyalo-angular-scroll-to-top.mjs +127 -0
- package/fesm2022/hyalo-angular-scroll-to-top.mjs.map +1 -0
- package/fesm2022/hyalo-angular-segmented.mjs +1 -1
- package/fesm2022/hyalo-angular-segmented.mjs.map +1 -1
- package/fesm2022/hyalo-angular-select.mjs +112 -15
- package/fesm2022/hyalo-angular-select.mjs.map +1 -1
- package/fesm2022/hyalo-angular-sidebar.mjs +241 -0
- package/fesm2022/hyalo-angular-sidebar.mjs.map +1 -0
- package/fesm2022/hyalo-angular-skeleton.mjs +131 -0
- package/fesm2022/hyalo-angular-skeleton.mjs.map +1 -0
- package/fesm2022/hyalo-angular-sparkline.mjs +110 -0
- package/fesm2022/hyalo-angular-sparkline.mjs.map +1 -0
- package/fesm2022/hyalo-angular-split-text.mjs +126 -0
- package/fesm2022/hyalo-angular-split-text.mjs.map +1 -0
- package/fesm2022/hyalo-angular-stat.mjs +193 -0
- package/fesm2022/hyalo-angular-stat.mjs.map +1 -0
- package/fesm2022/hyalo-angular-stepper.mjs +254 -0
- package/fesm2022/hyalo-angular-stepper.mjs.map +1 -0
- package/fesm2022/hyalo-angular-table.mjs +335 -0
- package/fesm2022/hyalo-angular-table.mjs.map +1 -0
- package/fesm2022/hyalo-angular-tabs.mjs +1 -1
- package/fesm2022/hyalo-angular-tabs.mjs.map +1 -1
- package/fesm2022/hyalo-angular-theme.mjs +1 -1
- package/fesm2022/hyalo-angular-theme.mjs.map +1 -1
- package/fesm2022/hyalo-angular-timeline.mjs +157 -0
- package/fesm2022/hyalo-angular-timeline.mjs.map +1 -0
- package/fesm2022/hyalo-angular-toast.mjs +2 -1
- package/fesm2022/hyalo-angular-toast.mjs.map +1 -1
- package/fesm2022/hyalo-angular.mjs +2 -473
- package/package.json +198 -2
- package/styles/parts/field.css +44 -36
- package/styles/parts/glass.css +2 -0
- package/styles/parts/motion.css +19 -0
- package/styles/parts/typography.css +17 -0
- package/types/hyalo-angular-accordion.d.ts +1 -1
- package/types/hyalo-angular-alert.d.ts +47 -0
- package/types/hyalo-angular-aspect-ratio.d.ts +13 -0
- package/types/hyalo-angular-avatar.d.ts +39 -0
- package/types/hyalo-angular-badge.d.ts +82 -0
- package/types/hyalo-angular-bento.d.ts +25 -0
- package/types/hyalo-angular-blocks.d.ts +272 -0
- package/types/hyalo-angular-border-beam.d.ts +15 -0
- package/types/hyalo-angular-breadcrumb.d.ts +22 -0
- package/types/hyalo-angular-button-group.d.ts +19 -0
- package/types/hyalo-angular-button.d.ts +4 -3
- package/types/hyalo-angular-card.d.ts +1 -1
- package/types/hyalo-angular-carousel.d.ts +147 -0
- package/types/hyalo-angular-chapter-nav.d.ts +79 -0
- package/types/hyalo-angular-chart.d.ts +90 -0
- package/types/hyalo-angular-code-block.d.ts +46 -0
- package/types/hyalo-angular-command.d.ts +41 -0
- package/types/hyalo-angular-copy.d.ts +39 -0
- package/types/hyalo-angular-core.d.ts +210 -0
- package/types/hyalo-angular-description-list.d.ts +16 -0
- package/types/hyalo-angular-dialog.d.ts +2 -1
- package/types/hyalo-angular-divider.d.ts +12 -0
- package/types/hyalo-angular-empty-state.d.ts +30 -0
- package/types/hyalo-angular-field.d.ts +10 -4
- package/types/hyalo-angular-filter.d.ts +122 -0
- package/types/hyalo-angular-hotspot.d.ts +70 -0
- package/types/hyalo-angular-hover-card.d.ts +47 -0
- package/types/hyalo-angular-image-compare.d.ts +55 -0
- package/types/hyalo-angular-kbd.d.ts +5 -0
- package/types/hyalo-angular-lightbox.d.ts +67 -0
- package/types/hyalo-angular-link.d.ts +5 -0
- package/types/hyalo-angular-list.d.ts +30 -0
- package/types/hyalo-angular-marquee.d.ts +48 -0
- package/types/hyalo-angular-menu.d.ts +105 -0
- package/types/hyalo-angular-mesh.d.ts +36 -0
- package/types/hyalo-angular-motion.d.ts +218 -0
- package/types/hyalo-angular-navigation-menu.d.ts +47 -0
- package/types/hyalo-angular-number-ticker.d.ts +52 -0
- package/types/hyalo-angular-overlay.d.ts +9 -0
- package/types/hyalo-angular-pagination.d.ts +59 -0
- package/types/hyalo-angular-popover.d.ts +10 -0
- package/types/hyalo-angular-progress.d.ts +46 -0
- package/types/hyalo-angular-progressive-blur.d.ts +14 -0
- package/types/hyalo-angular-refraction.d.ts +46 -0
- package/types/hyalo-angular-scroll-area.d.ts +18 -0
- package/types/hyalo-angular-scroll-to-top.d.ts +31 -0
- package/types/hyalo-angular-segmented.d.ts +1 -1
- package/types/hyalo-angular-select.d.ts +49 -3
- package/types/hyalo-angular-sidebar.d.ts +57 -0
- package/types/hyalo-angular-skeleton.d.ts +34 -0
- package/types/hyalo-angular-sparkline.d.ts +19 -0
- package/types/hyalo-angular-split-text.d.ts +24 -0
- package/types/hyalo-angular-stat.d.ts +56 -0
- package/types/hyalo-angular-stepper.d.ts +63 -0
- package/types/hyalo-angular-table.d.ts +125 -0
- package/types/hyalo-angular-timeline.d.ts +36 -0
- package/types/hyalo-angular.d.ts +2 -345
- package/fesm2022/hyalo-angular.mjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,41 +1,95 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to `@hyalo/angular` are listed here. The format follows [Keep a Changelog](https://keepachangelog.com), and versions follow [Semantic Versioning](https://semver.org). Until 1.0, a minor version can include breaking changes.
|
|
4
|
-
|
|
5
|
-
## 0.1
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
-
|
|
21
|
-
|
|
22
|
-
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
|
|
33
|
-
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
-
|
|
41
|
-
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to `@hyalo/angular` are listed here. The format follows [Keep a Changelog](https://keepachangelog.com), and versions follow [Semantic Versioning](https://semver.org). Until 1.0, a minor version can include breaking changes.
|
|
4
|
+
|
|
5
|
+
## 0.3.1 (2026-11-15)
|
|
6
|
+
|
|
7
|
+
### App shell and data
|
|
8
|
+
|
|
9
|
+
- Added sidebar, breadcrumb, dropdown and navigation menus, command palette,
|
|
10
|
+
pagination, tables, charts, sparklines, statistics, progress, alerts and lists.
|
|
11
|
+
- Added filters, copy controls, number tickers, progressive blur and composed blocks.
|
|
12
|
+
- Separated core and motion entry points; chart and syntax engines remain optional.
|
|
13
|
+
|
|
14
|
+
### Polish and fixes
|
|
15
|
+
|
|
16
|
+
- Sorted documentation navigation and completed all component catalog previews.
|
|
17
|
+
- Refined dashboard spacing, sidebar surfaces, collapsed navigation and responsive layout.
|
|
18
|
+
- Matched input focus rings to rounded field surfaces and standardized SVG chevrons.
|
|
19
|
+
- Fixed Signal Forms integration, command dismissal and exact code-block whitespace.
|
|
20
|
+
- Batched pointer and WebGL geometry reads, canceled pending indicator work on destroy,
|
|
21
|
+
cached shader uniforms and released WebGL resources explicitly.
|
|
22
|
+
- Extracted larger templates and styles and aligned lint checks with package boundaries.
|
|
23
|
+
|
|
24
|
+
## 0.2.0
|
|
25
|
+
|
|
26
|
+
### Showcase and marketing
|
|
27
|
+
|
|
28
|
+
- Rebuilt chapter navigation with explicit smooth scrolling, nested reading panes,
|
|
29
|
+
stable selection, history and focus handling, and optional sticky links.
|
|
30
|
+
|
|
31
|
+
- Hotspots can open anchored, solid detail panels with Escape dismissal and focus
|
|
32
|
+
return, and support labelled or compact pin modes.
|
|
33
|
+
- Carousel hides its native scrollbar by default, offers dot/counter pagination,
|
|
34
|
+
slide/fade modes and optional loop navigation. Scroll position updates use cached
|
|
35
|
+
dimensions and one animation-frame callback instead of scanning every slide.
|
|
36
|
+
- Skeletons offer shimmer, pulse and static modes.
|
|
37
|
+
- Docs code panels have HTML, TypeScript and conditional CSS tabs, keyboard navigation,
|
|
38
|
+
copy feedback without highlighting the preview card. Their sources are generated
|
|
39
|
+
from live demos; import snippets have their own copy buttons.
|
|
40
|
+
- Added selectable `HyChip` controls, custom carousel navigation templates, icon and
|
|
41
|
+
hidden button modes, three navigation positions, and passive catalog previews.
|
|
42
|
+
- Fixed loop-mode scroll feedback, first-frame popover placement, accordion padding
|
|
43
|
+
jumps and mesh animation visibility. Mesh pause/resume retains its animation position.
|
|
44
|
+
- Fixed chapter links resolving against the app base URL instead of the current route;
|
|
45
|
+
selection now follows clicks and fragment history without leaving the page.
|
|
46
|
+
|
|
47
|
+
- Added independently importable carousel, lightbox/gallery, image compare, marquee,
|
|
48
|
+
split-text reveal, refraction, scene hotspot, mesh background, timeline, stepper,
|
|
49
|
+
badge/chip, avatar/group and skeleton components.
|
|
50
|
+
- Added button group, link, divider, aspect-ratio frame, chapter navigation and
|
|
51
|
+
scroll-to-top helpers. Toggle groups use the existing segmented control.
|
|
52
|
+
- Carousel supports native touch inertia, mouse drag velocity, keyboard navigation
|
|
53
|
+
and RTL. Lightbox reuses CDK dialog focus trapping, dismissal and focus restore.
|
|
54
|
+
- Stepper gates incomplete steps, retains form DOM and focuses the selected header.
|
|
55
|
+
- Refraction shares one WebGL context across image-backed surfaces on high fidelity,
|
|
56
|
+
with CSS glass fallbacks. Decorative motion follows fidelity and reduced motion.
|
|
57
|
+
- Added 19 lazy docs pages with live demos, API tables and accessibility notes.
|
|
58
|
+
|
|
59
|
+
## 0.1.0
|
|
60
|
+
|
|
61
|
+
The first release.
|
|
62
|
+
|
|
63
|
+
### Foundations (`@hyalo/angular`)
|
|
64
|
+
|
|
65
|
+
- `provideHyalo()` for global config, with the material, size and tone axes.
|
|
66
|
+
- `HyFidelity`, which steps the glass down on devices or settings where blur would hurt.
|
|
67
|
+
- `HyMotion` with motion presets, a spring helper and an optional, lazily loaded GSAP.
|
|
68
|
+
- The glass material directive and interaction state.
|
|
69
|
+
|
|
70
|
+
### Components
|
|
71
|
+
|
|
72
|
+
Each one is standalone and has its own entry point.
|
|
73
|
+
|
|
74
|
+
- `@hyalo/angular/accordion`: `hy-accordion` and `hy-accordion-item` on Angular Aria.
|
|
75
|
+
- `@hyalo/angular/button`: `hyButton` for buttons and link buttons, with an inline loading spinner.
|
|
76
|
+
- `@hyalo/angular/card`: `hy-card` with media, header, body and footer slots.
|
|
77
|
+
- `@hyalo/angular/choice`: `hy-checkbox`, `hy-radio-group` with `hy-radio`, and `hy-switch`.
|
|
78
|
+
- `@hyalo/angular/dialog`: the `HyDialog` and `HyDrawer` services, content parts, a confirm helper, side drawers and bottom sheets.
|
|
79
|
+
- `@hyalo/angular/field`: `hy-field` and `hyInput` for text fields, with Signal Forms support.
|
|
80
|
+
- `@hyalo/angular/icon`: `hy-icon` with a name registry and Lucide-compatible data.
|
|
81
|
+
- `@hyalo/angular/interaction`: reveal, tilt, magnetic and ripple directives.
|
|
82
|
+
- `@hyalo/angular/navbar`: `hy-navbar` with a collapsible menu and scroll behaviour.
|
|
83
|
+
- `@hyalo/angular/overlay`: logical placement helpers for CDK overlays.
|
|
84
|
+
- `@hyalo/angular/popover`: `hyTooltip` and `hyPopover`, loading the CDK overlay on first open.
|
|
85
|
+
- `@hyalo/angular/segmented`: `hy-segmented`.
|
|
86
|
+
- `@hyalo/angular/select`: `hy-select` on the Angular Aria combobox and listbox.
|
|
87
|
+
- `@hyalo/angular/tabs`: `hy-tabs` on Angular Aria.
|
|
88
|
+
- `@hyalo/angular/theme`: `HyPalette` for switching palettes at runtime.
|
|
89
|
+
- `@hyalo/angular/toast`: the `HyToaster` service with swipe to dismiss.
|
|
90
|
+
|
|
91
|
+
### Styles
|
|
92
|
+
|
|
93
|
+
- `styles/hyalo.css` with everything, or `styles/hyalo-core.css` plus one file per overlay from `styles/overlays/`.
|
|
94
|
+
- Design tokens, light and dark themes, and component tokens, all in cascade layers.
|
|
95
|
+
- Six on-demand palettes in `styles/palettes/`: aurora, ember, orchid, ocean, rose and graphite.
|
package/README.md
CHANGED
|
@@ -1,32 +1,46 @@
|
|
|
1
|
-
<p align="center">
|
|
2
|
-
<img src="https://raw.githubusercontent.com/HamedRsl/Hyalo/main/.github/assets/hyalo-logo.jpg" alt="Hyalo, Angular UI kit" width="240" />
|
|
3
|
-
</p>
|
|
4
|
-
|
|
5
|
-
# @hyalo/angular
|
|
6
|
-
|
|
7
|
-
Liquid glass components for Angular, built on Angular Aria and the CDK. Signal based, zoneless, server-render safe, accessible, and ready for RTL.
|
|
8
|
-
|
|
9
|
-
```sh
|
|
10
|
-
npm install @hyalo/angular
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
Add the stylesheet before your own styles in `angular.json`:
|
|
14
|
-
|
|
15
|
-
```json
|
|
16
|
-
"styles": ["node_modules/@hyalo/angular/styles/hyalo.css", "src/styles.css"]
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
`hyalo.css` includes every overlay's styles. To leave out the ones you don't use, list `hyalo-core.css` plus the files you need from `styles/overlays/` (`select.css`, `popover.css`, `dialog.css`, `toast.css`) instead.
|
|
20
|
-
|
|
21
|
-
Then import the standalone components you need. Each one has its own entry point, so a lazy route only loads what it uses:
|
|
22
|
-
|
|
23
|
-
```ts
|
|
24
|
-
import { HyButton } from '@hyalo/angular/button';
|
|
25
|
-
import { HY_CARD } from '@hyalo/angular/card';
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
`@hyalo/angular` itself holds the shared foundations, such as `provideHyalo()`, `HyFidelity` and `HyMotion`.
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://raw.githubusercontent.com/HamedRsl/Hyalo/main/.github/assets/hyalo-logo.jpg" alt="Hyalo, Angular UI kit" width="240" />
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
# @hyalo/angular
|
|
6
|
+
|
|
7
|
+
Liquid glass components for Angular, built on Angular Aria and the CDK. Signal based, zoneless, server-render safe, accessible, and ready for RTL.
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
npm install @hyalo/angular
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Add the stylesheet before your own styles in `angular.json`:
|
|
14
|
+
|
|
15
|
+
```json
|
|
16
|
+
"styles": ["node_modules/@hyalo/angular/styles/hyalo.css", "src/styles.css"]
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
`hyalo.css` includes every overlay's styles. To leave out the ones you don't use, list `hyalo-core.css` plus the files you need from `styles/overlays/` (`select.css`, `popover.css`, `dialog.css`, `toast.css`) instead.
|
|
20
|
+
|
|
21
|
+
Then import the standalone components you need. Each one has its own entry point, so a lazy route only loads what it uses:
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
import { HyButton } from '@hyalo/angular/button';
|
|
25
|
+
import { HY_CARD } from '@hyalo/angular/card';
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
`@hyalo/angular` itself holds the shared foundations, such as `provideHyalo()`, `HyFidelity` and `HyMotion`.
|
|
29
|
+
|
|
30
|
+
Version 0.2 adds carousel, gallery and lightbox, image comparison, marquee, split text,
|
|
31
|
+
refraction, scene hotspots, mesh backgrounds, timeline, stepper, badges, avatars and
|
|
32
|
+
skeletons. Each has its own package entry point, such as `@hyalo/angular/carousel`.
|
|
33
|
+
Button groups, links, dividers, aspect-ratio frames, chapter navigation and scroll-to-top
|
|
34
|
+
controls are included too. The existing segmented control provides toggle groups.
|
|
35
|
+
|
|
36
|
+
Refraction uses a supplied same-origin or CORS-enabled image and one shared WebGL
|
|
37
|
+
context on high fidelity. CSS glass remains available on other tiers or when WebGL
|
|
38
|
+
cannot run. The gallery uses the existing dialog overlay styles.
|
|
39
|
+
|
|
40
|
+
Version 0.3 adds app navigation, tables, optional Chart.js charts, filters, command search,
|
|
41
|
+
statistics, copy controls, and composed blocks. Import foundations from
|
|
42
|
+
`@hyalo/angular/core` and optional motion from `@hyalo/angular/motion`.
|
|
43
|
+
|
|
44
|
+
Configuration, theming, RTL, motion and the full component list are in the [repository README](https://github.com/HamedRsl/Hyalo#readme).
|
|
45
|
+
|
|
46
|
+
MIT licensed.
|
|
@@ -3,8 +3,8 @@ import { ChangeDetectionStrategy, Component, booleanAttribute, input, model, num
|
|
|
3
3
|
import * as i1 from "@angular/aria/accordion";
|
|
4
4
|
import { AccordionGroup, AccordionPanel, AccordionTrigger } from "@angular/aria/accordion";
|
|
5
5
|
import { HyIcon } from "@hyalo/angular/icon";
|
|
6
|
-
import * as i2 from "@hyalo/angular";
|
|
7
|
-
import { HyMaterialDirective } from "@hyalo/angular";
|
|
6
|
+
import * as i2 from "@hyalo/angular/core";
|
|
7
|
+
import { HyMaterialDirective } from "@hyalo/angular/core";
|
|
8
8
|
var HyAccordionItem = class HyAccordionItem {
|
|
9
9
|
heading = input("", ...ngDevMode ? [{ debugName: "heading" }] : /* istanbul ignore next */ []);
|
|
10
10
|
headingLevel = input(3, {
|
|
@@ -66,8 +66,8 @@ var HyAccordionItem = class HyAccordionItem {
|
|
|
66
66
|
classAttribute: "hy-accordion-item"
|
|
67
67
|
},
|
|
68
68
|
ngImport: i0,
|
|
69
|
-
template: "<div class=\"hy-accordion__heading\" role=\"heading\" [attr.aria-level]=\"headingLevel()\">\r\n <button\r\n type=\"button\"\r\n class=\"hy-accordion__trigger\"\r\n ngAccordionTrigger\r\n [panel]=\"panel\"\r\n [(expanded)]=\"expanded\"\r\n [disabled]=\"disabled()\"\r\n >\r\n <span class=\"hy-accordion__label\">\r\n {{ heading() }}\r\n <ng-content select=\"[hyAccordionHeading]\" />\r\n </span>\r\n <hy-icon class=\"hy-accordion__chevron\" name=\"chevron-down\" />\r\n </button>\r\n</div>\r\n<div ngAccordionPanel #panel=\"ngAccordionPanel\" class=\"hy-accordion__panel\">\r\n <div class=\"hy-accordion__body\">\r\n <div class=\"hy-accordion__content\"><ng-content /></div>\r\n </div>\r\n</div>\r\n",
|
|
70
|
-
styles: [":host{display:block}:host+:host{border-block-start:1px solid var(--hy-accordion-divider, var(--hy-line))}.hy-accordion__heading{margin:0}.hy-accordion__trigger{display:flex;align-items:center;justify-content:space-between;gap:var(--hy-space-4);inline-size:100%;min-block-size:var(--hy-accordion-trigger-height, 3.5rem);padding:var(--hy-space-3) 0;border:0;background:transparent;color:var(--hy-ink);font:inherit;font-size:var(--hy-step-1);font-weight:580;text-align:start;cursor:pointer}.hy-accordion__trigger:focus-visible{outline:none;border-radius:var(--hy-radius-s);box-shadow:var(--hy-focus-ring)}.hy-accordion__trigger[aria-disabled=true]{opacity:.45;cursor:not-allowed}.hy-accordion__chevron{flex:none;color:var(--hy-ink-3);transition:rotate var(--hy-dur-
|
|
69
|
+
template: "<div class=\"hy-accordion__heading\" role=\"heading\" [attr.aria-level]=\"headingLevel()\">\r\n <button\r\n type=\"button\"\r\n class=\"hy-accordion__trigger\"\r\n ngAccordionTrigger\r\n [panel]=\"panel\"\r\n [(expanded)]=\"expanded\"\r\n [disabled]=\"disabled()\"\r\n >\r\n <span class=\"hy-accordion__label\">\r\n {{ heading() }}\r\n <ng-content select=\"[hyAccordionHeading]\" />\r\n </span>\r\n <hy-icon class=\"hy-accordion__chevron\" name=\"chevron-down\" />\r\n </button>\r\n</div>\r\n<div ngAccordionPanel #panel=\"ngAccordionPanel\" class=\"hy-accordion__panel\">\r\n <div class=\"hy-accordion__body\">\r\n <div class=\"hy-accordion__content\">\r\n <div class=\"hy-accordion__inner\"><ng-content /></div>\r\n </div>\r\n </div>\r\n</div>\r\n",
|
|
70
|
+
styles: [":host{display:block}:host+:host{border-block-start:1px solid var(--hy-accordion-divider, var(--hy-line))}.hy-accordion__heading{margin:0}.hy-accordion__trigger{display:flex;align-items:center;justify-content:space-between;gap:var(--hy-space-4);inline-size:100%;min-block-size:var(--hy-accordion-trigger-height, 3.5rem);padding:var(--hy-space-3) 0;border:0;background:transparent;color:var(--hy-ink);font:inherit;font-size:var(--hy-step-1);font-weight:580;text-align:start;cursor:pointer}.hy-accordion__trigger:focus-visible{outline:none;border-radius:var(--hy-radius-s);box-shadow:var(--hy-focus-ring)}.hy-accordion__trigger[aria-disabled=true]{opacity:.45;cursor:not-allowed}.hy-accordion__chevron{--hy-icon-size: 1rem;transform-origin:center;flex:none;color:var(--hy-ink-3);transition:rotate var(--hy-dur-quick) var(--hy-ease-out)}:host([data-open]) .hy-accordion__chevron{rotate:180deg}.hy-accordion__body{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--hy-dur-quick) var(--hy-ease-out)}:host([data-open]) .hy-accordion__body{grid-template-rows:1fr}.hy-accordion__content{min-block-size:0;overflow:hidden;color:var(--hy-ink-2)}.hy-accordion__inner{display:flow-root;padding-block-end:var(--hy-space-5)}.hy-accordion__panel[inert] .hy-accordion__content{visibility:hidden;transition:visibility 0s linear var(--hy-dur-quick)}@media print{.hy-accordion__body{grid-template-rows:1fr}.hy-accordion__panel[inert] .hy-accordion__content{visibility:visible}}@media(prefers-reduced-motion:reduce){.hy-accordion__chevron{transition:none}}\n"],
|
|
71
71
|
dependencies: [
|
|
72
72
|
{
|
|
73
73
|
kind: "directive",
|
|
@@ -124,8 +124,8 @@ i0.ɵɵngDeclareClassMetadata({
|
|
|
124
124
|
class: "hy-accordion-item",
|
|
125
125
|
"[attr.data-open]": "expanded() || null"
|
|
126
126
|
},
|
|
127
|
-
template: "<div class=\"hy-accordion__heading\" role=\"heading\" [attr.aria-level]=\"headingLevel()\">\r\n <button\r\n type=\"button\"\r\n class=\"hy-accordion__trigger\"\r\n ngAccordionTrigger\r\n [panel]=\"panel\"\r\n [(expanded)]=\"expanded\"\r\n [disabled]=\"disabled()\"\r\n >\r\n <span class=\"hy-accordion__label\">\r\n {{ heading() }}\r\n <ng-content select=\"[hyAccordionHeading]\" />\r\n </span>\r\n <hy-icon class=\"hy-accordion__chevron\" name=\"chevron-down\" />\r\n </button>\r\n</div>\r\n<div ngAccordionPanel #panel=\"ngAccordionPanel\" class=\"hy-accordion__panel\">\r\n <div class=\"hy-accordion__body\">\r\n <div class=\"hy-accordion__content\"><ng-content /></div>\r\n </div>\r\n</div>\r\n",
|
|
128
|
-
styles: [":host{display:block}:host+:host{border-block-start:1px solid var(--hy-accordion-divider, var(--hy-line))}.hy-accordion__heading{margin:0}.hy-accordion__trigger{display:flex;align-items:center;justify-content:space-between;gap:var(--hy-space-4);inline-size:100%;min-block-size:var(--hy-accordion-trigger-height, 3.5rem);padding:var(--hy-space-3) 0;border:0;background:transparent;color:var(--hy-ink);font:inherit;font-size:var(--hy-step-1);font-weight:580;text-align:start;cursor:pointer}.hy-accordion__trigger:focus-visible{outline:none;border-radius:var(--hy-radius-s);box-shadow:var(--hy-focus-ring)}.hy-accordion__trigger[aria-disabled=true]{opacity:.45;cursor:not-allowed}.hy-accordion__chevron{flex:none;color:var(--hy-ink-3);transition:rotate var(--hy-dur-
|
|
127
|
+
template: "<div class=\"hy-accordion__heading\" role=\"heading\" [attr.aria-level]=\"headingLevel()\">\r\n <button\r\n type=\"button\"\r\n class=\"hy-accordion__trigger\"\r\n ngAccordionTrigger\r\n [panel]=\"panel\"\r\n [(expanded)]=\"expanded\"\r\n [disabled]=\"disabled()\"\r\n >\r\n <span class=\"hy-accordion__label\">\r\n {{ heading() }}\r\n <ng-content select=\"[hyAccordionHeading]\" />\r\n </span>\r\n <hy-icon class=\"hy-accordion__chevron\" name=\"chevron-down\" />\r\n </button>\r\n</div>\r\n<div ngAccordionPanel #panel=\"ngAccordionPanel\" class=\"hy-accordion__panel\">\r\n <div class=\"hy-accordion__body\">\r\n <div class=\"hy-accordion__content\">\r\n <div class=\"hy-accordion__inner\"><ng-content /></div>\r\n </div>\r\n </div>\r\n</div>\r\n",
|
|
128
|
+
styles: [":host{display:block}:host+:host{border-block-start:1px solid var(--hy-accordion-divider, var(--hy-line))}.hy-accordion__heading{margin:0}.hy-accordion__trigger{display:flex;align-items:center;justify-content:space-between;gap:var(--hy-space-4);inline-size:100%;min-block-size:var(--hy-accordion-trigger-height, 3.5rem);padding:var(--hy-space-3) 0;border:0;background:transparent;color:var(--hy-ink);font:inherit;font-size:var(--hy-step-1);font-weight:580;text-align:start;cursor:pointer}.hy-accordion__trigger:focus-visible{outline:none;border-radius:var(--hy-radius-s);box-shadow:var(--hy-focus-ring)}.hy-accordion__trigger[aria-disabled=true]{opacity:.45;cursor:not-allowed}.hy-accordion__chevron{--hy-icon-size: 1rem;transform-origin:center;flex:none;color:var(--hy-ink-3);transition:rotate var(--hy-dur-quick) var(--hy-ease-out)}:host([data-open]) .hy-accordion__chevron{rotate:180deg}.hy-accordion__body{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--hy-dur-quick) var(--hy-ease-out)}:host([data-open]) .hy-accordion__body{grid-template-rows:1fr}.hy-accordion__content{min-block-size:0;overflow:hidden;color:var(--hy-ink-2)}.hy-accordion__inner{display:flow-root;padding-block-end:var(--hy-space-5)}.hy-accordion__panel[inert] .hy-accordion__content{visibility:hidden;transition:visibility 0s linear var(--hy-dur-quick)}@media print{.hy-accordion__body{grid-template-rows:1fr}.hy-accordion__panel[inert] .hy-accordion__content{visibility:visible}}@media(prefers-reduced-motion:reduce){.hy-accordion__chevron{transition:none}}\n"]
|
|
129
129
|
}]
|
|
130
130
|
}],
|
|
131
131
|
propDecorators: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hyalo-angular-accordion.mjs","names":[],"sources":["../../../projects/hyalo/accordion/accordion.ts","../../../projects/hyalo/accordion/accordion-item.html"],"sourcesContent":["import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n booleanAttribute,\r\n input,\r\n model,\r\n numberAttribute,\r\n} from '@angular/core';\r\nimport { AccordionGroup, AccordionPanel, AccordionTrigger } from '@angular/aria/accordion';\r\nimport { HyIcon } from '@hyalo/angular/icon';\r\n\r\nimport { HyMaterialDirective } from '@hyalo/angular';\r\n\r\n/**\r\n * One collapsible section. The panel content stays in the DOM while closed\r\n * (marked `inert`), so in-page search and FAQ structured data still see it.\r\n */\r\n@Component({\r\n selector: 'hy-accordion-item',\r\n imports: [AccordionTrigger, AccordionPanel, HyIcon],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'hy-accordion-item',\r\n '[attr.data-open]': 'expanded() || null',\r\n },\r\n templateUrl: './accordion-item.html',\r\n styleUrl: './accordion.css',\r\n})\r\nexport class HyAccordionItem {\r\n /** Text of the header button. */\r\n readonly heading = input('');\r\n /** Heading level of the header, 2 to 6. Pick the one that fits the page outline. */\r\n readonly headingLevel = input(3, { transform: numberAttribute });\r\n /** Whether the section is open. Two-way bindable. */\r\n readonly expanded = model(false);\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n}\r\n\r\n/**\r\n * A stack of collapsible sections on Angular Aria. Arrow keys move between\r\n * headers, Home and End jump to the ends, Enter or Space toggles.\r\n *\r\n * ```html\r\n * <hy-accordion>\r\n * <hy-accordion-item heading=\"How long does delivery take?\">Three to five working days.</hy-accordion-item>\r\n * <hy-accordion-item heading=\"Can I return it?\">Within 30 days, free of charge.</hy-accordion-item>\r\n * </hy-accordion>\r\n * ```\r\n *\r\n * Only one section is open at a time unless `multiple` is set. Opening and\r\n * closing animate the height with CSS grid, which costs no layout script.\r\n */\r\n@Component({\r\n selector: 'hy-accordion',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n hostDirectives: [\r\n { directive: AccordionGroup, inputs: ['multiExpandable: multiple', 'disabled'] },\r\n { directive: HyMaterialDirective, inputs: ['hyMaterial: material'] },\r\n ],\r\n host: { class: 'hy-accordion' },\r\n template: `<ng-content />`,\r\n styles: `\r\n :host {\r\n display: block;\r\n border-radius: var(--hy-radius-l);\r\n padding-inline: var(--hy-space-5);\r\n }\r\n `,\r\n})\r\nexport class HyAccordion {}\r\n\r\n/** Everything needed to build an accordion. */\r\nexport const HY_ACCORDION = [HyAccordion, HyAccordionItem] as const;\r\n","<div class=\"hy-accordion__heading\" role=\"heading\" [attr.aria-level]=\"headingLevel()\">\r\n <button\r\n type=\"button\"\r\n class=\"hy-accordion__trigger\"\r\n ngAccordionTrigger\r\n [panel]=\"panel\"\r\n [(expanded)]=\"expanded\"\r\n [disabled]=\"disabled()\"\r\n >\r\n <span class=\"hy-accordion__label\">\r\n {{ heading() }}\r\n <ng-content select=\"[hyAccordionHeading]\" />\r\n </span>\r\n <hy-icon class=\"hy-accordion__chevron\" name=\"chevron-down\" />\r\n </button>\r\n</div>\r\n<div ngAccordionPanel #panel=\"ngAccordionPanel\" class=\"hy-accordion__panel\">\r\n <div class=\"hy-accordion__body\">\r\n <div class=\"hy-accordion__content\"><ng-content /></div>\r\n </div>\r\n</div>\r\n"],"mappings":";;;;;;;AA4BA,IAAa,kBAAb,MAAa,gBAAe;CAEjB,UAAU,MAAM,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAEnB,eAAe,MAAM,GAAC;EAAA,GAAA,YAAA,EAAA,WAAA,eAAA,+BAAA,CAAA;EAAI,WAAW;CAAe,CAAA;CAEpD,WAAW,MAAM,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;CACvB,WAAW,MAAM,OAAK;EAAA,GAAA,YAAA,EAAA,WAAA,WAAA,+BAAA,CAAA;EAAI,WAAW;CAAgB,CAAA;CAPnD,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,cAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,UAAA;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,SAAA,EAAA,UAAA,iBAAA;EAAA,MAAA;GAAA,YAAA,EAAA,kBAAA,qBAAA;GAAA,gBAAA;EAAA;EAAA,UAAA;EAAA,UC5B5B;
|
|
1
|
+
{"version":3,"file":"hyalo-angular-accordion.mjs","names":[],"sources":["../../../projects/hyalo/accordion/accordion.ts","../../../projects/hyalo/accordion/accordion-item.html"],"sourcesContent":["import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n booleanAttribute,\r\n input,\r\n model,\r\n numberAttribute,\r\n} from '@angular/core';\r\nimport { AccordionGroup, AccordionPanel, AccordionTrigger } from '@angular/aria/accordion';\r\nimport { HyIcon } from '@hyalo/angular/icon';\r\n\r\nimport { HyMaterialDirective } from '@hyalo/angular/core';\r\n\r\n/**\r\n * One collapsible section. The panel content stays in the DOM while closed\r\n * (marked `inert`), so in-page search and FAQ structured data still see it.\r\n */\r\n@Component({\r\n selector: 'hy-accordion-item',\r\n imports: [AccordionTrigger, AccordionPanel, HyIcon],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'hy-accordion-item',\r\n '[attr.data-open]': 'expanded() || null',\r\n },\r\n templateUrl: './accordion-item.html',\r\n styleUrl: './accordion.css',\r\n})\r\nexport class HyAccordionItem {\r\n /** Text of the header button. */\r\n readonly heading = input('');\r\n /** Heading level of the header, 2 to 6. Pick the one that fits the page outline. */\r\n readonly headingLevel = input(3, { transform: numberAttribute });\r\n /** Whether the section is open. Two-way bindable. */\r\n readonly expanded = model(false);\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n}\r\n\r\n/**\r\n * A stack of collapsible sections on Angular Aria. Arrow keys move between\r\n * headers, Home and End jump to the ends, Enter or Space toggles.\r\n *\r\n * ```html\r\n * <hy-accordion>\r\n * <hy-accordion-item heading=\"How long does delivery take?\">Three to five working days.</hy-accordion-item>\r\n * <hy-accordion-item heading=\"Can I return it?\">Within 30 days, free of charge.</hy-accordion-item>\r\n * </hy-accordion>\r\n * ```\r\n *\r\n * Only one section is open at a time unless `multiple` is set. Opening and\r\n * closing animate the height with CSS grid, which costs no layout script.\r\n */\r\n@Component({\r\n selector: 'hy-accordion',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n hostDirectives: [\r\n { directive: AccordionGroup, inputs: ['multiExpandable: multiple', 'disabled'] },\r\n { directive: HyMaterialDirective, inputs: ['hyMaterial: material'] },\r\n ],\r\n host: { class: 'hy-accordion' },\r\n template: `<ng-content />`,\r\n styles: `\r\n :host {\r\n display: block;\r\n border-radius: var(--hy-radius-l);\r\n padding-inline: var(--hy-space-5);\r\n }\r\n `,\r\n})\r\nexport class HyAccordion {}\r\n\r\n/** Everything needed to build an accordion. */\r\nexport const HY_ACCORDION = [HyAccordion, HyAccordionItem] as const;\r\n","<div class=\"hy-accordion__heading\" role=\"heading\" [attr.aria-level]=\"headingLevel()\">\r\n <button\r\n type=\"button\"\r\n class=\"hy-accordion__trigger\"\r\n ngAccordionTrigger\r\n [panel]=\"panel\"\r\n [(expanded)]=\"expanded\"\r\n [disabled]=\"disabled()\"\r\n >\r\n <span class=\"hy-accordion__label\">\r\n {{ heading() }}\r\n <ng-content select=\"[hyAccordionHeading]\" />\r\n </span>\r\n <hy-icon class=\"hy-accordion__chevron\" name=\"chevron-down\" />\r\n </button>\r\n</div>\r\n<div ngAccordionPanel #panel=\"ngAccordionPanel\" class=\"hy-accordion__panel\">\r\n <div class=\"hy-accordion__body\">\r\n <div class=\"hy-accordion__content\">\r\n <div class=\"hy-accordion__inner\"><ng-content /></div>\r\n </div>\r\n </div>\r\n</div>\r\n"],"mappings":"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"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import { ChangeDetectionStrategy, Component, booleanAttribute, input, model, output } from "@angular/core";
|
|
3
|
+
var HyAlert = class HyAlert {
|
|
4
|
+
heading = input("", ...ngDevMode ? [{ debugName: "heading" }] : /* istanbul ignore next */ []);
|
|
5
|
+
tone = input("info", ...ngDevMode ? [{ debugName: "tone" }] : /* istanbul ignore next */ []);
|
|
6
|
+
announce = input(false, {
|
|
7
|
+
...ngDevMode ? { debugName: "announce" } : /* istanbul ignore next */ {},
|
|
8
|
+
transform: booleanAttribute
|
|
9
|
+
});
|
|
10
|
+
dismissible = input(false, {
|
|
11
|
+
...ngDevMode ? { debugName: "dismissible" } : /* istanbul ignore next */ {},
|
|
12
|
+
transform: booleanAttribute
|
|
13
|
+
});
|
|
14
|
+
dismissLabel = input("Dismiss message", ...ngDevMode ? [{ debugName: "dismissLabel" }] : /* istanbul ignore next */ []);
|
|
15
|
+
visible = model(true, ...ngDevMode ? [{ debugName: "visible" }] : /* istanbul ignore next */ []);
|
|
16
|
+
dismissed = output();
|
|
17
|
+
dismiss() {
|
|
18
|
+
this.visible.set(false);
|
|
19
|
+
this.dismissed.emit();
|
|
20
|
+
}
|
|
21
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
22
|
+
minVersion: "12.0.0",
|
|
23
|
+
version: "22.2.3",
|
|
24
|
+
ngImport: i0,
|
|
25
|
+
type: HyAlert,
|
|
26
|
+
deps: [],
|
|
27
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
28
|
+
});
|
|
29
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
30
|
+
minVersion: "17.0.0",
|
|
31
|
+
version: "22.2.3",
|
|
32
|
+
type: HyAlert,
|
|
33
|
+
isStandalone: true,
|
|
34
|
+
selector: "hy-alert",
|
|
35
|
+
inputs: {
|
|
36
|
+
heading: {
|
|
37
|
+
classPropertyName: "heading",
|
|
38
|
+
publicName: "heading",
|
|
39
|
+
isSignal: true,
|
|
40
|
+
isRequired: false,
|
|
41
|
+
transformFunction: null
|
|
42
|
+
},
|
|
43
|
+
tone: {
|
|
44
|
+
classPropertyName: "tone",
|
|
45
|
+
publicName: "tone",
|
|
46
|
+
isSignal: true,
|
|
47
|
+
isRequired: false,
|
|
48
|
+
transformFunction: null
|
|
49
|
+
},
|
|
50
|
+
announce: {
|
|
51
|
+
classPropertyName: "announce",
|
|
52
|
+
publicName: "announce",
|
|
53
|
+
isSignal: true,
|
|
54
|
+
isRequired: false,
|
|
55
|
+
transformFunction: null
|
|
56
|
+
},
|
|
57
|
+
dismissible: {
|
|
58
|
+
classPropertyName: "dismissible",
|
|
59
|
+
publicName: "dismissible",
|
|
60
|
+
isSignal: true,
|
|
61
|
+
isRequired: false,
|
|
62
|
+
transformFunction: null
|
|
63
|
+
},
|
|
64
|
+
dismissLabel: {
|
|
65
|
+
classPropertyName: "dismissLabel",
|
|
66
|
+
publicName: "dismissLabel",
|
|
67
|
+
isSignal: true,
|
|
68
|
+
isRequired: false,
|
|
69
|
+
transformFunction: null
|
|
70
|
+
},
|
|
71
|
+
visible: {
|
|
72
|
+
classPropertyName: "visible",
|
|
73
|
+
publicName: "visible",
|
|
74
|
+
isSignal: true,
|
|
75
|
+
isRequired: false,
|
|
76
|
+
transformFunction: null
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
outputs: {
|
|
80
|
+
visible: "visibleChange",
|
|
81
|
+
dismissed: "dismissed"
|
|
82
|
+
},
|
|
83
|
+
host: { properties: {
|
|
84
|
+
"hidden": "!visible()",
|
|
85
|
+
"attr.data-tone": "tone()"
|
|
86
|
+
} },
|
|
87
|
+
ngImport: i0,
|
|
88
|
+
template: "@if (visible()) {\r\n <section [attr.role]=\"announce() ? (tone() === 'danger' ? 'alert' : 'status') : null\">\r\n <div>\r\n @if (heading()) {\r\n <strong>{{ heading() }}</strong>\r\n }\r\n <div><ng-content /></div>\r\n </div>\r\n @if (dismissible()) {\r\n <button type=\"button\" [attr.aria-label]=\"dismissLabel()\" (click)=\"dismiss()\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n }\r\n </section>\r\n}\r\n",
|
|
89
|
+
styles: [":host{--alert-color: var(--hy-primary);display:block;color:var(--hy-ink)}:host([hidden]){display:none}:host([data-tone=\"success\"]){--alert-color: var(--hy-success)}:host([data-tone=\"warning\"]){--alert-color: var(--hy-warning)}:host([data-tone=\"danger\"]){--alert-color: var(--hy-danger)}section{display:flex;gap:1rem;justify-content:space-between;padding:1rem;border:1px solid var(--hy-line);border-inline-start:3px solid var(--alert-color);border-radius:var(--hy-radius-m);background:var(--hy-surface-1)}strong{display:block;margin-block-end:.25rem}button{flex:none;min-inline-size:44px;block-size:44px;border:0;border-radius:var(--hy-radius-s);color:var(--hy-ink);background:transparent;font:inherit;font-size:1.5rem;cursor:pointer}button:hover{background:var(--hy-surface-3)}:is(button,a,input):focus-visible{outline:2px solid var(--hy-primary);outline-offset:3px}\n"],
|
|
90
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
94
|
+
minVersion: "12.0.0",
|
|
95
|
+
version: "22.2.3",
|
|
96
|
+
ngImport: i0,
|
|
97
|
+
type: HyAlert,
|
|
98
|
+
decorators: [{
|
|
99
|
+
type: Component,
|
|
100
|
+
args: [{
|
|
101
|
+
selector: "hy-alert",
|
|
102
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
103
|
+
host: {
|
|
104
|
+
"[hidden]": "!visible()",
|
|
105
|
+
"[attr.data-tone]": "tone()"
|
|
106
|
+
},
|
|
107
|
+
template: "@if (visible()) {\r\n <section [attr.role]=\"announce() ? (tone() === 'danger' ? 'alert' : 'status') : null\">\r\n <div>\r\n @if (heading()) {\r\n <strong>{{ heading() }}</strong>\r\n }\r\n <div><ng-content /></div>\r\n </div>\r\n @if (dismissible()) {\r\n <button type=\"button\" [attr.aria-label]=\"dismissLabel()\" (click)=\"dismiss()\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n }\r\n </section>\r\n}\r\n",
|
|
108
|
+
styles: [":host{--alert-color: var(--hy-primary);display:block;color:var(--hy-ink)}:host([hidden]){display:none}:host([data-tone=\"success\"]){--alert-color: var(--hy-success)}:host([data-tone=\"warning\"]){--alert-color: var(--hy-warning)}:host([data-tone=\"danger\"]){--alert-color: var(--hy-danger)}section{display:flex;gap:1rem;justify-content:space-between;padding:1rem;border:1px solid var(--hy-line);border-inline-start:3px solid var(--alert-color);border-radius:var(--hy-radius-m);background:var(--hy-surface-1)}strong{display:block;margin-block-end:.25rem}button{flex:none;min-inline-size:44px;block-size:44px;border:0;border-radius:var(--hy-radius-s);color:var(--hy-ink);background:transparent;font:inherit;font-size:1.5rem;cursor:pointer}button:hover{background:var(--hy-surface-3)}:is(button,a,input):focus-visible{outline:2px solid var(--hy-primary);outline-offset:3px}\n"]
|
|
109
|
+
}]
|
|
110
|
+
}],
|
|
111
|
+
propDecorators: {
|
|
112
|
+
heading: [{
|
|
113
|
+
type: i0.Input,
|
|
114
|
+
args: [{
|
|
115
|
+
isSignal: true,
|
|
116
|
+
alias: "heading",
|
|
117
|
+
required: false
|
|
118
|
+
}]
|
|
119
|
+
}],
|
|
120
|
+
tone: [{
|
|
121
|
+
type: i0.Input,
|
|
122
|
+
args: [{
|
|
123
|
+
isSignal: true,
|
|
124
|
+
alias: "tone",
|
|
125
|
+
required: false
|
|
126
|
+
}]
|
|
127
|
+
}],
|
|
128
|
+
announce: [{
|
|
129
|
+
type: i0.Input,
|
|
130
|
+
args: [{
|
|
131
|
+
isSignal: true,
|
|
132
|
+
alias: "announce",
|
|
133
|
+
required: false
|
|
134
|
+
}]
|
|
135
|
+
}],
|
|
136
|
+
dismissible: [{
|
|
137
|
+
type: i0.Input,
|
|
138
|
+
args: [{
|
|
139
|
+
isSignal: true,
|
|
140
|
+
alias: "dismissible",
|
|
141
|
+
required: false
|
|
142
|
+
}]
|
|
143
|
+
}],
|
|
144
|
+
dismissLabel: [{
|
|
145
|
+
type: i0.Input,
|
|
146
|
+
args: [{
|
|
147
|
+
isSignal: true,
|
|
148
|
+
alias: "dismissLabel",
|
|
149
|
+
required: false
|
|
150
|
+
}]
|
|
151
|
+
}],
|
|
152
|
+
visible: [{
|
|
153
|
+
type: i0.Input,
|
|
154
|
+
args: [{
|
|
155
|
+
isSignal: true,
|
|
156
|
+
alias: "visible",
|
|
157
|
+
required: false
|
|
158
|
+
}]
|
|
159
|
+
}, {
|
|
160
|
+
type: i0.Output,
|
|
161
|
+
args: ["visibleChange"]
|
|
162
|
+
}],
|
|
163
|
+
dismissed: [{
|
|
164
|
+
type: i0.Output,
|
|
165
|
+
args: ["dismissed"]
|
|
166
|
+
}]
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
export { HyAlert };
|
|
170
|
+
|
|
171
|
+
//# sourceMappingURL=hyalo-angular-alert.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hyalo-angular-alert.mjs","names":[],"sources":["../../../projects/hyalo/alert/alert.ts","../../../projects/hyalo/alert/alert.html"],"sourcesContent":["import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n booleanAttribute,\r\n input,\r\n model,\r\n output,\r\n} from '@angular/core';\r\n@Component({\r\n selector: 'hy-alert',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: './alert.html',\r\n styleUrl: './alert.css',\r\n host: { '[hidden]': '!visible()', '[attr.data-tone]': 'tone()' },\r\n})\r\nexport class HyAlert {\r\n readonly heading = input('');\r\n readonly tone = input<'info' | 'success' | 'warning' | 'danger'>('info');\r\n readonly announce = input(false, { transform: booleanAttribute });\r\n readonly dismissible = input(false, { transform: booleanAttribute });\r\n readonly dismissLabel = input('Dismiss message');\r\n readonly visible = model(true);\r\n readonly dismissed = output<void>();\r\n dismiss(): void {\r\n this.visible.set(false);\r\n this.dismissed.emit();\r\n }\r\n}\r\n","@if (visible()) {\r\n <section [attr.role]=\"announce() ? (tone() === 'danger' ? 'alert' : 'status') : null\">\r\n <div>\r\n @if (heading()) {\r\n <strong>{{ heading() }}</strong>\r\n }\r\n <div><ng-content /></div>\r\n </div>\r\n @if (dismissible()) {\r\n <button type=\"button\" [attr.aria-label]=\"dismissLabel()\" (click)=\"dismiss()\">\r\n <span aria-hidden=\"true\">×</span>\r\n </button>\r\n }\r\n </section>\r\n}\r\n"],"mappings":";;AAeA,IAAa,UAAb,MAAa,QAAO;CACT,UAAU,MAAM,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CACnB,OAAO,MAAiD,QAAO,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;CAC/D,WAAW,MAAM,OAAK;EAAA,GAAA,YAAA,EAAA,WAAA,WAAA,+BAAA,CAAA;EAAI,WAAW;CAAgB,CAAA;CACrD,cAAc,MAAM,OAAK;EAAA,GAAA,YAAA,EAAA,WAAA,cAAA,+BAAA,CAAA;EAAI,WAAW;CAAgB,CAAA;CACxD,eAAe,MAAM,mBAAkB,GAAA,YAAA,CAAA,EAAA,WAAA,eAAA,CAAA,+BAAA,CAAA,CAAA;CACvC,UAAU,MAAM,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CACrB,YAAY,OAAM;CAC3B,UAAO;EACL,KAAK,QAAQ,IAAI,KAAK;EACtB,KAAK,UAAU,KAAI;CACrB;CAXW,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAO,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAP,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAO,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,MAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,UAAA;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,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,SAAA;GAAA,SAAA;GAAA,WAAA;EAAA;EAAA,MAAA,EAAA,YAAA;GAAA,UAAA;GAAA,kBAAA;EAAA,EAAA;EAAA,UAAA;EAAA,UCfpB;EAeA,QAAA,CAAA,42BAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;ADAa,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAO,YAAA,CAAA;EAPnB,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAU,iBACH,wBAAwB;GAAM,MAGzC;IAAE,YAAY;IAAc,oBAAoB;GAAQ;GAAE,UAAA;GAAA,QAAA,CAAA,42BAAA;EAAA,CAAA"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import { ChangeDetectionStrategy, Component, computed, input, numberAttribute } from "@angular/core";
|
|
3
|
+
var HyAspectRatio = class HyAspectRatio {
|
|
4
|
+
ratio = input(16 / 9, {
|
|
5
|
+
...ngDevMode ? { debugName: "ratio" } : /* istanbul ignore next */ {},
|
|
6
|
+
transform: numberAttribute
|
|
7
|
+
});
|
|
8
|
+
safeRatio = computed(() => Number.isFinite(this.ratio()) && this.ratio() > 0 ? this.ratio() : 16 / 9, ...ngDevMode ? [{ debugName: "safeRatio" }] : /* istanbul ignore next */ []);
|
|
9
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
10
|
+
minVersion: "12.0.0",
|
|
11
|
+
version: "22.2.3",
|
|
12
|
+
ngImport: i0,
|
|
13
|
+
type: HyAspectRatio,
|
|
14
|
+
deps: [],
|
|
15
|
+
target: i0.ɵɵFactoryTarget.Component
|
|
16
|
+
});
|
|
17
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
18
|
+
minVersion: "17.1.0",
|
|
19
|
+
version: "22.2.3",
|
|
20
|
+
type: HyAspectRatio,
|
|
21
|
+
isStandalone: true,
|
|
22
|
+
selector: "hy-aspect-ratio",
|
|
23
|
+
inputs: { ratio: {
|
|
24
|
+
classPropertyName: "ratio",
|
|
25
|
+
publicName: "ratio",
|
|
26
|
+
isSignal: true,
|
|
27
|
+
isRequired: false,
|
|
28
|
+
transformFunction: null
|
|
29
|
+
} },
|
|
30
|
+
host: { properties: { "style.aspect-ratio": "safeRatio()" } },
|
|
31
|
+
ngImport: i0,
|
|
32
|
+
template: "<ng-content />",
|
|
33
|
+
isInline: true,
|
|
34
|
+
styles: [":host{display:grid;overflow:clip;border-radius:var(--hy-radius-m)}\n"],
|
|
35
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
39
|
+
minVersion: "12.0.0",
|
|
40
|
+
version: "22.2.3",
|
|
41
|
+
ngImport: i0,
|
|
42
|
+
type: HyAspectRatio,
|
|
43
|
+
decorators: [{
|
|
44
|
+
type: Component,
|
|
45
|
+
args: [{
|
|
46
|
+
selector: "hy-aspect-ratio",
|
|
47
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
48
|
+
host: { "[style.aspect-ratio]": "safeRatio()" },
|
|
49
|
+
template: "<ng-content />",
|
|
50
|
+
styles: [":host{display:grid;overflow:clip;border-radius:var(--hy-radius-m)}\n"]
|
|
51
|
+
}]
|
|
52
|
+
}],
|
|
53
|
+
propDecorators: { ratio: [{
|
|
54
|
+
type: i0.Input,
|
|
55
|
+
args: [{
|
|
56
|
+
isSignal: true,
|
|
57
|
+
alias: "ratio",
|
|
58
|
+
required: false
|
|
59
|
+
}]
|
|
60
|
+
}] }
|
|
61
|
+
});
|
|
62
|
+
export { HyAspectRatio };
|
|
63
|
+
|
|
64
|
+
//# sourceMappingURL=hyalo-angular-aspect-ratio.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hyalo-angular-aspect-ratio.mjs","names":[],"sources":["../../../projects/hyalo/aspect-ratio/aspect-ratio.ts"],"sourcesContent":["import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n input,\r\n numberAttribute,\r\n} from '@angular/core';\r\n@Component({\r\n selector: 'hy-aspect-ratio',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { '[style.aspect-ratio]': 'safeRatio()' },\r\n template: '<ng-content />',\r\n styleUrl: './aspect-ratio.css',\r\n})\r\nexport class HyAspectRatio {\r\n readonly ratio = input(16 / 9, { transform: numberAttribute });\r\n protected readonly safeRatio = computed(() =>\r\n Number.isFinite(this.ratio()) && this.ratio() > 0 ? this.ratio() : 16 / 9,\r\n );\r\n}\r\n"],"mappings":";;AAcA,IAAa,gBAAb,MAAa,cAAa;CACf,QAAQ,MAAM,KAAK,GAAC;EAAA,GAAA,YAAA,EAAA,WAAA,QAAA,+BAAA,CAAA;EAAI,WAAW;CAAe,CAAA;CACxC,YAAY,eAC7B,OAAO,SAAS,KAAK,MAAK,CAAE,KAAK,KAAK,MAAK,IAAK,IAAI,KAAK,MAAK,IAAK,KAAK,GACzE,GAAA,YAAA,CAAA,EAAA,WAAA,YAAA,CAAA,+BAAA,CAAA,CAAA;CAJU,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,EAAA,OAAA;GAAA,mBAAA;GAAA,YAAA;GAAA,UAAA;GAAA,YAAA;GAAA,mBAAA;EAAA,EAAA;EAAA,MAAA,EAAA,YAAA,EAAA,sBAAA,cAAA,EAAA;EAAA,UAAA;EAAA,UAHd;EAAgB,UAAA;EAAA,QAAA,CAAA,sEAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAGf,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAa,YAAA,CAAA;EAPzB,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAiB,iBACV,wBAAwB;GAAM,MACzC,EAAE,wBAAwB,cAAa;GAAE,UACrC;GAAgB,QAAA,CAAA,sEAAA;EAAA,CAAA"}
|