@asd20/ui-next 2.13.0 → 2.13.2

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,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.13.2](https://github.com/academydistrict20/asd20-ui-next/compare/ui-next-v2.13.1...ui-next-v2.13.2) (2026-07-27)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * fix notification icon fill color ([d4865f1](https://github.com/academydistrict20/asd20-ui-next/commit/d4865f1bcd7e1bad0b8f16caf0c67b6ed61b2cd0))
9
+
10
+ ## [2.13.1](https://github.com/academydistrict20/asd20-ui-next/compare/ui-next-v2.13.0...ui-next-v2.13.1) (2026-07-27)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * correct formatting on logins template ([8a351ea](https://github.com/academydistrict20/asd20-ui-next/commit/8a351ea3c4113b7101c15abb5000937f8299074c))
16
+
3
17
  # [2.13.0](https://github.com/academydistrict20/asd20-ui-next/compare/ui-next-v2.12.8...ui-next-v2.13.0) (2026-07-22)
4
18
 
5
19
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@asd20/ui-next",
3
- "version": "2.13.0",
3
+ "version": "2.13.2",
4
4
  "private": false,
5
5
  "description": "ASD20 UI component library for Vue 3.",
6
6
  "license": "MIT",
@@ -316,7 +316,7 @@ export default {
316
316
  width: 32px;
317
317
  height: 32px;
318
318
  color: var(--website-icon__line-color) !important;
319
- fill: var(--website-menu__icon-fill-color) !important;
319
+ fill: var(--website-icon__fill-color) !important;
320
320
  }
321
321
 
322
322
  .bell__count {
@@ -60,6 +60,12 @@
60
60
  onclick="window.print()"
61
61
  ></asd20-button>
62
62
  </div>
63
+ <div
64
+ v-if="$slots['notification-tools']"
65
+ class="asd20-page-header__notification-tools"
66
+ >
67
+ <slot name="notification-tools" />
68
+ </div>
63
69
  </div>
64
70
  <div
65
71
  id="main"
@@ -389,6 +395,13 @@ export default {
389
395
  }
390
396
  }
391
397
  }
398
+ .asd20-page-header__notification-tools {
399
+ display: flex;
400
+ justify-content: flex-end;
401
+ order: 1;
402
+ width: 100%;
403
+ margin-top: space(0.5);
404
+ }
392
405
 
393
406
  .asd20-language-loader {
394
407
  order: 1;
@@ -639,6 +652,9 @@ export default {
639
652
  .language-and-tools {
640
653
  order: 2;
641
654
  }
655
+ .asd20-page-header__notification-tools {
656
+ order: 3;
657
+ }
642
658
  .asd20-language-loader {
643
659
  order: 2;
644
660
  }
@@ -779,6 +795,14 @@ export default {
779
795
  .language-and-tools {
780
796
  order: 2;
781
797
  }
798
+ .asd20-page-header__notification-tools {
799
+ position: absolute;
800
+ top: space(1);
801
+ right: space(0.5);
802
+ order: 3;
803
+ width: auto;
804
+ margin-top: 0;
805
+ }
782
806
  .asd20-language-loader {
783
807
  order: 2;
784
808
  }
@@ -190,13 +190,6 @@ export default {
190
190
  & :deep(.notification-group--floating) {
191
191
  width: max-content;
192
192
  float: right;
193
- .bell {
194
- z-index: 1000;
195
- box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.125) !important;
196
- svg {
197
- fill: var(--color__accent) !important;
198
- }
199
- }
200
193
  }
201
194
  }
202
195
 
@@ -1,5 +1,10 @@
1
1
  <template>
2
- <div class="video-header-wrapper">
2
+ <header
3
+ v-scroll-track.window
4
+ class="asd20-video-header"
5
+ :class="classes"
6
+ role="banner"
7
+ >
3
8
  <!-- SVG Mask Definitions -->
4
9
  <svg
5
10
  width="0"
@@ -91,65 +96,63 @@
91
96
  </defs>
92
97
  </svg>
93
98
 
94
- <div class="white-accent-band">
95
- <header
96
- v-scroll-track.window
97
- class="asd20-video-header"
98
- :class="classes"
99
- role="banner"
100
- >
101
- <div
102
- v-if="$slots.top"
103
- class="asd20-video-header__top"
104
- >
105
- <slot name="top" />
106
- </div>
99
+ <div
100
+ v-if="$slots.top"
101
+ class="asd20-video-header__top"
102
+ >
103
+ <slot name="top" />
104
+ </div>
107
105
 
108
- <video
109
- v-if="loadVideo"
110
- ref="backgroundVideo"
111
- class="background-video"
112
- role="presentation"
113
- aria-hidden="true"
114
- autoplay
115
- loop
116
- muted
117
- playsinline
118
- preload="none"
119
- :poster="imageUrl"
120
- >
121
- <source
106
+ <div class="video-header-wrapper">
107
+ <div class="white-accent-band">
108
+ <div class="asd20-video-header__masked-content">
109
+ <video
110
+ v-if="loadVideo"
111
+ ref="backgroundVideo"
112
+ class="background-video"
113
+ role="presentation"
122
114
  aria-hidden="true"
123
- :src="loadVideo"
124
- type="video/mp4"
115
+ autoplay
116
+ loop
117
+ muted
118
+ playsinline
119
+ preload="none"
120
+ :poster="imageUrl"
121
+ >
122
+ <source
123
+ aria-hidden="true"
124
+ :src="loadVideo"
125
+ type="video/mp4"
126
+ />
127
+ </video>
128
+ <img
129
+ v-else
130
+ class="background-image"
131
+ :src="imageUrl"
132
+ :alt="imageCaption"
133
+ decoding="async"
134
+ fetchpriority="high"
125
135
  />
126
- </video>
127
- <img
128
- v-else
129
- class="background-image"
130
- :src="imageUrl"
131
- :alt="imageCaption"
132
- decoding="async"
133
- fetchpriority="high"
134
- />
135
- <button
136
- v-if="videoUrl && !isMobile"
137
- class="video-toggle-btn"
138
- :aria-label="
139
- isPaused ? 'Play background video' : 'Pause background video'
140
- "
141
- @click="toggleVideo"
142
- >
143
- <!-- Play icon (▶) -->
144
- <span v-if="isPaused">&#9658;</span>
145
- <!-- Pause icon (⏸) -->
146
- <span v-else>&#10073;&#10073;</span>
147
- </button>
148
- <!-- <div class="scroll-down-indicator"></div> -->
149
- <slot />
150
- </header>
136
+ <!-- <div class="scroll-down-indicator"></div> -->
137
+ <slot />
138
+ </div>
139
+ </div>
151
140
  </div>
152
- </div>
141
+
142
+ <button
143
+ v-if="videoUrl && !isMobile"
144
+ class="video-toggle-btn"
145
+ :aria-label="
146
+ isPaused ? 'Play background video' : 'Pause background video'
147
+ "
148
+ @click="toggleVideo"
149
+ >
150
+ <!-- Play icon (▶) -->
151
+ <span v-if="isPaused">&#9658;</span>
152
+ <!-- Pause icon (⏸) -->
153
+ <span v-else>&#10073;&#10073;</span>
154
+ </button>
155
+ </header>
153
156
  </template>
154
157
 
155
158
  <script>
@@ -237,6 +240,7 @@ export default {
237
240
 
238
241
  .video-header-wrapper {
239
242
  position: relative;
243
+ width: 100%;
240
244
  padding-bottom: 20px;
241
245
  background: var(--website-homepage-header__accent);
242
246
  mask: url(#video-wrapper-mask-mobile);
@@ -261,10 +265,19 @@ export default {
261
265
  flex-direction: column;
262
266
  color: asd20-swatch('primary');
263
267
  box-sizing: border-box;
264
- mask: url(#video-header-mask-mobile);
265
- -webkit-mask: url(#video-header-mask-mobile);
266
- mask-size: 100% 100%;
267
- -webkit-mask-size: 100% 100%;
268
+
269
+ &__masked-content {
270
+ position: relative;
271
+ display: flex;
272
+ flex-shrink: 0;
273
+ flex-direction: column;
274
+ box-sizing: border-box;
275
+ mask: url(#video-header-mask-mobile);
276
+ -webkit-mask: url(#video-header-mask-mobile);
277
+ mask-size: 100% 100%;
278
+ -webkit-mask-size: 100% 100%;
279
+ }
280
+
268
281
  .background-video {
269
282
  display: none;
270
283
  }
@@ -395,45 +408,51 @@ export default {
395
408
  }
396
409
 
397
410
  .asd20-video-header {
398
- mask: url(#video-header-mask-desktop);
399
- -webkit-mask: url(#video-header-mask-desktop);
411
+ &__masked-content {
412
+ mask: url(#video-header-mask-desktop);
413
+ -webkit-mask: url(#video-header-mask-desktop);
400
414
 
401
- &::after {
402
- content: '';
403
- height: auto;
404
- display: block;
405
- position: absolute;
406
- z-index: 0;
407
- top: 0;
408
- bottom: auto;
409
- left: 0;
410
- width: 100%;
411
- height: 50%;
412
- background: linear-gradient(
413
- 170deg,
414
- rgba(6, 11, 31, 0.8) 10%,
415
- rgba(6, 11, 31, 0) 50%,
416
- transparent 100%
417
- );
418
- }
415
+ &::after {
416
+ content: '';
417
+ height: auto;
418
+ display: block;
419
+ position: absolute;
420
+ z-index: 0;
421
+ top: 0;
422
+ bottom: auto;
423
+ left: 0;
424
+ width: 100%;
425
+ height: 50%;
426
+ background: linear-gradient(
427
+ 170deg,
428
+ rgba(6, 11, 31, 0.8) 10%,
429
+ rgba(6, 11, 31, 0) 50%,
430
+ transparent 100%
431
+ );
432
+ }
419
433
 
420
- .background-video {
421
- display: block;
422
- pointer-events: none;
423
- }
424
- .background-image {
425
- display: block;
426
- z-index: -1;
427
- width: 100%;
428
- height: 100vh;
429
- object-fit: cover;
430
- }
434
+ .background-video {
435
+ display: block;
436
+ pointer-events: none;
437
+ }
438
+ .background-image {
439
+ display: block;
440
+ z-index: -1;
441
+ width: 100%;
442
+ height: 100vh;
443
+ object-fit: cover;
444
+ }
431
445
 
432
- video {
433
- z-index: -1;
434
- width: 100%;
435
- height: 100vh;
436
- object-fit: cover;
446
+ video {
447
+ z-index: -1;
448
+ width: 100%;
449
+ height: 100vh;
450
+ object-fit: cover;
451
+ }
452
+
453
+ .scroll-down-indicator {
454
+ display: block;
455
+ }
437
456
  }
438
457
 
439
458
  & :deep(.asd20-district-logo) {
@@ -451,34 +470,32 @@ export default {
451
470
  width: 95%;
452
471
  display: flex;
453
472
  }
454
- .scroll-down-indicator {
455
- display: block;
456
- }
473
+
457
474
  .video-toggle-btn {
458
- display: block;
459
475
  position: absolute;
460
- bottom: 4rem;
461
476
  right: 0.5rem;
462
- background-color: rgba(0, 0, 0, 0.5);
463
- color: lightgray;
464
- border: none;
477
+ bottom: calc(4rem + 23px);
478
+ z-index: 101;
479
+ display: flex;
465
480
  width: 45px;
466
481
  height: 45px;
482
+ border: none;
467
483
  border-radius: 50%;
468
- display: flex;
469
484
  align-items: center;
470
485
  justify-content: center;
486
+ background-color: rgba(0, 0, 0, 0.5);
487
+ color: lightgray;
471
488
  font-size: 18px;
472
489
  cursor: pointer;
473
490
  transition: background-color 0.3s ease-in-out;
474
- }
475
491
 
476
- .video-toggle-btn:hover {
477
- background-color: rgba(0, 0, 0, 0.7);
478
- }
492
+ &:hover {
493
+ background-color: rgba(0, 0, 0, 0.7);
494
+ }
479
495
 
480
- .video-toggle-btn span {
481
- line-height: 1;
496
+ span {
497
+ line-height: 1;
498
+ }
482
499
  }
483
500
  }
484
501
  }
@@ -196,11 +196,21 @@ export default {
196
196
  margin-top: space(2.25);
197
197
  .asd20-notification-group--floating {
198
198
  position: absolute;
199
- top: space(2);
199
+ top: 3rem;
200
200
  right: space(0.5);
201
201
  }
202
202
  }
203
203
 
204
+ @media (min-width: 768px) {
205
+ .asd20-template-detail {
206
+ .asd20-notification-group--floating {
207
+ position: absolute;
208
+ top: 2.5rem;
209
+ right: space(0.5);
210
+ }
211
+ }
212
+ }
213
+
204
214
  @media (min-width: 1024px) {
205
215
  .asd20-template-detail {
206
216
  @include template-desktop;
@@ -67,11 +67,7 @@
67
67
  @dismiss="$emit('dismiss-notification', $event)"
68
68
  @toggle-all="$emit('toggle-all')"
69
69
  />
70
- <asd20-list
71
- class="logins-list"
72
- multi-column
73
- :column-width="480"
74
- >
70
+ <asd20-list class="logins-list" multi-column :column-width="480">
75
71
  <asd20-list-item
76
72
  v-for="(login, index) in selectedTabLogins.logins"
77
73
  :key="index"
@@ -100,7 +96,9 @@
100
96
  v-if="login.bodyHtml"
101
97
  href="#"
102
98
  @click.prevent="selectedLogin = login"
103
- >{{ login.title }} details.</a>
99
+ >
100
+ {{ login.title }} details.
101
+ </a>
104
102
  </div>
105
103
  </asd20-list-item>
106
104
  </asd20-list>
@@ -117,11 +115,7 @@
117
115
  class="asd20-login-details-modal"
118
116
  @dismiss="selectedLogin = null"
119
117
  >
120
- <asd20-viewport
121
- v-if="selectedLogin"
122
- padded
123
- scrollable
124
- >
118
+ <asd20-viewport v-if="selectedLogin" padded scrollable>
125
119
  <asd20-messaging-group
126
120
  :messages="[selectedLogin]"
127
121
  ></asd20-messaging-group>
@@ -132,9 +126,7 @@
132
126
  <slot name="before-footer" />
133
127
 
134
128
  <!-- Quick Links -->
135
- <asd20-quicklinks-menu
136
- :quick-links="quickLinks"
137
- >
129
+ <asd20-quicklinks-menu :quick-links="quickLinks">
138
130
  <slot name="quicklinks-menu" />
139
131
  </asd20-quicklinks-menu>
140
132
 
@@ -193,17 +185,12 @@ export default {
193
185
  Asd20MessagingGroup,
194
186
  },
195
187
  mixins: [pageTemplateMixin],
196
- props: {
197
- // tabs: { type: Array, default: () => [] },
198
- // logins: { type: Array, default: () => [] },
199
- },
188
+ props: {},
200
189
  data() {
201
190
  return {
202
191
  tab: '',
203
192
  selectedLogin: null,
204
193
  }
205
-
206
- // this.tabs ? this.tabsList[0].hash : 'one',
207
194
  },
208
195
 
209
196
  computed: {
@@ -250,21 +237,6 @@ export default {
250
237
  }
251
238
  })
252
239
  },
253
- // loginsByTab() {
254
- // if (!this.tabsList.length || !this.logins.length) return []
255
- // let logins = []
256
- // for (let t of this.tabsList) {
257
- // let loginsByTab = this.logins.filter(l =>
258
- // l.categoryTitles.includes(t.label)
259
- // )
260
- // logins.push({
261
- // tab: t.label,
262
- // hash: t.hash,
263
- // logins: loginsByTab,
264
- // })
265
- // }
266
- // return logins
267
- // },
268
240
 
269
241
  loginsByTab() {
270
242
  if (!this.tabsList.length || !this.logins.length) return []
@@ -351,8 +323,8 @@ export default {
351
323
 
352
324
  .notification-group--floating {
353
325
  position: absolute;
354
- right: space(0.5);
355
- top: space(1);
326
+ right: 0.75rem;
327
+ top: 1.5rem;
356
328
  z-index: 101;
357
329
  }
358
330
  .notification-group--inline {
@@ -392,14 +364,25 @@ export default {
392
364
  }
393
365
  }
394
366
 
367
+ @media (min-width: 768px) {
368
+ .asd20-template-logins {
369
+ .notification-group--floating {
370
+ position: absolute;
371
+ right: 1rem;
372
+ top: 4rem;
373
+ z-index: 101;
374
+ }
375
+ }
376
+ }
377
+
395
378
  @media (min-width: 1024px) {
396
379
  .asd20-template-logins {
397
380
  margin-left: space(3);
398
381
  margin-top: 0;
399
382
  .notification-group--floating {
400
383
  position: absolute;
401
- right: space(1.85);
402
- top: 1rem;
384
+ right: 3rem;
385
+ top: 3rem;
403
386
  }
404
387
  .notification-group--inline {
405
388
  margin: space(2) space(3) space(1) space(3);
@@ -811,20 +811,6 @@ export default {
811
811
  .asd20-notification-group--floating {
812
812
  position: absolute;
813
813
  top: space(2);
814
- // .bell {
815
- // box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.125) !important;
816
- // svg {
817
- // fill: var(--color__accent) !important;
818
- // }
819
- // span {
820
- // background: var(--color__accent) !important;
821
- // top: inherit !important;
822
- // right: inherit !important;
823
- // width: 1.2rem !important;
824
- // height: 1.2rem !important;
825
- // font-size: 0.75rem !important;
826
- // }
827
- // }
828
814
  }
829
815
  .salary-calculator {
830
816
  margin: space(2);
@@ -854,13 +840,6 @@ export default {
854
840
  .asd20-notification-group--floating {
855
841
  position: absolute;
856
842
  top: space(1);
857
- // .bell {
858
- // span {
859
- // background: var(--color__accent);
860
- // top: -0.6em !important;
861
- // right: -0.6em !important;
862
- // }
863
- // }
864
843
  }
865
844
  .notification-group--inline {
866
845
  margin: space(2) space(3) space(1) space(3);