← Back to Index

Card Large Figma: card-lg container tier Home: tentative

Updated: 2026-08-27 09:53 ET

Audited: 2026-07-09 21:15 ET

CMS-fed editorial card — image + accent border + eyebrow + title (± description)
Figma node: 4179:10018 (card-lg, carousel) · 4116:6869 (card-lg, full-width) · Screen: Home 4099:5229 · file key: psH738AqHDxuMyFm897f9r
Tentative — Home screen is a draft MEC view. The Home screen (4099:5229) shows a UAL MEC prototype, not the final Home layout. However, card-lg also appears in the "New & Notable" and "Feed" carousels, confirming it is a reusable component. This spec is authoritative for the component structure.
Container tier — domain-free. Populated by a RawRepresentationFactory from CMS content. Appears in horizontal scrolling carousels (320 px wide) and as a full-width list item (361 px wide — same component, different width context). A 2 px bottom accent border sits between the image slot and the card body — color comes from the CMS content category token (border/blue-lt or border/yellow) or MEC brand token (united-brand/blue-500 #0008ce). Figma annotation: "Card image is CMS-fed — expect variable crop/aspect; define focal-point / fit rules." Title similarly annotated: "Card title is CMS-fed — length varies; set max-lines / truncation behavior."
Design tokens sourced from Figma file key psH738AqHDxuMyFm897f9r · Component: card-lg (4179:10018, 4116:6869) in Home screen (4099:5229) · captured 2026-06-26

Live CSS Preview

Blue accent — eyebrow + title (carousel 320px)
CMS image · object-fit:cover
Lorem
Erat viverra pellentesque sed lectus auctor
Yellow accent — eyebrow + title (carousel 320px)
CMS image · object-fit:cover
Ipsum
Tincidunt mi sit pulvinar sed adipiscing aliquam
Blue accent + description (full-width 361px)
CMS image · object-fit:cover
Hotel Request
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor.

Design Tokens

Dimensions

Width — carousel
320 px
Width — full-width list
361 px (screen 393 − 2×16px margins)
Image area height
200 px
Card border-radius
8 px
Image bottom accent border
2 px (border-b-2) — between image and body
Content padding-top
8 px (--tiny)
Content padding-bottom
24 px (--medium)
Text wrapper padding-x
24 px
Text wrapper gap
12 px
Favorite button size
18×18 px
Favorite wrapper padding-x
8 px (--tiny)
Favorite wrapper margin-bottom
−12 px (overlaps into text)

Colors

Card background
white/500 #ffffff
Bottom accent — ALPA default
interactive/blue-lt #007bc2
Bottom accent — yellow
border/yellow #f7bb0d
Bottom accent — United MEC
united-brand/blue-500 #0008ce
Bottom accent — United light
united-brand/cyan-300 #94ebfe
Title / Description text
text/primary #05273e
Eyebrow text (opacity 50%)
text/secondary #5d6471

Typography — Title

Font family
Font Family/Heading (Lora SemiBold)
Font weight
Font Weight/Heading (600)
Font size
20 px (--font-size/display-heading/s)
Line height
1.2
Overflow
hidden · text-ellipsis (CMS-fed, variable length)

Typography — Eyebrow

Font family
Font Family/Eyebrow (Inter Bold)
Font weight
700 (Bold)
Font size
12 px (--font-size/other/eyebrow)
Letter spacing
0.6 px
Text transform
uppercase
Opacity
50%
Line height
1.4

Typography — Description (optional)

Font family
Afacad SemiBold
Font weight
600
Font size
18 px (--font-size/body/m)
Line height
1.2
When shown
When card has sub-copy (e.g. "Hotel Request" card)

Variants

VariantFigma nodeWidthContentWhen used
Blue accent4179:10018320 pxEyebrow + TitleMEC or standard content in carousel
Yellow accent4179:10019320 pxEyebrow + TitleHighlighted / priority content in carousel
Full-width + description4116:6869361 pxTitle + Description (no eyebrow)List position outside carousel (e.g. "Hotel Request")

Layer Tree

└── card-lg · 320×auto · white bg · border-radius:8px · overflow:hidden · FRAME
    ├── img · 320×200 · border-bottom:2px accent-color · overflow:hidden
    │    └── [Image] · object-fit:cover · CMS-fed
    └── content · FRAME · pt-8px pb-24px · flex-col
        ├── favorite wrapper · flex row · justify-end · px-8px · mb-−12px
        │    └── [i-heart] · 18×18px · button
        └── text wrapper · flex-col · gap-12px · px-24px
            ├── eyebrow · FRAME (optional — omitted on description variant)
            │    └── [Eyebrow] · TEXT · Inter Bold 12px · uppercase · 50% opacity
            ├── body · FRAME · flex-col · gap-8px
                ├── [Title] · TEXT · Lora SemiBold 20px · text-ellipsis
                └── [Description] · TEXT · Afacad SemiBold 18px (optional)

ViewModel

Tier: container. Extends DocumentCardViewModel (which extends CardViewModel → SurfaceViewModel). DocumentCardViewModel already carries Eyebrow, Title, Description, Image, and AccentColor — no new ViewModel needed.

└── DocumentCardViewModel : CardViewModel (existing)
    ├── Eyebrow : string? — category label (e.g. "LOREM"); null collapses the row
    ├── Title : string — CMS-fed article title
    ├── Description : string? — optional sub-copy (Afacad variant); null collapses row
    ├── Image : string? — CMS image URL
    └── AccentColor : string? — token name: "border/blue-lt" or "border/yellow"; resolved via IThemeResolver

Note: IsFavorite comes from CardViewModel. The heart is rendered — D7 (heart hidden on CardTextViewModel) was reversed 2026-08-27; card-md now shows the heart too, so this is no longer a card-lg-only distinction.

Usage Context

ScreenNodeContextWidth
Home — UAL MEC carousel4099:5247Horizontal scrolling feed ("UAL MEC" section)320 px
Home — New & Notable carousel4185:10208Horizontal scrolling feed ("New & Notable" section)320 px
Home — Feed carousel4099:5249Horizontal scrolling feed ("Feed" section)320 px
Home — Full-width list item4116:6869Between card-sm rows ("Hotel Request")361 px

Developer Notes

Blazor Component API

Target home: ALPAMobile.HybridUi. Component file: CardLarge.razor. Uses DocumentCardViewModel — no new ViewModel required.

ParameterTypeRequiredDescription
VmDocumentCardViewModelYesFull card data. Passed as a single ViewModel; component reads all properties from it.
OnFavoriteToggleEventCallback<DocumentCardViewModel>NoFires when user taps the heart. Consumer wires to Favorites API.
OnTapEventCallback<DocumentCardViewModel>NoFires when user taps the card body (navigate to article).

Razor Usage (target)

@* Carousel — fixed 320px width, AccentColor from CMS category *@
<AlpaCardLarge Vm="@card"
               OnFavoriteToggle="@ToggleFavorite"
               OnTap="@NavigateToArticle" />

@* Full-width list item — width controlled by parent layout (361px context) *@
<AlpaCardLarge Vm="@featuredCard"
               OnTap="@NavigateToArticle" />

CSS Class Reference (target)

Classes will live in ALPAMobile.HybridUi/wwwroot/css/alpa-components.css under the alpa-card-lg BEM block.

ClassScopeKey rules
.alpa-card-lgRoot cardbackground:white; display:flex; flex-direction:column; border-radius:8px; overflow:hidden · width set by parent context (320px carousel / 361px list)
.alpa-card-lg__imgImage blockheight:200px; border-bottom:2px solid var(--accent-color); overflow:hidden; position:relative · --accent-color set inline from AccentColor token
.alpa-card-lg__img imgImage elementwidth:100%; height:100%; object-fit:cover; object-position:center
.alpa-card-lg__contentBelow-image areadisplay:flex; flex-direction:column; padding-top:8px; padding-bottom:24px
.alpa-card-lg__fav-wrapperHeart button rowdisplay:flex; justify-content:flex-end; padding:0 8px; margin-bottom:-12px
.alpa-card-lg__fav-btnHeart buttonwidth:18px; height:18px; background:none; border:none; cursor:pointer
.alpa-card-lg__text-wrapperText content areadisplay:flex; flex-direction:column; gap:12px; padding:0 24px
.alpa-card-lg__eyebrowCategory labelfont-family:var(--font-family/eyebrow); font-weight:700; font-size:12px; color:var(--text-secondary); opacity:0.5; text-transform:uppercase; letter-spacing:0.6px; line-height:1.4
.alpa-card-lg__titleCard titlefont-family:var(--font-family/heading); font-weight:600; font-size:20px; color:var(--text-primary); line-height:1.2; overflow:hidden; text-overflow:ellipsis; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical
.alpa-card-lg__descriptionOptional sub-copyfont-family:var(--font-family/alt); font-weight:600; font-size:18px; color:var(--text-primary); line-height:1.2