@asd20/ui-next 2.0.20 → 2.0.21

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,7 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.0.21](https://github.com/academydistrict20/asd20-ui-next/compare/ui-next-v2.0.20...ui-next-v2.0.21) (2026-04-02)
4
+
3
5
  ## [2.0.20](https://github.com/academydistrict20/asd20-ui-next/compare/ui-next-v2.0.19...ui-next-v2.0.20) (2026-04-02)
4
6
 
5
7
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@asd20/ui-next",
3
- "version": "2.0.20",
3
+ "version": "2.0.21",
4
4
  "private": false,
5
5
  "description": "ASD20 UI component library for Vue 3.",
6
6
  "license": "MIT",
@@ -7,7 +7,7 @@
7
7
  <slot name="before" />
8
8
 
9
9
  <asd20-image-gallery
10
- v-if="images.length > 1"
10
+ v-if="allowSingleImageGallery ? images.length > 0 : images.length > 1"
11
11
  title="Images"
12
12
  :images="images"
13
13
  >
@@ -37,6 +37,7 @@ export default {
37
37
  ),
38
38
  },
39
39
  props: {
40
+ allowSingleImageGallery: { type: Boolean, default: false },
40
41
  images: { type: Array, default: () => [] },
41
42
  videos: { type: Array, default: () => [] },
42
43
  },
@@ -15,7 +15,10 @@
15
15
  ></asd20-organization-picker>
16
16
  <slot name="top" />
17
17
  </div>
18
- <div class="asd20-page-header__main">
18
+ <div
19
+ class="asd20-page-header__main"
20
+ :class="{ 'asd20-page-header__main--has-image': imageUrl && !$slots.aside }"
21
+ >
19
22
  <div
20
23
  class="asd20-page-header__content"
21
24
  :class="headerImageUrl ? 'new-header add-fade' : ''"
@@ -144,7 +147,7 @@
144
147
  /> -->
145
148
  <asd20-button
146
149
  v-if="callsToAction.length >= 1"
147
- :size="['sm', 'md'].indexOf(mq) > -1 ? 'sm' : 'lg'"
150
+ :size="mq === 'sm' ? 'sm' : 'lg'"
148
151
  :label="callsToAction[0].label"
149
152
  :icon="callsToAction[0].icon"
150
153
  :link="callsToAction[0].url"
@@ -155,7 +158,7 @@
155
158
  />
156
159
  <asd20-button
157
160
  v-if="callsToAction.length >= 2"
158
- :size="['sm', 'md'].indexOf(mq) > -1 ? 'sm' : 'lg'"
161
+ :size="mq === 'sm' ? 'sm' : 'lg'"
159
162
  :label="callsToAction[1].label"
160
163
  :icon="callsToAction[1].icon"
161
164
  :link="callsToAction[1].url"
@@ -584,6 +587,15 @@ export default {
584
587
  }
585
588
  }
586
589
  }
590
+
591
+ @media (max-width: 767px) {
592
+ .asd20-page-header:not(.asd20-page-header--has-cta) {
593
+ &::after {
594
+ display: none;
595
+ }
596
+ }
597
+ }
598
+
587
599
  @media (min-width: 667px) {
588
600
  .asd20-page-header {
589
601
  &__image {
@@ -602,7 +614,7 @@ export default {
602
614
  }
603
615
  }
604
616
 
605
- @media (min-width: 1024px) {
617
+ @media (min-width: 768px) and (max-width: 1023px) {
606
618
  .asd20-page-header {
607
619
  .back {
608
620
  padding: 0;
@@ -614,9 +626,113 @@ export default {
614
626
  right: space(0);
615
627
  left: space(4);
616
628
  border-bottom-left-radius: 5rem;
629
+ }
630
+ &__main--has-image {
631
+ min-height: 400px;
632
+ }
633
+
634
+ &__main {
635
+ display: flex;
636
+ justify-content: space-between;
637
+ border-bottom-left-radius: 5rem;
638
+ background: var(--website-header__background-color)
639
+ var(--website-header__background-style);
640
+ }
617
641
 
642
+ &__top {
643
+ display: none;
644
+ }
645
+
646
+ &__tools {
647
+ flex-direction: row;
648
+ flex-wrap: wrap;
649
+ margin-top: 0;
650
+ .asd20-breadcrumb,
651
+ .back {
652
+ margin: 0 !important;
653
+ order: 1;
654
+ }
655
+ .language-and-tools {
656
+ order: 2;
657
+ }
658
+ .asd20-language-loader {
659
+ order: 2;
660
+ }
661
+ }
662
+ &__content {
663
+ width: 100%;
664
+ flex-basis: 50%;
665
+ flex-grow: 1;
666
+ padding: 1rem 1rem 1rem 2rem;
667
+ min-height: clamp(240px, 40vh, 300px);
668
+ /* margin-right: space(3);*/
669
+ background: transparent;
670
+ }
671
+
672
+ &__image {
673
+ display: flex;
674
+ max-height: 350px;
675
+ max-width: 45vw;
676
+ margin-top: 0;
677
+ margin-bottom: space(-1);
678
+ border-radius: 0;
679
+ border-bottom-left-radius: 2rem;
680
+ overflow: hidden;
681
+ flex-grow: 1;
682
+ min-width: 30vw;
683
+ img {
684
+ width: 100%;
685
+ height: 100%;
686
+ max-height: inherit;
687
+ object-fit: cover;
688
+ border-top: none;
689
+ /* opacity: 0;*/
690
+ }
691
+ }
692
+
693
+ h1 {
694
+ font-size: 2rem !important;
695
+ }
696
+
697
+ &__title-content {
698
+ position: relative;
699
+ max-width: space(35);
700
+ /* .asd20-page-header__lead {*/
701
+ /* margin-right: 25%;*/
702
+ /* }*/
703
+ }
704
+
705
+ & :deep(.asd20-organization-picker) {
706
+ display: flex;
707
+ margin: space(0) auto space(0) space(0);
708
+ }
709
+
710
+ &__call-to-action {
711
+ margin: space(-1) 60vw space(-1) space(3);
712
+ .asd20-button {
713
+ font-size: 1rem !important;
714
+ flex-shrink: 0;
715
+ padding: 0.25rem 2rem;
716
+ }
717
+ }
718
+ }
719
+ }
720
+
721
+ @media (min-width: 1024px) {
722
+ .asd20-page-header {
723
+ .back {
724
+ padding: 0;
725
+ margin: 0;
726
+ }
727
+ &::after {
728
+ top: space(6);
729
+ bottom: space(-2);
730
+ right: space(0);
731
+ left: space(4);
732
+ border-bottom-left-radius: 5rem;
618
733
  }
619
734
  &__main {
735
+ display: flex;
620
736
  justify-content: space-between;
621
737
  border-bottom-left-radius: 5rem;
622
738
  background: var(--website-header__background-color)
@@ -637,7 +753,7 @@ export default {
637
753
  max-height: 600px;
638
754
  margin-top: space(-1);
639
755
  margin-bottom: space(-1);
640
- border-radius: var(--website-shape__radius-m);
756
+ border-radius: var(--website-shape__radius-l);
641
757
  border-top-right-radius: 0;
642
758
  border-bottom-right-radius: 0;
643
759
  overflow: hidden;
@@ -694,10 +810,6 @@ export default {
694
810
  }
695
811
  }
696
812
 
697
- &__main {
698
- display: flex;
699
- }
700
-
701
813
  &__call-to-action {
702
814
  margin: space(-1) 60vw space(-1) space(3);
703
815
  .asd20-button {
@@ -95,6 +95,7 @@
95
95
 
96
96
  <asd20-media-section
97
97
  v-if="shouldShowArticleMediaSection"
98
+ allow-single-image-gallery
98
99
  :images="articleGalleryImages || []"
99
100
  :videos="combinedMessageVideos || []"
100
101
  >
@@ -251,7 +251,7 @@ export default {
251
251
 
252
252
  shouldShowArticleMediaSection() {
253
253
  return (
254
- this.articleGalleryImages.length >= 3 ||
254
+ this.articleGalleryImages.length > 0 ||
255
255
  this.combinedMessageVideos.length > 0
256
256
  )
257
257
  },