@asd20/ui-next 2.3.6 → 2.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.3.7](https://github.com/academydistrict20/asd20-ui-next/compare/ui-next-v2.3.6...ui-next-v2.3.7) (2026-04-29)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * fix parallax issue on secondary header for tablet sizes ([3066da8](https://github.com/academydistrict20/asd20-ui-next/commit/3066da87418b5e958bfe37f9110cffd8f314766c))
9
+
3
10
  ## [2.3.6](https://github.com/academydistrict20/asd20-ui-next/compare/ui-next-v2.3.5...ui-next-v2.3.6) (2026-04-29)
4
11
 
5
12
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@asd20/ui-next",
3
- "version": "2.3.6",
3
+ "version": "2.3.7",
4
4
  "private": false,
5
5
  "description": "ASD20 UI component library for Vue 3.",
6
6
  "license": "MIT",
@@ -143,6 +143,7 @@ export default {
143
143
  },
144
144
  data() {
145
145
  return {
146
+ isTouchCapableDevice: false,
146
147
  parallaxEnabled: false,
147
148
  intersectionObserver: null,
148
149
  parallaxRaf: null,
@@ -151,9 +152,16 @@ export default {
151
152
  }
152
153
  },
153
154
  computed: {
155
+ shouldUseParallax() {
156
+ return !this.isTouchCapableDevice
157
+ },
154
158
  headerClasses() {
155
159
  return {
156
160
  'asd20-secondary-header': true,
161
+ 'asd20-secondary-header--desktop-background':
162
+ this.hasSecondaryHeaderImage,
163
+ 'asd20-secondary-header--parallax-enabled-background':
164
+ this.hasSecondaryHeaderImage && this.shouldUseParallax,
157
165
  'asd20-secondary-header--hide-desktop-image':
158
166
  !this.shouldShowDesktopInlineImage,
159
167
  }
@@ -206,13 +214,20 @@ export default {
206
214
  },
207
215
  },
208
216
  mounted() {
217
+ if (typeof window !== 'undefined') {
218
+ this.isTouchCapableDevice = Boolean(
219
+ window.matchMedia?.('(pointer: coarse)').matches ||
220
+ window.navigator?.maxTouchPoints > 0
221
+ )
222
+ }
223
+
209
224
  // Respect reduced motion
210
225
  const prefersReduced =
211
226
  typeof window !== 'undefined' &&
212
227
  window.matchMedia &&
213
228
  window.matchMedia('(prefers-reduced-motion: reduce)').matches
214
229
 
215
- if (prefersReduced) return
230
+ if (prefersReduced || !this.shouldUseParallax) return
216
231
 
217
232
  this.handleScroll = () => this.scheduleParallaxUpdate()
218
233
  this.handleResize = () => this.scheduleParallaxUpdate()
@@ -557,14 +572,17 @@ export default {
557
572
  -webkit-mask: url(#secondary-accent-mask-desktop);
558
573
  }
559
574
 
560
- .asd20-secondary-header {
575
+ }
576
+
577
+ @media (min-width: 1024px) {
578
+ .asd20-secondary-header--desktop-background {
561
579
  padding: space(3) space(3) space(2) space(3);
562
580
  background-color: var(--website-homepage-header__secondary-background-color);
563
581
  background-image: var(--secondary-header-image);
564
582
  background-position: center;
565
583
  background-repeat: no-repeat;
566
584
  background-size: cover;
567
- background-attachment: fixed;
585
+ background-attachment: scroll;
568
586
  padding-top: 70px;
569
587
 
570
588
  mask: url(#secondary-header-mask-desktop);
@@ -601,47 +619,6 @@ export default {
601
619
  margin: space(0.5) space(0.5) 0 0 !important;
602
620
  padding: space(0.5) space(1.5);
603
621
  }
604
- .secondary-parallax__field {
605
- transform: translate3d(0px, var(--secondary-parallax-y2, 0px), 0)
606
- rotate(-5deg);
607
- /* background: radial-gradient(*/
608
- /* 280% 155% at 20% 110%,*/
609
- /* rgba(255, 255, 255, 0) 0%,*/
610
- /* rgba(255, 255, 255, 0) 62%,*/
611
- /* rgba(188, 220, 250, 0.95) 70%,*/
612
- /* rgba(255, 255, 255, 0) 72%*/
613
- /* );*/
614
- filter: none;
615
- opacity: 0.9;
616
- mask-image: linear-gradient(
617
- 90deg,
618
- rgba(0, 0, 0, 0.85) 0%,
619
- rgba(0, 0, 0, 1) 85%
620
- );
621
- -webkit-mask-image: linear-gradient(90deg, rgba(0,0,0,0.85) 0%, rgba(0,0,0,1) 85%);
622
- }
623
-
624
- /* Layer 3: highlight ribbons (brighter curves) */
625
- .secondary-parallax__ribbons {
626
- transform: translate3d(0, var(--secondary-parallax-y3, 0px), 0)
627
- rotate(-3deg);
628
-
629
- background: radial-gradient(
630
- 180% 160% at 40% 110%,
631
- rgba(255, 255, 255, 0) 0%,
632
- rgba(255, 255, 255, 0) 60%,
633
- rgba(255, 255, 255, 0.9) 64%,
634
- rgba(255, 255, 255, 0) 70%
635
- );
636
- opacity: 0.9;
637
- filter: none;
638
- mask-image: linear-gradient(
639
- 90deg,
640
- rgba(0, 0, 0, 0.3) 0%,
641
- rgba(0, 0, 0, 1) 70%
642
- );
643
- -webkit-mask-image: linear-gradient(90deg, rgba(0,0,0,0.3) 0%, rgba(0,0,0,1) 70%);
644
- }
645
622
 
646
623
  & :deep(.message-image) {
647
624
  display: flex;
@@ -657,7 +634,58 @@ export default {
657
634
  }
658
635
  }
659
636
 
660
- .asd20-secondary-header--hide-desktop-image {
637
+ .asd20-secondary-header--desktop-background .secondary-parallax {
638
+ display: block;
639
+ }
640
+
641
+ .asd20-secondary-header--desktop-background .secondary-parallax__field,
642
+ .asd20-secondary-header--desktop-background .secondary-parallax__ribbons {
643
+ display: none;
644
+ }
645
+
646
+ .asd20-secondary-header--parallax-enabled-background {
647
+ background-attachment: fixed;
648
+ }
649
+
650
+ .asd20-secondary-header--parallax-enabled-background .secondary-parallax__field,
651
+ .asd20-secondary-header--parallax-enabled-background .secondary-parallax__ribbons {
652
+ display: block;
653
+ }
654
+
655
+ .asd20-secondary-header--parallax-enabled-background .secondary-parallax__field {
656
+ transform: translate3d(0px, var(--secondary-parallax-y2, 0px), 0)
657
+ rotate(-5deg);
658
+ filter: none;
659
+ opacity: 0.9;
660
+ mask-image: linear-gradient(
661
+ 90deg,
662
+ rgba(0, 0, 0, 0.85) 0%,
663
+ rgba(0, 0, 0, 1) 85%
664
+ );
665
+ -webkit-mask-image: linear-gradient(90deg, rgba(0,0,0,0.85) 0%, rgba(0,0,0,1) 85%);
666
+ }
667
+
668
+ .asd20-secondary-header--parallax-enabled-background .secondary-parallax__ribbons {
669
+ transform: translate3d(0, var(--secondary-parallax-y3, 0px), 0)
670
+ rotate(-3deg);
671
+ background: radial-gradient(
672
+ 180% 160% at 40% 110%,
673
+ rgba(255, 255, 255, 0) 0%,
674
+ rgba(255, 255, 255, 0) 60%,
675
+ rgba(255, 255, 255, 0.9) 64%,
676
+ rgba(255, 255, 255, 0) 70%
677
+ );
678
+ opacity: 0.9;
679
+ filter: none;
680
+ mask-image: linear-gradient(
681
+ 90deg,
682
+ rgba(0, 0, 0, 0.3) 0%,
683
+ rgba(0, 0, 0, 1) 70%
684
+ );
685
+ -webkit-mask-image: linear-gradient(90deg, rgba(0,0,0,0.3) 0%, rgba(0,0,0,1) 70%);
686
+ }
687
+
688
+ .asd20-secondary-header--desktop-background.asd20-secondary-header--hide-desktop-image {
661
689
  & :deep(.asd20-messaging--fullscreen > .message-image) {
662
690
  display: none;
663
691
  }