ngwr 7.0.0 → 7.2.0

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 (170) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +6 -4
  3. package/alert/styles/_index.scss +2 -0
  4. package/back-top/styles/_index.scss +4 -2
  5. package/burger/styles/_index.scss +101 -0
  6. package/cascader/styles/_index.scss +16 -0
  7. package/command-palette/styles/_index.scss +28 -0
  8. package/descriptions/styles/_index.scss +59 -0
  9. package/dialog/styles/_index.scss +2 -0
  10. package/dropdown/styles/_index.scss +1 -0
  11. package/fesm2022/ngwr-affix.mjs +3 -3
  12. package/fesm2022/ngwr-alert.mjs +3 -3
  13. package/fesm2022/ngwr-anchor.mjs +3 -3
  14. package/fesm2022/ngwr-aurora.mjs +3 -3
  15. package/fesm2022/ngwr-avatar.mjs +3 -3
  16. package/fesm2022/ngwr-back-top.mjs +3 -3
  17. package/fesm2022/ngwr-badge.mjs +6 -6
  18. package/fesm2022/ngwr-bar-chart.mjs +3 -3
  19. package/fesm2022/ngwr-blur-text.mjs +3 -3
  20. package/fesm2022/ngwr-border-glow.mjs +3 -3
  21. package/fesm2022/ngwr-breadcrumbs.mjs +6 -6
  22. package/fesm2022/ngwr-burger.mjs +60 -0
  23. package/fesm2022/ngwr-burger.mjs.map +1 -0
  24. package/fesm2022/ngwr-button.mjs +6 -6
  25. package/fesm2022/ngwr-calendar-heatmap.mjs +3 -3
  26. package/fesm2022/ngwr-calendar.mjs +3 -3
  27. package/fesm2022/ngwr-card.mjs +9 -9
  28. package/fesm2022/ngwr-carousel.mjs +6 -6
  29. package/fesm2022/ngwr-cascader.mjs +5 -5
  30. package/fesm2022/ngwr-cascader.mjs.map +1 -1
  31. package/fesm2022/ngwr-checkbox.mjs +6 -6
  32. package/fesm2022/ngwr-circular-text.mjs +3 -3
  33. package/fesm2022/ngwr-click-spark.mjs +3 -3
  34. package/fesm2022/ngwr-clipboard.mjs +3 -3
  35. package/fesm2022/ngwr-collapse.mjs +9 -9
  36. package/fesm2022/ngwr-color-picker.mjs +6 -6
  37. package/fesm2022/ngwr-command-palette.mjs +19 -5
  38. package/fesm2022/ngwr-command-palette.mjs.map +1 -1
  39. package/fesm2022/ngwr-compare.mjs +3 -3
  40. package/fesm2022/ngwr-confetti.mjs +3 -3
  41. package/fesm2022/ngwr-context-menu.mjs +12 -12
  42. package/fesm2022/ngwr-cookie.mjs +3 -3
  43. package/fesm2022/ngwr-counter.mjs +6 -6
  44. package/fesm2022/ngwr-date-adapter-fns.mjs +3 -3
  45. package/fesm2022/ngwr-date-adapter-luxon.mjs +3 -3
  46. package/fesm2022/ngwr-date-adapter.mjs +3 -3
  47. package/fesm2022/ngwr-date-picker.mjs +9 -9
  48. package/fesm2022/ngwr-decrypt-text.mjs +3 -3
  49. package/fesm2022/ngwr-density.mjs +6 -6
  50. package/fesm2022/ngwr-descriptions.mjs +16 -7
  51. package/fesm2022/ngwr-descriptions.mjs.map +1 -1
  52. package/fesm2022/ngwr-dialog.mjs +26 -19
  53. package/fesm2022/ngwr-dialog.mjs.map +1 -1
  54. package/fesm2022/ngwr-directives.mjs +15 -15
  55. package/fesm2022/ngwr-divider.mjs +3 -3
  56. package/fesm2022/ngwr-donut-chart.mjs +3 -3
  57. package/fesm2022/ngwr-drag-drop.mjs +6 -6
  58. package/fesm2022/ngwr-drawer.mjs +15 -15
  59. package/fesm2022/ngwr-dropdown.mjs +43 -19
  60. package/fesm2022/ngwr-dropdown.mjs.map +1 -1
  61. package/fesm2022/ngwr-empty.mjs +3 -3
  62. package/fesm2022/ngwr-falling-text.mjs +3 -3
  63. package/fesm2022/ngwr-file-upload.mjs +3 -3
  64. package/fesm2022/ngwr-form.mjs +9 -9
  65. package/fesm2022/ngwr-fuzzy-text.mjs +3 -3
  66. package/fesm2022/ngwr-gauge.mjs +3 -3
  67. package/fesm2022/ngwr-glitch-text.mjs +3 -3
  68. package/fesm2022/ngwr-gradient-text.mjs +3 -3
  69. package/fesm2022/ngwr-hotkey.mjs +6 -6
  70. package/fesm2022/ngwr-i18n.mjs +9 -9
  71. package/fesm2022/ngwr-icon.mjs +3 -3
  72. package/fesm2022/ngwr-image-cropper.mjs +3 -3
  73. package/fesm2022/ngwr-input-number.mjs +3 -3
  74. package/fesm2022/ngwr-input-otp.mjs +3 -3
  75. package/fesm2022/ngwr-input.mjs +15 -15
  76. package/fesm2022/ngwr-keyboard.mjs +3 -3
  77. package/fesm2022/ngwr-knob.mjs +3 -3
  78. package/fesm2022/ngwr-layout.mjs +15 -15
  79. package/fesm2022/ngwr-lightbox.mjs +4 -4
  80. package/fesm2022/ngwr-lightbox.mjs.map +1 -1
  81. package/fesm2022/ngwr-line-chart.mjs +3 -3
  82. package/fesm2022/ngwr-list.mjs +6 -6
  83. package/fesm2022/ngwr-loading-bar.mjs +6 -6
  84. package/fesm2022/ngwr-marquee.mjs +3 -3
  85. package/fesm2022/ngwr-media.mjs +3 -3
  86. package/fesm2022/ngwr-mention.mjs +6 -6
  87. package/fesm2022/ngwr-meta.mjs +64 -7
  88. package/fesm2022/ngwr-meta.mjs.map +1 -1
  89. package/fesm2022/ngwr-meter-group.mjs +3 -3
  90. package/fesm2022/ngwr-overlay.mjs +73 -4
  91. package/fesm2022/ngwr-overlay.mjs.map +1 -1
  92. package/fesm2022/ngwr-page-header.mjs +13 -5
  93. package/fesm2022/ngwr-page-header.mjs.map +1 -1
  94. package/fesm2022/ngwr-pagination.mjs +3 -3
  95. package/fesm2022/ngwr-pagination.mjs.map +1 -1
  96. package/fesm2022/ngwr-pipes.mjs +21 -21
  97. package/fesm2022/ngwr-platform.mjs +3 -3
  98. package/fesm2022/ngwr-popconfirm.mjs +6 -6
  99. package/fesm2022/ngwr-popover.mjs +45 -15
  100. package/fesm2022/ngwr-popover.mjs.map +1 -1
  101. package/fesm2022/ngwr-progress.mjs +3 -3
  102. package/fesm2022/ngwr-qr.mjs +3 -3
  103. package/fesm2022/ngwr-radio.mjs +6 -6
  104. package/fesm2022/ngwr-rating.mjs +3 -3
  105. package/fesm2022/ngwr-result.mjs +12 -12
  106. package/fesm2022/ngwr-rotating-text.mjs +3 -3
  107. package/fesm2022/ngwr-scramble-text.mjs +3 -3
  108. package/fesm2022/ngwr-scroll.mjs +3 -3
  109. package/fesm2022/ngwr-segmented.mjs +3 -3
  110. package/fesm2022/ngwr-select.mjs +43 -22
  111. package/fesm2022/ngwr-select.mjs.map +1 -1
  112. package/fesm2022/ngwr-shiny-text.mjs +6 -6
  113. package/fesm2022/ngwr-sidebar.mjs +3 -3
  114. package/fesm2022/ngwr-skeleton.mjs +3 -3
  115. package/fesm2022/ngwr-slider.mjs +3 -3
  116. package/fesm2022/ngwr-sparkline.mjs +3 -3
  117. package/fesm2022/ngwr-speed-dial.mjs +3 -3
  118. package/fesm2022/ngwr-spinner.mjs +3 -3
  119. package/fesm2022/ngwr-splash-cursor.mjs +3 -3
  120. package/fesm2022/ngwr-split-text.mjs +3 -3
  121. package/fesm2022/ngwr-splitter.mjs +3 -3
  122. package/fesm2022/ngwr-spotlight-card.mjs +6 -6
  123. package/fesm2022/ngwr-squircle.mjs +6 -6
  124. package/fesm2022/ngwr-star-border.mjs +3 -3
  125. package/fesm2022/ngwr-statistic.mjs +6 -6
  126. package/fesm2022/ngwr-stepper.mjs +16 -7
  127. package/fesm2022/ngwr-stepper.mjs.map +1 -1
  128. package/fesm2022/ngwr-storage.mjs +3 -3
  129. package/fesm2022/ngwr-switch.mjs +3 -3
  130. package/fesm2022/ngwr-table.mjs +12 -12
  131. package/fesm2022/ngwr-table.mjs.map +1 -1
  132. package/fesm2022/ngwr-tabs.mjs +6 -6
  133. package/fesm2022/ngwr-textarea.mjs +3 -3
  134. package/fesm2022/ngwr-theme.mjs +3 -3
  135. package/fesm2022/ngwr-tilt-card.mjs +6 -6
  136. package/fesm2022/ngwr-timeline.mjs +6 -6
  137. package/fesm2022/ngwr-toast.mjs +9 -9
  138. package/fesm2022/ngwr-toolbar.mjs +3 -3
  139. package/fesm2022/ngwr-tree.mjs +3 -3
  140. package/fesm2022/ngwr-typewriter.mjs +3 -3
  141. package/fesm2022/ngwr-typography.mjs +3 -3
  142. package/fesm2022/ngwr-version.mjs +1 -1
  143. package/fesm2022/ngwr-version.mjs.map +1 -1
  144. package/fesm2022/ngwr-virtual-scroll.mjs +3 -3
  145. package/fesm2022/ngwr-waves.mjs +3 -3
  146. package/fesm2022/ngwr-window.mjs +12 -12
  147. package/lightbox/styles/_index.scss +2 -0
  148. package/overlay/styles/_index.scss +31 -0
  149. package/package.json +11 -5
  150. package/page-header/styles/_index.scss +16 -0
  151. package/popover/styles/_index.scss +17 -0
  152. package/schematics/use/symbol-map.json +1 -0
  153. package/select/styles/_index.scss +27 -0
  154. package/stepper/styles/_index.scss +30 -0
  155. package/styles.scss +2 -0
  156. package/theme/styles/_mixins.scss +47 -0
  157. package/toast/styles/_index.scss +30 -1
  158. package/tree/styles/_index.scss +15 -0
  159. package/types/ngwr-burger.d.ts +36 -0
  160. package/types/ngwr-command-palette.d.ts +13 -1
  161. package/types/ngwr-descriptions.d.ts +8 -1
  162. package/types/ngwr-dialog.d.ts +7 -0
  163. package/types/ngwr-dropdown.d.ts +10 -1
  164. package/types/ngwr-meta.d.ts +24 -0
  165. package/types/ngwr-overlay.d.ts +69 -1
  166. package/types/ngwr-page-header.d.ts +8 -1
  167. package/types/ngwr-popover.d.ts +11 -2
  168. package/types/ngwr-select.d.ts +10 -1
  169. package/types/ngwr-stepper.d.ts +8 -1
  170. package/types/ngwr-version.d.ts +1 -1
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2022-2025 Roman Khegay
3
+ Copyright (c) 2022-2026 Roman Khegay
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -7,8 +7,8 @@
7
7
  [![license](https://img.shields.io/npm/l/ngwr)](https://github.com/thekhegay/ngwr/blob/main/LICENSE)
8
8
 
9
9
  **NGWR** is a modern Angular UI library — standalone components, signals-first,
10
- zoneless-ready, modular SCSS, fully tree-shakable. Built on top of `@angular/cdk`
11
- for overlay, portal, and a11y primitives.
10
+ zoneless-ready, responsive, modular SCSS, fully tree-shakable. Built on top of
11
+ `@angular/cdk` for overlay, portal, and a11y primitives.
12
12
 
13
13
  > **Status:** active development. Public API is stable across patch releases but
14
14
  > the v7 line is still maturing. [Open an issue](https://github.com/thekhegay/ngwr/issues/new)
@@ -26,7 +26,7 @@ for overlay, portal, and a11y primitives.
26
26
  | `date-fns` _(optional)_ | `^3.0.0 \|\| ^4.0.0` |
27
27
  | `luxon` _(optional)_ | `^3.0.0` |
28
28
 
29
- Node ≥ 24.15.0 (or 26+). pnpm ≥ 11.5. TypeScript ≥ 6.0.
29
+ Node ≥ 24.16.0 (or 26+). pnpm ≥ 11.8. TypeScript ≥ 6.0.
30
30
 
31
31
  ## Install
32
32
 
@@ -127,7 +127,7 @@ export class AppComponent {
127
127
 
128
128
  **Layout** — [card](https://ngwr.dev/components/card), [carousel](https://ngwr.dev/components/carousel), [collapse](https://ngwr.dev/components/collapse), [layout](https://ngwr.dev/components/layout), [list](https://ngwr.dev/components/list), [page-header](https://ngwr.dev/components/page-header), [splitter](https://ngwr.dev/components/splitter), [toolbar](https://ngwr.dev/components/toolbar).
129
129
 
130
- **Navigation** — [anchor](https://ngwr.dev/components/anchor), [back-top](https://ngwr.dev/components/back-top), [breadcrumbs](https://ngwr.dev/components/breadcrumbs), [dropdown](https://ngwr.dev/components/dropdown), [sidebar](https://ngwr.dev/components/sidebar), [stepper](https://ngwr.dev/components/stepper), [tabs](https://ngwr.dev/components/tabs).
130
+ **Navigation** — [anchor](https://ngwr.dev/components/anchor), [back-top](https://ngwr.dev/components/back-top), [breadcrumbs](https://ngwr.dev/components/breadcrumbs), [burger](https://ngwr.dev/components/burger), [dropdown](https://ngwr.dev/components/dropdown), [sidebar](https://ngwr.dev/components/sidebar), [stepper](https://ngwr.dev/components/stepper), [tabs](https://ngwr.dev/components/tabs).
131
131
 
132
132
  **Overlays** — [command-palette](https://ngwr.dev/components/command-palette), [context-menu](https://ngwr.dev/components/context-menu), [dialog](https://ngwr.dev/components/dialog), [drawer](https://ngwr.dev/components/drawer), [popconfirm](https://ngwr.dev/components/popconfirm), [popover](https://ngwr.dev/components/popover), [toast](https://ngwr.dev/components/toast), [window](https://ngwr.dev/components/window).
133
133
 
@@ -168,6 +168,7 @@ Math (`clamp`, `round`), coercion (`numAttr`), css helpers (`resolveCssSize`, `g
168
168
  - [Color](https://ngwr.dev/getting-started/color) — design tokens and palette.
169
169
  - [Grid](https://ngwr.dev/getting-started/grid) — opt-in 12-column layout.
170
170
  - [Overlay](https://ngwr.dev/getting-started/overlay) — isolated CDK overlay container, `provideWrOverlay()`.
171
+ - [Mobile & responsive](https://ngwr.dev/getting-started/mobile) — responsive overlays, touch targets, safe-area insets, container-query layouts.
171
172
  - [Typography](https://ngwr.dev/typography) — `wrTypography` directive: headings, paragraphs, lists, links, code.
172
173
  - [Icons](https://ngwr.dev/icons) — `ngwr/icon` registry + thin adapters for Lucide, Feather, Tabler, Phosphor, Heroicons, Iconoir, Radix, Bootstrap.
173
174
  - **Date adapters** — `ngwr/date-adapter-fns`, `ngwr/date-adapter-luxon`. Wire one with `provideWrDateAdapter(...)` to power calendar + every mode of date-picker.
@@ -176,6 +177,7 @@ Math (`clamp`, `round`), coercion (`numAttr`), css helpers (`resolveCssSize`, `g
176
177
 
177
178
  - **Standalone & signals-first.** Every component is standalone and uses `input()` / `model()` / `output()` / `signal()` / `computed()`. Zoneless-ready.
178
179
  - **CDK-powered.** Overlays, portals, and a11y come from `@angular/cdk`. We add `provideWrOverlay()` so NGWR overlays never collide with other CDK consumers (Material, NG-ZORRO, etc.).
180
+ - **Mobile & responsive.** Overlays collapse to bottom-sheets on small screens (`provideWrResponsiveOverlays()`), touch targets grow to ≥44px on coarse pointers, fixed surfaces respect `env(safe-area-inset-*)`, and `descriptions` / `stepper` / `page-header` reflow to their container via container queries. [Guide](https://ngwr.dev/getting-started/mobile).
179
181
  - **Tree-shakable.** ~125 separate ng-packagr entry points — import only what you use. Per-component FESM bundles are typically 5–25 KB; the largest entry (`ngwr/icon`) is ~98 KB before tree-shaking and ships only the icons you actually register.
180
182
  - **Modular SCSS.** Component styles are scoped through CSS custom properties. Theme tokens live in `ngwr/theme`; utilities (`grid`, `reset`) and the breakpoints SCSS API are opt-in.
181
183
  - **Tree-shaken icons.** `provideWrIcons([plus, trash])` registers only the icons you actually import. Dev-mode validation warns about unregistered icons.
@@ -80,6 +80,8 @@ $alert-colors: (
80
80
 
81
81
  --wr-icon-size: 1rem;
82
82
 
83
+ @include theme.touch-target; // ~20px glyph -> 44px tap area on touch
84
+
83
85
  &:hover {
84
86
  color: var(--wr-alert-title);
85
87
  background: rgba(var(--wr-color-light-rgb), 0.4);
@@ -2,8 +2,10 @@
2
2
 
3
3
  .wr-back-top {
4
4
  position: fixed;
5
- bottom: 1.5rem;
6
- right: 1.5rem;
5
+ // Safe-area: lift the floating button clear of the home indicator / rounded
6
+ // corner on mobile. env() is 0 without insets, so desktop stays 1.5rem.
7
+ bottom: calc(1.5rem + env(safe-area-inset-bottom));
8
+ right: calc(1.5rem + env(safe-area-inset-right));
7
9
  z-index: 50;
8
10
  opacity: 0;
9
11
  pointer-events: none;
@@ -0,0 +1,101 @@
1
+ @use '../../theme/styles' as theme;
2
+
3
+ .wr-burger {
4
+ // Resting (hamburger) dash geometry. Each line is one SVG <path>; the
5
+ // open state below rewrites the dasharray/offset so the strokes slide
6
+ // into a close mark.
7
+ --wr-burger-size: 2.5rem;
8
+ --wr-burger-color: var(--wr-color-dark);
9
+ --wr-burger-color-opened: var(--wr-color-primary);
10
+ --wr-burger-stroke-width: 6px;
11
+ --wr-burger-duration: 0.5s;
12
+ --wr-burger-ease: var(--wr-ease-in-out);
13
+
14
+ --wr-burger-stroke-1: 60 207;
15
+ --wr-burger-offset-1: 0;
16
+ --wr-burger-stroke-2: 60 60;
17
+ --wr-burger-offset-2: 0;
18
+ --wr-burger-stroke-3: 60 207;
19
+ --wr-burger-offset-3: 0;
20
+
21
+ display: inline-flex;
22
+
23
+ &__btn {
24
+ display: inline-flex;
25
+ align-items: center;
26
+ justify-content: center;
27
+
28
+ width: var(--wr-burger-size);
29
+ height: var(--wr-burger-size);
30
+ padding: 0;
31
+
32
+ border: 0;
33
+ border-radius: var(--wr-border-radius-base);
34
+ background: transparent;
35
+ color: inherit;
36
+ cursor: pointer;
37
+
38
+ transition: background var(--wr-transition-base);
39
+
40
+ &:hover {
41
+ background: rgba(var(--wr-color-light-rgb), 0.4);
42
+ }
43
+
44
+ &:focus-visible {
45
+ outline: 2px solid var(--wr-color-primary);
46
+ outline-offset: 2px;
47
+ }
48
+
49
+ &:disabled {
50
+ cursor: not-allowed;
51
+ opacity: 0.5;
52
+ }
53
+ }
54
+
55
+ &__icon {
56
+ display: block;
57
+ width: 80%;
58
+ height: 80%;
59
+ }
60
+
61
+ &__line {
62
+ fill: none;
63
+ stroke: var(--wr-burger-color);
64
+ stroke-width: var(--wr-burger-stroke-width);
65
+ transition:
66
+ stroke-dasharray var(--wr-burger-duration) var(--wr-burger-ease),
67
+ stroke-dashoffset var(--wr-burger-duration) var(--wr-burger-ease),
68
+ stroke var(--wr-burger-duration) var(--wr-burger-ease);
69
+
70
+ &--1 {
71
+ stroke-dasharray: var(--wr-burger-stroke-1);
72
+ stroke-dashoffset: var(--wr-burger-offset-1);
73
+ }
74
+
75
+ &--2 {
76
+ stroke-dasharray: var(--wr-burger-stroke-2);
77
+ stroke-dashoffset: var(--wr-burger-offset-2);
78
+ }
79
+
80
+ &--3 {
81
+ stroke-dasharray: var(--wr-burger-stroke-3);
82
+ stroke-dashoffset: var(--wr-burger-offset-3);
83
+ }
84
+ }
85
+
86
+ &--opened {
87
+ --wr-burger-color: var(--wr-burger-color-opened);
88
+ --wr-burger-stroke-1: 90 207;
89
+ --wr-burger-offset-1: -134;
90
+ --wr-burger-stroke-2: 1 60;
91
+ --wr-burger-offset-2: -30;
92
+ --wr-burger-stroke-3: 90 207;
93
+ --wr-burger-offset-3: -134;
94
+ }
95
+
96
+ @media (prefers-reduced-motion: reduce) {
97
+ .wr-burger__line {
98
+ transition-duration: 1ms;
99
+ }
100
+ }
101
+ }
@@ -172,3 +172,19 @@
172
172
  color: var(--wr-color-medium);
173
173
  }
174
174
  }
175
+
176
+ // Touch pointers: grow the clear button and make the column option rows ~44px
177
+ // tall so each is a comfortable tap target. Fine pointers keep the compact
178
+ // desktop sizing above.
179
+ @media (pointer: coarse) {
180
+ .wr-cascader__clear {
181
+ --wr-icon-size: 1.125rem;
182
+ width: 2rem;
183
+ height: 2rem;
184
+ }
185
+
186
+ .wr-cascader-panel .wr-cascader__opt {
187
+ padding-top: 0.75rem;
188
+ padding-bottom: 0.75rem;
189
+ }
190
+ }
@@ -167,6 +167,34 @@
167
167
  }
168
168
  }
169
169
 
170
+ // Full-screen presentation on small viewports — opt in per-instance with
171
+ // `responsive` or app-wide via `provideWrResponsiveOverlays()`. The palette
172
+ // auto-focuses its input, so it fills the screen from the top edge rather than
173
+ // docking to the bottom (a bottom-sheet would sit under the on-screen
174
+ // keyboard). The list flexes to fill the remaining height.
175
+ .wr-command-palette--sheet {
176
+ padding: 0;
177
+
178
+ .wr-command-palette__panel {
179
+ max-width: none;
180
+ height: 100%;
181
+ max-height: 100%;
182
+ display: flex;
183
+ flex-direction: column;
184
+ border: 0;
185
+ border-radius: 0;
186
+ // Top-docked full-screen: clear the notch at the top (search bar) and the
187
+ // home indicator at the bottom. The panel background still fills both edges.
188
+ padding-top: env(safe-area-inset-top);
189
+ padding-bottom: env(safe-area-inset-bottom);
190
+ }
191
+
192
+ .wr-command-palette__body {
193
+ flex: 1 1 auto;
194
+ max-height: none;
195
+ }
196
+ }
197
+
170
198
  @keyframes wr-cmd-fade {
171
199
  from {
172
200
  opacity: 0;
@@ -5,6 +5,16 @@
5
5
  font-family: var(--wr-font-family-base);
6
6
  color: var(--wr-color-dark);
7
7
 
8
+ // Opt-in (`responsive`): query the box's own width so inline layouts reflow
9
+ // to stacked inside a narrow card / side panel, regardless of the viewport.
10
+ // `inline-size` containment drops content-based sizing, so the box fills its
11
+ // container's width; without this it would collapse to 0 inside a
12
+ // shrink-to-fit parent (flex / grid / inline-block).
13
+ &--responsive {
14
+ container: wr-descriptions / inline-size;
15
+ width: 100%;
16
+ }
17
+
8
18
  &__title {
9
19
  font-size: var(--wr-text-base);
10
20
  font-weight: var(--wr-font-weight-semibold);
@@ -102,3 +112,52 @@
102
112
  border-right: 1px solid var(--wr-color-light);
103
113
  }
104
114
  }
115
+
116
+ // When the descriptions box itself is narrow (not the viewport), inline modes
117
+ // reflow back to the stacked single-column layout so label/value pairs stay
118
+ // readable in a narrow card or side panel. Override selectors match the base
119
+ // inline rules' specificity (0-3-0 for bordered) so the cascade picks them up.
120
+ @container wr-descriptions (max-width: 24rem) {
121
+ .wr-descriptions--inline .wr-descriptions__list {
122
+ display: flex;
123
+ flex-direction: column;
124
+ gap: 0.5rem;
125
+ }
126
+
127
+ .wr-descriptions--inline .wr-descriptions__row {
128
+ display: flex;
129
+ flex-direction: column;
130
+ gap: 0.125rem;
131
+ }
132
+
133
+ // Bordered + inline reverts to the plain bordered stacked rows: the card
134
+ // border stays on the list; rows regain their padding + dividers; the label
135
+ // cells drop their grid background / divider.
136
+ .wr-descriptions--bordered.wr-descriptions--inline .wr-descriptions__list {
137
+ display: flex;
138
+ flex-direction: column;
139
+ gap: 0;
140
+ }
141
+
142
+ .wr-descriptions--bordered.wr-descriptions--inline .wr-descriptions__row {
143
+ display: flex;
144
+ flex-direction: column;
145
+ gap: 0.125rem;
146
+ padding: 0.625rem 0.875rem;
147
+ }
148
+
149
+ .wr-descriptions--bordered.wr-descriptions--inline .wr-descriptions__row + .wr-descriptions__row {
150
+ border-top: 1px solid var(--wr-color-light);
151
+ }
152
+
153
+ .wr-descriptions--bordered.wr-descriptions--inline .wr-descriptions__label,
154
+ .wr-descriptions--bordered.wr-descriptions--inline .wr-descriptions__value {
155
+ padding: 0;
156
+ border-top: 0;
157
+ }
158
+
159
+ .wr-descriptions--bordered.wr-descriptions--inline .wr-descriptions__label {
160
+ background: transparent;
161
+ border-right: 0;
162
+ }
163
+ }
@@ -1,4 +1,5 @@
1
1
  @use '../../theme/styles' as theme;
2
+ @use '../../overlay/styles'; // shared .wr-overlay-sheet for responsive mode
2
3
 
3
4
  // CDK Overlay base styles are usually loaded once by the consumer.
4
5
  // We re-emit the minimal `cdk-overlay-*` rules so a standalone `@use
@@ -122,3 +123,4 @@
122
123
  transform: scale(1);
123
124
  }
124
125
  }
126
+
@@ -1,4 +1,5 @@
1
1
  @use '../../theme/styles' as theme;
2
+ @use '../../overlay/styles'; // shared .wr-overlay-sheet / .wr-overlay-backdrop for responsive mode
2
3
 
3
4
  // `.wr-dropdown` is the inline trigger marker; the menu and overlay live
4
5
  // in the CDK overlay portal and so are separate blocks, not elements.
@@ -79,10 +79,10 @@ class WrAffix {
79
79
  });
80
80
  });
81
81
  }
82
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrAffix, deps: [], target: i0.ɵɵFactoryTarget.Directive });
83
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.1", type: WrAffix, isStandalone: true, selector: "[wrAffix]", inputs: { offsetTop: { classPropertyName: "offsetTop", publicName: "wrAffixOffsetTop", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { affixChange: "wrAffixChange" }, host: { properties: { "style.position": "\"sticky\"", "style.top.px": "offsetTop()" }, classAttribute: "wr-affix" }, ngImport: i0 });
82
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: WrAffix, deps: [], target: i0.ɵɵFactoryTarget.Directive });
83
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: WrAffix, isStandalone: true, selector: "[wrAffix]", inputs: { offsetTop: { classPropertyName: "offsetTop", publicName: "wrAffixOffsetTop", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { affixChange: "wrAffixChange" }, host: { properties: { "style.position": "\"sticky\"", "style.top.px": "offsetTop()" }, classAttribute: "wr-affix" }, ngImport: i0 });
84
84
  }
85
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrAffix, decorators: [{
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: WrAffix, decorators: [{
86
86
  type: Directive,
87
87
  args: [{
88
88
  selector: '[wrAffix]',
@@ -72,10 +72,10 @@ class WrAlert {
72
72
  this.dismissed.set(true);
73
73
  this.closed.emit();
74
74
  }
75
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrAlert, deps: [], target: i0.ɵɵFactoryTarget.Component });
76
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: WrAlert, isStandalone: true, selector: "wr-alert", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, closeable: { classPropertyName: "closeable", publicName: "closeable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, host: { properties: { "class": "classes()", "attr.role": "liveRole()", "attr.aria-live": "liveLevel()" } }, ngImport: i0, template: "@if (!dismissed()) {\n @if (icon()) {\n <svg\n class=\"wr-alert__icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n @switch (type()) {\n @case ('success') {\n <path d=\"M21.801 10A10 10 0 1 1 17 3.335\" />\n <path d=\"m9 11 3 3L22 4\" />\n }\n @case ('warning') {\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\" />\n <path d=\"M12 9v4\" />\n <path d=\"M12 17h.01\" />\n }\n @case ('danger') {\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 8v4\" />\n <path d=\"M12 16h.01\" />\n }\n @default {\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4\" />\n <path d=\"M12 8h.01\" />\n }\n }\n </svg>\n }\n\n <div class=\"wr-alert__body\">\n <p class=\"wr-alert__title\">{{ title() }}</p>\n @if (message(); as text) {\n <p class=\"wr-alert__message\">{{ text }}</p>\n }\n </div>\n\n @if (closeable()) {\n <button type=\"button\" class=\"wr-alert__close\" aria-label=\"Close alert\" (click)=\"onClose()\">\n <svg\n class=\"wr-icon__svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n </button>\n }\n}\n", encapsulation: i0.ViewEncapsulation.None });
75
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: WrAlert, deps: [], target: i0.ɵɵFactoryTarget.Component });
76
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: WrAlert, isStandalone: true, selector: "wr-alert", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: true, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, closeable: { classPropertyName: "closeable", publicName: "closeable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, host: { properties: { "class": "classes()", "attr.role": "liveRole()", "attr.aria-live": "liveLevel()" } }, ngImport: i0, template: "@if (!dismissed()) {\n @if (icon()) {\n <svg\n class=\"wr-alert__icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n @switch (type()) {\n @case ('success') {\n <path d=\"M21.801 10A10 10 0 1 1 17 3.335\" />\n <path d=\"m9 11 3 3L22 4\" />\n }\n @case ('warning') {\n <path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\" />\n <path d=\"M12 9v4\" />\n <path d=\"M12 17h.01\" />\n }\n @case ('danger') {\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 8v4\" />\n <path d=\"M12 16h.01\" />\n }\n @default {\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4\" />\n <path d=\"M12 8h.01\" />\n }\n }\n </svg>\n }\n\n <div class=\"wr-alert__body\">\n <p class=\"wr-alert__title\">{{ title() }}</p>\n @if (message(); as text) {\n <p class=\"wr-alert__message\">{{ text }}</p>\n }\n </div>\n\n @if (closeable()) {\n <button type=\"button\" class=\"wr-alert__close\" aria-label=\"Close alert\" (click)=\"onClose()\">\n <svg\n class=\"wr-icon__svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n </button>\n }\n}\n", encapsulation: i0.ViewEncapsulation.None });
77
77
  }
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrAlert, decorators: [{
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: WrAlert, decorators: [{
79
79
  type: Component,
80
80
  args: [{ selector: 'wr-alert', encapsulation: ViewEncapsulation.None, host: {
81
81
  '[class]': 'classes()',
@@ -87,10 +87,10 @@ class WrAnchor {
87
87
  this.scroll.to(`#${id}`, { offset: this.offset() });
88
88
  this.activeId.set(id);
89
89
  }
90
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrAnchor, deps: [], target: i0.ɵɵFactoryTarget.Component });
91
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: WrAnchor, isStandalone: true, selector: "wr-anchor", inputs: { links: { classPropertyName: "links", publicName: "links", isSignal: true, isRequired: false, transformFunction: null }, offset: { classPropertyName: "offset", publicName: "offset", isSignal: true, isRequired: false, transformFunction: null }, hitArea: { classPropertyName: "hitArea", publicName: "hitArea", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "navigation", "aria-label": "Table of contents" }, classAttribute: "wr-anchor" }, ngImport: i0, template: "<ul class=\"wr-anchor__list\">\n @for (link of links(); track link.id) {\n <li class=\"wr-anchor__item\">\n <a\n class=\"wr-anchor__link\"\n [class.wr-anchor__link--active]=\"activeId() === link.id\"\n [attr.aria-current]=\"activeId() === link.id ? 'location' : null\"\n [href]=\"`#${link.id}`\"\n (click)=\"onClick(link.id, $event)\"\n >\n {{ link.label }}\n </a>\n @if (link.children?.length) {\n <ul class=\"wr-anchor__list wr-anchor__list--nested\">\n @for (child of link.children; track child.id) {\n <li class=\"wr-anchor__item\">\n <a\n class=\"wr-anchor__link\"\n [class.wr-anchor__link--active]=\"activeId() === child.id\"\n [attr.aria-current]=\"activeId() === child.id ? 'location' : null\"\n [href]=\"`#${child.id}`\"\n (click)=\"onClick(child.id, $event)\"\n >\n {{ child.label }}\n </a>\n </li>\n }\n </ul>\n }\n </li>\n }\n</ul>\n", encapsulation: i0.ViewEncapsulation.None });
90
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: WrAnchor, deps: [], target: i0.ɵɵFactoryTarget.Component });
91
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: WrAnchor, isStandalone: true, selector: "wr-anchor", inputs: { links: { classPropertyName: "links", publicName: "links", isSignal: true, isRequired: false, transformFunction: null }, offset: { classPropertyName: "offset", publicName: "offset", isSignal: true, isRequired: false, transformFunction: null }, hitArea: { classPropertyName: "hitArea", publicName: "hitArea", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "navigation", "aria-label": "Table of contents" }, classAttribute: "wr-anchor" }, ngImport: i0, template: "<ul class=\"wr-anchor__list\">\n @for (link of links(); track link.id) {\n <li class=\"wr-anchor__item\">\n <a\n class=\"wr-anchor__link\"\n [class.wr-anchor__link--active]=\"activeId() === link.id\"\n [attr.aria-current]=\"activeId() === link.id ? 'location' : null\"\n [href]=\"`#${link.id}`\"\n (click)=\"onClick(link.id, $event)\"\n >\n {{ link.label }}\n </a>\n @if (link.children?.length) {\n <ul class=\"wr-anchor__list wr-anchor__list--nested\">\n @for (child of link.children; track child.id) {\n <li class=\"wr-anchor__item\">\n <a\n class=\"wr-anchor__link\"\n [class.wr-anchor__link--active]=\"activeId() === child.id\"\n [attr.aria-current]=\"activeId() === child.id ? 'location' : null\"\n [href]=\"`#${child.id}`\"\n (click)=\"onClick(child.id, $event)\"\n >\n {{ child.label }}\n </a>\n </li>\n }\n </ul>\n }\n </li>\n }\n</ul>\n", encapsulation: i0.ViewEncapsulation.None });
92
92
  }
93
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrAnchor, decorators: [{
93
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: WrAnchor, decorators: [{
94
94
  type: Component,
95
95
  args: [{ selector: 'wr-anchor', encapsulation: ViewEncapsulation.None, host: { class: 'wr-anchor', role: 'navigation', 'aria-label': 'Table of contents' }, template: "<ul class=\"wr-anchor__list\">\n @for (link of links(); track link.id) {\n <li class=\"wr-anchor__item\">\n <a\n class=\"wr-anchor__link\"\n [class.wr-anchor__link--active]=\"activeId() === link.id\"\n [attr.aria-current]=\"activeId() === link.id ? 'location' : null\"\n [href]=\"`#${link.id}`\"\n (click)=\"onClick(link.id, $event)\"\n >\n {{ link.label }}\n </a>\n @if (link.children?.length) {\n <ul class=\"wr-anchor__list wr-anchor__list--nested\">\n @for (child of link.children; track child.id) {\n <li class=\"wr-anchor__item\">\n <a\n class=\"wr-anchor__link\"\n [class.wr-anchor__link--active]=\"activeId() === child.id\"\n [attr.aria-current]=\"activeId() === child.id ? 'location' : null\"\n [href]=\"`#${child.id}`\"\n (click)=\"onClick(child.id, $event)\"\n >\n {{ child.label }}\n </a>\n </li>\n }\n </ul>\n }\n </li>\n }\n</ul>\n" }]
96
96
  }], ctorParameters: () => [], propDecorators: { links: [{ type: i0.Input, args: [{ isSignal: true, alias: "links", required: false }] }], offset: [{ type: i0.Input, args: [{ isSignal: true, alias: "offset", required: false }] }], hitArea: [{ type: i0.Input, args: [{ isSignal: true, alias: "hitArea", required: false }] }] } });
@@ -293,10 +293,10 @@ class WrAurora {
293
293
  gl.clear(gl.COLOR_BUFFER_BIT);
294
294
  gl.drawArrays(gl.TRIANGLES, 0, 3);
295
295
  }
296
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrAurora, deps: [], target: i0.ɵɵFactoryTarget.Component });
297
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.1", type: WrAurora, isStandalone: true, selector: "wr-aurora", inputs: { colorStops: { classPropertyName: "colorStops", publicName: "colorStops", isSignal: true, isRequired: false, transformFunction: null }, amplitude: { classPropertyName: "amplitude", publicName: "amplitude", isSignal: true, isRequired: false, transformFunction: null }, blend: { classPropertyName: "blend", publicName: "blend", isSignal: true, isRequired: false, transformFunction: null }, speed: { classPropertyName: "speed", publicName: "speed", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "wr-aurora" }, viewQueries: [{ propertyName: "canvasRef", first: true, predicate: ["canvas"], descendants: true, isSignal: true }], ngImport: i0, template: '<canvas #canvas class="wr-aurora__canvas"></canvas>', isInline: true, styles: [".wr-aurora{--wr-aurora-stop-1: #6366f1;--wr-aurora-stop-2: #10b981;--wr-aurora-stop-3: #6366f1;position:absolute;inset:0;display:block;overflow:hidden;pointer-events:none;z-index:0}.wr-aurora__canvas{display:block;width:100%;height:100%}[data-theme=dark] .wr-aurora{--wr-aurora-stop-1: #5227ff;--wr-aurora-stop-2: #7cff67;--wr-aurora-stop-3: #5227ff}\n"], encapsulation: i0.ViewEncapsulation.None });
296
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: WrAurora, deps: [], target: i0.ɵɵFactoryTarget.Component });
297
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.2", type: WrAurora, isStandalone: true, selector: "wr-aurora", inputs: { colorStops: { classPropertyName: "colorStops", publicName: "colorStops", isSignal: true, isRequired: false, transformFunction: null }, amplitude: { classPropertyName: "amplitude", publicName: "amplitude", isSignal: true, isRequired: false, transformFunction: null }, blend: { classPropertyName: "blend", publicName: "blend", isSignal: true, isRequired: false, transformFunction: null }, speed: { classPropertyName: "speed", publicName: "speed", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "wr-aurora" }, viewQueries: [{ propertyName: "canvasRef", first: true, predicate: ["canvas"], descendants: true, isSignal: true }], ngImport: i0, template: '<canvas #canvas class="wr-aurora__canvas"></canvas>', isInline: true, styles: [".wr-aurora{--wr-aurora-stop-1: #6366f1;--wr-aurora-stop-2: #10b981;--wr-aurora-stop-3: #6366f1;position:absolute;inset:0;display:block;overflow:hidden;pointer-events:none;z-index:0}.wr-aurora__canvas{display:block;width:100%;height:100%}[data-theme=dark] .wr-aurora{--wr-aurora-stop-1: #5227ff;--wr-aurora-stop-2: #7cff67;--wr-aurora-stop-3: #5227ff}\n"], encapsulation: i0.ViewEncapsulation.None });
298
298
  }
299
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrAurora, decorators: [{
299
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: WrAurora, decorators: [{
300
300
  type: Component,
301
301
  args: [{ selector: 'wr-aurora', template: '<canvas #canvas class="wr-aurora__canvas"></canvas>', encapsulation: ViewEncapsulation.None, host: { class: 'wr-aurora' }, styles: [".wr-aurora{--wr-aurora-stop-1: #6366f1;--wr-aurora-stop-2: #10b981;--wr-aurora-stop-3: #6366f1;position:absolute;inset:0;display:block;overflow:hidden;pointer-events:none;z-index:0}.wr-aurora__canvas{display:block;width:100%;height:100%}[data-theme=dark] .wr-aurora{--wr-aurora-stop-1: #5227ff;--wr-aurora-stop-2: #7cff67;--wr-aurora-stop-3: #5227ff}\n"] }]
302
302
  }], ctorParameters: () => [], propDecorators: { colorStops: [{ type: i0.Input, args: [{ isSignal: true, alias: "colorStops", required: false }] }], amplitude: [{ type: i0.Input, args: [{ isSignal: true, alias: "amplitude", required: false }] }], blend: [{ type: i0.Input, args: [{ isSignal: true, alias: "blend", required: false }] }], speed: [{ type: i0.Input, args: [{ isSignal: true, alias: "speed", required: false }] }], canvasRef: [{ type: i0.ViewChild, args: ['canvas', { isSignal: true }] }] } });
@@ -80,10 +80,10 @@ class WrAvatar {
80
80
  onImageLoad() {
81
81
  this.loaded.set(true);
82
82
  }
83
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrAvatar, deps: [], target: i0.ɵɵFactoryTarget.Component });
84
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: WrAvatar, isStandalone: true, selector: "wr-avatar", inputs: { url: { classPropertyName: "url", publicName: "url", isSignal: true, isRequired: false, transformFunction: null }, alt: { classPropertyName: "alt", publicName: "alt", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "style.width": "cssSize()", "style.height": "cssSize()" } }, ngImport: i0, template: "<ng-content />\n\n@if (url(); as src) {\n <img\n class=\"wr-avatar__img\"\n [src]=\"src\"\n [alt]=\"alt()\"\n [attr.width]=\"pxSize()\"\n [attr.height]=\"pxSize()\"\n (load)=\"onImageLoad()\"\n decoding=\"async\"\n />\n\n @if (!loaded()) {\n <wr-spinner class=\"wr-avatar__spin\" />\n }\n}\n", dependencies: [{ kind: "component", type: WrSpinner, selector: "wr-spinner", inputs: ["size"] }], encapsulation: i0.ViewEncapsulation.None });
83
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: WrAvatar, deps: [], target: i0.ɵɵFactoryTarget.Component });
84
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: WrAvatar, isStandalone: true, selector: "wr-avatar", inputs: { url: { classPropertyName: "url", publicName: "url", isSignal: true, isRequired: false, transformFunction: null }, alt: { classPropertyName: "alt", publicName: "alt", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "style.width": "cssSize()", "style.height": "cssSize()" } }, ngImport: i0, template: "<ng-content />\n\n@if (url(); as src) {\n <img\n class=\"wr-avatar__img\"\n [src]=\"src\"\n [alt]=\"alt()\"\n [attr.width]=\"pxSize()\"\n [attr.height]=\"pxSize()\"\n (load)=\"onImageLoad()\"\n decoding=\"async\"\n />\n\n @if (!loaded()) {\n <wr-spinner class=\"wr-avatar__spin\" />\n }\n}\n", dependencies: [{ kind: "component", type: WrSpinner, selector: "wr-spinner", inputs: ["size"] }], encapsulation: i0.ViewEncapsulation.None });
85
85
  }
86
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrAvatar, decorators: [{
86
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: WrAvatar, decorators: [{
87
87
  type: Component,
88
88
  args: [{ selector: 'wr-avatar', encapsulation: ViewEncapsulation.None, host: {
89
89
  '[class]': 'classes()',
@@ -62,10 +62,10 @@ class WrBackTop {
62
62
  onClick() {
63
63
  this.scroll.toTop({ offset: this.offset() });
64
64
  }
65
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrBackTop, deps: [], target: i0.ɵɵFactoryTarget.Component });
66
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.1", type: WrBackTop, isStandalone: true, selector: "wr-back-top", inputs: { visibilityThreshold: { classPropertyName: "visibilityThreshold", publicName: "visibilityThreshold", isSignal: true, isRequired: false, transformFunction: null }, offset: { classPropertyName: "offset", publicName: "offset", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.aria-hidden": "!visible()" } }, ngImport: i0, template: "<button type=\"button\" class=\"wr-back-top__button\" [attr.aria-label]=\"ariaLabel()\" (click)=\"onClick()\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" aria-hidden=\"true\">\n <path\n d=\"M9 4 L9 14 M4 9 L9 4 L14 9\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n <ng-content />\n</button>\n", encapsulation: i0.ViewEncapsulation.None });
65
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: WrBackTop, deps: [], target: i0.ɵɵFactoryTarget.Component });
66
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.2", type: WrBackTop, isStandalone: true, selector: "wr-back-top", inputs: { visibilityThreshold: { classPropertyName: "visibilityThreshold", publicName: "visibilityThreshold", isSignal: true, isRequired: false, transformFunction: null }, offset: { classPropertyName: "offset", publicName: "offset", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.aria-hidden": "!visible()" } }, ngImport: i0, template: "<button type=\"button\" class=\"wr-back-top__button\" [attr.aria-label]=\"ariaLabel()\" (click)=\"onClick()\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" aria-hidden=\"true\">\n <path\n d=\"M9 4 L9 14 M4 9 L9 4 L14 9\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n <ng-content />\n</button>\n", encapsulation: i0.ViewEncapsulation.None });
67
67
  }
68
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrBackTop, decorators: [{
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: WrBackTop, decorators: [{
69
69
  type: Component,
70
70
  args: [{ selector: 'wr-back-top', encapsulation: ViewEncapsulation.None, host: {
71
71
  '[class]': 'classes()',
@@ -69,10 +69,10 @@ class WrBadge {
69
69
  return parts.join(' ');
70
70
  }, /* @ts-ignore */
71
71
  ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
72
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrBadge, deps: [], target: i0.ɵɵFactoryTarget.Component });
73
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.1", type: WrBadge, isStandalone: true, selector: "wr-badge", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, outlined: { classPropertyName: "outlined", publicName: "outlined", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: '<ng-content />', isInline: true, encapsulation: i0.ViewEncapsulation.None });
72
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: WrBadge, deps: [], target: i0.ɵɵFactoryTarget.Component });
73
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.2", type: WrBadge, isStandalone: true, selector: "wr-badge", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, outlined: { classPropertyName: "outlined", publicName: "outlined", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: '<ng-content />', isInline: true, encapsulation: i0.ViewEncapsulation.None });
74
74
  }
75
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrBadge, decorators: [{
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: WrBadge, decorators: [{
76
76
  type: Component,
77
77
  args: [{
78
78
  selector: 'wr-badge',
@@ -176,10 +176,10 @@ class WrTag {
176
176
  return parts.join(' ');
177
177
  }, /* @ts-ignore */
178
178
  ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
179
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrTag, deps: [], target: i0.ɵɵFactoryTarget.Component });
180
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: WrTag, isStandalone: true, selector: "wr-tag", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconPosition: { classPropertyName: "iconPosition", publicName: "iconPosition", isSignal: true, isRequired: false, transformFunction: null }, outlined: { classPropertyName: "outlined", publicName: "outlined", isSignal: true, isRequired: false, transformFunction: null }, transparent: { classPropertyName: "transparent", publicName: "transparent", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, hoverable: { classPropertyName: "hoverable", publicName: "hoverable", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: "@if (iconPosition() === 'start') {\n @if (loading()) {\n <wr-spinner class=\"wr-tag__adornment\" size=\"sm\" />\n } @else if (icon(); as name) {\n <wr-icon class=\"wr-tag__adornment\" [name]=\"name\" />\n }\n}\n\n<ng-content />\n\n@if (iconPosition() === 'end') {\n @if (loading()) {\n <wr-spinner class=\"wr-tag__adornment\" size=\"sm\" />\n } @else if (icon(); as name) {\n <wr-icon class=\"wr-tag__adornment\" [name]=\"name\" />\n }\n}\n", dependencies: [{ kind: "component", type: WrIcon, selector: "wr-icon", inputs: ["name"] }, { kind: "component", type: WrSpinner, selector: "wr-spinner", inputs: ["size"] }], encapsulation: i0.ViewEncapsulation.None });
179
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: WrTag, deps: [], target: i0.ɵɵFactoryTarget.Component });
180
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: WrTag, isStandalone: true, selector: "wr-tag", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconPosition: { classPropertyName: "iconPosition", publicName: "iconPosition", isSignal: true, isRequired: false, transformFunction: null }, outlined: { classPropertyName: "outlined", publicName: "outlined", isSignal: true, isRequired: false, transformFunction: null }, transparent: { classPropertyName: "transparent", publicName: "transparent", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, hoverable: { classPropertyName: "hoverable", publicName: "hoverable", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: "@if (iconPosition() === 'start') {\n @if (loading()) {\n <wr-spinner class=\"wr-tag__adornment\" size=\"sm\" />\n } @else if (icon(); as name) {\n <wr-icon class=\"wr-tag__adornment\" [name]=\"name\" />\n }\n}\n\n<ng-content />\n\n@if (iconPosition() === 'end') {\n @if (loading()) {\n <wr-spinner class=\"wr-tag__adornment\" size=\"sm\" />\n } @else if (icon(); as name) {\n <wr-icon class=\"wr-tag__adornment\" [name]=\"name\" />\n }\n}\n", dependencies: [{ kind: "component", type: WrIcon, selector: "wr-icon", inputs: ["name"] }, { kind: "component", type: WrSpinner, selector: "wr-spinner", inputs: ["size"] }], encapsulation: i0.ViewEncapsulation.None });
181
181
  }
182
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrTag, decorators: [{
182
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: WrTag, decorators: [{
183
183
  type: Component,
184
184
  args: [{ selector: 'wr-tag', encapsulation: ViewEncapsulation.None, host: { '[class]': 'classes()' }, imports: [WrIcon, WrSpinner], template: "@if (iconPosition() === 'start') {\n @if (loading()) {\n <wr-spinner class=\"wr-tag__adornment\" size=\"sm\" />\n } @else if (icon(); as name) {\n <wr-icon class=\"wr-tag__adornment\" [name]=\"name\" />\n }\n}\n\n<ng-content />\n\n@if (iconPosition() === 'end') {\n @if (loading()) {\n <wr-spinner class=\"wr-tag__adornment\" size=\"sm\" />\n } @else if (icon(); as name) {\n <wr-icon class=\"wr-tag__adornment\" [name]=\"name\" />\n }\n}\n" }]
185
185
  }], propDecorators: { color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], iconPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconPosition", required: false }] }], outlined: [{ type: i0.Input, args: [{ isSignal: true, alias: "outlined", required: false }] }], transparent: [{ type: i0.Input, args: [{ isSignal: true, alias: "transparent", required: false }] }], rounded: [{ type: i0.Input, args: [{ isSignal: true, alias: "rounded", required: false }] }], hoverable: [{ type: i0.Input, args: [{ isSignal: true, alias: "hoverable", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }] } });
@@ -53,10 +53,10 @@ class WrBarChart {
53
53
  heightPercent: (Math.max(0, d.value) / this.resolvedMax()) * 100,
54
54
  })), /* @ts-ignore */
55
55
  ...(ngDevMode ? [{ debugName: "bars" }] : /* istanbul ignore next */ []));
56
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrBarChart, deps: [], target: i0.ɵɵFactoryTarget.Component });
57
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: WrBarChart, isStandalone: true, selector: "wr-bar-chart", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, showValues: { classPropertyName: "showValues", publicName: "showValues", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "wr-bar-chart" }, ngImport: i0, template: "<div class=\"wr-bar-chart__plot\" [style.height.px]=\"height()\">\n @for (bar of bars(); track $index) {\n <div class=\"wr-bar-chart__column\">\n @if (showValues()) {\n <span class=\"wr-bar-chart__value\">{{ bar.value }}</span>\n }\n <div class=\"wr-bar-chart__bar\" [style.height.%]=\"bar.heightPercent\" [style.background]=\"bar.color\"></div>\n </div>\n }\n</div>\n<div class=\"wr-bar-chart__labels\">\n @for (bar of bars(); track $index) {\n <span class=\"wr-bar-chart__label\">{{ bar.label }}</span>\n }\n</div>\n", encapsulation: i0.ViewEncapsulation.None });
56
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: WrBarChart, deps: [], target: i0.ɵɵFactoryTarget.Component });
57
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: WrBarChart, isStandalone: true, selector: "wr-bar-chart", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, showValues: { classPropertyName: "showValues", publicName: "showValues", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "wr-bar-chart" }, ngImport: i0, template: "<div class=\"wr-bar-chart__plot\" [style.height.px]=\"height()\">\n @for (bar of bars(); track $index) {\n <div class=\"wr-bar-chart__column\">\n @if (showValues()) {\n <span class=\"wr-bar-chart__value\">{{ bar.value }}</span>\n }\n <div class=\"wr-bar-chart__bar\" [style.height.%]=\"bar.heightPercent\" [style.background]=\"bar.color\"></div>\n </div>\n }\n</div>\n<div class=\"wr-bar-chart__labels\">\n @for (bar of bars(); track $index) {\n <span class=\"wr-bar-chart__label\">{{ bar.label }}</span>\n }\n</div>\n", encapsulation: i0.ViewEncapsulation.None });
58
58
  }
59
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrBarChart, decorators: [{
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: WrBarChart, decorators: [{
60
60
  type: Component,
61
61
  args: [{ selector: 'wr-bar-chart', encapsulation: ViewEncapsulation.None, host: { class: 'wr-bar-chart' }, template: "<div class=\"wr-bar-chart__plot\" [style.height.px]=\"height()\">\n @for (bar of bars(); track $index) {\n <div class=\"wr-bar-chart__column\">\n @if (showValues()) {\n <span class=\"wr-bar-chart__value\">{{ bar.value }}</span>\n }\n <div class=\"wr-bar-chart__bar\" [style.height.%]=\"bar.heightPercent\" [style.background]=\"bar.color\"></div>\n </div>\n }\n</div>\n<div class=\"wr-bar-chart__labels\">\n @for (bar of bars(); track $index) {\n <span class=\"wr-bar-chart__label\">{{ bar.label }}</span>\n }\n</div>\n" }]
62
62
  }], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], showValues: [{ type: i0.Input, args: [{ isSignal: true, alias: "showValues", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }] } });
@@ -165,10 +165,10 @@ class WrBlurText {
165
165
  };
166
166
  });
167
167
  }
168
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrBlurText, deps: [], target: i0.ɵɵFactoryTarget.Component });
169
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.1", type: WrBlurText, isStandalone: true, selector: "wr-blur-text", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: true, transformFunction: null }, animateBy: { classPropertyName: "animateBy", publicName: "animateBy", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, delay: { classPropertyName: "delay", publicName: "delay", isSignal: true, isRequired: false, transformFunction: null }, stepDuration: { classPropertyName: "stepDuration", publicName: "stepDuration", isSignal: true, isRequired: false, transformFunction: null }, easing: { classPropertyName: "easing", publicName: "easing", isSignal: true, isRequired: false, transformFunction: null }, threshold: { classPropertyName: "threshold", publicName: "threshold", isSignal: true, isRequired: false, transformFunction: null }, rootMargin: { classPropertyName: "rootMargin", publicName: "rootMargin", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { animationComplete: "animationComplete" }, host: { classAttribute: "wr-blur-text" }, ngImport: i0, template: "@for (p of pieces(); track $index) {\n @if (p.kind === 'piece') {\n <span class=\"wr-blur-text__piece\">{{ p.text }}</span>\n } @else {\n <span class=\"wr-blur-text__space\">{{ p.text }}</span>\n }\n}\n", styles: [".wr-blur-text{display:inline-flex;flex-wrap:wrap}.wr-blur-text__piece{display:inline-block;will-change:transform,filter,opacity}.wr-blur-text__space{display:inline;white-space:pre}\n"], encapsulation: i0.ViewEncapsulation.None });
168
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: WrBlurText, deps: [], target: i0.ɵɵFactoryTarget.Component });
169
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: WrBlurText, isStandalone: true, selector: "wr-blur-text", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: true, transformFunction: null }, animateBy: { classPropertyName: "animateBy", publicName: "animateBy", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, delay: { classPropertyName: "delay", publicName: "delay", isSignal: true, isRequired: false, transformFunction: null }, stepDuration: { classPropertyName: "stepDuration", publicName: "stepDuration", isSignal: true, isRequired: false, transformFunction: null }, easing: { classPropertyName: "easing", publicName: "easing", isSignal: true, isRequired: false, transformFunction: null }, threshold: { classPropertyName: "threshold", publicName: "threshold", isSignal: true, isRequired: false, transformFunction: null }, rootMargin: { classPropertyName: "rootMargin", publicName: "rootMargin", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { animationComplete: "animationComplete" }, host: { classAttribute: "wr-blur-text" }, ngImport: i0, template: "@for (p of pieces(); track $index) {\n @if (p.kind === 'piece') {\n <span class=\"wr-blur-text__piece\">{{ p.text }}</span>\n } @else {\n <span class=\"wr-blur-text__space\">{{ p.text }}</span>\n }\n}\n", styles: [".wr-blur-text{display:inline-flex;flex-wrap:wrap}.wr-blur-text__piece{display:inline-block;will-change:transform,filter,opacity}.wr-blur-text__space{display:inline;white-space:pre}\n"], encapsulation: i0.ViewEncapsulation.None });
170
170
  }
171
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: WrBlurText, decorators: [{
171
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: WrBlurText, decorators: [{
172
172
  type: Component,
173
173
  args: [{ selector: 'wr-blur-text', encapsulation: ViewEncapsulation.None, host: { class: 'wr-blur-text' }, template: "@for (p of pieces(); track $index) {\n @if (p.kind === 'piece') {\n <span class=\"wr-blur-text__piece\">{{ p.text }}</span>\n } @else {\n <span class=\"wr-blur-text__space\">{{ p.text }}</span>\n }\n}\n", styles: [".wr-blur-text{display:inline-flex;flex-wrap:wrap}.wr-blur-text__piece{display:inline-block;will-change:transform,filter,opacity}.wr-blur-text__space{display:inline;white-space:pre}\n"] }]
174
174
  }], ctorParameters: () => [], propDecorators: { text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: true }] }], animateBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "animateBy", required: false }] }], direction: [{ type: i0.Input, args: [{ isSignal: true, alias: "direction", required: false }] }], delay: [{ type: i0.Input, args: [{ isSignal: true, alias: "delay", required: false }] }], stepDuration: [{ type: i0.Input, args: [{ isSignal: true, alias: "stepDuration", required: false }] }], easing: [{ type: i0.Input, args: [{ isSignal: true, alias: "easing", required: false }] }], threshold: [{ type: i0.Input, args: [{ isSignal: true, alias: "threshold", required: false }] }], rootMargin: [{ type: i0.Input, args: [{ isSignal: true, alias: "rootMargin", required: false }] }], animationComplete: [{ type: i0.Output, args: ["animationComplete"] }] } });