From bce557cc2dc767628bed6aac87301a1be7c5431b Mon Sep 17 00:00:00 2001
From: rxliuli
Date: Tue, 4 Nov 2025 05:03:50 +0800
Subject: init commit
---
src/components/jet/Video.svelte | 66 +++
src/components/jet/action/ExternalUrlAction.svelte | 52 +++
src/components/jet/action/FlowAction.svelte | 41 ++
.../jet/action/ShelfBasedPageScrollAction.svelte | 51 +++
src/components/jet/badge/ContentRatingBadge.svelte | 61 +++
.../jet/item/AccessibilityFeaturesItem.svelte | 159 +++++++
.../jet/item/AccessibilityParagraphItem.svelte | 22 +
.../jet/item/Annotation/AnnotationItem.svelte | 17 +
.../Annotation/LegacyAnnotationRenderer.svelte | 146 +++++++
.../Annotation/ModernAnnotationItemRenderer.svelte | 114 +++++
src/components/jet/item/AppEventItem.svelte | 176 ++++++++
src/components/jet/item/ArcadeFooterItem.svelte | 83 ++++
src/components/jet/item/BannerItem.svelte | 37 ++
src/components/jet/item/BrickItem.svelte | 300 +++++++++++++
src/components/jet/item/ContentModal.svelte | 39 ++
src/components/jet/item/EditorialCardItem.svelte | 41 ++
src/components/jet/item/FooterLockupItem.svelte | 93 +++++
src/components/jet/item/HeroCarouselItem.svelte | 60 +++
src/components/jet/item/InAppPurchaseLockup.svelte | 74 ++++
src/components/jet/item/LargeBrickItem.svelte | 106 +++++
.../jet/item/LargeHeroBreakoutItem.svelte | 268 ++++++++++++
.../jet/item/LargeImageLockupItem.svelte | 130 ++++++
src/components/jet/item/LargeLockupItem.svelte | 121 ++++++
src/components/jet/item/LargeStoryCardItem.svelte | 38 ++
src/components/jet/item/LinkableTextItem.svelte | 88 ++++
.../jet/item/MediumImageLockupItem.svelte | 118 ++++++
src/components/jet/item/MediumLockupItem.svelte | 96 +++++
.../MediumStoryCard/EditorialStoryCardItem.svelte | 304 ++++++++++++++
src/components/jet/item/MediumStoryCardItem.svelte | 27 ++
.../jet/item/MixedMediaLockupItem.svelte | 39 ++
src/components/jet/item/ParagraphShelfItem.svelte | 21 +
src/components/jet/item/PosterLockupItem.svelte | 121 ++++++
src/components/jet/item/PrivacyHeaderItem.svelte | 41 ++
src/components/jet/item/PrivacyTypeItem.svelte | 193 +++++++++
src/components/jet/item/ProductBadgeItem.svelte | 188 +++++++++
.../jet/item/ProductCapabilityItem.svelte | 84 ++++
.../item/ProductMedia/ProductMediaMacItem.svelte | 31 ++
.../item/ProductMedia/ProductMediaPadItem.svelte | 89 ++++
.../item/ProductMedia/ProductMediaPhoneItem.svelte | 142 +++++++
.../item/ProductMedia/ProductMediaTVItem.svelte | 34 ++
.../ProductMedia/ProductMediaVisionItem.svelte | 38 ++
.../item/ProductMedia/ProductMediaWatchItem.svelte | 50 +++
src/components/jet/item/ProductPageLinkItem.svelte | 68 +++
src/components/jet/item/ProductRatingsItem.svelte | 37 ++
.../ProductReview/EditorsChoiceReviewItem.svelte | 99 +++++
.../jet/item/ProductReview/UserReviewItem.svelte | 25 ++
src/components/jet/item/ReviewItem.svelte | 237 +++++++++++
src/components/jet/item/SearchLinkItem.svelte | 47 +++
.../item/SearchResult/AppSearchResultItem.svelte | 392 +++++++++++++++++
src/components/jet/item/SmallBreakoutItem.svelte | 187 +++++++++
src/components/jet/item/SmallLockupItem.svelte | 110 +++++
.../jet/item/SmallLockupWithOrdinalItem.svelte | 176 ++++++++
.../SmallStoryCardMediaBrandedSingleApp.svelte | 69 +++
.../jet/item/SmallStoryCardWithArtworkItem.svelte | 87 ++++
.../jet/item/SmallStoryCardWithMediaAppIcon.svelte | 156 +++++++
.../jet/item/SmallStoryCardWithMediaItem.svelte | 104 +++++
.../jet/item/SmallStoryCardWithMediaRiver.svelte | 118 ++++++
src/components/jet/item/TitledParagraphItem.svelte | 175 ++++++++
src/components/jet/item/TrailersLockupItem.svelte | 51 +++
.../jet/marker-shelf/ProductTopLockup.svelte | 463 +++++++++++++++++++++
.../shelf/AccessibilityDeveloperLinkShelf.svelte | 36 ++
.../jet/shelf/AccessibilityFeaturesShelf.svelte | 35 ++
.../jet/shelf/AccessibilityHeaderShelf.svelte | 182 ++++++++
src/components/jet/shelf/ActionShelf.svelte | 80 ++++
src/components/jet/shelf/AnnotationShelf.svelte | 49 +++
.../jet/shelf/AppEventDetailShelf.svelte | 290 +++++++++++++
src/components/jet/shelf/AppPromotionShelf.svelte | 47 +++
src/components/jet/shelf/AppShowcaseShelf.svelte | 29 ++
.../jet/shelf/AppTrailerLockupShelf.svelte | 48 +++
src/components/jet/shelf/ArcadeFooterShelf.svelte | 32 ++
src/components/jet/shelf/BannerShelf.svelte | 35 ++
src/components/jet/shelf/BrickShelf.svelte | 31 ++
src/components/jet/shelf/CategoryBrickShelf.svelte | 28 ++
src/components/jet/shelf/EditorialCardShelf.svelte | 32 ++
src/components/jet/shelf/EditorialLinkShelf.svelte | 122 ++++++
src/components/jet/shelf/FallbackShelf.svelte | 39 ++
src/components/jet/shelf/FramedArtworkShelf.svelte | 98 +++++
src/components/jet/shelf/FramedVideoShelf.svelte | 78 ++++
src/components/jet/shelf/HeroCarouselShelf.svelte | 38 ++
.../jet/shelf/HorizontalRuleShelf.svelte | 54 +++
src/components/jet/shelf/HorizontalShelf.svelte | 53 +++
.../jet/shelf/InAppPurchaseLockupShelf.svelte | 31 ++
src/components/jet/shelf/LargeBrickShelf.svelte | 26 ++
.../jet/shelf/LargeHeroBreakoutShelf.svelte | 31 ++
.../jet/shelf/LargeImageLockupShelf.svelte | 30 ++
src/components/jet/shelf/LargeLockupShelf.svelte | 28 ++
.../jet/shelf/LargeStoryCardShelf.svelte | 32 ++
src/components/jet/shelf/LinkableTextShelf.svelte | 43 ++
src/components/jet/shelf/MarkerShelf.svelte | 36 ++
.../jet/shelf/MediumImageLockupShelf.svelte | 28 ++
src/components/jet/shelf/MediumLockupShelf.svelte | 31 ++
.../jet/shelf/MediumStoryCardShelf.svelte | 31 ++
src/components/jet/shelf/PageHeaderShelf.svelte | 34 ++
src/components/jet/shelf/ParagraphShelf.svelte | 52 +++
src/components/jet/shelf/PosterLockupShelf.svelte | 31 ++
src/components/jet/shelf/PrivacyFooterShelf.svelte | 40 ++
src/components/jet/shelf/PrivacyHeaderShelf.svelte | 145 +++++++
src/components/jet/shelf/PrivacyTypeShelf.svelte | 29 ++
src/components/jet/shelf/ProductBadgeShelf.svelte | 59 +++
.../jet/shelf/ProductCapabilityShelf.svelte | 31 ++
.../jet/shelf/ProductDescriptionShelf.svelte | 95 +++++
src/components/jet/shelf/ProductMediaShelf.svelte | 269 ++++++++++++
.../jet/shelf/ProductPageLinkShelf.svelte | 59 +++
.../jet/shelf/ProductRatingsShelf.svelte | 29 ++
src/components/jet/shelf/ProductReviewShelf.svelte | 38 ++
src/components/jet/shelf/QuoteShelf.svelte | 80 ++++
.../jet/shelf/ReviewsContainerShelf.svelte | 84 ++++
src/components/jet/shelf/ReviewsShelf.svelte | 28 ++
src/components/jet/shelf/RibbonBarShelf.svelte | 135 ++++++
src/components/jet/shelf/SearchLinkShelf.svelte | 26 ++
src/components/jet/shelf/SearchResultShelf.svelte | 49 +++
src/components/jet/shelf/Shelf.svelte | 320 ++++++++++++++
src/components/jet/shelf/SmallBreakoutShelf.svelte | 32 ++
src/components/jet/shelf/SmallBrickShelf.svelte | 26 ++
src/components/jet/shelf/SmallLockupShelf.svelte | 54 +++
.../jet/shelf/SmallStoryCardShelf.svelte | 66 +++
.../jet/shelf/TitledParagraphShelf.svelte | 118 ++++++
src/components/jet/shelf/TodayCardShelf.svelte | 187 +++++++++
src/components/jet/shelf/UberShelf.svelte | 40 ++
src/components/jet/today-card/TodayCard.svelte | 401 ++++++++++++++++++
.../jet/today-card/TodayCardMedia.svelte | 49 +++
.../jet/today-card/TodayCardOverlay.svelte | 48 +++
.../jet/today-card/background-color-utils.ts | 54 +++
.../today-card/media/TodayCardMediaAppEvent.svelte | 78 ++++
.../today-card/media/TodayCardMediaAppIcon.svelte | 62 +++
.../media/TodayCardMediaBrandedSingleApp.svelte | 41 ++
.../jet/today-card/media/TodayCardMediaList.svelte | 86 ++++
.../today-card/media/TodayCardMediaRiver.svelte | 78 ++++
.../today-card/media/TodayCardMediaVideo.svelte | 72 ++++
.../media/TodayCardMediaWithArtwork.svelte | 100 +++++
.../overlay/TodayCardLockupListOverlay.svelte | 42 ++
.../jet/web-navigation/CategoryTabItem.svelte | 67 +++
.../web-navigation/PlatformSelectorDropdown.svelte | 88 ++++
.../jet/web-navigation/PlatformSelectorItem.svelte | 97 +++++
134 files changed, 11902 insertions(+)
create mode 100644 src/components/jet/Video.svelte
create mode 100644 src/components/jet/action/ExternalUrlAction.svelte
create mode 100644 src/components/jet/action/FlowAction.svelte
create mode 100644 src/components/jet/action/ShelfBasedPageScrollAction.svelte
create mode 100644 src/components/jet/badge/ContentRatingBadge.svelte
create mode 100644 src/components/jet/item/AccessibilityFeaturesItem.svelte
create mode 100644 src/components/jet/item/AccessibilityParagraphItem.svelte
create mode 100644 src/components/jet/item/Annotation/AnnotationItem.svelte
create mode 100644 src/components/jet/item/Annotation/LegacyAnnotationRenderer.svelte
create mode 100644 src/components/jet/item/Annotation/ModernAnnotationItemRenderer.svelte
create mode 100644 src/components/jet/item/AppEventItem.svelte
create mode 100644 src/components/jet/item/ArcadeFooterItem.svelte
create mode 100644 src/components/jet/item/BannerItem.svelte
create mode 100644 src/components/jet/item/BrickItem.svelte
create mode 100644 src/components/jet/item/ContentModal.svelte
create mode 100644 src/components/jet/item/EditorialCardItem.svelte
create mode 100644 src/components/jet/item/FooterLockupItem.svelte
create mode 100644 src/components/jet/item/HeroCarouselItem.svelte
create mode 100644 src/components/jet/item/InAppPurchaseLockup.svelte
create mode 100644 src/components/jet/item/LargeBrickItem.svelte
create mode 100644 src/components/jet/item/LargeHeroBreakoutItem.svelte
create mode 100644 src/components/jet/item/LargeImageLockupItem.svelte
create mode 100644 src/components/jet/item/LargeLockupItem.svelte
create mode 100644 src/components/jet/item/LargeStoryCardItem.svelte
create mode 100644 src/components/jet/item/LinkableTextItem.svelte
create mode 100644 src/components/jet/item/MediumImageLockupItem.svelte
create mode 100644 src/components/jet/item/MediumLockupItem.svelte
create mode 100644 src/components/jet/item/MediumStoryCard/EditorialStoryCardItem.svelte
create mode 100644 src/components/jet/item/MediumStoryCardItem.svelte
create mode 100644 src/components/jet/item/MixedMediaLockupItem.svelte
create mode 100644 src/components/jet/item/ParagraphShelfItem.svelte
create mode 100644 src/components/jet/item/PosterLockupItem.svelte
create mode 100644 src/components/jet/item/PrivacyHeaderItem.svelte
create mode 100644 src/components/jet/item/PrivacyTypeItem.svelte
create mode 100644 src/components/jet/item/ProductBadgeItem.svelte
create mode 100644 src/components/jet/item/ProductCapabilityItem.svelte
create mode 100644 src/components/jet/item/ProductMedia/ProductMediaMacItem.svelte
create mode 100644 src/components/jet/item/ProductMedia/ProductMediaPadItem.svelte
create mode 100644 src/components/jet/item/ProductMedia/ProductMediaPhoneItem.svelte
create mode 100644 src/components/jet/item/ProductMedia/ProductMediaTVItem.svelte
create mode 100644 src/components/jet/item/ProductMedia/ProductMediaVisionItem.svelte
create mode 100644 src/components/jet/item/ProductMedia/ProductMediaWatchItem.svelte
create mode 100644 src/components/jet/item/ProductPageLinkItem.svelte
create mode 100644 src/components/jet/item/ProductRatingsItem.svelte
create mode 100644 src/components/jet/item/ProductReview/EditorsChoiceReviewItem.svelte
create mode 100644 src/components/jet/item/ProductReview/UserReviewItem.svelte
create mode 100644 src/components/jet/item/ReviewItem.svelte
create mode 100644 src/components/jet/item/SearchLinkItem.svelte
create mode 100644 src/components/jet/item/SearchResult/AppSearchResultItem.svelte
create mode 100644 src/components/jet/item/SmallBreakoutItem.svelte
create mode 100644 src/components/jet/item/SmallLockupItem.svelte
create mode 100644 src/components/jet/item/SmallLockupWithOrdinalItem.svelte
create mode 100644 src/components/jet/item/SmallStoryCardMediaBrandedSingleApp.svelte
create mode 100644 src/components/jet/item/SmallStoryCardWithArtworkItem.svelte
create mode 100644 src/components/jet/item/SmallStoryCardWithMediaAppIcon.svelte
create mode 100644 src/components/jet/item/SmallStoryCardWithMediaItem.svelte
create mode 100644 src/components/jet/item/SmallStoryCardWithMediaRiver.svelte
create mode 100644 src/components/jet/item/TitledParagraphItem.svelte
create mode 100644 src/components/jet/item/TrailersLockupItem.svelte
create mode 100644 src/components/jet/marker-shelf/ProductTopLockup.svelte
create mode 100644 src/components/jet/shelf/AccessibilityDeveloperLinkShelf.svelte
create mode 100644 src/components/jet/shelf/AccessibilityFeaturesShelf.svelte
create mode 100644 src/components/jet/shelf/AccessibilityHeaderShelf.svelte
create mode 100644 src/components/jet/shelf/ActionShelf.svelte
create mode 100644 src/components/jet/shelf/AnnotationShelf.svelte
create mode 100644 src/components/jet/shelf/AppEventDetailShelf.svelte
create mode 100644 src/components/jet/shelf/AppPromotionShelf.svelte
create mode 100644 src/components/jet/shelf/AppShowcaseShelf.svelte
create mode 100644 src/components/jet/shelf/AppTrailerLockupShelf.svelte
create mode 100644 src/components/jet/shelf/ArcadeFooterShelf.svelte
create mode 100644 src/components/jet/shelf/BannerShelf.svelte
create mode 100644 src/components/jet/shelf/BrickShelf.svelte
create mode 100644 src/components/jet/shelf/CategoryBrickShelf.svelte
create mode 100644 src/components/jet/shelf/EditorialCardShelf.svelte
create mode 100644 src/components/jet/shelf/EditorialLinkShelf.svelte
create mode 100644 src/components/jet/shelf/FallbackShelf.svelte
create mode 100644 src/components/jet/shelf/FramedArtworkShelf.svelte
create mode 100644 src/components/jet/shelf/FramedVideoShelf.svelte
create mode 100644 src/components/jet/shelf/HeroCarouselShelf.svelte
create mode 100644 src/components/jet/shelf/HorizontalRuleShelf.svelte
create mode 100644 src/components/jet/shelf/HorizontalShelf.svelte
create mode 100644 src/components/jet/shelf/InAppPurchaseLockupShelf.svelte
create mode 100644 src/components/jet/shelf/LargeBrickShelf.svelte
create mode 100644 src/components/jet/shelf/LargeHeroBreakoutShelf.svelte
create mode 100644 src/components/jet/shelf/LargeImageLockupShelf.svelte
create mode 100644 src/components/jet/shelf/LargeLockupShelf.svelte
create mode 100644 src/components/jet/shelf/LargeStoryCardShelf.svelte
create mode 100644 src/components/jet/shelf/LinkableTextShelf.svelte
create mode 100644 src/components/jet/shelf/MarkerShelf.svelte
create mode 100644 src/components/jet/shelf/MediumImageLockupShelf.svelte
create mode 100644 src/components/jet/shelf/MediumLockupShelf.svelte
create mode 100644 src/components/jet/shelf/MediumStoryCardShelf.svelte
create mode 100644 src/components/jet/shelf/PageHeaderShelf.svelte
create mode 100644 src/components/jet/shelf/ParagraphShelf.svelte
create mode 100644 src/components/jet/shelf/PosterLockupShelf.svelte
create mode 100644 src/components/jet/shelf/PrivacyFooterShelf.svelte
create mode 100644 src/components/jet/shelf/PrivacyHeaderShelf.svelte
create mode 100644 src/components/jet/shelf/PrivacyTypeShelf.svelte
create mode 100644 src/components/jet/shelf/ProductBadgeShelf.svelte
create mode 100644 src/components/jet/shelf/ProductCapabilityShelf.svelte
create mode 100644 src/components/jet/shelf/ProductDescriptionShelf.svelte
create mode 100644 src/components/jet/shelf/ProductMediaShelf.svelte
create mode 100644 src/components/jet/shelf/ProductPageLinkShelf.svelte
create mode 100644 src/components/jet/shelf/ProductRatingsShelf.svelte
create mode 100644 src/components/jet/shelf/ProductReviewShelf.svelte
create mode 100644 src/components/jet/shelf/QuoteShelf.svelte
create mode 100644 src/components/jet/shelf/ReviewsContainerShelf.svelte
create mode 100644 src/components/jet/shelf/ReviewsShelf.svelte
create mode 100644 src/components/jet/shelf/RibbonBarShelf.svelte
create mode 100644 src/components/jet/shelf/SearchLinkShelf.svelte
create mode 100644 src/components/jet/shelf/SearchResultShelf.svelte
create mode 100644 src/components/jet/shelf/Shelf.svelte
create mode 100644 src/components/jet/shelf/SmallBreakoutShelf.svelte
create mode 100644 src/components/jet/shelf/SmallBrickShelf.svelte
create mode 100644 src/components/jet/shelf/SmallLockupShelf.svelte
create mode 100644 src/components/jet/shelf/SmallStoryCardShelf.svelte
create mode 100644 src/components/jet/shelf/TitledParagraphShelf.svelte
create mode 100644 src/components/jet/shelf/TodayCardShelf.svelte
create mode 100644 src/components/jet/shelf/UberShelf.svelte
create mode 100644 src/components/jet/today-card/TodayCard.svelte
create mode 100644 src/components/jet/today-card/TodayCardMedia.svelte
create mode 100644 src/components/jet/today-card/TodayCardOverlay.svelte
create mode 100644 src/components/jet/today-card/background-color-utils.ts
create mode 100644 src/components/jet/today-card/media/TodayCardMediaAppEvent.svelte
create mode 100644 src/components/jet/today-card/media/TodayCardMediaAppIcon.svelte
create mode 100644 src/components/jet/today-card/media/TodayCardMediaBrandedSingleApp.svelte
create mode 100644 src/components/jet/today-card/media/TodayCardMediaList.svelte
create mode 100644 src/components/jet/today-card/media/TodayCardMediaRiver.svelte
create mode 100644 src/components/jet/today-card/media/TodayCardMediaVideo.svelte
create mode 100644 src/components/jet/today-card/media/TodayCardMediaWithArtwork.svelte
create mode 100644 src/components/jet/today-card/overlay/TodayCardLockupListOverlay.svelte
create mode 100644 src/components/jet/web-navigation/CategoryTabItem.svelte
create mode 100644 src/components/jet/web-navigation/PlatformSelectorDropdown.svelte
create mode 100644 src/components/jet/web-navigation/PlatformSelectorItem.svelte
(limited to 'src/components/jet')
diff --git a/src/components/jet/Video.svelte b/src/components/jet/Video.svelte
new file mode 100644
index 0000000..8d2e4f3
--- /dev/null
+++ b/src/components/jet/Video.svelte
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/action/ExternalUrlAction.svelte b/src/components/jet/action/ExternalUrlAction.svelte
new file mode 100644
index 0000000..e8a2ad6
--- /dev/null
+++ b/src/components/jet/action/ExternalUrlAction.svelte
@@ -0,0 +1,52 @@
+
+
+
+
+ {#if includeArrowIcon}
+
+ {/if}
+
+
+
diff --git a/src/components/jet/action/FlowAction.svelte b/src/components/jet/action/FlowAction.svelte
new file mode 100644
index 0000000..3e55e82
--- /dev/null
+++ b/src/components/jet/action/FlowAction.svelte
@@ -0,0 +1,41 @@
+
+
+
+
+
diff --git a/src/components/jet/action/ShelfBasedPageScrollAction.svelte b/src/components/jet/action/ShelfBasedPageScrollAction.svelte
new file mode 100644
index 0000000..9c1c13e
--- /dev/null
+++ b/src/components/jet/action/ShelfBasedPageScrollAction.svelte
@@ -0,0 +1,51 @@
+
+
+
+
+{#if destination.shelfId}
+
+
+
+{:else}
+
+{/if}
diff --git a/src/components/jet/badge/ContentRatingBadge.svelte b/src/components/jet/badge/ContentRatingBadge.svelte
new file mode 100644
index 0000000..ff3a2c3
--- /dev/null
+++ b/src/components/jet/badge/ContentRatingBadge.svelte
@@ -0,0 +1,61 @@
+
+
+
+
+{#if artwork && isSystemImageArtwork(artwork)}
+
+
+
+{:else}
+
+ {badge.content.contentRating}
+
+{/if}
+
+
diff --git a/src/components/jet/item/AccessibilityFeaturesItem.svelte b/src/components/jet/item/AccessibilityFeaturesItem.svelte
new file mode 100644
index 0000000..bcbeb6c
--- /dev/null
+++ b/src/components/jet/item/AccessibilityFeaturesItem.svelte
@@ -0,0 +1,159 @@
+
+
+
+ {#if !isDetailView}
+ {#if item.artwork && isSystemImageArtwork(item.artwork)}
+
+
+
+ {/if}
+ {item.title}
+ {/if}
+
+
+
+
+
diff --git a/src/components/jet/item/AccessibilityParagraphItem.svelte b/src/components/jet/item/AccessibilityParagraphItem.svelte
new file mode 100644
index 0000000..836b52f
--- /dev/null
+++ b/src/components/jet/item/AccessibilityParagraphItem.svelte
@@ -0,0 +1,22 @@
+
+
+
+
+
diff --git a/src/components/jet/item/Annotation/AnnotationItem.svelte b/src/components/jet/item/Annotation/AnnotationItem.svelte
new file mode 100644
index 0000000..38bb269
--- /dev/null
+++ b/src/components/jet/item/Annotation/AnnotationItem.svelte
@@ -0,0 +1,17 @@
+
+
+{#if shouldRenderModernAnnotation}
+
+{:else}
+
+{/if}
diff --git a/src/components/jet/item/Annotation/LegacyAnnotationRenderer.svelte b/src/components/jet/item/Annotation/LegacyAnnotationRenderer.svelte
new file mode 100644
index 0000000..fc6586f
--- /dev/null
+++ b/src/components/jet/item/Annotation/LegacyAnnotationRenderer.svelte
@@ -0,0 +1,146 @@
+
+
+{#if shouldRenderAsDefinitionList(items)}
+
+ {#each items as annotationItem}
+ - {annotationItem.heading}
+ - {annotationItem.text}
+ {/each}
+
+{:else if shouldRenderAsOrderedList(items)}
+
+ {#each items as annotationItem}
+ {#if annotationItem.textPairs}
+ {#each annotationItem.textPairs as [text, subtext]}
+ -
+ {text}
+ {subtext}
+
+ {/each}
+ {:else}
+ - {annotationItem.text}
+ {/if}
+ {/each}
+
+{:else if shouldRenderAsUnorderedList(items)}
+
+ {#each items as annotationItem}
+ -
+
+ {annotationItem.text}
+
+
+ {/each}
+
+{:else if shouldRenderAsDefinitionListWithHeading(items)}
+ {@const [heading, ...remainingItems] = items}
+
+ {heading.text}
+
+
+ {#each remainingItems as annotationItem}
+ - {annotationItem.heading}
+ - {annotationItem.text}
+ {/each}
+
+
+{:else}
+
+
+ {#each items as annotationItem}
+ - {annotationItem.text}
+ {/each}
+
+ {#if isSome(linkAction) && isFlowAction(linkAction)}
+
+ {linkAction.title}
+
+ {/if}
+
+{/if}
+
+
diff --git a/src/components/jet/item/Annotation/ModernAnnotationItemRenderer.svelte b/src/components/jet/item/Annotation/ModernAnnotationItemRenderer.svelte
new file mode 100644
index 0000000..20611d3
--- /dev/null
+++ b/src/components/jet/item/Annotation/ModernAnnotationItemRenderer.svelte
@@ -0,0 +1,114 @@
+
+
+
+ {#each items as annotationItem}
+ -
+ {#if annotationItem.$kind === 'textEncapsulation'}
+
+ {annotationItem.text}
+
+ {:else if annotationItem.$kind === 'linkableText'}
+
+ {@html sanitizeHtml(
+ formatStyledText(
+ annotationItem.linkableText.styledText.rawText,
+ ),
+ )}
+
+ {:else if annotationItem.$kind === 'artwork'}
+ {#if isSystemImageArtwork(annotationItem.artwork)}
+
+
+
+ {/if}
+ {:else if annotationItem.$kind === 'textPair'}
+
+ {annotationItem.leadingText}
+
+ {annotationItem.trailingText}
+
+
+ {:else if annotationItem.$kind === 'button'}
+
+
+ {annotationItem.action.title}
+
+
+ {:else if annotationItem.$kind === 'spacer'}
+
+ {/if}
+
+ {/each}
+
+
+
diff --git a/src/components/jet/item/AppEventItem.svelte b/src/components/jet/item/AppEventItem.svelte
new file mode 100644
index 0000000..c1e5e5a
--- /dev/null
+++ b/src/components/jet/item/AppEventItem.svelte
@@ -0,0 +1,176 @@
+
+
+
+
+
+
+
+
+
+
+
+ {#if video}
+
+
+
+ {:else if artwork}
+
+ {/if}
+
+
+
+
+
+
+
{item.kind}
+
+
{item.title}
+
+
+ {item.detail}
+
+
+
+
+
+
+ {#if item.lockup && shouldShowLockup}
+
+
+
+ {/if}
+
+
+
+
diff --git a/src/components/jet/item/ArcadeFooterItem.svelte b/src/components/jet/item/ArcadeFooterItem.svelte
new file mode 100644
index 0000000..94fe61d
--- /dev/null
+++ b/src/components/jet/item/ArcadeFooterItem.svelte
@@ -0,0 +1,83 @@
+
+
+
+
+ {#if icons.length}
+
+ {/if}
+
+
+
+
+
+
diff --git a/src/components/jet/item/BannerItem.svelte b/src/components/jet/item/BannerItem.svelte
new file mode 100644
index 0000000..819f621
--- /dev/null
+++ b/src/components/jet/item/BannerItem.svelte
@@ -0,0 +1,37 @@
+
+
+
+
+ {item.message}
+ {#if isSome(item.action) && isFlowAction(item.action)}
+
+ {item.action.title}
+
+ {/if}
+
+
+
+
diff --git a/src/components/jet/item/BrickItem.svelte b/src/components/jet/item/BrickItem.svelte
new file mode 100644
index 0000000..a9e6319
--- /dev/null
+++ b/src/components/jet/item/BrickItem.svelte
@@ -0,0 +1,300 @@
+
+
+
+
+
+ {#if artwork}
+
+ {:else if backgroundGradientCssVars}
+
+ {/if}
+
+ {#if item.title}
+
+ {/if}
+
+
+
+
+ {#if !artwork && collectionIcons}
+
+ {#each collectionIcons?.slice(0, 8) as collectionIcon}
+ -
+
+
+ {/each}
+
+ {/if}
+
+
+
+ {#if item.shortEditorialDescription}
+
+ {item.shortEditorialDescription}
+
+ {/if}
+
+
+
+
diff --git a/src/components/jet/item/ContentModal.svelte b/src/components/jet/item/ContentModal.svelte
new file mode 100644
index 0000000..486937d
--- /dev/null
+++ b/src/components/jet/item/ContentModal.svelte
@@ -0,0 +1,39 @@
+
+
+
+
+
diff --git a/src/components/jet/item/EditorialCardItem.svelte b/src/components/jet/item/EditorialCardItem.svelte
new file mode 100644
index 0000000..2998b05
--- /dev/null
+++ b/src/components/jet/item/EditorialCardItem.svelte
@@ -0,0 +1,41 @@
+
+
+
+
+ {#if item.appEventFormattedDates}
+
+ {:else}
+ {item.caption}
+ {/if}
+
+
+
+ {#if item.lockup}
+
+ {/if}
+
+
diff --git a/src/components/jet/item/FooterLockupItem.svelte b/src/components/jet/item/FooterLockupItem.svelte
new file mode 100644
index 0000000..848885d
--- /dev/null
+++ b/src/components/jet/item/FooterLockupItem.svelte
@@ -0,0 +1,93 @@
+
+
+
+
+
diff --git a/src/components/jet/item/HeroCarouselItem.svelte b/src/components/jet/item/HeroCarouselItem.svelte
new file mode 100644
index 0000000..295aa8a
--- /dev/null
+++ b/src/components/jet/item/HeroCarouselItem.svelte
@@ -0,0 +1,60 @@
+
+
+
+
+
+ {#if overlayLockup && overlayType === 'singleModule'}
+
+ {:else if callToActionText && !isPortraitLayout}
+
+
+ {callToActionText}
+
+
+ {/if}
+
+
+
+
diff --git a/src/components/jet/item/InAppPurchaseLockup.svelte b/src/components/jet/item/InAppPurchaseLockup.svelte
new file mode 100644
index 0000000..29b7196
--- /dev/null
+++ b/src/components/jet/item/InAppPurchaseLockup.svelte
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/item/LargeBrickItem.svelte b/src/components/jet/item/LargeBrickItem.svelte
new file mode 100644
index 0000000..5ce9974
--- /dev/null
+++ b/src/components/jet/item/LargeBrickItem.svelte
@@ -0,0 +1,106 @@
+
+
+
+
+ {#if artwork}
+
+ {:else}
+
+ {/if}
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/item/LargeHeroBreakoutItem.svelte b/src/components/jet/item/LargeHeroBreakoutItem.svelte
new file mode 100644
index 0000000..d07eec8
--- /dev/null
+++ b/src/components/jet/item/LargeHeroBreakoutItem.svelte
@@ -0,0 +1,268 @@
+
+
+
+
+
+ {#if video && $mediaQueries !== 'xsmall' && !canUseRTLArtwork}
+
+ {:else if artwork}
+
+ {/if}
+
+
+
+
+
+ {#if item.details?.badge}
+
+ {item.details.badge}
+
+ {/if}
+
+ {#if item.details.title}
+
+ {@html sanitizeHtml(item.details.title)}
+
+ {/if}
+
+ {#if item.details.description}
+
+ {@html sanitizeHtml(item.details.description)}
+
+ {/if}
+
+ {#if isSome(action) && isFlowAction(action)}
+
+ {action.title}
+
+
+
+
+ {/if}
+
+ {#if shouldShowCollectionIcons}
+
+ {#each collectionIcons.slice(0, 6) as collectionIcon}
+ -
+
+
+ {/each}
+
+ {/if}
+
+
+
+
+
diff --git a/src/components/jet/item/LargeImageLockupItem.svelte b/src/components/jet/item/LargeImageLockupItem.svelte
new file mode 100644
index 0000000..1df51c2
--- /dev/null
+++ b/src/components/jet/item/LargeImageLockupItem.svelte
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+ {#if item.lockup}
+
+ {#if item.lockup.icon}
+
+ {/if}
+
+
+
+ {/if}
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/item/LargeLockupItem.svelte b/src/components/jet/item/LargeLockupItem.svelte
new file mode 100644
index 0000000..93adc6e
--- /dev/null
+++ b/src/components/jet/item/LargeLockupItem.svelte
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+
+
+ {#if destination}
+
+
+ {$i18n.t('ASE.Web.AppStore.View')}
+
+
+ {/if}
+
+
+
+
diff --git a/src/components/jet/item/LargeStoryCardItem.svelte b/src/components/jet/item/LargeStoryCardItem.svelte
new file mode 100644
index 0000000..66079c2
--- /dev/null
+++ b/src/components/jet/item/LargeStoryCardItem.svelte
@@ -0,0 +1,38 @@
+
+
+
diff --git a/src/components/jet/item/LinkableTextItem.svelte b/src/components/jet/item/LinkableTextItem.svelte
new file mode 100644
index 0000000..a5a3e74
--- /dev/null
+++ b/src/components/jet/item/LinkableTextItem.svelte
@@ -0,0 +1,88 @@
+
+
+{#each fragments as fragment}
+ {#if fragment.action}
+
+ {fragment.text}
+
+ {:else if fragment.isTrailingPunctuation}
+ {fragment.text}
+ {:else}
+ {@html sanitizeHtml(fragment.text)}
+ {/if}
+{/each}
+
+
diff --git a/src/components/jet/item/MediumImageLockupItem.svelte b/src/components/jet/item/MediumImageLockupItem.svelte
new file mode 100644
index 0000000..8b93453
--- /dev/null
+++ b/src/components/jet/item/MediumImageLockupItem.svelte
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+
+ {#if item.lockup}
+
+ {#if item.lockup.icon}
+
+ {/if}
+
+
+
+ {/if}
+
+
+
+
+
+
+
diff --git a/src/components/jet/item/MediumLockupItem.svelte b/src/components/jet/item/MediumLockupItem.svelte
new file mode 100644
index 0000000..be70acb
--- /dev/null
+++ b/src/components/jet/item/MediumLockupItem.svelte
@@ -0,0 +1,96 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/item/MediumStoryCard/EditorialStoryCardItem.svelte b/src/components/jet/item/MediumStoryCard/EditorialStoryCardItem.svelte
new file mode 100644
index 0000000..7b7807c
--- /dev/null
+++ b/src/components/jet/item/MediumStoryCard/EditorialStoryCardItem.svelte
@@ -0,0 +1,304 @@
+
+
+
+
+ {#if item.artwork}
+
+ {/if}
+
+
+ {#if item.badge}
+
{item.badge.title}
+ {/if}
+
+ {#if item.title}
+
{@html sanitizeHtml(item.title)}
+ {/if}
+
+ {#if item.description}
+
{@html sanitizeHtml(item.description)}
+ {/if}
+
+
+ {#if collectionIcons && !item.editorialDisplayOptions.suppressLockup}
+
+
+ {#each collectionIcons as collectionIcon}
+ -
+
+
+ {/each}
+
+
+ {#if !hasMultipleCollectionIcons}
+
+
+ {#if destination}
+
+
+ {$i18n.t('ASE.Web.AppStore.View')}
+
+
+ {/if}
+ {/if}
+
+ {/if}
+
+
+
+
+
+
diff --git a/src/components/jet/item/MediumStoryCardItem.svelte b/src/components/jet/item/MediumStoryCardItem.svelte
new file mode 100644
index 0000000..80ead7d
--- /dev/null
+++ b/src/components/jet/item/MediumStoryCardItem.svelte
@@ -0,0 +1,27 @@
+
+
+
+
+{#if isEditorialStoryCard(item)}
+
+{:else if isSmallStoryCardWithMediaItem(item)}
+
+{/if}
diff --git a/src/components/jet/item/MixedMediaLockupItem.svelte b/src/components/jet/item/MixedMediaLockupItem.svelte
new file mode 100644
index 0000000..4874419
--- /dev/null
+++ b/src/components/jet/item/MixedMediaLockupItem.svelte
@@ -0,0 +1,39 @@
+
+
+
+
+
diff --git a/src/components/jet/item/ParagraphShelfItem.svelte b/src/components/jet/item/ParagraphShelfItem.svelte
new file mode 100644
index 0000000..9adf09c
--- /dev/null
+++ b/src/components/jet/item/ParagraphShelfItem.svelte
@@ -0,0 +1,21 @@
+
+
+
+ {@html he.decode(item.text)}
+
+
+
diff --git a/src/components/jet/item/PosterLockupItem.svelte b/src/components/jet/item/PosterLockupItem.svelte
new file mode 100644
index 0000000..08b34e2
--- /dev/null
+++ b/src/components/jet/item/PosterLockupItem.svelte
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+ {#if item.epicHeading}
+
+ {/if}
+
+ {#if item.posterVideo}
+
+
+
+ {:else if item.posterArtwork}
+
+ {/if}
+
+
+
+
+
+
+ {item.footerText}
+ {#if item.tertiaryTitle}
+ | {item.tertiaryTitle}
+ {/if}
+
+
+
+
+
+
+
diff --git a/src/components/jet/item/PrivacyHeaderItem.svelte b/src/components/jet/item/PrivacyHeaderItem.svelte
new file mode 100644
index 0000000..f9611a6
--- /dev/null
+++ b/src/components/jet/item/PrivacyHeaderItem.svelte
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+ {#if item.supplementaryItems.length}
+
+ {#each item.supplementaryItems as supItem}
+
+
+
+ {/each}
+
+ {/if}
+
+
+
diff --git a/src/components/jet/item/PrivacyTypeItem.svelte b/src/components/jet/item/PrivacyTypeItem.svelte
new file mode 100644
index 0000000..5e63966
--- /dev/null
+++ b/src/components/jet/item/PrivacyTypeItem.svelte
@@ -0,0 +1,193 @@
+
+
+
+ {#if item.artwork && isSystemImageArtwork(item.artwork)}
+
+
+
+ {/if}
+
+ {item.title}
+ {item.detail}
+
+ 1 && !isDetailView}>
+ {#each item.categories as category}
+ -
+ {#if isSystemImageArtwork(category.artwork)}
+
+
+
+ {/if}
+ {category.title}
+
+ {/each}
+
+
+ {#each item.purposes as purpose}
+
+ {purpose.title}
+
+ {#each purpose.categories as category}
+
+ {#if isSystemImageArtwork(category.artwork)}
+
+
+
+ {/if}
+
+ {category.title}
+
+
+ {#each category.dataTypes as type}
+ - {type}
+ {/each}
+
+
+ {/each}
+
+ {/each}
+
+
+
diff --git a/src/components/jet/item/ProductBadgeItem.svelte b/src/components/jet/item/ProductBadgeItem.svelte
new file mode 100644
index 0000000..fa32e6f
--- /dev/null
+++ b/src/components/jet/item/ProductBadgeItem.svelte
@@ -0,0 +1,188 @@
+
+
+
+
+
+
+
+ {item.heading}
+
+
+
+
+ {#if isContentRatingBadge(item)}
+
+ {:else if isParagraph}
+
{content.paragraphText}
+ {:else if isRating && !content.rating}
+
+ {content.ratingFormatted}
+
+ {:else if isEditorsChoice}
+
+
+
+
+
+ {item.accessibilityTitle}
+
+
+
+
+
+ {:else if artwork && hasImageArtwork}
+
+ {:else if artwork && isSystemImageArtwork(artwork)}
+
+
+
+ {:else if isController}
+
+
+
+ {/if}
+
+ {#if isRating && content.rating}
+
+ {content.ratingFormatted}
+
+
+ {:else}
+
{item.caption}
+ {/if}
+
+
+
+
+
+
diff --git a/src/components/jet/item/ProductCapabilityItem.svelte b/src/components/jet/item/ProductCapabilityItem.svelte
new file mode 100644
index 0000000..21e97cd
--- /dev/null
+++ b/src/components/jet/item/ProductCapabilityItem.svelte
@@ -0,0 +1,84 @@
+
+
+
+
+

+
+
+
+
+
+
diff --git a/src/components/jet/item/ProductMedia/ProductMediaMacItem.svelte b/src/components/jet/item/ProductMedia/ProductMediaMacItem.svelte
new file mode 100644
index 0000000..516ed32
--- /dev/null
+++ b/src/components/jet/item/ProductMedia/ProductMediaMacItem.svelte
@@ -0,0 +1,31 @@
+
+
+{#if item.screenshot}
+
+
+
+{:else if item.video}
+
+
+
+{/if}
+
+
diff --git a/src/components/jet/item/ProductMedia/ProductMediaPadItem.svelte b/src/components/jet/item/ProductMedia/ProductMediaPadItem.svelte
new file mode 100644
index 0000000..6b9886c
--- /dev/null
+++ b/src/components/jet/item/ProductMedia/ProductMediaPadItem.svelte
@@ -0,0 +1,89 @@
+
+
+{#if item.screenshot || item.video}
+
+
+ {#if item.screenshot}
+
+ {:else if item.video}
+
+ {/if}
+
+
+{/if}
+
+
diff --git a/src/components/jet/item/ProductMedia/ProductMediaPhoneItem.svelte b/src/components/jet/item/ProductMedia/ProductMediaPhoneItem.svelte
new file mode 100644
index 0000000..255b663
--- /dev/null
+++ b/src/components/jet/item/ProductMedia/ProductMediaPhoneItem.svelte
@@ -0,0 +1,142 @@
+
+
+{#if item.screenshot || item.video}
+
+
+ {#if item.screenshot}
+
+ {:else if item.video}
+
+ {/if}
+
+
+{/if}
+
+
diff --git a/src/components/jet/item/ProductMedia/ProductMediaTVItem.svelte b/src/components/jet/item/ProductMedia/ProductMediaTVItem.svelte
new file mode 100644
index 0000000..7f7fd7a
--- /dev/null
+++ b/src/components/jet/item/ProductMedia/ProductMediaTVItem.svelte
@@ -0,0 +1,34 @@
+
+
+{#if item.screenshot || item.video}
+
+
+ {#if item.screenshot}
+
+ {:else if item.video}
+
+ {/if}
+
+
+{/if}
+
+
diff --git a/src/components/jet/item/ProductMedia/ProductMediaVisionItem.svelte b/src/components/jet/item/ProductMedia/ProductMediaVisionItem.svelte
new file mode 100644
index 0000000..e893dd6
--- /dev/null
+++ b/src/components/jet/item/ProductMedia/ProductMediaVisionItem.svelte
@@ -0,0 +1,38 @@
+
+
+{#if item.screenshot || item.video}
+
+
+ {#if item.screenshot}
+
+ {:else if item.video}
+
+ {/if}
+
+
+{/if}
+
+
diff --git a/src/components/jet/item/ProductMedia/ProductMediaWatchItem.svelte b/src/components/jet/item/ProductMedia/ProductMediaWatchItem.svelte
new file mode 100644
index 0000000..0a4b50e
--- /dev/null
+++ b/src/components/jet/item/ProductMedia/ProductMediaWatchItem.svelte
@@ -0,0 +1,50 @@
+
+
+{#if item.screenshot}
+
+
+
+{/if}
+
+
diff --git a/src/components/jet/item/ProductPageLinkItem.svelte b/src/components/jet/item/ProductPageLinkItem.svelte
new file mode 100644
index 0000000..be4bb16
--- /dev/null
+++ b/src/components/jet/item/ProductPageLinkItem.svelte
@@ -0,0 +1,68 @@
+
+
+{#if canRenderContainer}
+
+ {#if isFlowAction(clickAction)}
+
+ {item.text}
+
+ {:else if isExternalUrlAction(clickAction)}
+
+ {item.text}
+
+ {/if}
+
+{/if}
+
+
diff --git a/src/components/jet/item/ProductRatingsItem.svelte b/src/components/jet/item/ProductRatingsItem.svelte
new file mode 100644
index 0000000..0345993
--- /dev/null
+++ b/src/components/jet/item/ProductRatingsItem.svelte
@@ -0,0 +1,37 @@
+
+
+
+ {#if item.totalNumberOfRatings === 0}
+ {item.status}
+ {:else}
+
+ {/if}
+
+
+
diff --git a/src/components/jet/item/ProductReview/EditorsChoiceReviewItem.svelte b/src/components/jet/item/ProductReview/EditorsChoiceReviewItem.svelte
new file mode 100644
index 0000000..2bb6a06
--- /dev/null
+++ b/src/components/jet/item/ProductReview/EditorsChoiceReviewItem.svelte
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+ {#if isDetailView}
+ {item.review.notes}
+ {:else}
+
+ {/if}
+
+
+{#if !isDetailView}
+
+
+
+
+
+
+
+{/if}
+
+
diff --git a/src/components/jet/item/ProductReview/UserReviewItem.svelte b/src/components/jet/item/ProductReview/UserReviewItem.svelte
new file mode 100644
index 0000000..472dd1f
--- /dev/null
+++ b/src/components/jet/item/ProductReview/UserReviewItem.svelte
@@ -0,0 +1,25 @@
+
+
+
+
+
diff --git a/src/components/jet/item/ReviewItem.svelte b/src/components/jet/item/ReviewItem.svelte
new file mode 100644
index 0000000..7f406c8
--- /dev/null
+++ b/src/components/jet/item/ReviewItem.svelte
@@ -0,0 +1,237 @@
+
+
+
+
+
+ {#if isDetailView}
+
+ {@html sanitizeHtml(reviewContents, {
+ allowedTags: [''],
+ keepChildrenWhenRemovingParent: true,
+ })}
+
+ {#if response}
+
+
+
+ {@html sanitizeHtml(responseContents, {
+ allowedTags: [''],
+ keepChildrenWhenRemovingParent: true,
+ })}
+
+ {/if}
+
+ {:else}
+
+
+
+ {#if item.response}
+
+
+ {$i18n.t('ASE.Web.AppStore.Review.DeveloperResponse')}
+
+
+
+ {/if}
+
+ {/if}
+
+
+{#if !isDetailView}
+
+
+
+
+
+
+
+{/if}
+
+
diff --git a/src/components/jet/item/SearchLinkItem.svelte b/src/components/jet/item/SearchLinkItem.svelte
new file mode 100644
index 0000000..cd60512
--- /dev/null
+++ b/src/components/jet/item/SearchLinkItem.svelte
@@ -0,0 +1,47 @@
+
+
+{#if isFlowAction(item.clickAction)}
+
+
+
+ {item.title}
+
+
+{/if}
+
+
diff --git a/src/components/jet/item/SearchResult/AppSearchResultItem.svelte b/src/components/jet/item/SearchResult/AppSearchResultItem.svelte
new file mode 100644
index 0000000..c36e5fc
--- /dev/null
+++ b/src/components/jet/item/SearchResult/AppSearchResultItem.svelte
@@ -0,0 +1,392 @@
+
+
+
+
+
+
+
+ {#if item.lockup.icon}
+
+ {/if}
+
+
+
+
+
+ {$i18n.t('ASE.Web.AppStore.View')}
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/item/SmallBreakoutItem.svelte b/src/components/jet/item/SmallBreakoutItem.svelte
new file mode 100644
index 0000000..311fbef
--- /dev/null
+++ b/src/components/jet/item/SmallBreakoutItem.svelte
@@ -0,0 +1,187 @@
+
+
+
+
+
+ {#if iconArtwork}
+
+ {/if}
+
+
+ {#if item.details?.badge}
+
+ {item.details.badge}
+
+ {/if}
+
+ {#if item.details.title}
+
+ {item.details.title}
+
+ {/if}
+
+ {#if item.details.description}
+
+ {item.details.description}
+
+ {/if}
+
+ {#if isSome(action) && isFlowAction(action)}
+
+ {action.title}
+
+
+
+
+ {/if}
+
+
+
+
+
+
diff --git a/src/components/jet/item/SmallLockupItem.svelte b/src/components/jet/item/SmallLockupItem.svelte
new file mode 100644
index 0000000..b235652
--- /dev/null
+++ b/src/components/jet/item/SmallLockupItem.svelte
@@ -0,0 +1,110 @@
+
+
+
+
+ {#if item.icon}
+
+ {/if}
+
+
+
+
+ {#if shouldShowLaunchNativeButton && $$slots['launch-native-button']}
+
+ {:else}
+
+ {$i18n.t('ASE.Web.AppStore.View')}
+
+ {/if}
+
+
+
+
+
diff --git a/src/components/jet/item/SmallLockupWithOrdinalItem.svelte b/src/components/jet/item/SmallLockupWithOrdinalItem.svelte
new file mode 100644
index 0000000..9fb796c
--- /dev/null
+++ b/src/components/jet/item/SmallLockupWithOrdinalItem.svelte
@@ -0,0 +1,176 @@
+
+
+
+
+
+
+ {#if item.ordinal}
+
+ {item.ordinal}
+
+ {/if}
+
+ {#if item.icon}
+
+ {/if}
+
+
+
+
+ {$i18n.t('ASE.Web.AppStore.View')}
+
+
+
+
+
+
diff --git a/src/components/jet/item/SmallStoryCardMediaBrandedSingleApp.svelte b/src/components/jet/item/SmallStoryCardMediaBrandedSingleApp.svelte
new file mode 100644
index 0000000..ce7784b
--- /dev/null
+++ b/src/components/jet/item/SmallStoryCardMediaBrandedSingleApp.svelte
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
{item.heading}
+
{item.title}
+
{item.inlineDescription}
+
+
+
+
+
diff --git a/src/components/jet/item/SmallStoryCardWithArtworkItem.svelte b/src/components/jet/item/SmallStoryCardWithArtworkItem.svelte
new file mode 100644
index 0000000..bcd7333
--- /dev/null
+++ b/src/components/jet/item/SmallStoryCardWithArtworkItem.svelte
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {#if item.badge?.title}
+
{item.badge.title}
+ {/if}
+
+ {#if item.title}
+ {@html sanitizeHtml(item.title)}
+ {/if}
+
+
+
+
+
+
diff --git a/src/components/jet/item/SmallStoryCardWithMediaAppIcon.svelte b/src/components/jet/item/SmallStoryCardWithMediaAppIcon.svelte
new file mode 100644
index 0000000..5b20e1c
--- /dev/null
+++ b/src/components/jet/item/SmallStoryCardWithMediaAppIcon.svelte
@@ -0,0 +1,156 @@
+
+
+
+
+
+
+
+
+
+ {#if artwork}
+
+ {:else}
+
+ {/if}
+
+
+
+
+
{item.heading}
+ {item.title}
+
+
+
+
diff --git a/src/components/jet/item/SmallStoryCardWithMediaItem.svelte b/src/components/jet/item/SmallStoryCardWithMediaItem.svelte
new file mode 100644
index 0000000..4901744
--- /dev/null
+++ b/src/components/jet/item/SmallStoryCardWithMediaItem.svelte
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+ {#if artwork}
+
+ {/if}
+
+
+
+
{item.heading}
+
+ {item.title}
+
+
+ {#if item.inlineDescription}
+
+ {item.inlineDescription}
+
+ {/if}
+
+
+
+
+
diff --git a/src/components/jet/item/SmallStoryCardWithMediaRiver.svelte b/src/components/jet/item/SmallStoryCardWithMediaRiver.svelte
new file mode 100644
index 0000000..038f504
--- /dev/null
+++ b/src/components/jet/item/SmallStoryCardWithMediaRiver.svelte
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+
+
+
+
+ {#if eyebrow}
+
{eyebrow}
+ {/if}
+
+ {#if title}
+ {title}
+ {/if}
+
+
+
+
diff --git a/src/components/jet/item/TitledParagraphItem.svelte b/src/components/jet/item/TitledParagraphItem.svelte
new file mode 100644
index 0000000..ad8e4bc
--- /dev/null
+++ b/src/components/jet/item/TitledParagraphItem.svelte
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
+ {#if item.text}
+ {#if !isTruncated || isDetailView}
+ {item.text}
+ {:else}
+
+ (isTruncated = detail.truncated)}
+ >
+ {@html sanitizeHtml(item.text)}
+
+
+ {#if isTruncated}
+
+ {/if}
+ {/if}
+ {/if}
+
+
+
+
{item.primarySubtitle}
+
+
+
+
+
+
diff --git a/src/components/jet/item/TrailersLockupItem.svelte b/src/components/jet/item/TrailersLockupItem.svelte
new file mode 100644
index 0000000..6b2ee42
--- /dev/null
+++ b/src/components/jet/item/TrailersLockupItem.svelte
@@ -0,0 +1,51 @@
+
+
+
+ {#if video}
+
+
+
+ {/if}
+
+
+
+
+
diff --git a/src/components/jet/marker-shelf/ProductTopLockup.svelte b/src/components/jet/marker-shelf/ProductTopLockup.svelte
new file mode 100644
index 0000000..e56e5b0
--- /dev/null
+++ b/src/components/jet/marker-shelf/ProductTopLockup.svelte
@@ -0,0 +1,463 @@
+
+
+
+
+
+
+
+
+
+
+ {#if lockup.icon}
+
+ {/if}
+
+
+ {#if supportsArcade}
+
+
+
+ {:else if lockup.editorialTagline}
+ {lockup.editorialTagline}
+ {/if}
+
+
+ {lockup.title}
+
+
+
+ {lockup.subtitle}
+
+
+ {#if exclusivityText}
+
+ {$i18n.t(exclusivityText)}
+
+ {/if}
+
+ {#if attributes.length > 0}
+
+ {attributes}
+
+ {/if}
+
+ {#if page.canonicalURL && (shouldShowLaunchNativeButton || shouldShowShareButton)}
+
+ {#if shouldShowLaunchNativeButton}
+
+
+
+ {/if}
+
+ {#if shouldShowShareButton}
+
+
+ {/if}
+
+ {/if}
+
+
+
+
+
+{#if banner}
+
+
+
+{/if}
+
+{#if supportsArcade}
+
+
+
+{/if}
+
+
diff --git a/src/components/jet/shelf/AccessibilityDeveloperLinkShelf.svelte b/src/components/jet/shelf/AccessibilityDeveloperLinkShelf.svelte
new file mode 100644
index 0000000..c1e7b2e
--- /dev/null
+++ b/src/components/jet/shelf/AccessibilityDeveloperLinkShelf.svelte
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/AccessibilityFeaturesShelf.svelte b/src/components/jet/shelf/AccessibilityFeaturesShelf.svelte
new file mode 100644
index 0000000..cb2fed8
--- /dev/null
+++ b/src/components/jet/shelf/AccessibilityFeaturesShelf.svelte
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/AccessibilityHeaderShelf.svelte b/src/components/jet/shelf/AccessibilityHeaderShelf.svelte
new file mode 100644
index 0000000..990c507
--- /dev/null
+++ b/src/components/jet/shelf/AccessibilityHeaderShelf.svelte
@@ -0,0 +1,182 @@
+
+
+
+
+
+
+ {#if shelf.title}
+ {#if destination}
+
+ {:else}
+
+ {/if}
+ {/if}
+
+ {#if pageData}
+
+
+
+
+ {#each pageData.shelves as shelf}
+
+ {#if isAccessibilityParagraphShelf(shelf)}
+ {#each shelf.items as item}
+
+ {/each}
+ {/if}
+
+ {#if isAccessibilityFeaturesShelf(shelf)}
+ {#each shelf.items as item}
+
+ {/each}
+ {/if}
+
+ {/each}
+
+
+
+
+ {/if}
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/ActionShelf.svelte b/src/components/jet/shelf/ActionShelf.svelte
new file mode 100644
index 0000000..847438f
--- /dev/null
+++ b/src/components/jet/shelf/ActionShelf.svelte
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+ {@const action = item}
+ {@const artwork = item.artwork}
+ {@const title = item.title}
+
+
+
+ {#if artwork}
+
+ {/if}
+ {title}
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/AnnotationShelf.svelte b/src/components/jet/shelf/AnnotationShelf.svelte
new file mode 100644
index 0000000..e11de72
--- /dev/null
+++ b/src/components/jet/shelf/AnnotationShelf.svelte
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+ - {item.title}
+
+ {#if item.summary}
+
+
+ {item.summary}
+
+
+
+
+ {:else}
+
+ {/if}
+
+
+
+
+
diff --git a/src/components/jet/shelf/AppEventDetailShelf.svelte b/src/components/jet/shelf/AppEventDetailShelf.svelte
new file mode 100644
index 0000000..2ae84eb
--- /dev/null
+++ b/src/components/jet/shelf/AppEventDetailShelf.svelte
@@ -0,0 +1,290 @@
+
+
+
+
+
+
+ {#if video}
+
+
+
+ {:else if artwork}
+
+ {/if}
+
+ {#if isXSmallViewport}
+
+
+
+ {:else}
+
+ {/if}
+
+
+
+
+
+
{appEvent.kind}
+
{appEvent.title}
+
+ {appEvent.detail}
+
+ {#if requirements}
+
{requirements}
+ {/if}
+
+
+ {#if lockup}
+
+
+
+ {#if urlToLaunchNatively}
+
+ {/if}
+
+
+
+ {/if}
+
+
+
+
+
diff --git a/src/components/jet/shelf/AppPromotionShelf.svelte b/src/components/jet/shelf/AppPromotionShelf.svelte
new file mode 100644
index 0000000..48590cb
--- /dev/null
+++ b/src/components/jet/shelf/AppPromotionShelf.svelte
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/AppShowcaseShelf.svelte b/src/components/jet/shelf/AppShowcaseShelf.svelte
new file mode 100644
index 0000000..095acf2
--- /dev/null
+++ b/src/components/jet/shelf/AppShowcaseShelf.svelte
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/AppTrailerLockupShelf.svelte b/src/components/jet/shelf/AppTrailerLockupShelf.svelte
new file mode 100644
index 0000000..f516074
--- /dev/null
+++ b/src/components/jet/shelf/AppTrailerLockupShelf.svelte
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+ {#if isMixedMediaLockup(item)}
+
+ {:else}
+
+ {/if}
+
+
diff --git a/src/components/jet/shelf/ArcadeFooterShelf.svelte b/src/components/jet/shelf/ArcadeFooterShelf.svelte
new file mode 100644
index 0000000..dc46740
--- /dev/null
+++ b/src/components/jet/shelf/ArcadeFooterShelf.svelte
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/BannerShelf.svelte b/src/components/jet/shelf/BannerShelf.svelte
new file mode 100644
index 0000000..84289c9
--- /dev/null
+++ b/src/components/jet/shelf/BannerShelf.svelte
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ {#each shelf.items as item}
+
+ {/each}
+
+
+
+
diff --git a/src/components/jet/shelf/BrickShelf.svelte b/src/components/jet/shelf/BrickShelf.svelte
new file mode 100644
index 0000000..4bd55e5
--- /dev/null
+++ b/src/components/jet/shelf/BrickShelf.svelte
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/CategoryBrickShelf.svelte b/src/components/jet/shelf/CategoryBrickShelf.svelte
new file mode 100644
index 0000000..22ca86b
--- /dev/null
+++ b/src/components/jet/shelf/CategoryBrickShelf.svelte
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/EditorialCardShelf.svelte b/src/components/jet/shelf/EditorialCardShelf.svelte
new file mode 100644
index 0000000..efbd71d
--- /dev/null
+++ b/src/components/jet/shelf/EditorialCardShelf.svelte
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/EditorialLinkShelf.svelte b/src/components/jet/shelf/EditorialLinkShelf.svelte
new file mode 100644
index 0000000..0946462
--- /dev/null
+++ b/src/components/jet/shelf/EditorialLinkShelf.svelte
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+
+
+ {descriptionText}
+ {summaryText}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/FallbackShelf.svelte b/src/components/jet/shelf/FallbackShelf.svelte
new file mode 100644
index 0000000..c7e4200
--- /dev/null
+++ b/src/components/jet/shelf/FallbackShelf.svelte
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+ {isPlaceholder
+ ? `🔄 Placeholder for ${shelf.placeholderContentType}`
+ : `🚧 ${shelf.contentType}`}
+
+
+
+
+
diff --git a/src/components/jet/shelf/FramedArtworkShelf.svelte b/src/components/jet/shelf/FramedArtworkShelf.svelte
new file mode 100644
index 0000000..16f7c48
--- /dev/null
+++ b/src/components/jet/shelf/FramedArtworkShelf.svelte
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+
+ {#if caption}
+
+ {@html sanitizeHtml(caption)}
+
+ {/if}
+
+
+
+
diff --git a/src/components/jet/shelf/FramedVideoShelf.svelte b/src/components/jet/shelf/FramedVideoShelf.svelte
new file mode 100644
index 0000000..a685d39
--- /dev/null
+++ b/src/components/jet/shelf/FramedVideoShelf.svelte
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+
+
+ {#if caption}
+
+ {@html sanitizeHtml(caption)}
+
+ {/if}
+
+
+
+
diff --git a/src/components/jet/shelf/HeroCarouselShelf.svelte b/src/components/jet/shelf/HeroCarouselShelf.svelte
new file mode 100644
index 0000000..31a0287
--- /dev/null
+++ b/src/components/jet/shelf/HeroCarouselShelf.svelte
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/HorizontalRuleShelf.svelte b/src/components/jet/shelf/HorizontalRuleShelf.svelte
new file mode 100644
index 0000000..3313ff2
--- /dev/null
+++ b/src/components/jet/shelf/HorizontalRuleShelf.svelte
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/HorizontalShelf.svelte b/src/components/jet/shelf/HorizontalShelf.svelte
new file mode 100644
index 0000000..1addb31
--- /dev/null
+++ b/src/components/jet/shelf/HorizontalShelf.svelte
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/InAppPurchaseLockupShelf.svelte b/src/components/jet/shelf/InAppPurchaseLockupShelf.svelte
new file mode 100644
index 0000000..bf2e75e
--- /dev/null
+++ b/src/components/jet/shelf/InAppPurchaseLockupShelf.svelte
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/LargeBrickShelf.svelte b/src/components/jet/shelf/LargeBrickShelf.svelte
new file mode 100644
index 0000000..eea1044
--- /dev/null
+++ b/src/components/jet/shelf/LargeBrickShelf.svelte
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/LargeHeroBreakoutShelf.svelte b/src/components/jet/shelf/LargeHeroBreakoutShelf.svelte
new file mode 100644
index 0000000..a0dfe9c
--- /dev/null
+++ b/src/components/jet/shelf/LargeHeroBreakoutShelf.svelte
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/LargeImageLockupShelf.svelte b/src/components/jet/shelf/LargeImageLockupShelf.svelte
new file mode 100644
index 0000000..fd192fb
--- /dev/null
+++ b/src/components/jet/shelf/LargeImageLockupShelf.svelte
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/LargeLockupShelf.svelte b/src/components/jet/shelf/LargeLockupShelf.svelte
new file mode 100644
index 0000000..dedd1fe
--- /dev/null
+++ b/src/components/jet/shelf/LargeLockupShelf.svelte
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/LargeStoryCardShelf.svelte b/src/components/jet/shelf/LargeStoryCardShelf.svelte
new file mode 100644
index 0000000..c1a1e57
--- /dev/null
+++ b/src/components/jet/shelf/LargeStoryCardShelf.svelte
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/LinkableTextShelf.svelte b/src/components/jet/shelf/LinkableTextShelf.svelte
new file mode 100644
index 0000000..dcfde36
--- /dev/null
+++ b/src/components/jet/shelf/LinkableTextShelf.svelte
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/MarkerShelf.svelte b/src/components/jet/shelf/MarkerShelf.svelte
new file mode 100644
index 0000000..c719235
--- /dev/null
+++ b/src/components/jet/shelf/MarkerShelf.svelte
@@ -0,0 +1,36 @@
+
+
+
+
+{#if shelf.marker === 'productTopLockup'}
+
+{/if}
diff --git a/src/components/jet/shelf/MediumImageLockupShelf.svelte b/src/components/jet/shelf/MediumImageLockupShelf.svelte
new file mode 100644
index 0000000..f7b1316
--- /dev/null
+++ b/src/components/jet/shelf/MediumImageLockupShelf.svelte
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/MediumLockupShelf.svelte b/src/components/jet/shelf/MediumLockupShelf.svelte
new file mode 100644
index 0000000..186acb2
--- /dev/null
+++ b/src/components/jet/shelf/MediumLockupShelf.svelte
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/MediumStoryCardShelf.svelte b/src/components/jet/shelf/MediumStoryCardShelf.svelte
new file mode 100644
index 0000000..35c3ec3
--- /dev/null
+++ b/src/components/jet/shelf/MediumStoryCardShelf.svelte
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/PageHeaderShelf.svelte b/src/components/jet/shelf/PageHeaderShelf.svelte
new file mode 100644
index 0000000..59c99b2
--- /dev/null
+++ b/src/components/jet/shelf/PageHeaderShelf.svelte
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/ParagraphShelf.svelte b/src/components/jet/shelf/ParagraphShelf.svelte
new file mode 100644
index 0000000..777338e
--- /dev/null
+++ b/src/components/jet/shelf/ParagraphShelf.svelte
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+ {#if shelf.title}
+
{shelf.title}
+ {/if}
+
+
+
+ {#each shelf.items as item}
+
+ {/each}
+
+
+
+
diff --git a/src/components/jet/shelf/PosterLockupShelf.svelte b/src/components/jet/shelf/PosterLockupShelf.svelte
new file mode 100644
index 0000000..101c1d6
--- /dev/null
+++ b/src/components/jet/shelf/PosterLockupShelf.svelte
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/PrivacyFooterShelf.svelte b/src/components/jet/shelf/PrivacyFooterShelf.svelte
new file mode 100644
index 0000000..dccade6
--- /dev/null
+++ b/src/components/jet/shelf/PrivacyFooterShelf.svelte
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/PrivacyHeaderShelf.svelte b/src/components/jet/shelf/PrivacyHeaderShelf.svelte
new file mode 100644
index 0000000..5ace666
--- /dev/null
+++ b/src/components/jet/shelf/PrivacyHeaderShelf.svelte
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+ {#if shelf.title}
+
+ {/if}
+
+ {#if pageData}
+
+
+
+
+ {#each pageData.shelves as shelf}
+ {#if isPrivacyHeaderShelf(shelf)}
+ {#each shelf.items as item}
+
+ {/each}
+ {/if}
+
+ {#if isPrivacyTypeShelf(shelf)}
+ {#each shelf.items as item}
+
+ {/each}
+ {/if}
+ {/each}
+
+
+
+
+ {/if}
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/PrivacyTypeShelf.svelte b/src/components/jet/shelf/PrivacyTypeShelf.svelte
new file mode 100644
index 0000000..3817251
--- /dev/null
+++ b/src/components/jet/shelf/PrivacyTypeShelf.svelte
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/ProductBadgeShelf.svelte b/src/components/jet/shelf/ProductBadgeShelf.svelte
new file mode 100644
index 0000000..cded0b7
--- /dev/null
+++ b/src/components/jet/shelf/ProductBadgeShelf.svelte
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/ProductCapabilityShelf.svelte b/src/components/jet/shelf/ProductCapabilityShelf.svelte
new file mode 100644
index 0000000..6a4307a
--- /dev/null
+++ b/src/components/jet/shelf/ProductCapabilityShelf.svelte
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/ProductDescriptionShelf.svelte b/src/components/jet/shelf/ProductDescriptionShelf.svelte
new file mode 100644
index 0000000..7cddcee
--- /dev/null
+++ b/src/components/jet/shelf/ProductDescriptionShelf.svelte
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
+ {#if isOpen}
+ {@html sanitizeHtml(description)}
+ {:else}
+
+ {@html sanitizeHtml(description)}
+
+ {/if}
+
+ {#if !isOpen}
+
+ {/if}
+
+
+
+
+
diff --git a/src/components/jet/shelf/ProductMediaShelf.svelte b/src/components/jet/shelf/ProductMediaShelf.svelte
new file mode 100644
index 0000000..f57fee7
--- /dev/null
+++ b/src/components/jet/shelf/ProductMediaShelf.svelte
@@ -0,0 +1,269 @@
+
+
+
+
+
+ {#if appPlatform === 'vision'}
+
+
+
+ {:else if appPlatform === 'phone' || appPlatform === 'messages'}
+
+
+
+ {:else if appPlatform === 'pad'}
+
+
+
+ {:else if appPlatform === 'mac'}
+
+
+
+ {:else if appPlatform === 'tv'}
+
+
+
+ {:else if appPlatform === 'watch'}
+
+
+
+ {:else}
+
+
+
+ {/if}
+
+ {#if appPlatform && shouldShowPlatform}
+
+ {/if}
+
+
+{#if shelf.expandedMedia && allPlatforms && allPlatforms.length > 1}
+
+{/if}
+
+{#if !isExpandedMedia}
+
+{/if}
+
+
diff --git a/src/components/jet/shelf/ProductPageLinkShelf.svelte b/src/components/jet/shelf/ProductPageLinkShelf.svelte
new file mode 100644
index 0000000..7b41e80
--- /dev/null
+++ b/src/components/jet/shelf/ProductPageLinkShelf.svelte
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+ {#each shelf.items as item}
+
+
+
+ {/each}
+
+
+
+
diff --git a/src/components/jet/shelf/ProductRatingsShelf.svelte b/src/components/jet/shelf/ProductRatingsShelf.svelte
new file mode 100644
index 0000000..8f09ab5
--- /dev/null
+++ b/src/components/jet/shelf/ProductRatingsShelf.svelte
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/ProductReviewShelf.svelte b/src/components/jet/shelf/ProductReviewShelf.svelte
new file mode 100644
index 0000000..6bc4ecb
--- /dev/null
+++ b/src/components/jet/shelf/ProductReviewShelf.svelte
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+ {#if isUserReviewItem(item)}
+
+ {:else if isEditorsChoiceReviewItem(item)}
+
+ {/if}
+
+
diff --git a/src/components/jet/shelf/QuoteShelf.svelte b/src/components/jet/shelf/QuoteShelf.svelte
new file mode 100644
index 0000000..3a14f4f
--- /dev/null
+++ b/src/components/jet/shelf/QuoteShelf.svelte
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+ {item.text}
+
+
{item.credit}
+
+
+
+
+
diff --git a/src/components/jet/shelf/ReviewsContainerShelf.svelte b/src/components/jet/shelf/ReviewsContainerShelf.svelte
new file mode 100644
index 0000000..a55fe40
--- /dev/null
+++ b/src/components/jet/shelf/ReviewsContainerShelf.svelte
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/ReviewsShelf.svelte b/src/components/jet/shelf/ReviewsShelf.svelte
new file mode 100644
index 0000000..8304444
--- /dev/null
+++ b/src/components/jet/shelf/ReviewsShelf.svelte
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/RibbonBarShelf.svelte b/src/components/jet/shelf/RibbonBarShelf.svelte
new file mode 100644
index 0000000..44a8ae9
--- /dev/null
+++ b/src/components/jet/shelf/RibbonBarShelf.svelte
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/SearchLinkShelf.svelte b/src/components/jet/shelf/SearchLinkShelf.svelte
new file mode 100644
index 0000000..6b29780
--- /dev/null
+++ b/src/components/jet/shelf/SearchLinkShelf.svelte
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/SearchResultShelf.svelte b/src/components/jet/shelf/SearchResultShelf.svelte
new file mode 100644
index 0000000..9c15d3e
--- /dev/null
+++ b/src/components/jet/shelf/SearchResultShelf.svelte
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/Shelf.svelte b/src/components/jet/shelf/Shelf.svelte
new file mode 100644
index 0000000..6cbb0f6
--- /dev/null
+++ b/src/components/jet/shelf/Shelf.svelte
@@ -0,0 +1,320 @@
+
+
+
+
+{#if isAccessibilityHeaderShelf(shelf)}
+
+{:else if isAccessibilityFeaturesShelf(shelf)}
+
+{:else if isAccessibilityDeveloperLinkShelf(shelf)}
+
+{:else if isActionShelf(shelf)}
+
+{:else if isAnnotationShelf(shelf)}
+
+{:else if isAppEventDetailShelf(shelf)}
+
+{:else if isAppPromotionShelf(shelf)}
+
+{:else if isAppShowcaseShelf(shelf)}
+
+{:else if isAppTrailerLockupShelf(shelf)}
+
+{:else if isArcadeFooterShelf(shelf)}
+
+{:else if isBannerShelf(shelf)}
+
+
+{:else if isBrickShelf(shelf)}
+
+{:else if isCategoryBrickShelf(shelf)}
+
+{:else if isEditorialCardShelf(shelf)}
+
+{:else if isEditorialLinkShelf(shelf)}
+
+{:else if isFramedArtworkShelf(shelf)}
+
+{:else if isFramedVideoShelf(shelf)}
+
+{:else if isHeroCarouselShelf(shelf)}
+
+{:else if isHorizontalRuleShelf(shelf)}
+
+{:else if isInAppPurchaseLockupShelf(shelf)}
+
+{:else if isLargeHeroBreakoutShelf(shelf)}
+
+{:else if isLargeBrickShelf(shelf)}
+
+{:else if isLargeImageLockupShelf(shelf)}
+
+{:else if isLargeLockupShelf(shelf)}
+
+{:else if isLargeStoryCardShelf(shelf)}
+
+{:else if isLinkableTextShelf(shelf)}
+
+{:else if isProductDescriptionShelf(shelf)}
+
+{:else if isMediumImageLockupShelf(shelf)}
+
+{:else if isMediumLockupShelf(shelf)}
+
+{:else if isMediumStoryCardShelf(shelf)}
+
+{:else if isPosterLockupShelf(shelf)}
+
+{:else if isProductBadgeShelf(shelf)}
+
+{:else if isPageHeaderShelf(shelf)}
+
+{:else if isParagraphShelf(shelf)}
+
+{:else if isPrivacyHeaderShelf(shelf)}
+
+{:else if isPrivacyFooterShelf(shelf)}
+
+{:else if isPrivacyTypeShelf(shelf)}
+
+{:else if isProductMediaShelf(shelf)}
+
+{:else if isProductRatingsShelf(shelf)}
+
+{:else if isProductReviewShelf(shelf)}
+
+{:else if isRibbonBarShelf(shelf)}
+
+{:else if isSearchLinkShelf(shelf)}
+
+{:else if isSearchResultShelf(shelf)}
+
+{:else if isSmallBreakoutShelf(shelf)}
+
+{:else if isSmallBrickShelf(shelf)}
+
+{:else if isSmallStoryCardShelf(shelf)}
+
+{:else if isSmallLockupShelf(shelf)}
+
+{:else if isProductCapabilityShelf(shelf)}
+
+{:else if isProductPageLinkShelf(shelf)}
+
+{:else if isQuoteShelf(shelf)}
+
+{:else if isReviewsContainerShelf(shelf)}
+
+{:else if isReviewsShelf(shelf)}
+
+{:else if isTodayCardShelf(shelf)}
+
+{:else if isTitledParagraphShelf(shelf)}
+
+{:else if isUberShelf(shelf)}
+
+{:else if isMarkerShelf(shelf)}
+
+{:else if isFallbackShelf(shelf)}
+
+{/if}
diff --git a/src/components/jet/shelf/SmallBreakoutShelf.svelte b/src/components/jet/shelf/SmallBreakoutShelf.svelte
new file mode 100644
index 0000000..095cf7f
--- /dev/null
+++ b/src/components/jet/shelf/SmallBreakoutShelf.svelte
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/SmallBrickShelf.svelte b/src/components/jet/shelf/SmallBrickShelf.svelte
new file mode 100644
index 0000000..34426cf
--- /dev/null
+++ b/src/components/jet/shelf/SmallBrickShelf.svelte
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/shelf/SmallLockupShelf.svelte b/src/components/jet/shelf/SmallLockupShelf.svelte
new file mode 100644
index 0000000..e286671
--- /dev/null
+++ b/src/components/jet/shelf/SmallLockupShelf.svelte
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+ {#if isSmallLockupWithOrdinalItem(item)}
+
+ {:else}
+
+ {/if}
+
+
diff --git a/src/components/jet/shelf/SmallStoryCardShelf.svelte b/src/components/jet/shelf/SmallStoryCardShelf.svelte
new file mode 100644
index 0000000..c1a85ad
--- /dev/null
+++ b/src/components/jet/shelf/SmallStoryCardShelf.svelte
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+ {#if isSmallStoryCardWithMediaRiver(item)}
+
+ {:else if isSmallStoryCardWithMediaAppIcon(item)}
+
+ {:else if isSmallStoryCardMediaBrandedSingleApp(item)}
+
+ {:else if isSmallStoryCardWithMediaItem(item)}
+
+ {:else if isSmallStoryCardWithArtworkItem(item)}
+
+ {/if}
+
+
diff --git a/src/components/jet/shelf/TitledParagraphShelf.svelte b/src/components/jet/shelf/TitledParagraphShelf.svelte
new file mode 100644
index 0000000..41c1d74
--- /dev/null
+++ b/src/components/jet/shelf/TitledParagraphShelf.svelte
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+ {#if shelf.title}
+
+ {/if}
+
+ {#if pageData}
+
+
+
+
+ {#each pageData.shelves as shelf}
+ {#each shelf.items || [] as item}
+ {#if isTitledParagraphItem(item)}
+ -
+
+
+ {/if}
+ {/each}
+ {/each}
+
+
+
+
+ {/if}
+
+
+ {#each shelf.items as item}
+
+ {/each}
+
+
+
diff --git a/src/components/jet/shelf/TodayCardShelf.svelte b/src/components/jet/shelf/TodayCardShelf.svelte
new file mode 100644
index 0000000..e872112
--- /dev/null
+++ b/src/components/jet/shelf/TodayCardShelf.svelte
@@ -0,0 +1,187 @@
+
+
+
+
+
+
+
= 2}
+ class:today-card-row__stretch-first-nowrap={shouldStretchFirstCardNoWrap &&
+ shelf.items.length >= 2}
+ class:today-card-row__stretch-last-wrap={!shouldStretchFirstCardWrap &&
+ shelf.items.length >= 2}
+ class:today-card-row__stretch-last-nowrap={!shouldStretchFirstCardNoWrap &&
+ shelf.items.length >= 2}
+ class:today-card-row__1-card={shelf.items.length == 1}
+ class:today-card-row__2-card={shelf.items.length == 2}
+ class:today-card-row__3-card={shelf.items.length == 3}
+ class:today-card-row__4-card={shelf.items.length >= 4}
+ >
+ {#each shelf.items.slice(0, 4) as card}
+
+
+
+ {/each}
+
+
+
+
+
diff --git a/src/components/jet/shelf/UberShelf.svelte b/src/components/jet/shelf/UberShelf.svelte
new file mode 100644
index 0000000..6cdf004
--- /dev/null
+++ b/src/components/jet/shelf/UberShelf.svelte
@@ -0,0 +1,40 @@
+
+
+
+
+{#if artwork}
+
+
+
+{/if}
+
+
diff --git a/src/components/jet/today-card/TodayCard.svelte b/src/components/jet/today-card/TodayCard.svelte
new file mode 100644
index 0000000..84d760f
--- /dev/null
+++ b/src/components/jet/today-card/TodayCard.svelte
@@ -0,0 +1,401 @@
+
+
+
+
+
+ {#if media && !useListStyle}
+
+ {/if}
+
+
+
+ {#if media && useListStyle}
+
+ {/if}
+
+
+
+
diff --git a/src/components/jet/today-card/TodayCardMedia.svelte b/src/components/jet/today-card/TodayCardMedia.svelte
new file mode 100644
index 0000000..99f444f
--- /dev/null
+++ b/src/components/jet/today-card/TodayCardMedia.svelte
@@ -0,0 +1,49 @@
+
+
+{#if isTodayCardMediaAppEvent(media)}
+
+{:else if isTodayCardMediAppIcon(media)}
+
+{:else if isTodayCardMediaBrandedSingleApp(media)}
+
+{:else if isTodayCardMediaList(media)}
+
+{:else if isTodayCardMediaWithArtwork(media)}
+
+{:else if isTodayCardMediaRiver(media)}
+
+{:else if isTodayCardMediaVideo(media)}
+
+{/if}
diff --git a/src/components/jet/today-card/TodayCardOverlay.svelte b/src/components/jet/today-card/TodayCardOverlay.svelte
new file mode 100644
index 0000000..4e3c405
--- /dev/null
+++ b/src/components/jet/today-card/TodayCardOverlay.svelte
@@ -0,0 +1,48 @@
+
+
+
+
+{#if isLockupOverlay(overlay)}
+
+
+
+{:else if isLockupListOverlay(overlay)}
+
+{/if}
+
+
diff --git a/src/components/jet/today-card/background-color-utils.ts b/src/components/jet/today-card/background-color-utils.ts
new file mode 100644
index 0000000..c2c0fe6
--- /dev/null
+++ b/src/components/jet/today-card/background-color-utils.ts
@@ -0,0 +1,54 @@
+import { type Optional, isSome } from '@jet/environment/types/optional';
+import type {
+ Color,
+ TodayCardMedia,
+ TodayCardMediaWithArtwork,
+} from '@jet-app/app-store/api/models';
+
+import { isTodayCardMediaBrandedSingleApp } from './media/TodayCardMediaBrandedSingleApp.svelte';
+import { isTodayCardMediaAppEvent } from './media/TodayCardMediaAppEvent.svelte';
+import { isTodayCardMediaWithArtwork } from './media/TodayCardMediaWithArtwork.svelte';
+
+const DEFAULT_COLOR: Color = {
+ type: 'named',
+ name: 'defaultBackground',
+};
+
+function getBackgroundFromMediaWithArtwork(
+ media: TodayCardMediaWithArtwork,
+): Optional {
+ return (
+ media.videos[0]?.preview.backgroundColor ??
+ media.artworks[0]?.backgroundColor
+ );
+}
+
+/**
+ * Onyx App Store alternative to the `bestBackgroundColor` method that exists on
+ * the {@linkcode TodayCardMedia} type
+ *
+ * This is necessary because the functions on those class instances are not
+ * carried over to the client when serializing the view-model, making them
+ * impossible to call in a consistent way from our codebase
+ */
+export function bestBackgroundColor(media: Optional): Color {
+ if (isSome(media)) {
+ if (isTodayCardMediaAppEvent(media)) {
+ return media.tintColor;
+ }
+
+ if (isTodayCardMediaBrandedSingleApp(media)) {
+ return (
+ getBackgroundFromMediaWithArtwork(media) ??
+ media.icon.backgroundColor ??
+ DEFAULT_COLOR
+ );
+ }
+
+ if (isTodayCardMediaWithArtwork(media)) {
+ return getBackgroundFromMediaWithArtwork(media) ?? DEFAULT_COLOR;
+ }
+ }
+
+ return DEFAULT_COLOR;
+}
diff --git a/src/components/jet/today-card/media/TodayCardMediaAppEvent.svelte b/src/components/jet/today-card/media/TodayCardMediaAppEvent.svelte
new file mode 100644
index 0000000..1faa933
--- /dev/null
+++ b/src/components/jet/today-card/media/TodayCardMediaAppEvent.svelte
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+
+
+ {#if media.videos.length > 0}
+
+ {:else if media.artworks.length > 0}
+
+ {/if}
+
+
+
+
diff --git a/src/components/jet/today-card/media/TodayCardMediaAppIcon.svelte b/src/components/jet/today-card/media/TodayCardMediaAppIcon.svelte
new file mode 100644
index 0000000..a6db985
--- /dev/null
+++ b/src/components/jet/today-card/media/TodayCardMediaAppIcon.svelte
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
diff --git a/src/components/jet/today-card/media/TodayCardMediaBrandedSingleApp.svelte b/src/components/jet/today-card/media/TodayCardMediaBrandedSingleApp.svelte
new file mode 100644
index 0000000..dfdaa0f
--- /dev/null
+++ b/src/components/jet/today-card/media/TodayCardMediaBrandedSingleApp.svelte
@@ -0,0 +1,41 @@
+
+
+
+
+{#if media.videos.length > 0}
+
+{:else if media.artworks.length > 0}
+
+{/if}
diff --git a/src/components/jet/today-card/media/TodayCardMediaList.svelte b/src/components/jet/today-card/media/TodayCardMediaList.svelte
new file mode 100644
index 0000000..00f8688
--- /dev/null
+++ b/src/components/jet/today-card/media/TodayCardMediaList.svelte
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+ {#each media.lockups as item}
+ -
+
+
+ {/each}
+
+
+
+
diff --git a/src/components/jet/today-card/media/TodayCardMediaRiver.svelte b/src/components/jet/today-card/media/TodayCardMediaRiver.svelte
new file mode 100644
index 0000000..d3f9666
--- /dev/null
+++ b/src/components/jet/today-card/media/TodayCardMediaRiver.svelte
@@ -0,0 +1,78 @@
+
+
+
+
+
+ {#if icons.length}
+
+ {/if}
+
+
+
diff --git a/src/components/jet/today-card/media/TodayCardMediaVideo.svelte b/src/components/jet/today-card/media/TodayCardMediaVideo.svelte
new file mode 100644
index 0000000..f2524c6
--- /dev/null
+++ b/src/components/jet/today-card/media/TodayCardMediaVideo.svelte
@@ -0,0 +1,72 @@
+
+
+
+
+{#if videoToDisplay}
+
+
+
+{/if}
+
+
diff --git a/src/components/jet/today-card/media/TodayCardMediaWithArtwork.svelte b/src/components/jet/today-card/media/TodayCardMediaWithArtwork.svelte
new file mode 100644
index 0000000..e604708
--- /dev/null
+++ b/src/components/jet/today-card/media/TodayCardMediaWithArtwork.svelte
@@ -0,0 +1,100 @@
+
+
+
+
+{#if artworkProfile}
+
+{:else}
+
+{/if}
+
+
diff --git a/src/components/jet/today-card/overlay/TodayCardLockupListOverlay.svelte b/src/components/jet/today-card/overlay/TodayCardLockupListOverlay.svelte
new file mode 100644
index 0000000..1e7d297
--- /dev/null
+++ b/src/components/jet/today-card/overlay/TodayCardLockupListOverlay.svelte
@@ -0,0 +1,42 @@
+
+
+
+
+
+ {#each overlay.lockups as lockup}
+
+
+
+ {/each}
+
+
+
diff --git a/src/components/jet/web-navigation/CategoryTabItem.svelte b/src/components/jet/web-navigation/CategoryTabItem.svelte
new file mode 100644
index 0000000..61f2570
--- /dev/null
+++ b/src/components/jet/web-navigation/CategoryTabItem.svelte
@@ -0,0 +1,67 @@
+
+
+-
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/jet/web-navigation/PlatformSelectorDropdown.svelte b/src/components/jet/web-navigation/PlatformSelectorDropdown.svelte
new file mode 100644
index 0000000..f0fe666
--- /dev/null
+++ b/src/components/jet/web-navigation/PlatformSelectorDropdown.svelte
@@ -0,0 +1,88 @@
+
+
+{#if activeSelector}
+
+{/if}
+
+
diff --git a/src/components/jet/web-navigation/PlatformSelectorItem.svelte b/src/components/jet/web-navigation/PlatformSelectorItem.svelte
new file mode 100644
index 0000000..9b72fda
--- /dev/null
+++ b/src/components/jet/web-navigation/PlatformSelectorItem.svelte
@@ -0,0 +1,97 @@
+
+
+
+
+ {#if isSome(artwork) && isSystemImageArtwork(artwork)}
+
+
+
+ {/if}
+
+
+ {action.title}
+
+
+ {#if action.destination && isSearchResultsPageIntent(action.destination)}
+
+
+
+ {/if}
+
+
+
+
--
cgit v1.2.3