@asd20/ui 3.4.5 → 3.5.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@asd20/ui",
3
- "version": "3.4.5",
3
+ "version": "3.5.1",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "sideEffects": [
@@ -21,7 +21,7 @@
21
21
  </svg>
22
22
  <div v-if="tagline" class="asd20-district-logo__tagline">
23
23
  <hr />
24
- <p><i>We educate and inspire students to thrive.</i></p>
24
+ <p><i>Educate. Inspire. Thrive.</i></p>
25
25
  </div>
26
26
  </a>
27
27
  </template>
@@ -46,10 +46,10 @@ export default {
46
46
  // align-items: center;
47
47
  justify-content: center;
48
48
  min-width: 10rem;
49
+ max-width: 100%;
49
50
  svg {
50
- max-width: space(10);
51
- height: 100%;
52
- width: auto;
51
+ height: auto;
52
+ width: 100%;
53
53
  fill: var(--fill-one, #0f2c6c);
54
54
  .district {
55
55
  fill: var(--fill-two, rgb(136, 137, 138));
@@ -57,7 +57,7 @@ export default {
57
57
  }
58
58
  &__tagline {
59
59
  color: #fff;
60
- text-align: left;
60
+ text-align: center;
61
61
  p {
62
62
  font-family: var(--website-typography__font-family-headlines);
63
63
  }
@@ -69,8 +69,8 @@ export default {
69
69
  }
70
70
  }
71
71
  @media screen and (min-width: 768px) {
72
- .asd20-district-logo svg {
73
- max-width: space(12);
72
+ .asd20-district-logo {
73
+ max-width: 20rem;
74
74
  }
75
75
  .asd20-district-logo__tagline {
76
76
  text-align: center;
@@ -78,8 +78,8 @@ export default {
78
78
  }
79
79
 
80
80
  @media screen and (min-width: 1024px) {
81
- .asd20-district-logo svg {
82
- max-width: space(20);
81
+ .asd20-district-logo {
82
+ max-width: 25rem;
83
83
  }
84
84
  }
85
85
  </style>
@@ -5,101 +5,162 @@
5
5
  class="asd20-card__content"
6
6
  :class="emphasizedDate ? 'asd20-card__event-content' : ''"
7
7
  >
8
- <div class="asd20-card__header">
9
- <div class="asd20-card__emphasized-date" v-if="emphasizedDate">
10
- <div class="top">{{ weekday }}</div>
11
- <div class="middle">{{ day }}</div>
12
- <div class="bottom">{{ month }}</div>
13
- <small>{{ year }}</small>
14
- </div>
15
- <component :is="headerTag" v-if="title" class="asd20-card__title">
16
- <span v-html="title"></span>
17
- <div
18
- class="asd20-card__subtitle"
19
- v-if="subtitle"
20
- v-html="subtitle"
21
- ></div>
22
- </component>
23
- </div>
24
-
25
- <div
26
- class="asd20-card__date"
27
- v-if="!emphasizedDate && (date || (modifiedDate && showModifiedDate))"
28
- >
29
- <asd20-icon name="calendar" size="sm" />
30
-
31
- <div class="asd20-card__date-lines">
32
- <div class="asd20-card__date-line" v-if="date">
33
- <span class="label">Published:&nbsp;</span>
34
- <time>{{ date }}</time>
35
- </div>
36
-
37
- <div
38
- class="asd20-card__date-line"
39
- v-if="modifiedDate && showModifiedDate"
8
+ <!-- compact date-left layout -->
9
+ <template v-if="dateLeft">
10
+ <div class="asd20-card__date-left">
11
+ <time
12
+ class="asd20-card__date-badge"
13
+ :aria-label="fullDateLabel"
14
+ :datetime="year && month && day ? `${year}-${month}-${day}` : null"
40
15
  >
41
- <span class="label">Updated:&nbsp;</span>
42
- <time>{{ modifiedDate }}</time>
16
+ <span class="day">{{ day }}</span>
17
+ <span class="mon">{{ monthAbbr }}</span>
18
+ </time>
19
+
20
+ <div class="asd20-card__main">
21
+ <component :is="headerTag" v-if="title" class="asd20-card__title">
22
+ <span v-text="dateLeftTitle"></span>
23
+ </component>
24
+
25
+ <p v-if="time" class="asd20-card__time asd20-card__time--compact">
26
+ <asd20-icon name="hours-alt" size="sm" />
27
+ <span v-html="time"></span>
28
+ </p>
43
29
  </div>
30
+
31
+ <!-- invisible overlay link so the whole card is clickable -->
32
+ <a
33
+ class="asd20-card__link"
34
+ v-if="link"
35
+ :href="link"
36
+ :title="title"
37
+ :tabindex="disableFocus ? -1 : 0"
38
+ ></a>
44
39
  </div>
45
- </div>
46
- <p v-if="time" class="asd20-card__time">
47
- <asd20-icon name="hours-alt" size="sm" />
48
- <span v-html="time"></span>
49
- </p>
50
-
51
- <p v-if="location" class="asd20-card__location">
52
- <asd20-icon name="map" size="sm" />
53
- <span v-html="location"></span>
54
- </p>
55
-
56
- <p class="asd20-card__description">
57
- <span
58
- v-if="!expandedDescription && truncatedDescription"
59
- v-html="truncatedDescription"
60
- ></span>
61
- <span
62
- v-if="expandedDescription && description"
63
- v-html="description"
64
- ></span>
65
- <a
66
- class="asd20-card__link"
67
- v-if="link"
68
- :href="link ? link : ''"
69
- :title="title"
70
- v-html="linkLabel"
71
- :tabindex="disableFocus ? -1 : 0"
72
- ></a>
73
- </p>
74
- <div v-if="showMeta" class="asd20-card__meta">
75
40
  <div v-if="categories" class="asd20-card__categories">
76
41
  <asd20-tag
77
42
  v-for="category in categories"
78
43
  :key="category"
79
44
  :label="category"
80
45
  transparent
81
- ></asd20-tag>
46
+ />
82
47
  </div>
83
48
  <div
84
- class="asd20-card__indicators"
85
- v-if="hasFile || hasGallery || hasVideo || sourceOrg"
49
+ v-if="websiteLogo"
50
+ class="asd20-card__date-left-logo"
51
+ aria-hidden="true"
86
52
  >
87
- <asd20-icon v-if="hasVideo" name="video" size="sm" />
88
- <asd20-icon v-if="hasGallery" name="gallery" size="sm" />
89
- <asd20-icon v-if="hasFile" name="file" size="sm" />
90
- <img
91
- v-if="sourceOrg"
92
- width="24px"
93
- :src="websiteLogo"
94
- :alt="`${sourceOrg} logo`"
95
- />
53
+ <img :src="websiteLogo" alt="" />
54
+ </div>
55
+ </template>
56
+
57
+ <!-- existing layout -->
58
+ <template v-else>
59
+ <div class="asd20-card__header">
60
+ <div class="asd20-card__emphasized-date" v-if="emphasizedDate">
61
+ <div class="top">{{ weekday }}</div>
62
+ <div class="middle">{{ day }}</div>
63
+ <div class="bottom">{{ month }}</div>
64
+ <small>{{ year }}</small>
65
+ </div>
66
+ <component :is="headerTag" v-if="title" class="asd20-card__title">
67
+ <span v-html="title"></span>
68
+ <div
69
+ class="asd20-card__subtitle"
70
+ v-if="subtitle"
71
+ v-html="subtitle"
72
+ ></div>
73
+ </component>
74
+ </div>
75
+
76
+ <div
77
+ class="asd20-card__date"
78
+ v-if="
79
+ !emphasizedDate &&
80
+ (date || (modifiedDate && showModifiedDate)) &&
81
+ cardType !== 'Feature'
82
+ "
83
+ >
84
+ <asd20-icon name="calendar" size="sm" />
85
+ <div class="asd20-card__date-lines">
86
+ <div class="asd20-card__date-line" v-if="date && !showModifiedDate">
87
+ <span class="label">Published:&nbsp;</span>
88
+ <time>{{ date }}</time>
89
+ </div>
90
+ <div
91
+ class="asd20-card__date-line"
92
+ v-if="modifiedDate && showModifiedDate"
93
+ >
94
+ <span class="label">Updated:&nbsp;</span>
95
+ <time>{{ modifiedDate }}</time>
96
+ </div>
97
+ </div>
98
+ </div>
99
+
100
+ <p v-if="time" class="asd20-card__time">
101
+ <asd20-icon name="hours-alt" size="sm" />
102
+ <span v-html="time"></span>
103
+ </p>
104
+
105
+ <p v-if="location" class="asd20-card__location">
106
+ <asd20-icon name="map" size="sm" />
107
+ <span v-html="location"></span>
108
+ </p>
109
+
110
+ <p class="asd20-card__description">
111
+ <span
112
+ v-if="!expandedDescription && truncatedDescription"
113
+ v-html="truncatedDescription"
114
+ ></span>
115
+ <span
116
+ v-if="expandedDescription && description"
117
+ v-html="description"
118
+ ></span>
119
+ <a
120
+ class="asd20-card__link"
121
+ v-if="link"
122
+ :href="link ? link : ''"
123
+ :title="title"
124
+ v-html="linkLabel"
125
+ :tabindex="disableFocus ? -1 : 0"
126
+ ></a>
127
+ </p>
128
+
129
+ <div v-if="showMeta" class="asd20-card__meta">
130
+ <div v-if="categories" class="asd20-card__categories">
131
+ <asd20-tag
132
+ v-for="category in categories"
133
+ :key="category"
134
+ :label="category"
135
+ transparent
136
+ />
137
+ </div>
138
+ <div
139
+ class="asd20-card__indicators"
140
+ v-if="hasFile || hasGallery || hasVideo || sourceOrg"
141
+ >
142
+ <asd20-icon v-if="hasVideo" name="video" size="sm" />
143
+ <asd20-icon v-if="hasGallery" name="gallery" size="sm" />
144
+ <asd20-icon v-if="hasFile" name="file" size="sm" />
145
+ <img
146
+ v-if="sourceOrg"
147
+ class="source-org"
148
+ width="24px"
149
+ :src="websiteLogo"
150
+ :alt="`${sourceOrg} logo`"
151
+ />
152
+ </div>
96
153
  </div>
97
- </div>
98
- <slot />
154
+
155
+ <slot />
156
+ </template>
99
157
  </component>
158
+
159
+ <!-- If you want the compact card to never show a cover image, CSS below will handle it -->
100
160
  <figure class="asd20-card__image" v-if="image && !noCoverImage">
101
161
  <img v-lazy="image" :key="image" :alt="alt || ''" />
102
162
  </figure>
163
+
103
164
  <asd20-icon
104
165
  v-if="pinned"
105
166
  class="asd20-card__pinned"
@@ -157,6 +218,8 @@ export default {
157
218
  noCoverImage: { type: Boolean, default: false },
158
219
  sourceOrg: { type: String, default: '' },
159
220
  websiteLogo: { type: String, default: '' },
221
+ dateLeft: { type: Boolean, default: false },
222
+ cardType: { type: String, default: '' },
160
223
  },
161
224
  computed: {
162
225
  truncatedDescription() {
@@ -180,6 +243,7 @@ export default {
180
243
  'asd20-card--emphasized-date': this.emphasizedDate,
181
244
  'asd20-card--expanded-header': this.expandedHeader,
182
245
  'asd20-card--expanded-description': this.expandedDescription,
246
+ 'asd20-card--date-left': this.dateLeft,
183
247
  }
184
248
  },
185
249
  showMeta() {
@@ -201,6 +265,26 @@ export default {
201
265
  // console.log(publishDateTimePlusOne, modifiedDateTimeString)
202
266
  return modifiedDateTimeString > publishDateTimePlusOne ? true : false
203
267
  },
268
+ monthAbbr() {
269
+ return (this.month || '').slice(0, 3).toUpperCase()
270
+ },
271
+ fullDateLabel() {
272
+ // e.g., "Friday, Nov 8, 2025"
273
+ const parts = [this.weekday, this.monthAbbr, this.day, this.year].filter(
274
+ Boolean
275
+ )
276
+ return parts.join(' ')
277
+ },
278
+ dateLeftTitle() {
279
+ if (!this.title) return ''
280
+
281
+ // strip any HTML tags from the title
282
+ const plain = this.title.replace(/<[^>]*>/g, '').trim()
283
+
284
+ // limit to 50 characters, then add "..." if longer
285
+ if (plain.length <= 65) return plain
286
+ return plain.slice(0, 65) + '...'
287
+ },
204
288
  },
205
289
  }
206
290
  </script>
@@ -423,6 +507,115 @@ export default {
423
507
  }
424
508
  }
425
509
 
510
+ &--date-left {
511
+ min-height: 0 !important; // compact
512
+ position: relative; // allow absolute positioning inside
513
+ background: var(--website-card__background-color);
514
+
515
+ .asd20-card__content {
516
+ padding: space(0.75);
517
+ position: relative;
518
+ z-index: 2; // keep content above the logo
519
+ }
520
+
521
+ // hide large-only sections
522
+ .asd20-card__description,
523
+ .asd20-card__meta,
524
+ .asd20-card__subtitle,
525
+ .asd20-card__image {
526
+ display: none !important;
527
+ }
528
+
529
+ .asd20-card__date-left {
530
+ display: flex;
531
+ align-items: flex-start;
532
+ gap: space(0.75);
533
+ position: relative; // for overlay link
534
+ }
535
+
536
+ .asd20-card__date-badge {
537
+ display: inline-flex;
538
+ flex-direction: column;
539
+ align-items: center;
540
+ justify-content: center;
541
+
542
+ width: 4rem;
543
+ height: 4rem;
544
+ min-width: 4rem;
545
+ border-radius: 999px;
546
+ background: var(--website-card__reverse-background-color)
547
+ var(--website-card__reverse-background-style);
548
+ color: var(--website-card__reverse-foreground-color);
549
+ text-transform: uppercase;
550
+ font-family: var(--website-typography__font-family-headlines);
551
+ line-height: 1;
552
+
553
+ .day {
554
+ font-weight: 700;
555
+ font-size: 1.2rem;
556
+ }
557
+ .mon {
558
+ font-weight: 700;
559
+ font-size: 0.75rem;
560
+ letter-spacing: 0.04em;
561
+ }
562
+ }
563
+
564
+ .asd20-card__main {
565
+ display: flex;
566
+ flex-direction: column;
567
+ min-width: 0; // allow text truncation
568
+ }
569
+
570
+ .asd20-card__title {
571
+ margin: 0;
572
+ font-size: 1rem;
573
+ line-height: 1.2;
574
+ color: var(--website-page__title-color);
575
+ overflow: hidden;
576
+ text-overflow: ellipsis;
577
+ }
578
+
579
+ .asd20-card__time--compact {
580
+ margin: space(0.25) 0 0 0;
581
+ font-size: 0.85rem;
582
+ font-weight: 600;
583
+ display: inline-flex;
584
+ align-items: center;
585
+ .asd20-icon {
586
+ margin-right: space(0.25);
587
+ }
588
+ }
589
+
590
+ // Logo in lower-right
591
+ .asd20-card__date-left-logo {
592
+ position: absolute;
593
+ right: -1.5rem;
594
+ bottom: -1rem;
595
+ opacity: 0.1;
596
+ pointer-events: none;
597
+ z-index: 1; // under text, above background
598
+
599
+ img {
600
+ display: block;
601
+ max-width: 128px;
602
+ max-height: 128px;
603
+ width: auto;
604
+ height: auto;
605
+ }
606
+ }
607
+ .asd20-card__categories {
608
+ position: absolute;
609
+ right: space(0.25);
610
+ bottom: space(0.25);
611
+ }
612
+
613
+ // keep the entire card clickable via existing overlay link style
614
+ .asd20-card__link::after {
615
+ border-radius: var(--website-shape__radius-m);
616
+ }
617
+ }
618
+
426
619
  &__categories {
427
620
  display: flex;
428
621
  flex-wrap: wrap;
@@ -433,11 +626,16 @@ export default {
433
626
  }
434
627
 
435
628
  &__indicators {
629
+ display: flex;
436
630
  margin-left: auto;
437
631
  align-self: flex-end;
438
632
  ::v-deep .asd20-icon g {
439
633
  --line-color: var(--website-card__reverse-foreground-color);
440
634
  }
635
+ .source-org {
636
+ border-radius: 24px;
637
+ background: #fff;
638
+ }
441
639
  }
442
640
 
443
641
  &__image {
@@ -146,7 +146,7 @@ export default {
146
146
  background-color: var(--color__secondary-t30);
147
147
  background-image: var(--website-texture__reverse);
148
148
  background-position-y: top;
149
- background-size: 640px auto;
149
+ background-size: 1040px auto;
150
150
  }
151
151
  .name {
152
152
  font-size: 1.25rem;
@@ -2,12 +2,26 @@
2
2
  <section class="asd20-feeds-section" aria-label="Feeds section">
3
3
  <slot name="before" />
4
4
 
5
+ <intersect @enter="$emit('events-in-view')">
6
+ <Asd20SwiperFeed
7
+ v-if="eventsFeedProps && (!Array.isArray(events) || events.length > 0)"
8
+ class="eventsFeed"
9
+ v-bind="eventsFeedProps"
10
+ :loading="!Array.isArray(events)"
11
+ :cards="eventCards"
12
+ :slidesPerView="4"
13
+ @select="onSelectEventCard"
14
+ cardType="Event"
15
+ ></Asd20SwiperFeed>
16
+ </intersect>
17
+
5
18
  <intersect @enter="$emit('announcements-in-view')">
6
19
  <Asd20SwiperFeed
7
20
  v-if="
8
21
  announcementsFeedProps &&
9
- (!Array.isArray(announcements) || announcements.length > 0)
22
+ (!Array.isArray(announcements) || announcements.length > 0)
10
23
  "
24
+ class="announcementsFeed"
11
25
  v-bind="announcementsFeedProps"
12
26
  :loading="!Array.isArray(announcements)"
13
27
  :cards="announcementCards"
@@ -17,23 +31,12 @@
17
31
  ></Asd20SwiperFeed>
18
32
  </intersect>
19
33
 
20
- <intersect @enter="$emit('events-in-view')">
21
- <Asd20SwiperFeed
22
- v-if="eventsFeedProps && (!Array.isArray(events) || events.length > 0)"
23
- v-bind="eventsFeedProps"
24
- :loading="!Array.isArray(events)"
25
- :cards="eventCards"
26
- :slidesPerView="4"
27
- @select="onSelectEventCard"
28
- cardType="Event"
29
- ></Asd20SwiperFeed>
30
- </intersect>
31
-
32
34
  <intersect @enter="$emit('stories-in-view')">
33
35
  <Asd20SwiperFeed
34
36
  v-if="
35
37
  storiesFeedProps && (!Array.isArray(stories) || stories.length > 0)
36
38
  "
39
+ class="storiesFeed"
37
40
  v-bind="storiesFeedProps"
38
41
  :loading="!Array.isArray(stories)"
39
42
  :cards="storyCards"
@@ -156,7 +159,7 @@ export default {
156
159
  eventCards() {
157
160
  if (!Array.isArray(this.events)) return []
158
161
  return expandEvents(this.events)
159
- .map(e => ({ ...mapEventToCard(e), event: e, zoom: true }))
162
+ .map(e => ({ ...mapEventToCard(e), event: e, zoom: true, websiteLogo: this.organization.logoImageUrl }))
160
163
  .slice(0, 9)
161
164
  },
162
165
  },
@@ -174,5 +177,40 @@ export default {
174
177
  @import '../../../design/_mixins.scss';
175
178
 
176
179
  .asd20-feeds-section {
180
+ .announcementsFeed,
181
+ .storiesFeed {
182
+ &:after {
183
+ content: '';
184
+ display: block;
185
+ position: absolute;
186
+ left: 0;
187
+ right: 0;
188
+ top: 30%;
189
+ bottom: 30%;
190
+ background: var(--website-page__alternate-background-color);
191
+ border-radius: 0;
192
+ // border-radius: var(--website-shape__radius-m);
193
+ // border-top-left-radius: 0;
194
+ // border-bottom-left-radius: 0;
195
+ z-index: 0;
196
+ }
197
+ }
198
+ .eventsFeed {
199
+ &:after {
200
+ content: '';
201
+ display: block;
202
+ position: absolute;
203
+ left: 0;
204
+ right: 0;
205
+ top: 40%;
206
+ bottom: 41%;
207
+ background: var(--website-page__alternate-background-color);
208
+ border-radius: 0;
209
+ // border-radius: var(--website-shape__radius-m);
210
+ // border-top-left-radius: 0;
211
+ // border-bottom-left-radius: 0;
212
+ z-index: 0;
213
+ }
214
+ }
177
215
  }
178
216
  </style>
@@ -10,6 +10,7 @@
10
10
  <div class="swiper-slide" v-for="(card, index) in cards" :key="index">
11
11
  <asd20-card
12
12
  v-bind="card"
13
+ :cardType="cardType"
13
14
  @click.native="$emit('select', card)"
14
15
  @keydown.tab.exact.native="nextCard"
15
16
  @keydown.tab.shift.native="prevCard"
@@ -152,21 +153,6 @@ export default {
152
153
  z-index: 1;
153
154
  }
154
155
 
155
- &:after {
156
- content: '';
157
- display: block;
158
- position: absolute;
159
- left: 0;
160
- right: 0;
161
- top: 30%;
162
- bottom: 30%;
163
- background: var(--website-page__alternate-background-color);
164
- border-radius: 0;
165
- // border-radius: var(--website-shape__radius-m);
166
- // border-top-left-radius: 0;
167
- // border-bottom-left-radius: 0;
168
- z-index: 0;
169
- }
170
156
 
171
157
  .swiper-title {
172
158
  display: flex;
@@ -37,7 +37,7 @@
37
37
  "instagram": "",
38
38
  "instructionTypes": [],
39
39
  "location": {},
40
- "logoImageUrl": "",
40
+ "logoImageUrl": "https://asd20websitestorage.blob.core.windows.net/asd20-images/school-logos/ASD20.png",
41
41
  "mascotImageUrl": "https://asd20websitestorage.blob.core.windows.net/asd20-images/school-logos/aees_logo.png",
42
42
  "mission": null,
43
43
  "modifiedByDisplayName": "",
@@ -80,7 +80,7 @@
80
80
  "id": null,
81
81
  "uid": "MDQwMDAwMDA4MjAwRTAwMDc0QzVCNzEwMUE4MkUwMDgwMDAwMDAwMERFRTE5NzcxNThBQ0RBMDEwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDBFOEVBMjc5NkM0MDJ3RjRGODFFNzY1QzQ0M0VGMDA0Mx==",
82
82
  "type": "event",
83
- "summary": "Register for Summer School",
83
+ "summary": "Parent Academy: Financial Literacy 101 - Empowering Teens for Real World Money Smarts",
84
84
  "description": "Ok. We're actually registeriing for Summer School really, really, really early.",
85
85
  "location": "EAC",
86
86
  "start": "2025-12-24T16:01:00Z",
@@ -55,7 +55,7 @@
55
55
  "links": "[]",
56
56
  "channels": ["Announcements"],
57
57
  "audiences": [],
58
- "ownerOrganizationId": "f4656914-9ec6-1811-aa5d-31f532f483d5",
58
+ "ownerOrganizationId": "26eaf390-d8ab-11e9-a3a8-5de5bba4f125",
59
59
  "images": [{"files":[{"url":"https://asd20websitestorage.blob.core.windows.net/website-files/message-images/dollar5000-donated-to-high-plains-elementary-school/thumbnail-md/Unknown_250x250.jpg","name":"thumbnail-md","width":250,"height":250,"filename":"Unknown_250x250.jpg","filepath":"message-images/dollar5000-donated-to-high-plains-elementary-school/thumbnail-md/Unknown_250x250.jpg","filesize":26512},{"url":"https://asd20websitestorage.blob.core.windows.net/website-files/message-images/dollar5000-donated-to-high-plains-elementary-school/thumbnail-sm/Unknown_100x100.jpg","name":"thumbnail-sm","width":100,"height":100,"filename":"Unknown_100x100.jpg","filepath":"message-images/dollar5000-donated-to-high-plains-elementary-school/thumbnail-sm/Unknown_100x100.jpg","filesize":6411},{"url":"https://asd20websitestorage.blob.core.windows.net/website-files/message-images/dollar5000-donated-to-high-plains-elementary-school/thumbnail-xs/Unknown_50x50.jpg","name":"thumbnail-xs","width":50,"height":50,"filename":"Unknown_50x50.jpg","filepath":"message-images/dollar5000-donated-to-high-plains-elementary-school/thumbnail-xs/Unknown_50x50.jpg","filesize":2367},{"url":"https://asd20websitestorage.blob.core.windows.net/website-files/message-images/dollar5000-donated-to-high-plains-elementary-school/banner/Unknown_800x300.jpg","name":"banner","width":800,"height":300,"filename":"Unknown_800x300.jpg","filepath":"message-images/dollar5000-donated-to-high-plains-elementary-school/banner/Unknown_800x300.jpg","filesize":72551},{"url":"https://asd20websitestorage.blob.core.windows.net/website-files/message-images/dollar5000-donated-to-high-plains-elementary-school/full/Unknown_1200x800.jpg","name":"full","width":1200,"height":800,"filename":"Unknown_1200x800.jpg","filepath":"message-images/dollar5000-donated-to-high-plains-elementary-school/full/Unknown_1200x800.jpg","filesize":245500}],"isCover":true,"metadata":{"alt":""}}],
60
60
  "videos": "[]",
61
61
  "translations": "null",
@@ -392,7 +392,7 @@
392
392
  "hours": "7:30 a.m. - 4:30 p.m.",
393
393
  "instagram": "",
394
394
  "location": {},
395
- "logoImageUrl": "/",
395
+ "logoImageUrl": "https://asd20websitestorage.blob.core.windows.net/asd20-images/school-logos/ASD20.png",
396
396
  "mascotImageUrl": "",
397
397
  "phone": "(719) 234 - 1200",
398
398
  "primaryColor": "",
@@ -64,7 +64,7 @@ export default function mapEventToCard(event) {
64
64
  day: event.day,
65
65
  month: event.month,
66
66
  year: event.year,
67
- emphasizedDate: true,
67
+ dateLeft: true,
68
68
  location: event.location || event.calendarLocation,
69
69
  isFeatured: event.isFeatured || event.isDistrictFeatured,
70
70
  }
@@ -46,9 +46,7 @@ export default function mapMessageToCard(
46
46
  let websiteLogo = null
47
47
 
48
48
  if (
49
- message.ownerOrganizationId !== organization.id &&
50
- message.destinations &&
51
- message.destinations.length === 0
49
+ message.ownerOrganizationId !== organization.id
52
50
  ) {
53
51
  const matchedOrg = organizationOptions.find(
54
52
  org => org.id === message.ownerOrganizationId
@@ -58,6 +56,8 @@ export default function mapMessageToCard(
58
56
  websiteLogo = matchedOrg.logoImageUrl
59
57
  sourceOrg = matchedOrg.title
60
58
  }
59
+ } else {
60
+ websiteLogo = organization.logoImageUrl
61
61
  }
62
62
 
63
63
  // Safely format dates (handle missing/null)