ngwr 9.1.0 → 10.1.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 (276) hide show
  1. package/README.md +23 -8
  2. package/action-sheet/styles/_index.scss +6 -1
  3. package/badge/styles/_index.scss +17 -7
  4. package/badge/styles/_tag.scss +12 -3
  5. package/border-glow/styles/_index.scss +5 -0
  6. package/button/styles/_index.scss +48 -1
  7. package/calendar/styles/_index.scss +9 -1
  8. package/circular-text/styles/_index.scss +6 -1
  9. package/density/styles/_index.scss +3 -1
  10. package/dialog/styles/_index.scss +66 -2
  11. package/drag-drop/styles/_index.scss +20 -7
  12. package/drawer/styles/_index.scss +61 -1
  13. package/event-calendar/styles/_index.scss +284 -0
  14. package/falling-text/styles/_index.scss +5 -0
  15. package/fesm2022/ngwr-action-sheet.mjs +1 -1
  16. package/fesm2022/ngwr-action-sheet.mjs.map +1 -1
  17. package/fesm2022/ngwr-alert.mjs +8 -3
  18. package/fesm2022/ngwr-alert.mjs.map +1 -1
  19. package/fesm2022/ngwr-back-top.mjs +6 -4
  20. package/fesm2022/ngwr-back-top.mjs.map +1 -1
  21. package/fesm2022/ngwr-border-glow.mjs +12 -9
  22. package/fesm2022/ngwr-border-glow.mjs.map +1 -1
  23. package/fesm2022/ngwr-breadcrumbs.mjs +2 -2
  24. package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -1
  25. package/fesm2022/ngwr-calendar.mjs +5 -3
  26. package/fesm2022/ngwr-calendar.mjs.map +1 -1
  27. package/fesm2022/ngwr-card.mjs +2 -2
  28. package/fesm2022/ngwr-card.mjs.map +1 -1
  29. package/fesm2022/ngwr-carousel.mjs +17 -4
  30. package/fesm2022/ngwr-carousel.mjs.map +1 -1
  31. package/fesm2022/ngwr-cascader.mjs +35 -7
  32. package/fesm2022/ngwr-cascader.mjs.map +1 -1
  33. package/fesm2022/ngwr-checkbox.mjs +12 -3
  34. package/fesm2022/ngwr-checkbox.mjs.map +1 -1
  35. package/fesm2022/ngwr-circular-text.mjs +2 -2
  36. package/fesm2022/ngwr-circular-text.mjs.map +1 -1
  37. package/fesm2022/ngwr-color-picker.mjs +6 -5
  38. package/fesm2022/ngwr-color-picker.mjs.map +1 -1
  39. package/fesm2022/ngwr-command-palette.mjs +7 -3
  40. package/fesm2022/ngwr-command-palette.mjs.map +1 -1
  41. package/fesm2022/ngwr-context-menu.mjs +7 -7
  42. package/fesm2022/ngwr-context-menu.mjs.map +1 -1
  43. package/fesm2022/ngwr-counter.mjs +9 -1
  44. package/fesm2022/ngwr-counter.mjs.map +1 -1
  45. package/fesm2022/ngwr-date-picker.mjs +37 -15
  46. package/fesm2022/ngwr-date-picker.mjs.map +1 -1
  47. package/fesm2022/ngwr-density.mjs +10 -2
  48. package/fesm2022/ngwr-density.mjs.map +1 -1
  49. package/fesm2022/ngwr-descriptions.mjs +5 -4
  50. package/fesm2022/ngwr-descriptions.mjs.map +1 -1
  51. package/fesm2022/ngwr-dialog.mjs +10 -1
  52. package/fesm2022/ngwr-dialog.mjs.map +1 -1
  53. package/fesm2022/ngwr-drag-drop.mjs +2 -2
  54. package/fesm2022/ngwr-drag-drop.mjs.map +1 -1
  55. package/fesm2022/ngwr-drawer.mjs +37 -16
  56. package/fesm2022/ngwr-drawer.mjs.map +1 -1
  57. package/fesm2022/ngwr-dropdown.mjs +8 -3
  58. package/fesm2022/ngwr-dropdown.mjs.map +1 -1
  59. package/fesm2022/ngwr-event-calendar.mjs +723 -0
  60. package/fesm2022/ngwr-event-calendar.mjs.map +1 -0
  61. package/fesm2022/ngwr-falling-text.mjs +2 -2
  62. package/fesm2022/ngwr-falling-text.mjs.map +1 -1
  63. package/fesm2022/ngwr-file-upload.mjs +2 -2
  64. package/fesm2022/ngwr-file-upload.mjs.map +1 -1
  65. package/fesm2022/ngwr-form.mjs +258 -42
  66. package/fesm2022/ngwr-form.mjs.map +1 -1
  67. package/fesm2022/ngwr-fuzzy-text.mjs +15 -1
  68. package/fesm2022/ngwr-fuzzy-text.mjs.map +1 -1
  69. package/fesm2022/ngwr-gauge.mjs +8 -3
  70. package/fesm2022/ngwr-gauge.mjs.map +1 -1
  71. package/fesm2022/ngwr-glitch-text.mjs +2 -2
  72. package/fesm2022/ngwr-glitch-text.mjs.map +1 -1
  73. package/fesm2022/ngwr-gradient-text.mjs +2 -2
  74. package/fesm2022/ngwr-gradient-text.mjs.map +1 -1
  75. package/fesm2022/ngwr-i18n-en.mjs +89 -5
  76. package/fesm2022/ngwr-i18n-en.mjs.map +1 -1
  77. package/fesm2022/ngwr-i18n-ru.mjs +90 -5
  78. package/fesm2022/ngwr-i18n-ru.mjs.map +1 -1
  79. package/fesm2022/ngwr-i18n.mjs +94 -3
  80. package/fesm2022/ngwr-i18n.mjs.map +1 -1
  81. package/fesm2022/ngwr-icon.mjs +79 -35
  82. package/fesm2022/ngwr-icon.mjs.map +1 -1
  83. package/fesm2022/ngwr-input-number.mjs +19 -3
  84. package/fesm2022/ngwr-input-number.mjs.map +1 -1
  85. package/fesm2022/ngwr-input.mjs +48 -6
  86. package/fesm2022/ngwr-input.mjs.map +1 -1
  87. package/fesm2022/ngwr-knob.mjs +8 -3
  88. package/fesm2022/ngwr-knob.mjs.map +1 -1
  89. package/fesm2022/ngwr-lightbox.mjs +32 -3
  90. package/fesm2022/ngwr-lightbox.mjs.map +1 -1
  91. package/fesm2022/ngwr-line-chart.mjs +3 -3
  92. package/fesm2022/ngwr-line-chart.mjs.map +1 -1
  93. package/fesm2022/ngwr-list.mjs +2 -2
  94. package/fesm2022/ngwr-list.mjs.map +1 -1
  95. package/fesm2022/ngwr-loading-bar.mjs +2 -2
  96. package/fesm2022/ngwr-loading-bar.mjs.map +1 -1
  97. package/fesm2022/ngwr-marquee.mjs +2 -2
  98. package/fesm2022/ngwr-marquee.mjs.map +1 -1
  99. package/fesm2022/ngwr-media.mjs +3 -0
  100. package/fesm2022/ngwr-media.mjs.map +1 -1
  101. package/fesm2022/ngwr-mention.mjs +166 -10
  102. package/fesm2022/ngwr-mention.mjs.map +1 -1
  103. package/fesm2022/ngwr-meter-group.mjs +14 -3
  104. package/fesm2022/ngwr-meter-group.mjs.map +1 -1
  105. package/fesm2022/ngwr-overlay.mjs +173 -3
  106. package/fesm2022/ngwr-overlay.mjs.map +1 -1
  107. package/fesm2022/ngwr-page-header.mjs +2 -2
  108. package/fesm2022/ngwr-page-header.mjs.map +1 -1
  109. package/fesm2022/ngwr-pagination.mjs +17 -4
  110. package/fesm2022/ngwr-pagination.mjs.map +1 -1
  111. package/fesm2022/ngwr-popconfirm.mjs +4 -3
  112. package/fesm2022/ngwr-popconfirm.mjs.map +1 -1
  113. package/fesm2022/ngwr-popover.mjs +10 -3
  114. package/fesm2022/ngwr-popover.mjs.map +1 -1
  115. package/fesm2022/ngwr-progress.mjs +8 -2
  116. package/fesm2022/ngwr-progress.mjs.map +1 -1
  117. package/fesm2022/ngwr-qr.mjs.map +1 -1
  118. package/fesm2022/ngwr-rating.mjs +6 -4
  119. package/fesm2022/ngwr-rating.mjs.map +1 -1
  120. package/fesm2022/ngwr-result.mjs +19 -12
  121. package/fesm2022/ngwr-result.mjs.map +1 -1
  122. package/fesm2022/ngwr-segmented.mjs +2 -2
  123. package/fesm2022/ngwr-segmented.mjs.map +1 -1
  124. package/fesm2022/ngwr-select.mjs +40 -13
  125. package/fesm2022/ngwr-select.mjs.map +1 -1
  126. package/fesm2022/ngwr-shiny-text.mjs +4 -6
  127. package/fesm2022/ngwr-shiny-text.mjs.map +1 -1
  128. package/fesm2022/ngwr-speed-dial.mjs +11 -3
  129. package/fesm2022/ngwr-speed-dial.mjs.map +1 -1
  130. package/fesm2022/ngwr-spotlight-card.mjs +2 -2
  131. package/fesm2022/ngwr-spotlight-card.mjs.map +1 -1
  132. package/fesm2022/ngwr-squircle.mjs +1 -1
  133. package/fesm2022/ngwr-squircle.mjs.map +1 -1
  134. package/fesm2022/ngwr-star-border.mjs +2 -2
  135. package/fesm2022/ngwr-star-border.mjs.map +1 -1
  136. package/fesm2022/ngwr-switch.mjs +10 -3
  137. package/fesm2022/ngwr-switch.mjs.map +1 -1
  138. package/fesm2022/ngwr-table.mjs +233 -19
  139. package/fesm2022/ngwr-table.mjs.map +1 -1
  140. package/fesm2022/ngwr-tabs.mjs +21 -4
  141. package/fesm2022/ngwr-tabs.mjs.map +1 -1
  142. package/fesm2022/ngwr-textarea.mjs +20 -4
  143. package/fesm2022/ngwr-textarea.mjs.map +1 -1
  144. package/fesm2022/ngwr-theme.mjs +13 -3
  145. package/fesm2022/ngwr-theme.mjs.map +1 -1
  146. package/fesm2022/ngwr-tilt-card.mjs +2 -2
  147. package/fesm2022/ngwr-tilt-card.mjs.map +1 -1
  148. package/fesm2022/ngwr-toolbar.mjs +2 -2
  149. package/fesm2022/ngwr-toolbar.mjs.map +1 -1
  150. package/fesm2022/ngwr-tour.mjs +264 -0
  151. package/fesm2022/ngwr-tour.mjs.map +1 -0
  152. package/fesm2022/ngwr-transfer.mjs +184 -0
  153. package/fesm2022/ngwr-transfer.mjs.map +1 -0
  154. package/fesm2022/ngwr-tree.mjs +27 -9
  155. package/fesm2022/ngwr-tree.mjs.map +1 -1
  156. package/fesm2022/ngwr-typewriter.mjs +2 -2
  157. package/fesm2022/ngwr-typewriter.mjs.map +1 -1
  158. package/fesm2022/ngwr-validators.mjs +118 -2
  159. package/fesm2022/ngwr-validators.mjs.map +1 -1
  160. package/fesm2022/ngwr-version.mjs +2 -2
  161. package/fesm2022/ngwr-version.mjs.map +1 -1
  162. package/fesm2022/ngwr-virtual-scroll.mjs +2 -2
  163. package/fesm2022/ngwr-virtual-scroll.mjs.map +1 -1
  164. package/fesm2022/ngwr-waves.mjs +25 -3
  165. package/fesm2022/ngwr-waves.mjs.map +1 -1
  166. package/form/styles/_index.scss +8 -4
  167. package/glitch-text/styles/_index.scss +5 -0
  168. package/gradient-text/styles/_index.scss +5 -0
  169. package/i18n/en.json +233 -0
  170. package/i18n/ru.json +233 -0
  171. package/icon/styles/_index.scss +15 -1
  172. package/input/styles/_index.scss +16 -0
  173. package/input-number/styles/_index.scss +8 -1
  174. package/keyboard/styles/_index.scss +15 -3
  175. package/llms-full.txt +124 -63
  176. package/llms.txt +29 -8
  177. package/loading-bar/styles/_index.scss +5 -0
  178. package/marquee/styles/_index.scss +7 -2
  179. package/mention/styles/_index.scss +23 -0
  180. package/overlay/styles/_index.scss +5 -0
  181. package/package.json +15 -1
  182. package/pagination/styles/_index.scss +12 -0
  183. package/popover/styles/_index.scss +165 -45
  184. package/pull-to-refresh/styles/_index.scss +5 -0
  185. package/result/styles/_index.scss +3 -3
  186. package/schematics/icon-set/index.js +80 -34
  187. package/schematics/icon-set/schema.json +8 -3
  188. package/schematics/ng-add/index.js +23 -6
  189. package/schematics/package.json +3 -0
  190. package/schematics/page/templates.js +17 -21
  191. package/schematics/provider/index.js +31 -13
  192. package/schematics/provider/schema.json +40 -24
  193. package/schematics/use/index.js +5 -1
  194. package/schematics/use/schema.json +8 -3
  195. package/schematics/use/symbol-map.json +7 -176
  196. package/segmented/styles/_index.scss +1 -1
  197. package/select/styles/_index.scss +20 -3
  198. package/shiny-text/styles/_index.scss +5 -0
  199. package/speed-dial/styles/_index.scss +12 -1
  200. package/splitter/styles/_index.scss +7 -1
  201. package/spotlight-card/styles/_index.scss +5 -0
  202. package/squircle/styles/_index.scss +5 -0
  203. package/star-border/styles/_index.scss +5 -0
  204. package/statistic/styles/_index.scss +2 -2
  205. package/styles/_animations.scss +6 -0
  206. package/styles.scss +3 -0
  207. package/table/styles/_index.scss +128 -12
  208. package/theme/styles/_box-model.scss +29 -0
  209. package/theme/styles/_colors.scss +116 -15
  210. package/theme/styles/_dark.scss +65 -7
  211. package/theme/styles/_focus.scss +2 -8
  212. package/theme/styles/_index.scss +1 -0
  213. package/tilt-card/styles/_index.scss +5 -0
  214. package/toast/styles/_index.scss +6 -3
  215. package/tour/styles/_index.scss +63 -0
  216. package/transfer/styles/_index.scss +105 -0
  217. package/types/ngwr-alert.d.ts +4 -1
  218. package/types/ngwr-avatar.d.ts +1 -1
  219. package/types/ngwr-back-top.d.ts +3 -2
  220. package/types/ngwr-badge.d.ts +1 -1
  221. package/types/ngwr-border-glow.d.ts +0 -1
  222. package/types/ngwr-carousel.d.ts +10 -1
  223. package/types/ngwr-cascader.d.ts +13 -1
  224. package/types/ngwr-checkbox.d.ts +9 -1
  225. package/types/ngwr-color-picker.d.ts +1 -0
  226. package/types/ngwr-command-palette.d.ts +4 -1
  227. package/types/ngwr-context-menu.d.ts +1 -0
  228. package/types/ngwr-date-picker.d.ts +14 -4
  229. package/types/ngwr-density.d.ts +9 -2
  230. package/types/ngwr-dialog.d.ts +9 -0
  231. package/types/ngwr-divider.d.ts +1 -1
  232. package/types/ngwr-drawer.d.ts +20 -4
  233. package/types/ngwr-dropdown.d.ts +1 -0
  234. package/types/ngwr-event-calendar.d.ts +358 -0
  235. package/types/ngwr-form.d.ts +177 -20
  236. package/types/ngwr-fuzzy-text.d.ts +8 -0
  237. package/types/ngwr-gauge.d.ts +4 -1
  238. package/types/ngwr-i18n.d.ts +80 -2
  239. package/types/ngwr-icon.d.ts +11 -19
  240. package/types/ngwr-input-number.d.ts +8 -1
  241. package/types/ngwr-input.d.ts +50 -20
  242. package/types/ngwr-knob.d.ts +4 -1
  243. package/types/ngwr-lightbox.d.ts +7 -1
  244. package/types/ngwr-line-chart.d.ts +1 -1
  245. package/types/ngwr-media.d.ts +1 -1
  246. package/types/ngwr-mention.d.ts +45 -1
  247. package/types/ngwr-meter-group.d.ts +9 -1
  248. package/types/ngwr-overlay.d.ts +80 -2
  249. package/types/ngwr-page-header.d.ts +2 -2
  250. package/types/ngwr-pagination.d.ts +15 -2
  251. package/types/ngwr-popconfirm.d.ts +1 -0
  252. package/types/ngwr-popover.d.ts +1 -0
  253. package/types/ngwr-progress.d.ts +4 -1
  254. package/types/ngwr-rating.d.ts +3 -2
  255. package/types/ngwr-result.d.ts +12 -6
  256. package/types/ngwr-segmented.d.ts +6 -0
  257. package/types/ngwr-select.d.ts +19 -7
  258. package/types/ngwr-shiny-text.d.ts +2 -4
  259. package/types/ngwr-speed-dial.d.ts +7 -1
  260. package/types/ngwr-squircle.d.ts +1 -1
  261. package/types/ngwr-switch.d.ts +7 -1
  262. package/types/ngwr-table.d.ts +126 -6
  263. package/types/ngwr-tabs.d.ts +1 -4
  264. package/types/ngwr-textarea.d.ts +8 -1
  265. package/types/ngwr-theme.d.ts +8 -1
  266. package/types/ngwr-toolbar.d.ts +2 -2
  267. package/types/ngwr-tour.d.ts +132 -0
  268. package/types/ngwr-transfer.d.ts +118 -0
  269. package/types/ngwr-tree.d.ts +11 -2
  270. package/types/ngwr-validators.d.ts +62 -2
  271. package/types/ngwr-version.d.ts +2 -2
  272. package/types/ngwr-waves.d.ts +10 -0
  273. package/typewriter/styles/_index.scss +5 -0
  274. package/typography/styles/_index.scss +3 -3
  275. package/virtual-scroll/styles/_index.scss +6 -1
  276. package/waves/styles/_index.scss +26 -0
@@ -1,6 +1,6 @@
1
1
  import { isPlatformBrowser } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
- import { input, viewChild, inject, ElementRef, NgZone, DestroyRef, PLATFORM_ID, afterNextRender, effect, ViewEncapsulation, Component } from '@angular/core';
3
+ import { input, viewChild, inject, ElementRef, NgZone, DestroyRef, PLATFORM_ID, signal, afterNextRender, effect, ViewEncapsulation, Component } from '@angular/core';
4
4
  import { WrPlatform } from 'ngwr/platform';
5
5
  import { numAttr } from 'ngwr/utils';
6
6
 
@@ -150,6 +150,17 @@ class WrWaves {
150
150
  bounding = { width: 0, height: 0, left: 0, top: 0 };
151
151
  mouse = { x: -10, y: 0, lx: 0, ly: 0, sx: 0, sy: 0, v: 0, vs: 0, a: 0, set: false };
152
152
  rafId = 0;
153
+ /**
154
+ * Flips once the canvas has drawn, which retires the CSS stand-in grid.
155
+ *
156
+ * A canvas cannot be prerendered, so on an SSR'd or prerendered page this
157
+ * element is simply blank until the bundle has loaded and hydration has run —
158
+ * measured at ~2.8s on ngwr.dev's own home page. The stylesheet paints a static
159
+ * grid of the same colour and pitch in the meantime, straight from the
160
+ * prerendered HTML, and this hands over to the real thing.
161
+ */
162
+ painted = signal(false, /* @ts-ignore */
163
+ ...(ngDevMode ? [{ debugName: "painted" }] : /* istanbul ignore next */ []));
153
164
  constructor() {
154
165
  if (!this.isBrowser)
155
166
  return;
@@ -297,6 +308,13 @@ class WrWaves {
297
308
  const ctx = this.ctx;
298
309
  if (!ctx)
299
310
  return;
311
+ // Retire the CSS stand-in: from here the canvas has real pixels. Set inside
312
+ // the draw rather than at the end of `boot()` so it can never switch the
313
+ // fallback off before something has actually been painted. Runs outside
314
+ // Angular (the rAF loop does), so `signal.set` schedules the one host-binding
315
+ // update it needs; every later call is a no-op on an unchanged value.
316
+ if (!this.painted())
317
+ this.painted.set(true);
300
318
  const { width, height } = this.bounding;
301
319
  ctx.clearRect(0, 0, width, height);
302
320
  ctx.beginPath();
@@ -339,14 +357,18 @@ class WrWaves {
339
357
  }
340
358
  }
341
359
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: WrWaves, deps: [], target: i0.ɵɵFactoryTarget.Component });
342
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.0", type: WrWaves, isStandalone: true, selector: "wr-waves", inputs: { lineColor: { classPropertyName: "lineColor", publicName: "lineColor", isSignal: true, isRequired: false, transformFunction: null }, backgroundColor: { classPropertyName: "backgroundColor", publicName: "backgroundColor", isSignal: true, isRequired: false, transformFunction: null }, waveSpeedX: { classPropertyName: "waveSpeedX", publicName: "waveSpeedX", isSignal: true, isRequired: false, transformFunction: null }, waveSpeedY: { classPropertyName: "waveSpeedY", publicName: "waveSpeedY", isSignal: true, isRequired: false, transformFunction: null }, waveAmpX: { classPropertyName: "waveAmpX", publicName: "waveAmpX", isSignal: true, isRequired: false, transformFunction: null }, waveAmpY: { classPropertyName: "waveAmpY", publicName: "waveAmpY", isSignal: true, isRequired: false, transformFunction: null }, xGap: { classPropertyName: "xGap", publicName: "xGap", isSignal: true, isRequired: false, transformFunction: null }, yGap: { classPropertyName: "yGap", publicName: "yGap", isSignal: true, isRequired: false, transformFunction: null }, friction: { classPropertyName: "friction", publicName: "friction", isSignal: true, isRequired: false, transformFunction: null }, tension: { classPropertyName: "tension", publicName: "tension", isSignal: true, isRequired: false, transformFunction: null }, maxCursorMove: { classPropertyName: "maxCursorMove", publicName: "maxCursorMove", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.background-color": "backgroundColor()" }, classAttribute: "wr-waves" }, viewQueries: [{ propertyName: "canvasRef", first: true, predicate: ["canvas"], descendants: true, isSignal: true }], ngImport: i0, template: '<canvas #canvas class="wr-waves__canvas"></canvas>', isInline: true, styles: [".wr-waves{--wr-waves-line-color: rgba(var(--wr-color-on-surface-rgb), .12);position:absolute;inset:0;display:block;margin:0;padding:0;overflow:hidden}.wr-waves__canvas{display:block;width:100%;height:100%}[data-theme=dark] .wr-waves{--wr-waves-line-color: rgb(255 255 255 / 14%)}\n"], encapsulation: i0.ViewEncapsulation.None });
360
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.0", type: WrWaves, isStandalone: true, selector: "wr-waves", inputs: { lineColor: { classPropertyName: "lineColor", publicName: "lineColor", isSignal: true, isRequired: false, transformFunction: null }, backgroundColor: { classPropertyName: "backgroundColor", publicName: "backgroundColor", isSignal: true, isRequired: false, transformFunction: null }, waveSpeedX: { classPropertyName: "waveSpeedX", publicName: "waveSpeedX", isSignal: true, isRequired: false, transformFunction: null }, waveSpeedY: { classPropertyName: "waveSpeedY", publicName: "waveSpeedY", isSignal: true, isRequired: false, transformFunction: null }, waveAmpX: { classPropertyName: "waveAmpX", publicName: "waveAmpX", isSignal: true, isRequired: false, transformFunction: null }, waveAmpY: { classPropertyName: "waveAmpY", publicName: "waveAmpY", isSignal: true, isRequired: false, transformFunction: null }, xGap: { classPropertyName: "xGap", publicName: "xGap", isSignal: true, isRequired: false, transformFunction: null }, yGap: { classPropertyName: "yGap", publicName: "yGap", isSignal: true, isRequired: false, transformFunction: null }, friction: { classPropertyName: "friction", publicName: "friction", isSignal: true, isRequired: false, transformFunction: null }, tension: { classPropertyName: "tension", publicName: "tension", isSignal: true, isRequired: false, transformFunction: null }, maxCursorMove: { classPropertyName: "maxCursorMove", publicName: "maxCursorMove", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.background-color": "backgroundColor()", "style.--wr-waves-x-gap.px": "xGap()", "class.wr-waves--painted": "painted()" }, classAttribute: "wr-waves" }, viewQueries: [{ propertyName: "canvasRef", first: true, predicate: ["canvas"], descendants: true, isSignal: true }], ngImport: i0, template: '<canvas #canvas class="wr-waves__canvas"></canvas>', isInline: true, styles: ["@charset \"UTF-8\";:where([class^=wr-],[class*=\" wr-\"]),:where([class^=wr-],[class*=\" wr-\"]):before,:where([class^=wr-],[class*=\" wr-\"]):after{box-sizing:border-box}:root{color-scheme:light;--wr-color-white: #ffffff;--wr-color-white-rgb: 255, 255, 255;--wr-color-black: #000000;--wr-color-black-rgb: 0, 0, 0;--wr-color-backdrop-rgb: 0, 0, 0;--wr-color-hover: rgba(var(--wr-color-light-rgb), .4);--wr-color-border: rgba(var(--wr-color-light-rgb), .5);--wr-color-border-subtle: rgba(var(--wr-color-light-rgb), .35);--wr-color-border-strong: rgba(var(--wr-color-light-rgb), .6);--wr-color-overlay: rgba(var(--wr-color-backdrop-rgb), .45);--wr-color-muted-text: #5f6c7d;--wr-color-muted-text-rgb: 95, 108, 125;--wr-color-text-muted: rgba(var(--wr-color-muted-text-rgb), .95);--wr-color-text-faint: rgba(var(--wr-color-muted-text-rgb), .6);--wr-color-gray-50: #f8fafc;--wr-color-gray-100: #f1f5f9;--wr-color-gray-200: #e2e8f0;--wr-color-gray-300: #cbd5e1;--wr-color-gray-400: #94a3b8;--wr-color-gray-500: #64748b;--wr-color-gray-600: #475569;--wr-color-gray-700: #334155;--wr-color-gray-800: #1e293b;--wr-color-gray-900: #0f172a;--wr-color-gray-950: #020617;--wr-color-surface: var(--wr-color-white);--wr-color-surface-rgb: var(--wr-color-white-rgb);--wr-color-on-surface: var(--wr-color-dark);--wr-color-on-surface-rgb: var(--wr-color-dark-rgb);--wr-color-on-surface-muted: var(--wr-color-muted-text);--wr-color-on-surface-muted-rgb: var(--wr-color-muted-text-rgb);--wr-color-outline: var(--wr-color-light);--wr-color-outline-rgb: var(--wr-color-light-rgb);--wr-color-primary: #3969e2;--wr-color-primary-rgb: 57, 105, 226;--wr-color-primary-contrast: #ffffff;--wr-color-primary-dark: rgb(34.7577092511, 88.1497797357, 222.7422907489);--wr-color-primary-darker: rgb(29.6387665198, 78.6960352423, 202.3612334802);--wr-color-primary-light: rgb(79.2422907489, 121.8502202643, 229.2577092511);--wr-color-primary-lighter: rgb(101.4845814978, 138.7004405286, 232.5154185022);--wr-color-secondary: #f51c6a;--wr-color-secondary-rgb: 245, 28, 106;--wr-color-secondary-contrast: #171616;--wr-color-secondary-dark: rgb(237.0569620253, 10.4430379747, 91.8987341772);--wr-color-secondary-darker: rgb(212.6329113924, 9.3670886076, 82.4303797468);--wr-color-secondary-light: rgb(246.0759493671, 52.4240506329, 122.0316455696);--wr-color-secondary-lighter: rgb(247.1518987342, 76.8481012658, 138.0632911392);--wr-color-success: #00a400;--wr-color-success-rgb: 0, 164, 0;--wr-color-success-contrast: #171616;--wr-color-success-dark: rgb(0, 138.5, 0);--wr-color-success-darker: #007100;--wr-color-success-light: rgb(0, 189.5, 0);--wr-color-success-lighter: #00d700;--wr-color-warning: #ffba00;--wr-color-warning-rgb: 255, 186, 0;--wr-color-warning-contrast: #171616;--wr-color-warning-dark: rgb(229.5, 167.4, 0);--wr-color-warning-darker: rgb(204, 148.8, 0);--wr-color-warning-light: rgb(255, 192.9, 25.5);--wr-color-warning-lighter: rgb(255, 199.8, 51);--wr-color-danger: #fa383e;--wr-color-danger-rgb: 250, 56, 62;--wr-color-danger-contrast: #171616;--wr-color-danger-dark: rgb(249.375, 31.125, 37.875);--wr-color-danger-darker: rgb(248.75, 6.25, 13.75);--wr-color-danger-light: rgb(250.625, 80.875, 86.125);--wr-color-danger-lighter: rgb(251.25, 105.75, 110.25);--wr-color-info: #3b82f6;--wr-color-info-rgb: 59, 130, 246;--wr-color-info-contrast: #171616;--wr-color-info-dark: rgb(34.6195121951, 114.4512195122, 244.8804878049);--wr-color-info-darker: rgb(11.1512195122, 99.1219512195, 242.8487804878);--wr-color-info-light: rgb(83.3804878049, 145.5487804878, 247.1195121951);--wr-color-info-lighter: rgb(107.7609756098, 161.0975609756, 248.2390243902);--wr-color-light: #cbd5e1;--wr-color-light-rgb: 203, 213, 225;--wr-color-light-contrast: #171616;--wr-color-light-dark: rgb(186.8292682927, 199.9390243902, 215.6707317073);--wr-color-light-darker: rgb(170.6585365854, 186.8780487805, 206.3414634146);--wr-color-light-light: rgb(219.1707317073, 226.0609756098, 234.3292682927);--wr-color-light-lighter: rgb(235.3414634146, 239.1219512195, 243.6585365854);--wr-color-medium: #8594a4;--wr-color-medium-rgb: 133, 148, 164;--wr-color-medium-contrast: #171616;--wr-color-medium-dark: rgb(118.3943661972, 135.1901408451, 153.1056338028);--wr-color-medium-darker: rgb(105.0985915493, 122.4225352113, 140.9014084507);--wr-color-medium-light: rgb(147.6056338028, 160.8098591549, 174.8943661972);--wr-color-medium-lighter: rgb(162.2112676056, 173.6197183099, 185.7887323944);--wr-color-dark: #0f172a;--wr-color-dark-rgb: 15, 23, 42;--wr-color-dark-contrast: #ffffff;--wr-color-dark-dark: rgb(8.2894736842, 12.7105263158, 23.2105263158);--wr-color-dark-darker: rgb(1.5789473684, 2.4210526316, 4.4210526316);--wr-color-dark-light: rgb(21.7105263158, 33.2894736842, 60.7894736842);--wr-color-dark-lighter: rgb(28.4210526316, 43.5789473684, 79.5789473684);--wr-color-primary-soft: rgba(var(--wr-color-primary-rgb), .12);--wr-color-primary-soft-border: rgba(var(--wr-color-primary-rgb), .3);--wr-color-primary-soft-contrast: color-mix(in srgb, var(--wr-color-primary) 62%, var(--wr-color-dark));--wr-color-primary-active: rgba(var(--wr-color-primary-rgb), .2);--wr-color-secondary-soft: rgba(var(--wr-color-secondary-rgb), .12);--wr-color-secondary-soft-border: rgba(var(--wr-color-secondary-rgb), .3);--wr-color-secondary-soft-contrast: color-mix(in srgb, var(--wr-color-secondary) 62%, var(--wr-color-dark));--wr-color-secondary-active: rgba(var(--wr-color-secondary-rgb), .2);--wr-color-success-soft: rgba(var(--wr-color-success-rgb), .12);--wr-color-success-soft-border: rgba(var(--wr-color-success-rgb), .3);--wr-color-success-soft-contrast: color-mix(in srgb, var(--wr-color-success) 62%, var(--wr-color-dark));--wr-color-success-active: rgba(var(--wr-color-success-rgb), .2);--wr-color-warning-soft: rgba(var(--wr-color-warning-rgb), .12);--wr-color-warning-soft-border: rgba(var(--wr-color-warning-rgb), .3);--wr-color-warning-soft-contrast: color-mix(in srgb, var(--wr-color-warning) 62%, var(--wr-color-dark));--wr-color-warning-active: rgba(var(--wr-color-warning-rgb), .2);--wr-color-danger-soft: rgba(var(--wr-color-danger-rgb), .12);--wr-color-danger-soft-border: rgba(var(--wr-color-danger-rgb), .3);--wr-color-danger-soft-contrast: color-mix(in srgb, var(--wr-color-danger) 62%, var(--wr-color-dark));--wr-color-danger-active: rgba(var(--wr-color-danger-rgb), .2);--wr-color-info-soft: rgba(var(--wr-color-info-rgb), .12);--wr-color-info-soft-border: rgba(var(--wr-color-info-rgb), .3);--wr-color-info-soft-contrast: color-mix(in srgb, var(--wr-color-info) 62%, var(--wr-color-dark));--wr-color-info-active: rgba(var(--wr-color-info-rgb), .2);--wr-color-medium-soft: rgba(var(--wr-color-medium-rgb), .12);--wr-color-medium-soft-border: rgba(var(--wr-color-medium-rgb), .3);--wr-color-medium-soft-contrast: color-mix(in srgb, var(--wr-color-medium) 62%, var(--wr-color-dark));--wr-color-medium-active: rgba(var(--wr-color-medium-rgb), .2);--wr-color-primary-ink: color-mix(in srgb, var(--wr-color-primary) 93%, var(--wr-color-dark));--wr-color-secondary-ink: color-mix(in srgb, var(--wr-color-secondary) 80%, var(--wr-color-dark));--wr-color-success-ink: color-mix(in srgb, var(--wr-color-success) 72%, var(--wr-color-dark));--wr-color-warning-ink: color-mix(in srgb, var(--wr-color-warning) 50%, var(--wr-color-dark));--wr-color-danger-ink: color-mix(in srgb, var(--wr-color-danger) 77%, var(--wr-color-dark));--wr-color-info-ink: color-mix(in srgb, var(--wr-color-info) 76%, var(--wr-color-dark));--wr-color-medium-ink: color-mix(in srgb, var(--wr-color-medium) 69%, var(--wr-color-dark));--wr-color-light-ink: var(--wr-color-on-surface);--wr-color-dark-ink: var(--wr-color-dark)}:root{--wr-border-radius-sm: .375rem;--wr-border-radius-base: .625rem;--wr-border-radius-lg: 1rem;--wr-border-radius-pill: 50rem;--wr-control-padding-y-sm: .125rem;--wr-control-padding-y-md: .25rem;--wr-control-padding-y-lg: .3125rem;--wr-control-padding-x-sm: .5rem;--wr-control-padding-x-md: .75rem;--wr-control-padding-x-lg: 1rem;--wr-control-line-height-sm: 1rem;--wr-control-line-height-md: 1.25rem;--wr-control-line-height-lg: 1.5rem;--wr-control-font-size-sm: var(--wr-text-xs);--wr-control-font-size-md: var(--wr-text-sm);--wr-control-font-size-lg: var(--wr-text-base);--wr-control-radius-sm: 5px;--wr-control-radius-md: 6px;--wr-control-radius-lg: 7px;--wr-ease-linear: linear;--wr-ease-out: cubic-bezier(.16, 1, .3, 1);--wr-ease-in: cubic-bezier(.7, 0, .84, 0);--wr-ease-in-out: cubic-bezier(.65, 0, .35, 1);--wr-ease-spring: cubic-bezier(.34, 1.56, .64, 1);--wr-duration-fast: .1s;--wr-duration-base: .15s;--wr-duration-slow: .3s;--wr-duration-slower: .5s;--wr-transition-short: var(--wr-duration-fast) var(--wr-ease-out);--wr-transition-base: var(--wr-duration-base) var(--wr-ease-linear);--wr-transition-long: var(--wr-duration-slow) var(--wr-ease-out);--wr-shadow-xs: 0 1px 2px rgb(0 0 0 / 5%);--wr-shadow-sm: 0 2px 8px rgb(0 0 0 / 15%);--wr-shadow-overlay: 0 8px 24px rgb(0 0 0 / 12%), 0 2px 4px rgb(0 0 0 / 6%);--wr-shadow-float: 0 8px 24px rgb(0 0 0 / 18%);--wr-shadow-modal: 0 20px 48px rgb(0 0 0 / 25%);--wr-z-overlay: 1000;--wr-z-window: 1100;--wr-z-top: 9999;--wr-overlay-duration: var(--wr-duration-base);--wr-overlay-ease: var(--wr-ease-out);--wr-font-family-base: system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;--wr-font-family-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;--wr-text-xs: .75rem;--wr-text-sm: .875rem;--wr-text-base: 1rem;--wr-text-lg: 1.125rem;--wr-text-xl: 1.25rem;--wr-text-2xl: 1.5rem;--wr-text-3xl: 1.875rem;--wr-text-4xl: 2.25rem;--wr-text-5xl: 3rem;--wr-font-weight-thin: 200;--wr-font-weight-light: 300;--wr-font-weight-regular: 400;--wr-font-weight-medium: 500;--wr-font-weight-semibold: 600;--wr-font-weight-bold: 700;--wr-font-weight-extrabold: 800;--wr-leading-none: 1;--wr-leading-tight: 1.25;--wr-leading-snug: 1.375;--wr-leading-normal: 1.5;--wr-leading-relaxed: 1.625;--wr-leading-loose: 2;--wr-tracking-tighter: -.05em;--wr-tracking-tight: -.025em;--wr-tracking-normal: 0;--wr-tracking-wide: .025em;--wr-tracking-wider: .05em;--wr-tracking-widest: .1em}@keyframes wr-overlay-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}[data-theme=dark]{--wr-color-white: #0b1120;--wr-color-white-rgb: 11, 17, 32;--wr-color-dark: #e6ebf3;--wr-color-dark-rgb: 230, 235, 243;--wr-color-dark-contrast: #0b1120;--wr-color-white-contrast: #e6ebf3;--wr-color-dark-light: rgb(247.5, 249, 251.4);--wr-color-dark-lighter: rgb(251.25, 252, 253.2);--wr-color-dark-dark: rgb(212.7702702703, 221.2162162162, 234.7297297297);--wr-color-dark-darker: rgb(195.5405405405, 207.4324324324, 226.4594594595);--wr-color-light: #262f44;--wr-color-light-rgb: 38, 47, 68;--wr-color-light-contrast: #e6ebf3;--wr-color-light-lighter: #1a2236;--wr-color-light-darker: #3a4661;--wr-color-light-light: rgb(33.429245283, 41.3466981132, 59.820754717);--wr-color-light-dark: rgb(47.141509434, 58.3066037736, 84.358490566);--wr-color-medium: #9aa6b8;--wr-color-medium-rgb: 154, 166, 184;--wr-color-medium-contrast: #171616;--wr-color-medium-light: rgb(168.9738372093, 179.1947674419, 194.5261627907);--wr-color-medium-lighter: rgb(183.9476744186, 192.3895348837, 205.0523255814);--wr-color-medium-dark: rgb(139.0261627907, 152.8052325581, 173.4738372093);--wr-color-medium-darker: rgb(124.0523255814, 139.6104651163, 162.9476744186);--wr-color-muted-text: #9aa6b8;--wr-color-muted-text-rgb: 154, 166, 184;--wr-color-primary: #5b85ff;--wr-color-primary-contrast: #171616;--wr-color-primary-rgb: 91, 133, 255;--wr-color-primary-light: #7a9eff;--wr-color-primary-dark: #2f56c9;--wr-color-primary-lighter: #99b6ff;--wr-color-primary-darker: #1f3a99;--wr-color-success: #34c759;--wr-color-success-contrast: #171616;--wr-color-success-rgb: 52, 199, 89;--wr-color-success-light: rgb(69.874501992, 206.625498008, 104.2948207171);--wr-color-success-lighter: rgb(90.0916334661, 211.9083665339, 120.7529880478);--wr-color-success-dark: rgb(46.7171314741, 178.7828685259, 79.9581673307);--wr-color-success-darker: rgb(41.4342629482, 158.5657370518, 70.9163346614);--wr-color-warning: #ffcc33;--wr-color-warning-contrast: #171616;--wr-color-warning-rgb: 255, 204, 51;--wr-color-warning-light: rgb(255, 210.375, 76.5);--wr-color-warning-lighter: rgb(255, 216.75, 102);--wr-color-warning-dark: rgb(255, 197.625, 25.5);--wr-color-warning-darker: rgb(255, 191.25, 0);--wr-color-danger: #ff5c5c;--wr-color-danger-contrast: #171616;--wr-color-danger-rgb: 255, 92, 92;--wr-color-danger-light: rgb(255, 117.5, 117.5);--wr-color-danger-lighter: #ff8f8f;--wr-color-danger-dark: rgb(255, 66.5, 66.5);--wr-color-danger-darker: #ff2929;--wr-shadow-xs: 0 1px 2px rgb(0 0 0 / 35%);--wr-shadow-sm: 0 2px 8px rgb(0 0 0 / 45%);--wr-shadow-overlay: 0 8px 24px rgb(0 0 0 / 50%), 0 2px 4px rgb(0 0 0 / 35%);--wr-shadow-float: 0 8px 24px rgb(0 0 0 / 55%);--wr-shadow-modal: 0 24px 56px rgb(0 0 0 / 60%);color-scheme:dark}.wr-tabs__tab:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--wr-color-primary-rgb),.25)}.wr-sidebar__entry:focus-visible,.wr-sidebar__item:focus-visible,.wr-sidebar__group-toggle:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--wr-color-primary-rgb),.25)}.wr-anchor__link:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--wr-color-primary-rgb),.25)}.wr-collapse__header:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--wr-color-primary-rgb),.25)}.wr-command-palette__option:focus-visible,.wr-command-palette__panel input:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--wr-color-primary-rgb),.25)}.wr-mention-panel__option:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--wr-color-primary-rgb),.25)}.wr-segmented__option:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--wr-color-primary-rgb),.25)}.wr-back-top:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--wr-color-primary-rgb),.25)}.wr-carousel__nav:focus-visible,.wr-carousel__dot:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--wr-color-primary-rgb),.25)}.wr-speed-dial__trigger:focus-visible,.wr-speed-dial__action:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--wr-color-primary-rgb),.25)}.wr-stepper__header:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--wr-color-primary-rgb),.25)}.wr-window__chrome-action:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--wr-color-primary-rgb),.25)}.wr-date-picker__trigger:focus-visible,.wr-time-picker__step:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--wr-color-primary-rgb),.25)}.wr-dropdown-item:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--wr-color-primary-rgb),.25)}.wr-alert__close:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--wr-color-primary-rgb),.25)}.wr-waves{--wr-waves-line-color: rgba(var(--wr-color-on-surface-rgb), .12);--wr-waves-x-gap: 10px;position:absolute;inset:0;display:block;margin:0;padding:0;overflow:hidden;background-image:repeating-linear-gradient(to right,var(--wr-waves-line-color) 0 1px,transparent 1px var(--wr-waves-x-gap))}.wr-waves--painted{background-image:none}.wr-waves__canvas{display:block;width:100%;height:100%}[data-theme=dark] .wr-waves{--wr-waves-line-color: rgb(255 255 255 / 14%)}\n"], encapsulation: i0.ViewEncapsulation.None });
343
361
  }
344
362
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: WrWaves, decorators: [{
345
363
  type: Component,
346
364
  args: [{ selector: 'wr-waves', template: '<canvas #canvas class="wr-waves__canvas"></canvas>', encapsulation: ViewEncapsulation.None, host: {
347
365
  class: 'wr-waves',
348
366
  '[style.background-color]': 'backgroundColor()',
349
- }, styles: [".wr-waves{--wr-waves-line-color: rgba(var(--wr-color-on-surface-rgb), .12);position:absolute;inset:0;display:block;margin:0;padding:0;overflow:hidden}.wr-waves__canvas{display:block;width:100%;height:100%}[data-theme=dark] .wr-waves{--wr-waves-line-color: rgb(255 255 255 / 14%)}\n"] }]
367
+ // Feeds the CSS stand-in grid (see waves.scss) so it matches the real
368
+ // spacing, and switches it off the moment the canvas has painted.
369
+ '[style.--wr-waves-x-gap.px]': 'xGap()',
370
+ '[class.wr-waves--painted]': 'painted()',
371
+ }, styles: ["@charset \"UTF-8\";:where([class^=wr-],[class*=\" wr-\"]),:where([class^=wr-],[class*=\" wr-\"]):before,:where([class^=wr-],[class*=\" wr-\"]):after{box-sizing:border-box}:root{color-scheme:light;--wr-color-white: #ffffff;--wr-color-white-rgb: 255, 255, 255;--wr-color-black: #000000;--wr-color-black-rgb: 0, 0, 0;--wr-color-backdrop-rgb: 0, 0, 0;--wr-color-hover: rgba(var(--wr-color-light-rgb), .4);--wr-color-border: rgba(var(--wr-color-light-rgb), .5);--wr-color-border-subtle: rgba(var(--wr-color-light-rgb), .35);--wr-color-border-strong: rgba(var(--wr-color-light-rgb), .6);--wr-color-overlay: rgba(var(--wr-color-backdrop-rgb), .45);--wr-color-muted-text: #5f6c7d;--wr-color-muted-text-rgb: 95, 108, 125;--wr-color-text-muted: rgba(var(--wr-color-muted-text-rgb), .95);--wr-color-text-faint: rgba(var(--wr-color-muted-text-rgb), .6);--wr-color-gray-50: #f8fafc;--wr-color-gray-100: #f1f5f9;--wr-color-gray-200: #e2e8f0;--wr-color-gray-300: #cbd5e1;--wr-color-gray-400: #94a3b8;--wr-color-gray-500: #64748b;--wr-color-gray-600: #475569;--wr-color-gray-700: #334155;--wr-color-gray-800: #1e293b;--wr-color-gray-900: #0f172a;--wr-color-gray-950: #020617;--wr-color-surface: var(--wr-color-white);--wr-color-surface-rgb: var(--wr-color-white-rgb);--wr-color-on-surface: var(--wr-color-dark);--wr-color-on-surface-rgb: var(--wr-color-dark-rgb);--wr-color-on-surface-muted: var(--wr-color-muted-text);--wr-color-on-surface-muted-rgb: var(--wr-color-muted-text-rgb);--wr-color-outline: var(--wr-color-light);--wr-color-outline-rgb: var(--wr-color-light-rgb);--wr-color-primary: #3969e2;--wr-color-primary-rgb: 57, 105, 226;--wr-color-primary-contrast: #ffffff;--wr-color-primary-dark: rgb(34.7577092511, 88.1497797357, 222.7422907489);--wr-color-primary-darker: rgb(29.6387665198, 78.6960352423, 202.3612334802);--wr-color-primary-light: rgb(79.2422907489, 121.8502202643, 229.2577092511);--wr-color-primary-lighter: rgb(101.4845814978, 138.7004405286, 232.5154185022);--wr-color-secondary: #f51c6a;--wr-color-secondary-rgb: 245, 28, 106;--wr-color-secondary-contrast: #171616;--wr-color-secondary-dark: rgb(237.0569620253, 10.4430379747, 91.8987341772);--wr-color-secondary-darker: rgb(212.6329113924, 9.3670886076, 82.4303797468);--wr-color-secondary-light: rgb(246.0759493671, 52.4240506329, 122.0316455696);--wr-color-secondary-lighter: rgb(247.1518987342, 76.8481012658, 138.0632911392);--wr-color-success: #00a400;--wr-color-success-rgb: 0, 164, 0;--wr-color-success-contrast: #171616;--wr-color-success-dark: rgb(0, 138.5, 0);--wr-color-success-darker: #007100;--wr-color-success-light: rgb(0, 189.5, 0);--wr-color-success-lighter: #00d700;--wr-color-warning: #ffba00;--wr-color-warning-rgb: 255, 186, 0;--wr-color-warning-contrast: #171616;--wr-color-warning-dark: rgb(229.5, 167.4, 0);--wr-color-warning-darker: rgb(204, 148.8, 0);--wr-color-warning-light: rgb(255, 192.9, 25.5);--wr-color-warning-lighter: rgb(255, 199.8, 51);--wr-color-danger: #fa383e;--wr-color-danger-rgb: 250, 56, 62;--wr-color-danger-contrast: #171616;--wr-color-danger-dark: rgb(249.375, 31.125, 37.875);--wr-color-danger-darker: rgb(248.75, 6.25, 13.75);--wr-color-danger-light: rgb(250.625, 80.875, 86.125);--wr-color-danger-lighter: rgb(251.25, 105.75, 110.25);--wr-color-info: #3b82f6;--wr-color-info-rgb: 59, 130, 246;--wr-color-info-contrast: #171616;--wr-color-info-dark: rgb(34.6195121951, 114.4512195122, 244.8804878049);--wr-color-info-darker: rgb(11.1512195122, 99.1219512195, 242.8487804878);--wr-color-info-light: rgb(83.3804878049, 145.5487804878, 247.1195121951);--wr-color-info-lighter: rgb(107.7609756098, 161.0975609756, 248.2390243902);--wr-color-light: #cbd5e1;--wr-color-light-rgb: 203, 213, 225;--wr-color-light-contrast: #171616;--wr-color-light-dark: rgb(186.8292682927, 199.9390243902, 215.6707317073);--wr-color-light-darker: rgb(170.6585365854, 186.8780487805, 206.3414634146);--wr-color-light-light: rgb(219.1707317073, 226.0609756098, 234.3292682927);--wr-color-light-lighter: rgb(235.3414634146, 239.1219512195, 243.6585365854);--wr-color-medium: #8594a4;--wr-color-medium-rgb: 133, 148, 164;--wr-color-medium-contrast: #171616;--wr-color-medium-dark: rgb(118.3943661972, 135.1901408451, 153.1056338028);--wr-color-medium-darker: rgb(105.0985915493, 122.4225352113, 140.9014084507);--wr-color-medium-light: rgb(147.6056338028, 160.8098591549, 174.8943661972);--wr-color-medium-lighter: rgb(162.2112676056, 173.6197183099, 185.7887323944);--wr-color-dark: #0f172a;--wr-color-dark-rgb: 15, 23, 42;--wr-color-dark-contrast: #ffffff;--wr-color-dark-dark: rgb(8.2894736842, 12.7105263158, 23.2105263158);--wr-color-dark-darker: rgb(1.5789473684, 2.4210526316, 4.4210526316);--wr-color-dark-light: rgb(21.7105263158, 33.2894736842, 60.7894736842);--wr-color-dark-lighter: rgb(28.4210526316, 43.5789473684, 79.5789473684);--wr-color-primary-soft: rgba(var(--wr-color-primary-rgb), .12);--wr-color-primary-soft-border: rgba(var(--wr-color-primary-rgb), .3);--wr-color-primary-soft-contrast: color-mix(in srgb, var(--wr-color-primary) 62%, var(--wr-color-dark));--wr-color-primary-active: rgba(var(--wr-color-primary-rgb), .2);--wr-color-secondary-soft: rgba(var(--wr-color-secondary-rgb), .12);--wr-color-secondary-soft-border: rgba(var(--wr-color-secondary-rgb), .3);--wr-color-secondary-soft-contrast: color-mix(in srgb, var(--wr-color-secondary) 62%, var(--wr-color-dark));--wr-color-secondary-active: rgba(var(--wr-color-secondary-rgb), .2);--wr-color-success-soft: rgba(var(--wr-color-success-rgb), .12);--wr-color-success-soft-border: rgba(var(--wr-color-success-rgb), .3);--wr-color-success-soft-contrast: color-mix(in srgb, var(--wr-color-success) 62%, var(--wr-color-dark));--wr-color-success-active: rgba(var(--wr-color-success-rgb), .2);--wr-color-warning-soft: rgba(var(--wr-color-warning-rgb), .12);--wr-color-warning-soft-border: rgba(var(--wr-color-warning-rgb), .3);--wr-color-warning-soft-contrast: color-mix(in srgb, var(--wr-color-warning) 62%, var(--wr-color-dark));--wr-color-warning-active: rgba(var(--wr-color-warning-rgb), .2);--wr-color-danger-soft: rgba(var(--wr-color-danger-rgb), .12);--wr-color-danger-soft-border: rgba(var(--wr-color-danger-rgb), .3);--wr-color-danger-soft-contrast: color-mix(in srgb, var(--wr-color-danger) 62%, var(--wr-color-dark));--wr-color-danger-active: rgba(var(--wr-color-danger-rgb), .2);--wr-color-info-soft: rgba(var(--wr-color-info-rgb), .12);--wr-color-info-soft-border: rgba(var(--wr-color-info-rgb), .3);--wr-color-info-soft-contrast: color-mix(in srgb, var(--wr-color-info) 62%, var(--wr-color-dark));--wr-color-info-active: rgba(var(--wr-color-info-rgb), .2);--wr-color-medium-soft: rgba(var(--wr-color-medium-rgb), .12);--wr-color-medium-soft-border: rgba(var(--wr-color-medium-rgb), .3);--wr-color-medium-soft-contrast: color-mix(in srgb, var(--wr-color-medium) 62%, var(--wr-color-dark));--wr-color-medium-active: rgba(var(--wr-color-medium-rgb), .2);--wr-color-primary-ink: color-mix(in srgb, var(--wr-color-primary) 93%, var(--wr-color-dark));--wr-color-secondary-ink: color-mix(in srgb, var(--wr-color-secondary) 80%, var(--wr-color-dark));--wr-color-success-ink: color-mix(in srgb, var(--wr-color-success) 72%, var(--wr-color-dark));--wr-color-warning-ink: color-mix(in srgb, var(--wr-color-warning) 50%, var(--wr-color-dark));--wr-color-danger-ink: color-mix(in srgb, var(--wr-color-danger) 77%, var(--wr-color-dark));--wr-color-info-ink: color-mix(in srgb, var(--wr-color-info) 76%, var(--wr-color-dark));--wr-color-medium-ink: color-mix(in srgb, var(--wr-color-medium) 69%, var(--wr-color-dark));--wr-color-light-ink: var(--wr-color-on-surface);--wr-color-dark-ink: var(--wr-color-dark)}:root{--wr-border-radius-sm: .375rem;--wr-border-radius-base: .625rem;--wr-border-radius-lg: 1rem;--wr-border-radius-pill: 50rem;--wr-control-padding-y-sm: .125rem;--wr-control-padding-y-md: .25rem;--wr-control-padding-y-lg: .3125rem;--wr-control-padding-x-sm: .5rem;--wr-control-padding-x-md: .75rem;--wr-control-padding-x-lg: 1rem;--wr-control-line-height-sm: 1rem;--wr-control-line-height-md: 1.25rem;--wr-control-line-height-lg: 1.5rem;--wr-control-font-size-sm: var(--wr-text-xs);--wr-control-font-size-md: var(--wr-text-sm);--wr-control-font-size-lg: var(--wr-text-base);--wr-control-radius-sm: 5px;--wr-control-radius-md: 6px;--wr-control-radius-lg: 7px;--wr-ease-linear: linear;--wr-ease-out: cubic-bezier(.16, 1, .3, 1);--wr-ease-in: cubic-bezier(.7, 0, .84, 0);--wr-ease-in-out: cubic-bezier(.65, 0, .35, 1);--wr-ease-spring: cubic-bezier(.34, 1.56, .64, 1);--wr-duration-fast: .1s;--wr-duration-base: .15s;--wr-duration-slow: .3s;--wr-duration-slower: .5s;--wr-transition-short: var(--wr-duration-fast) var(--wr-ease-out);--wr-transition-base: var(--wr-duration-base) var(--wr-ease-linear);--wr-transition-long: var(--wr-duration-slow) var(--wr-ease-out);--wr-shadow-xs: 0 1px 2px rgb(0 0 0 / 5%);--wr-shadow-sm: 0 2px 8px rgb(0 0 0 / 15%);--wr-shadow-overlay: 0 8px 24px rgb(0 0 0 / 12%), 0 2px 4px rgb(0 0 0 / 6%);--wr-shadow-float: 0 8px 24px rgb(0 0 0 / 18%);--wr-shadow-modal: 0 20px 48px rgb(0 0 0 / 25%);--wr-z-overlay: 1000;--wr-z-window: 1100;--wr-z-top: 9999;--wr-overlay-duration: var(--wr-duration-base);--wr-overlay-ease: var(--wr-ease-out);--wr-font-family-base: system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;--wr-font-family-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;--wr-text-xs: .75rem;--wr-text-sm: .875rem;--wr-text-base: 1rem;--wr-text-lg: 1.125rem;--wr-text-xl: 1.25rem;--wr-text-2xl: 1.5rem;--wr-text-3xl: 1.875rem;--wr-text-4xl: 2.25rem;--wr-text-5xl: 3rem;--wr-font-weight-thin: 200;--wr-font-weight-light: 300;--wr-font-weight-regular: 400;--wr-font-weight-medium: 500;--wr-font-weight-semibold: 600;--wr-font-weight-bold: 700;--wr-font-weight-extrabold: 800;--wr-leading-none: 1;--wr-leading-tight: 1.25;--wr-leading-snug: 1.375;--wr-leading-normal: 1.5;--wr-leading-relaxed: 1.625;--wr-leading-loose: 2;--wr-tracking-tighter: -.05em;--wr-tracking-tight: -.025em;--wr-tracking-normal: 0;--wr-tracking-wide: .025em;--wr-tracking-wider: .05em;--wr-tracking-widest: .1em}@keyframes wr-overlay-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}[data-theme=dark]{--wr-color-white: #0b1120;--wr-color-white-rgb: 11, 17, 32;--wr-color-dark: #e6ebf3;--wr-color-dark-rgb: 230, 235, 243;--wr-color-dark-contrast: #0b1120;--wr-color-white-contrast: #e6ebf3;--wr-color-dark-light: rgb(247.5, 249, 251.4);--wr-color-dark-lighter: rgb(251.25, 252, 253.2);--wr-color-dark-dark: rgb(212.7702702703, 221.2162162162, 234.7297297297);--wr-color-dark-darker: rgb(195.5405405405, 207.4324324324, 226.4594594595);--wr-color-light: #262f44;--wr-color-light-rgb: 38, 47, 68;--wr-color-light-contrast: #e6ebf3;--wr-color-light-lighter: #1a2236;--wr-color-light-darker: #3a4661;--wr-color-light-light: rgb(33.429245283, 41.3466981132, 59.820754717);--wr-color-light-dark: rgb(47.141509434, 58.3066037736, 84.358490566);--wr-color-medium: #9aa6b8;--wr-color-medium-rgb: 154, 166, 184;--wr-color-medium-contrast: #171616;--wr-color-medium-light: rgb(168.9738372093, 179.1947674419, 194.5261627907);--wr-color-medium-lighter: rgb(183.9476744186, 192.3895348837, 205.0523255814);--wr-color-medium-dark: rgb(139.0261627907, 152.8052325581, 173.4738372093);--wr-color-medium-darker: rgb(124.0523255814, 139.6104651163, 162.9476744186);--wr-color-muted-text: #9aa6b8;--wr-color-muted-text-rgb: 154, 166, 184;--wr-color-primary: #5b85ff;--wr-color-primary-contrast: #171616;--wr-color-primary-rgb: 91, 133, 255;--wr-color-primary-light: #7a9eff;--wr-color-primary-dark: #2f56c9;--wr-color-primary-lighter: #99b6ff;--wr-color-primary-darker: #1f3a99;--wr-color-success: #34c759;--wr-color-success-contrast: #171616;--wr-color-success-rgb: 52, 199, 89;--wr-color-success-light: rgb(69.874501992, 206.625498008, 104.2948207171);--wr-color-success-lighter: rgb(90.0916334661, 211.9083665339, 120.7529880478);--wr-color-success-dark: rgb(46.7171314741, 178.7828685259, 79.9581673307);--wr-color-success-darker: rgb(41.4342629482, 158.5657370518, 70.9163346614);--wr-color-warning: #ffcc33;--wr-color-warning-contrast: #171616;--wr-color-warning-rgb: 255, 204, 51;--wr-color-warning-light: rgb(255, 210.375, 76.5);--wr-color-warning-lighter: rgb(255, 216.75, 102);--wr-color-warning-dark: rgb(255, 197.625, 25.5);--wr-color-warning-darker: rgb(255, 191.25, 0);--wr-color-danger: #ff5c5c;--wr-color-danger-contrast: #171616;--wr-color-danger-rgb: 255, 92, 92;--wr-color-danger-light: rgb(255, 117.5, 117.5);--wr-color-danger-lighter: #ff8f8f;--wr-color-danger-dark: rgb(255, 66.5, 66.5);--wr-color-danger-darker: #ff2929;--wr-shadow-xs: 0 1px 2px rgb(0 0 0 / 35%);--wr-shadow-sm: 0 2px 8px rgb(0 0 0 / 45%);--wr-shadow-overlay: 0 8px 24px rgb(0 0 0 / 50%), 0 2px 4px rgb(0 0 0 / 35%);--wr-shadow-float: 0 8px 24px rgb(0 0 0 / 55%);--wr-shadow-modal: 0 24px 56px rgb(0 0 0 / 60%);color-scheme:dark}.wr-tabs__tab:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--wr-color-primary-rgb),.25)}.wr-sidebar__entry:focus-visible,.wr-sidebar__item:focus-visible,.wr-sidebar__group-toggle:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--wr-color-primary-rgb),.25)}.wr-anchor__link:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--wr-color-primary-rgb),.25)}.wr-collapse__header:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--wr-color-primary-rgb),.25)}.wr-command-palette__option:focus-visible,.wr-command-palette__panel input:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--wr-color-primary-rgb),.25)}.wr-mention-panel__option:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--wr-color-primary-rgb),.25)}.wr-segmented__option:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--wr-color-primary-rgb),.25)}.wr-back-top:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--wr-color-primary-rgb),.25)}.wr-carousel__nav:focus-visible,.wr-carousel__dot:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--wr-color-primary-rgb),.25)}.wr-speed-dial__trigger:focus-visible,.wr-speed-dial__action:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--wr-color-primary-rgb),.25)}.wr-stepper__header:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--wr-color-primary-rgb),.25)}.wr-window__chrome-action:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--wr-color-primary-rgb),.25)}.wr-date-picker__trigger:focus-visible,.wr-time-picker__step:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--wr-color-primary-rgb),.25)}.wr-dropdown-item:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--wr-color-primary-rgb),.25)}.wr-alert__close:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(var(--wr-color-primary-rgb),.25)}.wr-waves{--wr-waves-line-color: rgba(var(--wr-color-on-surface-rgb), .12);--wr-waves-x-gap: 10px;position:absolute;inset:0;display:block;margin:0;padding:0;overflow:hidden;background-image:repeating-linear-gradient(to right,var(--wr-waves-line-color) 0 1px,transparent 1px var(--wr-waves-x-gap))}.wr-waves--painted{background-image:none}.wr-waves__canvas{display:block;width:100%;height:100%}[data-theme=dark] .wr-waves{--wr-waves-line-color: rgb(255 255 255 / 14%)}\n"] }]
350
372
  }], ctorParameters: () => [], propDecorators: { lineColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "lineColor", required: false }] }], backgroundColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "backgroundColor", required: false }] }], waveSpeedX: [{ type: i0.Input, args: [{ isSignal: true, alias: "waveSpeedX", required: false }] }], waveSpeedY: [{ type: i0.Input, args: [{ isSignal: true, alias: "waveSpeedY", required: false }] }], waveAmpX: [{ type: i0.Input, args: [{ isSignal: true, alias: "waveAmpX", required: false }] }], waveAmpY: [{ type: i0.Input, args: [{ isSignal: true, alias: "waveAmpY", required: false }] }], xGap: [{ type: i0.Input, args: [{ isSignal: true, alias: "xGap", required: false }] }], yGap: [{ type: i0.Input, args: [{ isSignal: true, alias: "yGap", required: false }] }], friction: [{ type: i0.Input, args: [{ isSignal: true, alias: "friction", required: false }] }], tension: [{ type: i0.Input, args: [{ isSignal: true, alias: "tension", required: false }] }], maxCursorMove: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxCursorMove", required: false }] }], canvasRef: [{ type: i0.ViewChild, args: ['canvas', { isSignal: true }] }] } });
351
373
 
352
374
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ngwr-waves.mjs","sources":["../../../projects/lib/waves/waves.ts","../../../projects/lib/waves/ngwr-waves.ts"],"sourcesContent":["/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n *\n * Angular adaptation of the Waves background by David Haz / reactbits.dev.\n * Original: https://www.reactbits.dev/backgrounds/waves\n *\n * A grid of vertical lines drawn on a 2D canvas. Each point drifts on\n * perlin noise and is pushed around by the pointer with a spring\n * (tension + friction) pulling it back to rest.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n Component,\n DestroyRef,\n ElementRef,\n NgZone,\n PLATFORM_ID,\n ViewEncapsulation,\n afterNextRender,\n effect,\n inject,\n input,\n viewChild,\n} from '@angular/core';\n\nimport { WrPlatform } from 'ngwr/platform';\nimport { numAttr } from 'ngwr/utils';\n\n// Perlin noise (Stefan Gustavson's reference permutation)\n/* eslint-disable no-bitwise -- permutation-table hashing is inherently bitwise */\n\nclass Grad {\n constructor(\n private readonly x: number,\n private readonly y: number\n ) {}\n\n dot2(x: number, y: number): number {\n return this.x * x + this.y * y;\n }\n}\n\nconst GRAD3: readonly Grad[] = [\n new Grad(1, 1),\n new Grad(-1, 1),\n new Grad(1, -1),\n new Grad(-1, -1),\n new Grad(1, 0),\n new Grad(-1, 0),\n new Grad(1, 0),\n new Grad(-1, 0),\n new Grad(0, 1),\n new Grad(0, -1),\n new Grad(0, 1),\n new Grad(0, -1),\n];\n\n// prettier-ignore\nconst P: readonly number[] = [\n 151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240,\n 21, 10, 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88,\n 237, 149, 56, 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83,\n 111, 229, 122, 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216,\n 80, 73, 209, 76, 132, 187, 208, 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186,\n 3, 64, 52, 217, 226, 250, 124, 123, 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58,\n 17, 182, 189, 28, 42, 223, 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9,\n 129, 22, 39, 253, 19, 98, 108, 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193,\n 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249, 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157,\n 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254, 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128,\n 195, 78, 66, 215, 61, 156, 180,\n];\n\nclass Noise {\n private readonly perm = new Array<number>(512);\n private readonly gradP = new Array<Grad>(512);\n\n constructor(seed: number) {\n if (seed > 0 && seed < 1) seed *= 65536;\n seed = Math.floor(seed);\n if (seed < 256) seed |= seed << 8;\n for (let i = 0; i < 256; i++) {\n const v = i & 1 ? P[i] ^ (seed & 255) : P[i] ^ ((seed >> 8) & 255);\n this.perm[i] = this.perm[i + 256] = v;\n this.gradP[i] = this.gradP[i + 256] = GRAD3[v % 12];\n }\n }\n\n private fade(t: number): number {\n return t * t * t * (t * (t * 6 - 15) + 10);\n }\n\n private lerp(a: number, b: number, t: number): number {\n return (1 - t) * a + t * b;\n }\n\n perlin2(x: number, y: number): number {\n let gx = Math.floor(x);\n let gy = Math.floor(y);\n x -= gx;\n y -= gy;\n gx &= 255;\n gy &= 255;\n const n00 = this.gradP[gx + this.perm[gy]].dot2(x, y);\n const n01 = this.gradP[gx + this.perm[gy + 1]].dot2(x, y - 1);\n const n10 = this.gradP[gx + 1 + this.perm[gy]].dot2(x - 1, y);\n const n11 = this.gradP[gx + 1 + this.perm[gy + 1]].dot2(x - 1, y - 1);\n const u = this.fade(x);\n return this.lerp(this.lerp(n00, n10, u), this.lerp(n01, n11, u), this.fade(y));\n }\n}\n\n/* eslint-enable no-bitwise */\n// Component\n\ninterface WavePoint {\n x: number;\n y: number;\n wave: { x: number; y: number };\n cursor: { x: number; y: number; vx: number; vy: number };\n}\n\n/**\n * Wave-field background — a grid of lines drifting on perlin noise,\n * nudged by the pointer. Fills its nearest positioned ancestor; put it\n * behind hero copy or section content.\n *\n * Colours are theme-aware by default: a soft dark line on light surfaces,\n * a faint white line on dark — override with `[lineColor]`.\n *\n * @example\n * ```html\n * <section style=\"position: relative\">\n * <wr-waves />\n * <h1>Hero copy above the waves</h1>\n * </section>\n * ```\n *\n * @see https://ngwr.dev/animations/waves\n */\n@Component({\n selector: 'wr-waves',\n template: '<canvas #canvas class=\"wr-waves__canvas\"></canvas>',\n styleUrl: './waves.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'wr-waves',\n '[style.background-color]': 'backgroundColor()',\n },\n})\nexport class WrWaves {\n /** Line stroke colour. When unset, the theme decides. */\n readonly lineColor = input<string | null>(null);\n\n /** Background fill behind the lines. @default 'transparent' */\n readonly backgroundColor = input('transparent');\n\n /** Horizontal noise drift per ms. @default 0.0125 */\n readonly waveSpeedX = input(0.0125, { transform: numAttr(0.0125) });\n\n /** Vertical noise drift per ms. @default 0.005 */\n readonly waveSpeedY = input(0.005, { transform: numAttr(0.005) });\n\n /** Horizontal wave amplitude in px. @default 32 */\n readonly waveAmpX = input(32, { transform: numAttr(32) });\n\n /** Vertical wave amplitude in px. @default 16 */\n readonly waveAmpY = input(16, { transform: numAttr(16) });\n\n /** Horizontal gap between lines in px. @default 10 */\n readonly xGap = input(10, { transform: numAttr(10) });\n\n /** Vertical gap between points on a line in px. @default 32 */\n readonly yGap = input(32, { transform: numAttr(32) });\n\n /** Velocity damping of the cursor spring, 0..1. @default 0.925 */\n readonly friction = input(0.925, { transform: numAttr(0.925) });\n\n /** Pull-back strength of the cursor spring. @default 0.005 */\n readonly tension = input(0.005, { transform: numAttr(0.005) });\n\n /** Max px a point can be dragged from rest. @default 100 */\n readonly maxCursorMove = input(100, { transform: numAttr(100) });\n\n private readonly canvasRef = viewChild.required<ElementRef<HTMLCanvasElement>>('canvas');\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly zone = inject(NgZone);\n private readonly destroyRef = inject(DestroyRef);\n private readonly platform = inject(WrPlatform);\n private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\n private ctx: CanvasRenderingContext2D | null = null;\n private readonly noise = new Noise(Math.random());\n private lines: WavePoint[][] = [];\n private bounding = { width: 0, height: 0, left: 0, top: 0 };\n private readonly mouse = { x: -10, y: 0, lx: 0, ly: 0, sx: 0, sy: 0, v: 0, vs: 0, a: 0, set: false };\n private rafId = 0;\n\n constructor() {\n if (!this.isBrowser) return;\n\n afterNextRender(() => this.zone.runOutsideAngular(() => this.boot()));\n\n // Re-seed the grid when geometry inputs change.\n effect(() => {\n this.xGap();\n this.yGap();\n if (!this.ctx) return;\n this.setSize();\n this.setLines();\n });\n }\n\n // Setup\n\n private boot(): void {\n const canvas = this.canvasRef().nativeElement;\n this.ctx = canvas.getContext('2d');\n if (!this.ctx) return;\n\n this.setSize();\n this.setLines();\n\n const onResize = (): void => {\n this.setSize();\n this.setLines();\n if (this.platform.prefersReducedMotion()) this.drawLines();\n };\n const onMouseMove = (e: MouseEvent): void => this.updateMouse(e.clientX, e.clientY);\n const onTouchMove = (e: TouchEvent): void => this.updateMouse(e.touches[0].clientX, e.touches[0].clientY);\n\n window.addEventListener('resize', onResize);\n const ro = new ResizeObserver(onResize);\n ro.observe(this.host.nativeElement);\n\n // Reduced motion: one static, undisturbed grid — no drift, no loop,\n // no pointer reactivity.\n if (this.platform.prefersReducedMotion()) {\n this.drawLines();\n this.destroyRef.onDestroy(() => {\n window.removeEventListener('resize', onResize);\n ro.disconnect();\n });\n return;\n }\n\n window.addEventListener('mousemove', onMouseMove);\n window.addEventListener('touchmove', onTouchMove, { passive: true });\n this.rafId = requestAnimationFrame(t => this.tick(t));\n\n this.destroyRef.onDestroy(() => {\n window.removeEventListener('resize', onResize);\n window.removeEventListener('mousemove', onMouseMove);\n window.removeEventListener('touchmove', onTouchMove);\n ro.disconnect();\n cancelAnimationFrame(this.rafId);\n });\n }\n\n private setSize(): void {\n const rect = this.host.nativeElement.getBoundingClientRect();\n this.bounding = { width: rect.width, height: rect.height, left: rect.left, top: rect.top };\n const canvas = this.canvasRef().nativeElement;\n canvas.width = rect.width;\n canvas.height = rect.height;\n }\n\n private setLines(): void {\n const { width, height } = this.bounding;\n this.lines = [];\n const oWidth = width + 200;\n const oHeight = height + 30;\n const xGap = this.xGap();\n const yGap = this.yGap();\n const totalLines = Math.ceil(oWidth / xGap);\n const totalPoints = Math.ceil(oHeight / yGap);\n const xStart = (width - xGap * totalLines) / 2;\n const yStart = (height - yGap * totalPoints) / 2;\n for (let i = 0; i <= totalLines; i++) {\n const pts: WavePoint[] = [];\n for (let j = 0; j <= totalPoints; j++) {\n pts.push({\n x: xStart + xGap * i,\n y: yStart + yGap * j,\n wave: { x: 0, y: 0 },\n cursor: { x: 0, y: 0, vx: 0, vy: 0 },\n });\n }\n this.lines.push(pts);\n }\n }\n\n // Frame loop\n\n private tick(time: number): void {\n const mouse = this.mouse;\n mouse.sx += (mouse.x - mouse.sx) * 0.1;\n mouse.sy += (mouse.y - mouse.sy) * 0.1;\n const dx = mouse.x - mouse.lx;\n const dy = mouse.y - mouse.ly;\n const d = Math.hypot(dx, dy);\n mouse.v = d;\n mouse.vs += (d - mouse.vs) * 0.1;\n mouse.vs = Math.min(100, mouse.vs);\n mouse.lx = mouse.x;\n mouse.ly = mouse.y;\n mouse.a = Math.atan2(dy, dx);\n\n this.movePoints(time);\n this.drawLines();\n this.rafId = requestAnimationFrame(t => this.tick(t));\n }\n\n private movePoints(time: number): void {\n const mouse = this.mouse;\n const waveSpeedX = this.waveSpeedX();\n const waveSpeedY = this.waveSpeedY();\n const waveAmpX = this.waveAmpX();\n const waveAmpY = this.waveAmpY();\n const friction = this.friction();\n const tension = this.tension();\n const maxCursorMove = this.maxCursorMove();\n\n for (const pts of this.lines) {\n for (const p of pts) {\n const move = this.noise.perlin2((p.x + time * waveSpeedX) * 0.002, (p.y + time * waveSpeedY) * 0.0015) * 12;\n p.wave.x = Math.cos(move) * waveAmpX;\n p.wave.y = Math.sin(move) * waveAmpY;\n\n const dx = p.x - mouse.sx;\n const dy = p.y - mouse.sy;\n const dist = Math.hypot(dx, dy);\n const l = Math.max(175, mouse.vs);\n if (dist < l) {\n const s = 1 - dist / l;\n const f = Math.cos(dist * 0.001) * s;\n p.cursor.vx += Math.cos(mouse.a) * f * l * mouse.vs * 0.00065;\n p.cursor.vy += Math.sin(mouse.a) * f * l * mouse.vs * 0.00065;\n }\n\n p.cursor.vx += (0 - p.cursor.x) * tension;\n p.cursor.vy += (0 - p.cursor.y) * tension;\n p.cursor.vx *= friction;\n p.cursor.vy *= friction;\n p.cursor.x += p.cursor.vx * 2;\n p.cursor.y += p.cursor.vy * 2;\n p.cursor.x = Math.min(maxCursorMove, Math.max(-maxCursorMove, p.cursor.x));\n p.cursor.y = Math.min(maxCursorMove, Math.max(-maxCursorMove, p.cursor.y));\n }\n }\n }\n\n private moved(point: WavePoint, withCursor: boolean): { x: number; y: number } {\n const x = point.x + point.wave.x + (withCursor ? point.cursor.x : 0);\n const y = point.y + point.wave.y + (withCursor ? point.cursor.y : 0);\n return { x: Math.round(x * 10) / 10, y: Math.round(y * 10) / 10 };\n }\n\n private drawLines(): void {\n const ctx = this.ctx;\n if (!ctx) return;\n const { width, height } = this.bounding;\n ctx.clearRect(0, 0, width, height);\n ctx.beginPath();\n ctx.strokeStyle = this.resolveLineColor();\n for (const points of this.lines) {\n let p1 = this.moved(points[0], false);\n ctx.moveTo(p1.x, p1.y);\n points.forEach((p, idx) => {\n const isLast = idx === points.length - 1;\n p1 = this.moved(p, !isLast);\n const p2 = this.moved(points[idx + 1] ?? points[points.length - 1], !isLast);\n ctx.lineTo(p1.x, p1.y);\n if (isLast) ctx.moveTo(p2.x, p2.y);\n });\n }\n ctx.stroke();\n }\n\n /** Explicit input wins; otherwise the theme's `--wr-waves-line-color`. */\n private resolveLineColor(): string {\n const explicit = this.lineColor();\n if (explicit !== null) return explicit;\n const themed = getComputedStyle(this.host.nativeElement).getPropertyValue('--wr-waves-line-color').trim();\n return themed || 'rgba(15, 23, 42, 0.12)';\n }\n\n private updateMouse(x: number, y: number): void {\n // Re-read the box each move — cheaper than tracking scroll, and the\n // host is usually a hero that rarely reflows mid-gesture.\n const rect = this.host.nativeElement.getBoundingClientRect();\n const mouse = this.mouse;\n mouse.x = x - rect.left;\n mouse.y = y - rect.top;\n if (!mouse.set) {\n mouse.sx = mouse.x;\n mouse.sy = mouse.y;\n mouse.lx = mouse.x;\n mouse.ly = mouse.y;\n mouse.set = true;\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;AAAA;;;;;;;;;;;;AAYG;AAoBH;AACA;AAEA,MAAM,IAAI,CAAA;AAEW,IAAA,CAAA;AACA,IAAA,CAAA;IAFnB,WAAA,CACmB,CAAS,EACT,CAAS,EAAA;QADT,IAAA,CAAA,CAAC,GAAD,CAAC;QACD,IAAA,CAAA,CAAC,GAAD,CAAC;IACjB;IAEH,IAAI,CAAC,CAAS,EAAE,CAAS,EAAA;QACvB,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC;IAChC;AACD;AAED,MAAM,KAAK,GAAoB;AAC7B,IAAA,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACd,IAAA,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACf,IAAA,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACf,IAAA,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChB,IAAA,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACd,IAAA,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACf,IAAA,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACd,IAAA,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACf,IAAA,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACd,IAAA,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACf,IAAA,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACd,IAAA,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAChB;AAED;AACA,MAAM,CAAC,GAAsB;IAC3B,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG;IAChH,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;IAC/G,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IACjH,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG;IAC/G,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAChH,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,G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"}
1
+ {"version":3,"file":"ngwr-waves.mjs","sources":["../../../projects/lib/waves/waves.ts","../../../projects/lib/waves/ngwr-waves.ts"],"sourcesContent":["/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n *\n * Angular adaptation of the Waves background by David Haz / reactbits.dev.\n * Original: https://www.reactbits.dev/backgrounds/waves\n *\n * A grid of vertical lines drawn on a 2D canvas. Each point drifts on\n * perlin noise and is pushed around by the pointer with a spring\n * (tension + friction) pulling it back to rest.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n Component,\n DestroyRef,\n ElementRef,\n NgZone,\n PLATFORM_ID,\n ViewEncapsulation,\n afterNextRender,\n effect,\n inject,\n input,\n signal,\n viewChild,\n} from '@angular/core';\n\nimport { WrPlatform } from 'ngwr/platform';\nimport { numAttr } from 'ngwr/utils';\n\n// Perlin noise (Stefan Gustavson's reference permutation)\n/* eslint-disable no-bitwise -- permutation-table hashing is inherently bitwise */\n\nclass Grad {\n constructor(\n private readonly x: number,\n private readonly y: number\n ) {}\n\n dot2(x: number, y: number): number {\n return this.x * x + this.y * y;\n }\n}\n\nconst GRAD3: readonly Grad[] = [\n new Grad(1, 1),\n new Grad(-1, 1),\n new Grad(1, -1),\n new Grad(-1, -1),\n new Grad(1, 0),\n new Grad(-1, 0),\n new Grad(1, 0),\n new Grad(-1, 0),\n new Grad(0, 1),\n new Grad(0, -1),\n new Grad(0, 1),\n new Grad(0, -1),\n];\n\n// prettier-ignore\nconst P: readonly number[] = [\n 151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240,\n 21, 10, 23, 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88,\n 237, 149, 56, 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77, 146, 158, 231, 83,\n 111, 229, 122, 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216,\n 80, 73, 209, 76, 132, 187, 208, 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186,\n 3, 64, 52, 217, 226, 250, 124, 123, 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58,\n 17, 182, 189, 28, 42, 223, 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9,\n 129, 22, 39, 253, 19, 98, 108, 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193,\n 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249, 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157,\n 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254, 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128,\n 195, 78, 66, 215, 61, 156, 180,\n];\n\nclass Noise {\n private readonly perm = new Array<number>(512);\n private readonly gradP = new Array<Grad>(512);\n\n constructor(seed: number) {\n if (seed > 0 && seed < 1) seed *= 65536;\n seed = Math.floor(seed);\n if (seed < 256) seed |= seed << 8;\n for (let i = 0; i < 256; i++) {\n const v = i & 1 ? P[i] ^ (seed & 255) : P[i] ^ ((seed >> 8) & 255);\n this.perm[i] = this.perm[i + 256] = v;\n this.gradP[i] = this.gradP[i + 256] = GRAD3[v % 12];\n }\n }\n\n private fade(t: number): number {\n return t * t * t * (t * (t * 6 - 15) + 10);\n }\n\n private lerp(a: number, b: number, t: number): number {\n return (1 - t) * a + t * b;\n }\n\n perlin2(x: number, y: number): number {\n let gx = Math.floor(x);\n let gy = Math.floor(y);\n x -= gx;\n y -= gy;\n gx &= 255;\n gy &= 255;\n const n00 = this.gradP[gx + this.perm[gy]].dot2(x, y);\n const n01 = this.gradP[gx + this.perm[gy + 1]].dot2(x, y - 1);\n const n10 = this.gradP[gx + 1 + this.perm[gy]].dot2(x - 1, y);\n const n11 = this.gradP[gx + 1 + this.perm[gy + 1]].dot2(x - 1, y - 1);\n const u = this.fade(x);\n return this.lerp(this.lerp(n00, n10, u), this.lerp(n01, n11, u), this.fade(y));\n }\n}\n\n/* eslint-enable no-bitwise */\n// Component\n\ninterface WavePoint {\n x: number;\n y: number;\n wave: { x: number; y: number };\n cursor: { x: number; y: number; vx: number; vy: number };\n}\n\n/**\n * Wave-field background — a grid of lines drifting on perlin noise,\n * nudged by the pointer. Fills its nearest positioned ancestor; put it\n * behind hero copy or section content.\n *\n * Colours are theme-aware by default: a soft dark line on light surfaces,\n * a faint white line on dark — override with `[lineColor]`.\n *\n * @example\n * ```html\n * <section style=\"position: relative\">\n * <wr-waves />\n * <h1>Hero copy above the waves</h1>\n * </section>\n * ```\n *\n * @see https://ngwr.dev/animations/waves\n */\n@Component({\n selector: 'wr-waves',\n template: '<canvas #canvas class=\"wr-waves__canvas\"></canvas>',\n styleUrl: './waves.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'wr-waves',\n '[style.background-color]': 'backgroundColor()',\n // Feeds the CSS stand-in grid (see waves.scss) so it matches the real\n // spacing, and switches it off the moment the canvas has painted.\n '[style.--wr-waves-x-gap.px]': 'xGap()',\n '[class.wr-waves--painted]': 'painted()',\n },\n})\nexport class WrWaves {\n /** Line stroke colour. When unset, the theme decides. */\n readonly lineColor = input<string | null>(null);\n\n /** Background fill behind the lines. @default 'transparent' */\n readonly backgroundColor = input('transparent');\n\n /** Horizontal noise drift per ms. @default 0.0125 */\n readonly waveSpeedX = input(0.0125, { transform: numAttr(0.0125) });\n\n /** Vertical noise drift per ms. @default 0.005 */\n readonly waveSpeedY = input(0.005, { transform: numAttr(0.005) });\n\n /** Horizontal wave amplitude in px. @default 32 */\n readonly waveAmpX = input(32, { transform: numAttr(32) });\n\n /** Vertical wave amplitude in px. @default 16 */\n readonly waveAmpY = input(16, { transform: numAttr(16) });\n\n /** Horizontal gap between lines in px. @default 10 */\n readonly xGap = input(10, { transform: numAttr(10) });\n\n /** Vertical gap between points on a line in px. @default 32 */\n readonly yGap = input(32, { transform: numAttr(32) });\n\n /** Velocity damping of the cursor spring, 0..1. @default 0.925 */\n readonly friction = input(0.925, { transform: numAttr(0.925) });\n\n /** Pull-back strength of the cursor spring. @default 0.005 */\n readonly tension = input(0.005, { transform: numAttr(0.005) });\n\n /** Max px a point can be dragged from rest. @default 100 */\n readonly maxCursorMove = input(100, { transform: numAttr(100) });\n\n private readonly canvasRef = viewChild.required<ElementRef<HTMLCanvasElement>>('canvas');\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly zone = inject(NgZone);\n private readonly destroyRef = inject(DestroyRef);\n private readonly platform = inject(WrPlatform);\n private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\n private ctx: CanvasRenderingContext2D | null = null;\n private readonly noise = new Noise(Math.random());\n private lines: WavePoint[][] = [];\n private bounding = { width: 0, height: 0, left: 0, top: 0 };\n private readonly mouse = { x: -10, y: 0, lx: 0, ly: 0, sx: 0, sy: 0, v: 0, vs: 0, a: 0, set: false };\n private rafId = 0;\n\n /**\n * Flips once the canvas has drawn, which retires the CSS stand-in grid.\n *\n * A canvas cannot be prerendered, so on an SSR'd or prerendered page this\n * element is simply blank until the bundle has loaded and hydration has run —\n * measured at ~2.8s on ngwr.dev's own home page. The stylesheet paints a static\n * grid of the same colour and pitch in the meantime, straight from the\n * prerendered HTML, and this hands over to the real thing.\n */\n protected readonly painted = signal(false);\n\n constructor() {\n if (!this.isBrowser) return;\n\n afterNextRender(() => this.zone.runOutsideAngular(() => this.boot()));\n\n // Re-seed the grid when geometry inputs change.\n effect(() => {\n this.xGap();\n this.yGap();\n if (!this.ctx) return;\n this.setSize();\n this.setLines();\n });\n }\n\n // Setup\n\n private boot(): void {\n const canvas = this.canvasRef().nativeElement;\n this.ctx = canvas.getContext('2d');\n if (!this.ctx) return;\n\n this.setSize();\n this.setLines();\n\n const onResize = (): void => {\n this.setSize();\n this.setLines();\n if (this.platform.prefersReducedMotion()) this.drawLines();\n };\n const onMouseMove = (e: MouseEvent): void => this.updateMouse(e.clientX, e.clientY);\n const onTouchMove = (e: TouchEvent): void => this.updateMouse(e.touches[0].clientX, e.touches[0].clientY);\n\n window.addEventListener('resize', onResize);\n const ro = new ResizeObserver(onResize);\n ro.observe(this.host.nativeElement);\n\n // Reduced motion: one static, undisturbed grid — no drift, no loop,\n // no pointer reactivity.\n if (this.platform.prefersReducedMotion()) {\n this.drawLines();\n this.destroyRef.onDestroy(() => {\n window.removeEventListener('resize', onResize);\n ro.disconnect();\n });\n return;\n }\n\n window.addEventListener('mousemove', onMouseMove);\n window.addEventListener('touchmove', onTouchMove, { passive: true });\n this.rafId = requestAnimationFrame(t => this.tick(t));\n\n this.destroyRef.onDestroy(() => {\n window.removeEventListener('resize', onResize);\n window.removeEventListener('mousemove', onMouseMove);\n window.removeEventListener('touchmove', onTouchMove);\n ro.disconnect();\n cancelAnimationFrame(this.rafId);\n });\n }\n\n private setSize(): void {\n const rect = this.host.nativeElement.getBoundingClientRect();\n this.bounding = { width: rect.width, height: rect.height, left: rect.left, top: rect.top };\n const canvas = this.canvasRef().nativeElement;\n canvas.width = rect.width;\n canvas.height = rect.height;\n }\n\n private setLines(): void {\n const { width, height } = this.bounding;\n this.lines = [];\n const oWidth = width + 200;\n const oHeight = height + 30;\n const xGap = this.xGap();\n const yGap = this.yGap();\n const totalLines = Math.ceil(oWidth / xGap);\n const totalPoints = Math.ceil(oHeight / yGap);\n const xStart = (width - xGap * totalLines) / 2;\n const yStart = (height - yGap * totalPoints) / 2;\n for (let i = 0; i <= totalLines; i++) {\n const pts: WavePoint[] = [];\n for (let j = 0; j <= totalPoints; j++) {\n pts.push({\n x: xStart + xGap * i,\n y: yStart + yGap * j,\n wave: { x: 0, y: 0 },\n cursor: { x: 0, y: 0, vx: 0, vy: 0 },\n });\n }\n this.lines.push(pts);\n }\n }\n\n // Frame loop\n\n private tick(time: number): void {\n const mouse = this.mouse;\n mouse.sx += (mouse.x - mouse.sx) * 0.1;\n mouse.sy += (mouse.y - mouse.sy) * 0.1;\n const dx = mouse.x - mouse.lx;\n const dy = mouse.y - mouse.ly;\n const d = Math.hypot(dx, dy);\n mouse.v = d;\n mouse.vs += (d - mouse.vs) * 0.1;\n mouse.vs = Math.min(100, mouse.vs);\n mouse.lx = mouse.x;\n mouse.ly = mouse.y;\n mouse.a = Math.atan2(dy, dx);\n\n this.movePoints(time);\n this.drawLines();\n this.rafId = requestAnimationFrame(t => this.tick(t));\n }\n\n private movePoints(time: number): void {\n const mouse = this.mouse;\n const waveSpeedX = this.waveSpeedX();\n const waveSpeedY = this.waveSpeedY();\n const waveAmpX = this.waveAmpX();\n const waveAmpY = this.waveAmpY();\n const friction = this.friction();\n const tension = this.tension();\n const maxCursorMove = this.maxCursorMove();\n\n for (const pts of this.lines) {\n for (const p of pts) {\n const move = this.noise.perlin2((p.x + time * waveSpeedX) * 0.002, (p.y + time * waveSpeedY) * 0.0015) * 12;\n p.wave.x = Math.cos(move) * waveAmpX;\n p.wave.y = Math.sin(move) * waveAmpY;\n\n const dx = p.x - mouse.sx;\n const dy = p.y - mouse.sy;\n const dist = Math.hypot(dx, dy);\n const l = Math.max(175, mouse.vs);\n if (dist < l) {\n const s = 1 - dist / l;\n const f = Math.cos(dist * 0.001) * s;\n p.cursor.vx += Math.cos(mouse.a) * f * l * mouse.vs * 0.00065;\n p.cursor.vy += Math.sin(mouse.a) * f * l * mouse.vs * 0.00065;\n }\n\n p.cursor.vx += (0 - p.cursor.x) * tension;\n p.cursor.vy += (0 - p.cursor.y) * tension;\n p.cursor.vx *= friction;\n p.cursor.vy *= friction;\n p.cursor.x += p.cursor.vx * 2;\n p.cursor.y += p.cursor.vy * 2;\n p.cursor.x = Math.min(maxCursorMove, Math.max(-maxCursorMove, p.cursor.x));\n p.cursor.y = Math.min(maxCursorMove, Math.max(-maxCursorMove, p.cursor.y));\n }\n }\n }\n\n private moved(point: WavePoint, withCursor: boolean): { x: number; y: number } {\n const x = point.x + point.wave.x + (withCursor ? point.cursor.x : 0);\n const y = point.y + point.wave.y + (withCursor ? point.cursor.y : 0);\n return { x: Math.round(x * 10) / 10, y: Math.round(y * 10) / 10 };\n }\n\n private drawLines(): void {\n const ctx = this.ctx;\n if (!ctx) return;\n // Retire the CSS stand-in: from here the canvas has real pixels. Set inside\n // the draw rather than at the end of `boot()` so it can never switch the\n // fallback off before something has actually been painted. Runs outside\n // Angular (the rAF loop does), so `signal.set` schedules the one host-binding\n // update it needs; every later call is a no-op on an unchanged value.\n if (!this.painted()) this.painted.set(true);\n const { width, height } = this.bounding;\n ctx.clearRect(0, 0, width, height);\n ctx.beginPath();\n ctx.strokeStyle = this.resolveLineColor();\n for (const points of this.lines) {\n let p1 = this.moved(points[0], false);\n ctx.moveTo(p1.x, p1.y);\n points.forEach((p, idx) => {\n const isLast = idx === points.length - 1;\n p1 = this.moved(p, !isLast);\n const p2 = this.moved(points[idx + 1] ?? points[points.length - 1], !isLast);\n ctx.lineTo(p1.x, p1.y);\n if (isLast) ctx.moveTo(p2.x, p2.y);\n });\n }\n ctx.stroke();\n }\n\n /** Explicit input wins; otherwise the theme's `--wr-waves-line-color`. */\n private resolveLineColor(): string {\n const explicit = this.lineColor();\n if (explicit !== null) return explicit;\n const themed = getComputedStyle(this.host.nativeElement).getPropertyValue('--wr-waves-line-color').trim();\n return themed || 'rgba(15, 23, 42, 0.12)';\n }\n\n private updateMouse(x: number, y: number): void {\n // Re-read the box each move — cheaper than tracking scroll, and the\n // host is usually a hero that rarely reflows mid-gesture.\n const rect = this.host.nativeElement.getBoundingClientRect();\n const mouse = this.mouse;\n mouse.x = x - rect.left;\n mouse.y = y - rect.top;\n if (!mouse.set) {\n mouse.sx = mouse.x;\n mouse.sy = mouse.y;\n mouse.lx = mouse.x;\n mouse.ly = mouse.y;\n mouse.set = true;\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;AAAA;;;;;;;;;;;;AAYG;AAqBH;AACA;AAEA,MAAM,IAAI,CAAA;AAEW,IAAA,CAAA;AACA,IAAA,CAAA;IAFnB,WAAA,CACmB,CAAS,EACT,CAAS,EAAA;QADT,IAAA,CAAA,CAAC,GAAD,CAAC;QACD,IAAA,CAAA,CAAC,GAAD,CAAC;IACjB;IAEH,IAAI,CAAC,CAAS,EAAE,CAAS,EAAA;QACvB,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC;IAChC;AACD;AAED,MAAM,KAAK,GAAoB;AAC7B,IAAA,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACd,IAAA,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACf,IAAA,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACf,IAAA,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChB,IAAA,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACd,IAAA,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACf,IAAA,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACd,IAAA,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACf,IAAA,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACd,IAAA,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACf,IAAA,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;AACd,IAAA,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAChB;AAED;AACA,MAAM,CAAC,GAAsB;IAC3B,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG;IAChH,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;IAC/G,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IACjH,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG;IAC/G,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAChH,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,G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"}
@@ -16,7 +16,7 @@
16
16
 
17
17
  &--error {
18
18
  > label {
19
- color: var(--wr-color-danger);
19
+ color: var(--wr-color-danger-ink);
20
20
  }
21
21
 
22
22
  .wr-input,
@@ -29,7 +29,7 @@
29
29
 
30
30
  .wr-form-error {
31
31
  display: block;
32
- color: var(--wr-color-danger);
32
+ color: var(--wr-color-danger-ink);
33
33
  font-size: var(--wr-text-xs);
34
34
  line-height: 1rem;
35
35
  }
@@ -51,7 +51,7 @@
51
51
  }
52
52
 
53
53
  &__required {
54
- color: var(--wr-color-danger);
54
+ color: var(--wr-color-danger-ink);
55
55
  }
56
56
 
57
57
  &__optional {
@@ -77,8 +77,12 @@
77
77
  gap: 0.125rem;
78
78
  }
79
79
 
80
+ &__error--hidden {
81
+ display: none;
82
+ }
83
+
80
84
  &__error {
81
- color: var(--wr-color-danger);
85
+ color: var(--wr-color-danger-ink);
82
86
  font-size: var(--wr-text-sm);
83
87
  line-height: 1.25;
84
88
  }
@@ -1,3 +1,8 @@
1
+ // Pull the whole theme so a standalone `@use 'ngwr/<name>'` brings in every
2
+ // design token this stylesheet references. Sass deduplicates `@use` per
3
+ // compilation, so the umbrella sheet still emits the theme only once.
4
+ @use '../../theme/styles' as theme;
5
+
1
6
  // Glitch text (reactbits port). Two pseudo-element clones of the text
2
7
  // are offset by ±5px and tinted with `text-shadow` (red / cyan).
3
8
  // A clip-path keyframe slices random horizontal bands of each clone.
@@ -1,3 +1,8 @@
1
+ // Pull the whole theme so a standalone `@use 'ngwr/<name>'` brings in every
2
+ // design token this stylesheet references. Sass deduplicates `@use` per
3
+ // compilation, so the umbrella sheet still emits the theme only once.
4
+ @use '../../theme/styles' as theme;
5
+
1
6
  // Animated gradient text (reactbits port). The gradient is shared between
2
7
  // the text fill (via `background-clip: text`) and an optional outer ring.
3
8
  // Both layers use the same animation, so the ring + text stay in sync.
package/i18n/en.json ADDED
@@ -0,0 +1,233 @@
1
+ {
2
+ "common": {
3
+ "ok": "OK",
4
+ "cancel": "Cancel",
5
+ "close": "Close",
6
+ "confirm": "Confirm",
7
+ "delete": "Delete",
8
+ "save": "Save",
9
+ "edit": "Edit",
10
+ "add": "Add",
11
+ "remove": "Remove",
12
+ "clear": "Clear",
13
+ "search": "Search",
14
+ "loading": "Loading…",
15
+ "select": "Select",
16
+ "next": "Next",
17
+ "previous": "Previous",
18
+ "back": "Back",
19
+ "today": "Today",
20
+ "yesterday": "Yesterday",
21
+ "tomorrow": "Tomorrow",
22
+ "of": "of"
23
+ },
24
+ "pagination": {
25
+ "prev": "Previous page",
26
+ "next": "Next page",
27
+ "itemsPerPage": "Items per page",
28
+ "perPage": "{{size}} / page",
29
+ "goToPage": "Go to page {{page}}",
30
+ "label": "Pagination",
31
+ "pageOf": "Page {{current}} of {{total}}",
32
+ "of": "of"
33
+ },
34
+ "table": {
35
+ "empty": "No data",
36
+ "loading": "Loading…",
37
+ "sort": "Sort column",
38
+ "filter": "Filter column",
39
+ "selectAll": "Select all rows",
40
+ "selectRow": "Select row",
41
+ "expandRow": "Toggle row details",
42
+ "toggleRow": "Toggle child rows",
43
+ "selectGroup": "Select group",
44
+ "toggleGroup": "Toggle group",
45
+ "noMatches": "No matches"
46
+ },
47
+ "eventCalendar": {
48
+ "today": "Today",
49
+ "previous": "Previous",
50
+ "next": "Next",
51
+ "month": "Month",
52
+ "week": "Week",
53
+ "day": "Day",
54
+ "time": "Time",
55
+ "allDay": "All day",
56
+ "label": "Calendar",
57
+ "more": "+{{count}} more"
58
+ },
59
+ "tour": {
60
+ "next": "Next",
61
+ "back": "Back",
62
+ "done": "Done",
63
+ "skip": "Skip tour",
64
+ "progress": "Step {{current}} of {{total}}"
65
+ },
66
+ "transfer": {
67
+ "source": "Available",
68
+ "target": "Selected",
69
+ "search": "Search",
70
+ "empty": "Nothing here",
71
+ "toTarget": "Move to selected",
72
+ "toSource": "Move to available",
73
+ "count": "{{checked}} / {{total}}"
74
+ },
75
+ "validation": {
76
+ "required": "This field is required.",
77
+ "requiredTrue": "This field must be checked.",
78
+ "email": "Enter a valid email address.",
79
+ "minlength": "Enter at least {{requiredLength}} characters.",
80
+ "maxlength": "Enter at most {{requiredLength}} characters.",
81
+ "min": "Enter {{min}} or more.",
82
+ "max": "Enter {{max}} or less.",
83
+ "pattern": "This value is not in the expected format.",
84
+ "noWhitespace": "This field cannot be blank.",
85
+ "hexColor": "Enter a hex colour, e.g. #1a2b3c.",
86
+ "url": "Enter a valid URL.",
87
+ "cardNumber": "Enter a valid card number.",
88
+ "cvc": "Enter the {{length}}-digit security code.",
89
+ "iban": "Enter a valid IBAN.",
90
+ "match": "The two values do not match.",
91
+ "matchFields": "These fields do not match.",
92
+ "oneOf": "Choose one of the allowed values.",
93
+ "minDate": "Choose a later date.",
94
+ "maxDate": "Choose an earlier date."
95
+ },
96
+ "select": {
97
+ "label": "Select",
98
+ "placeholder": "Select…",
99
+ "empty": "No options",
100
+ "clearSelection": "Clear selection",
101
+ "removeItem": "Remove {{label}}",
102
+ "noResults": "No results",
103
+ "loading": "Loading…"
104
+ },
105
+ "tree": {
106
+ "expand": "Expand",
107
+ "collapse": "Collapse",
108
+ "placeholder": "Select…",
109
+ "clearSelection": "Clear selection",
110
+ "removeItem": "Remove {{label}}"
111
+ },
112
+ "commandPalette": {
113
+ "label": "Command palette",
114
+ "placeholder": "Type a command or search…",
115
+ "noResults": "No results"
116
+ },
117
+ "empty": {
118
+ "noData": "No data"
119
+ },
120
+ "fileUpload": {
121
+ "browse": "Click to browse",
122
+ "dropZone": "or drop files here",
123
+ "dropZoneLabel": "File upload drop zone — click or drop files",
124
+ "removeFile": "Remove file",
125
+ "invalid": "Unsupported file type",
126
+ "tooBig": "File too large"
127
+ },
128
+ "popconfirm": {
129
+ "confirm": "Confirm",
130
+ "cancel": "Cancel"
131
+ },
132
+ "toast": {
133
+ "close": "Close",
134
+ "copy": "Copy",
135
+ "copied": "Copied",
136
+ "closeAll": "Close all"
137
+ },
138
+ "input": {
139
+ "showPassword": "Show password",
140
+ "hidePassword": "Hide password"
141
+ },
142
+ "inputNumber": {
143
+ "increment": "Increment",
144
+ "decrement": "Decrement"
145
+ },
146
+ "backTop": {
147
+ "label": "Back to top"
148
+ },
149
+ "calendar": {
150
+ "prevMonth": "Previous month",
151
+ "nextMonth": "Next month",
152
+ "prevYear": "Previous year",
153
+ "nextYear": "Next year"
154
+ },
155
+ "carousel": {
156
+ "prev": "Previous slide",
157
+ "next": "Next slide",
158
+ "pagination": "Carousel pagination"
159
+ },
160
+ "alert": {
161
+ "close": "Close alert"
162
+ },
163
+ "image": {
164
+ "open": "Open preview",
165
+ "close": "Close preview"
166
+ },
167
+ "window": {
168
+ "close": "Close"
169
+ },
170
+ "dialog": {
171
+ "close": "Close dialog"
172
+ },
173
+ "mention": {
174
+ "listbox": "Mentions",
175
+ "available": "Matches available: {{count}}",
176
+ "inserted": "Inserted: {{label}}"
177
+ },
178
+ "drawer": {
179
+ "close": "Close drawer"
180
+ },
181
+ "datePicker": {
182
+ "open": "Open calendar",
183
+ "openTime": "Open time picker",
184
+ "openDateTime": "Open date and time picker",
185
+ "openRange": "Open range calendar",
186
+ "rangeStart": "Range start",
187
+ "rangeEnd": "Range end",
188
+ "startTime": "Start time",
189
+ "endTime": "End time"
190
+ },
191
+ "spinner": {
192
+ "label": "Loading"
193
+ },
194
+ "rating": {
195
+ "label": "Rating"
196
+ },
197
+ "gauge": {
198
+ "label": "Gauge"
199
+ },
200
+ "progress": {
201
+ "label": "Progress"
202
+ },
203
+ "meterGroup": {
204
+ "label": "Meter"
205
+ },
206
+ "knob": {
207
+ "label": "Value"
208
+ },
209
+ "speedDial": {
210
+ "label": "Actions"
211
+ },
212
+ "result": {
213
+ "notFound": "Sorry, the page you visited does not exist.",
214
+ "forbidden": "Sorry, you are not authorized to access this page.",
215
+ "serverError": "Sorry, something went wrong."
216
+ },
217
+ "date": {
218
+ "months": {
219
+ "jan": "January",
220
+ "feb": "February",
221
+ "mar": "March",
222
+ "apr": "April",
223
+ "may": "May",
224
+ "jun": "June",
225
+ "jul": "July",
226
+ "aug": "August",
227
+ "sep": "September",
228
+ "oct": "October",
229
+ "nov": "November",
230
+ "dec": "December"
231
+ }
232
+ }
233
+ }