Components
NewCard
The “New on etisalat” story tile — a rounded picture frame with a New card badge and a caption, ringed in a gradient when selected.
Figma description ·
.new-on-eand-stateOpen in Figma ↗This component has no description in Figma yet.
New card
New card
Props
import SwiftUI import EandTokens // new-on-eand: a 137×224 Story column, no surface. A 4pt-padded frame (r24) around a // r20 image; selected adds a 2pt gradient ring that does not move the image. "New card" // md badge at 12,12; a centred body/md caption, 12pt below. struct NewCard: View { let title: String; let image: Image var selected = false var body: some View { VStack(spacing: EandSpacing.md) { ZStack(alignment: .topLeading) { image.resizable().scaledToFill() .clipShape(RoundedRectangle(cornerRadius: EandRadius.radius7)) .padding(EandSpacing.xs) .overlay { if selected { // Ring stops: legacy Light Green #47cb6c (no token), midnight, brand red. RoundedRectangle(cornerRadius: EandRadius.radius8).strokeBorder( LinearGradient(stops: [ .init(color: Color(hex: "#47cb6c"), location: 0), .init(color: EandColor.midnight1000, location: 0.56), .init(color: EandColor.red1000, location: 1), ], startPoint: .bottomLeading, endPoint: .topTrailing), lineWidth: EandBorder.lg) } } OfferBadge(text: "New card").padding(EandSpacing.md) } Text(title).font(.system(size: EandTypography.bodyMd.size)) .multilineTextAlignment(.center).lineLimit(2) .padding(.horizontal, EandSpacing.md) } .frame(width: 137, height: EandSection.bodyHeightRow3) } }
When to use
- Use in a "New on etisalat" carousel, in a Section of size
md, to announce new services and content. Setselectedon the last card in the carousel; Figma shows the ring there for three days. - Don't use for offers with a price (use DealCard) or for general tiles (use GeneralCard).
Anatomy
- Frame —
imagein a rounded frame that fills the height above the caption. - Badge — the
md"New card" badge at the top start.badge(on by default) is independent ofselected. - Ring —
selecteddraws a 2px gradient ring around the frame without shrinking the image. - Caption —
titleinbody/md, centred, up to two lines.
The tile has no surface of its own; only the picture frame is rounded.
<NewCard image={<img src={cover} alt="" />} title="etisalat money" selected />
<NewCard image={<img src={cover} alt="" />} title="Stream on etisalat tv" badge={false} />Props
| Prop | Type | Default | Description |
|---|---|---|---|
badge? | boolean | true | Figma badge — the "New card" badge. Independent of selected; on by default. |
image? | ReactNode | — | |
selected? | boolean | — | Figma selected axis — the gradient ring (the last carousel card, for three days). |
title? | ReactNode | New on e& | |
width? | string | number | 137 |
Design
Figma source: .new-on-eand-state — etisalat Consumer App DSL V1.2
- 137 × 224 (
row-3), with 12px (spacing/md) between the frame and the caption. - Frame: a 24px radius (
border-radius/8) and 4px padding (spacing/xs) around an image container at a 20px radius (border-radius/7). - Badge at 12, 12 (
spacing/md). - Ring: a 37° gradient from #47cb6c through #191329 at 56% to #e00800. Its three stops are legacy colour styles with no V1.2 token, so they are literals.