@explorer-1/vue 0.0.0
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/LICENSE +21 -0
- package/README.md +9 -0
- package/components.d.ts +215 -0
- package/index.html +18 -0
- package/lib/main.ts +78 -0
- package/package.json +54 -0
- package/postcss.config.js +7 -0
- package/public/edu/.gitkeep +0 -0
- package/public/edu/explorer-1/bg-stars-edu.png +0 -0
- package/public/edu/explorer-1/bg-stars.jpg +0 -0
- package/public/explorer-1/bg-stars-edu.png +0 -0
- package/public/explorer-1/bg-stars.jpg +0 -0
- package/src/App.vue +30 -0
- package/src/assets/fonts/README.md +12 -0
- package/src/assets/fonts/archivo-narrow/ArchivoNarrow-Bold.woff2 +0 -0
- package/src/assets/fonts/archivo-narrow/ArchivoNarrow-BoldItalic.woff2 +0 -0
- package/src/assets/fonts/archivo-narrow/ArchivoNarrow-SemiBold.woff2 +0 -0
- package/src/assets/fonts/archivo-narrow/ArchivoNarrow-SemiBoldItalic.woff2 +0 -0
- package/src/assets/fonts/metropolis/Metropolis-Bold.woff2 +0 -0
- package/src/assets/fonts/metropolis/Metropolis-BoldItalic.woff2 +0 -0
- package/src/assets/fonts/metropolis/Metropolis-ExtraBold.woff2 +0 -0
- package/src/assets/fonts/metropolis/Metropolis-Medium.woff2 +0 -0
- package/src/assets/fonts/metropolis/Metropolis-MediumItalic.woff2 +0 -0
- package/src/assets/fonts/metropolis/Metropolis-Regular.woff2 +0 -0
- package/src/assets/fonts/metropolis/Metropolis-RegularItalic.woff2 +0 -0
- package/src/assets/fonts/metropolis/Metropolis-SemiBold.woff2 +0 -0
- package/src/assets/fonts/metropolis/Metropolis-SemiBoldItalic.woff2 +0 -0
- package/src/assets/scss/styles.scss +1 -0
- package/src/components/AsteroidWatchWidget/AsteroidWatchWidget.stories.js +156 -0
- package/src/components/AsteroidWatchWidget/AsteroidWatchWidget.vue +156 -0
- package/src/components/BackToTop/BackToTop.stories.js +24 -0
- package/src/components/BackToTop/BackToTop.vue +76 -0
- package/src/components/BaseAudio/BaseAudio.stories.js +29 -0
- package/src/components/BaseAudio/BaseAudio.vue +359 -0
- package/src/components/BaseButton/BaseButton.stories.ts +65 -0
- package/src/components/BaseButton/BaseButton.vue +114 -0
- package/src/components/BaseCheckboxGroup/BaseCheckboxGroup.stories.mdx +68 -0
- package/src/components/BaseCheckboxGroup/BaseCheckboxGroup.vue +101 -0
- package/src/components/BaseHeading/BaseHeading.stories.js +75 -0
- package/src/components/BaseHeading/BaseHeading.vue +58 -0
- package/src/components/BaseImage/BaseImage.stories.ts +52 -0
- package/src/components/BaseImage/BaseImage.vue +120 -0
- package/src/components/BaseImageCaption/BaseImageCaption.stories.js +27 -0
- package/src/components/BaseImageCaption/BaseImageCaption.vue +51 -0
- package/src/components/BaseImagePlaceholder/BaseImagePlaceholder.stories.js +73 -0
- package/src/components/BaseImagePlaceholder/BaseImagePlaceholder.vue +90 -0
- package/src/components/BaseLightboxCloseButton/BaseLightboxCloseButton.vue +45 -0
- package/src/components/BaseLightboxOpenButton/BaseLightboxOpenButton.vue +46 -0
- package/src/components/BaseLink/BaseLink.stories.js +47 -0
- package/src/components/BaseLink/BaseLink.vue +227 -0
- package/src/components/BaseModal/BaseModal.stories.js +90 -0
- package/src/components/BaseModal/BaseModal.vue +54 -0
- package/src/components/BaseModal/BaseModalDialog.vue +59 -0
- package/src/components/BasePlaceholder/BasePlaceholder.stories.js +29 -0
- package/src/components/BasePlaceholder/BasePlaceholder.vue +30 -0
- package/src/components/BaseRadioGroup/BaseRadioGroup.stories.mdx +68 -0
- package/src/components/BaseRadioGroup/BaseRadioGroup.vue +102 -0
- package/src/components/BaseSwimlane/BaseSwimlane.stories.mdx +64 -0
- package/src/components/BaseSwimlane/BaseSwimlane.vue +204 -0
- package/src/components/BaseTag/BaseTag.stories.js +34 -0
- package/src/components/BaseTag/BaseTag.vue +36 -0
- package/src/components/BaseTimer/BaseTimer.stories.js +78 -0
- package/src/components/BaseTimer/BaseTimer.test.js +15 -0
- package/src/components/BaseTimer/BaseTimer.vue +270 -0
- package/src/components/BaseUnitToggle/BaseUnitToggle.stories.js +86 -0
- package/src/components/BaseUnitToggle/BaseUnitToggle.test.js +26 -0
- package/src/components/BaseUnitToggle/BaseUnitToggle.vue +255 -0
- package/src/components/BaseVideo/BaseVideo.stories.js +31 -0
- package/src/components/BaseVideo/BaseVideo.vue +73 -0
- package/src/components/BlockAnchor/BlockAnchor.vue +38 -0
- package/src/components/BlockAudio/BlockAudio.stories.js +29 -0
- package/src/components/BlockAudio/BlockAudio.vue +78 -0
- package/src/components/BlockCard/BlockCard.stories.js +24 -0
- package/src/components/BlockCard/BlockCard.vue +88 -0
- package/src/components/BlockCardGroup/BlockCardGroup.stories.js +71 -0
- package/src/components/BlockCardGroup/BlockCardGroup.vue +61 -0
- package/src/components/BlockCircleImageCard/BlockCircleImageCard.stories.js +55 -0
- package/src/components/BlockCircleImageCard/BlockCircleImageCard.vue +120 -0
- package/src/components/BlockCta/BlockCta.stories.js +35 -0
- package/src/components/BlockCta/BlockCta.vue +55 -0
- package/src/components/BlockHeading/BlockHeading.stories.js +22 -0
- package/src/components/BlockHeading/BlockHeading.vue +27 -0
- package/src/components/BlockIframeEmbed/BlockIframeEmbed.stories.js +40 -0
- package/src/components/BlockIframeEmbed/BlockIframeEmbed.vue +84 -0
- package/src/components/BlockImage/BlockImage.stories.js +137 -0
- package/src/components/BlockImage/BlockImage.vue +48 -0
- package/src/components/BlockImage/BlockImageFullBleed.vue +119 -0
- package/src/components/BlockImage/BlockImageStandard.vue +106 -0
- package/src/components/BlockImageCarousel/BlockImageCarousel.stories.js +108 -0
- package/src/components/BlockImageCarousel/BlockImageCarousel.vue +201 -0
- package/src/components/BlockImageCarouselItem/BlockImageCarouselItem.stories.js +63 -0
- package/src/components/BlockImageCarouselItem/BlockImageCarouselItem.vue +120 -0
- package/src/components/BlockImageComparison/BlockImageComparison.stories.js +46 -0
- package/src/components/BlockImageComparison/BlockImageComparison.vue +59 -0
- package/src/components/BlockImageGallery/BlockImageGallery.stories.js +55 -0
- package/src/components/BlockImageGallery/BlockImageGallery.vue +128 -0
- package/src/components/BlockInlineImage/BlockInlineImage.stories.js +68 -0
- package/src/components/BlockInlineImage/BlockInlineImage.vue +124 -0
- package/src/components/BlockKeyPoints/BlockKeyPoints.stories.js +28 -0
- package/src/components/BlockKeyPoints/BlockKeyPoints.vue +48 -0
- package/src/components/BlockLinkCard/BlockLinkCard.stories.js +102 -0
- package/src/components/BlockLinkCard/BlockLinkCard.vue +197 -0
- package/src/components/BlockLinkCarousel/BlockLinkCarousel.stories.js +217 -0
- package/src/components/BlockLinkCarousel/BlockLinkCarousel.vue +68 -0
- package/src/components/BlockLinkTile/BlockLinkTile.stories.js +72 -0
- package/src/components/BlockLinkTile/BlockLinkTile.vue +193 -0
- package/src/components/BlockListCards/BlockListCards.stories.js +69 -0
- package/src/components/BlockListCards/BlockListCards.vue +129 -0
- package/src/components/BlockQuote/BlockQuote.stories.js +84 -0
- package/src/components/BlockQuote/BlockQuote.vue +87 -0
- package/src/components/BlockRelatedLinks/BlockRelatedLinks.stories.js +60 -0
- package/src/components/BlockRelatedLinks/BlockRelatedLinks.vue +77 -0
- package/src/components/BlockRelatedLinks/RelatedLink.vue +85 -0
- package/src/components/BlockStreamfield/BlockStreamfield.stories.js +88 -0
- package/src/components/BlockStreamfield/BlockStreamfield.vue +333 -0
- package/src/components/BlockTable/BlockTable.stories.js +20 -0
- package/src/components/BlockTable/BlockTable.vue +73 -0
- package/src/components/BlockTeaser/BlockTeaser.stories.js +74 -0
- package/src/components/BlockTeaser/BlockTeaser.test.js +12 -0
- package/src/components/BlockTeaser/BlockTeaser.vue +174 -0
- package/src/components/BlockText/BlockText.stories.js +21 -0
- package/src/components/BlockText/BlockText.vue +44 -0
- package/src/components/BlockTwitterEmbed/BlockTwitterEmbed.stories.js +19 -0
- package/src/components/BlockTwitterEmbed/BlockTwitterEmbed.vue +61 -0
- package/src/components/BlockVideo/BlockVideo.stories.js +23 -0
- package/src/components/BlockVideo/BlockVideo.vue +41 -0
- package/src/components/BlockVideoEmbed/BlockVideoEmbed.stories.js +20 -0
- package/src/components/BlockVideoEmbed/BlockVideoEmbed.vue +71 -0
- package/src/components/CalendarButton/CalendarButton.stories.js +36 -0
- package/src/components/CalendarButton/CalendarButton.vue +86 -0
- package/src/components/DetailHeadline/DetailHeadline.stories.js +48 -0
- package/src/components/DetailHeadline/DetailHeadline.vue +143 -0
- package/src/components/DsnWidget/DsnWidget.stories.js +29 -0
- package/src/components/DsnWidget/DsnWidget.vue +96 -0
- package/src/components/EventCard/EventCard.vue +188 -0
- package/src/components/EventDetailHero/EventDetailHero.stories.js +53 -0
- package/src/components/EventDetailHero/EventDetailHero.vue +64 -0
- package/src/components/FormContact/FormContact.stories.js +16 -0
- package/src/components/FormContact/FormContact.vue +202 -0
- package/src/components/FormNewsletterSignup/FormNewsletterSignup.stories.js +16 -0
- package/src/components/FormNewsletterSignup/FormNewsletterSignup.vue +355 -0
- package/src/components/HeroLarge/HeroLarge.stories.js +46 -0
- package/src/components/HeroLarge/HeroLarge.vue +93 -0
- package/src/components/HeroListingIndex/HeroListingIndex.stories.js +156 -0
- package/src/components/HeroListingIndex/HeroListingIndex.vue +80 -0
- package/src/components/HeroMedia/HeroMedia.stories.js +135 -0
- package/src/components/HeroMedia/HeroMedia.vue +174 -0
- package/src/components/HeroMedium/HeroMedium.stories.js +73 -0
- package/src/components/HeroMedium/HeroMedium.vue +166 -0
- package/src/components/HomepageCarousel/HomepageCarousel.stories.js +112 -0
- package/src/components/HomepageCarousel/HomepageCarousel.vue +382 -0
- package/src/components/HomepageCarouselItem/HomepageCarouselItem.stories.js +60 -0
- package/src/components/HomepageCarouselItem/HomepageCarouselItem.vue +168 -0
- package/src/components/HomepageEmbedBlock/HomepageEmbedBlock.stories.js +35 -0
- package/src/components/HomepageEmbedBlock/HomepageEmbedBlock.vue +39 -0
- package/src/components/HomepageFeaturedRobot/HomepageFeaturedRobot.stories.js +93 -0
- package/src/components/HomepageFeaturedRobot/HomepageFeaturedRobot.vue +129 -0
- package/src/components/HomepageMissionsCarousel/HomepageMissionsCarousel.stories.js +153 -0
- package/src/components/HomepageMissionsCarousel/HomepageMissionsCarousel.vue +282 -0
- package/src/components/HomepageMissionsCarousel/HomepageMissionsCarouselItem.vue +143 -0
- package/src/components/HomepageStats/HomepageStats.stories.js +155 -0
- package/src/components/HomepageStats/HomepageStats.vue +362 -0
- package/src/components/HomepageTeaserBlock/HomepageTeaserBlock.stories.js +90 -0
- package/src/components/HomepageTeaserBlock/HomepageTeaserBlock.vue +156 -0
- package/src/components/HomepageTeaserBlock/HomepageTeaserBlockCardImage.vue +58 -0
- package/src/components/Icons/Icon360.vue +29 -0
- package/src/components/Icons/IconArrow.vue +26 -0
- package/src/components/Icons/IconArrows.vue +43 -0
- package/src/components/Icons/IconAudio.vue +27 -0
- package/src/components/Icons/IconBook.vue +21 -0
- package/src/components/Icons/IconBookUser.vue +21 -0
- package/src/components/Icons/IconBriefcase.vue +21 -0
- package/src/components/Icons/IconCalendar.vue +25 -0
- package/src/components/Icons/IconCaret.vue +26 -0
- package/src/components/Icons/IconCheckbox.vue +26 -0
- package/src/components/Icons/IconCheckboxSelected.vue +35 -0
- package/src/components/Icons/IconClose.vue +27 -0
- package/src/components/Icons/IconCloseLightbox.vue +25 -0
- package/src/components/Icons/IconDownload.vue +31 -0
- package/src/components/Icons/IconDropdown.vue +25 -0
- package/src/components/Icons/IconEnvelope.vue +21 -0
- package/src/components/Icons/IconExpand.vue +28 -0
- package/src/components/Icons/IconExternal.vue +25 -0
- package/src/components/Icons/IconFilter.vue +25 -0
- package/src/components/Icons/IconForwardTen.vue +38 -0
- package/src/components/Icons/IconGrid.vue +25 -0
- package/src/components/Icons/IconHand.vue +21 -0
- package/src/components/Icons/IconInfo.vue +26 -0
- package/src/components/Icons/IconLink.vue +27 -0
- package/src/components/Icons/IconList.vue +25 -0
- package/src/components/Icons/IconLocation.vue +37 -0
- package/src/components/Icons/IconMagnifyingGlass.vue +21 -0
- package/src/components/Icons/IconMedal.vue +21 -0
- package/src/components/Icons/IconMenu.vue +27 -0
- package/src/components/Icons/IconMinus.vue +26 -0
- package/src/components/Icons/IconMute.vue +27 -0
- package/src/components/Icons/IconNext.vue +25 -0
- package/src/components/Icons/IconPause.vue +28 -0
- package/src/components/Icons/IconPlay.vue +28 -0
- package/src/components/Icons/IconPlus.vue +25 -0
- package/src/components/Icons/IconPrev.vue +25 -0
- package/src/components/Icons/IconRewindTen.vue +42 -0
- package/src/components/Icons/IconSearch.vue +25 -0
- package/src/components/Icons/IconShare.vue +30 -0
- package/src/components/Icons/IconSlideshow.vue +30 -0
- package/src/components/Icons/IconSocialEmail.vue +26 -0
- package/src/components/Icons/IconSocialFacebook.vue +26 -0
- package/src/components/Icons/IconSocialGoogleClassroom.vue +26 -0
- package/src/components/Icons/IconSocialInstagram.vue +35 -0
- package/src/components/Icons/IconSocialPinterest.vue +26 -0
- package/src/components/Icons/IconSocialReddit.vue +25 -0
- package/src/components/Icons/IconSocialTwitter.vue +25 -0
- package/src/components/Icons/IconSocialYoutube.vue +35 -0
- package/src/components/Icons/IconStop.vue +27 -0
- package/src/components/Icons/IconTime.vue +25 -0
- package/src/components/Icons/IconUniversity.vue +21 -0
- package/src/components/Icons/IconUser.vue +26 -0
- package/src/components/Icons/IconVolume.vue +27 -0
- package/src/components/Icons/Icons.stories.ts +440 -0
- package/src/components/ImageDetailContextImage/ImageDetailContextImage.vue +125 -0
- package/src/components/LayoutHelper/LayoutHelper.vue +38 -0
- package/src/components/LoadingTransition/LoadingTransition.vue +48 -0
- package/src/components/LogoCaltech/LogoCaltech.stories.js +39 -0
- package/src/components/LogoCaltech/LogoCaltech.vue +29 -0
- package/src/components/LogoTribrand/LogoTribrand.stories.js +76 -0
- package/src/components/LogoTribrand/LogoTribrand.vue +93 -0
- package/src/components/MissionDetailAbout/MissionDetailAbout.stories.js +70 -0
- package/src/components/MissionDetailAbout/MissionDetailAbout.vue +204 -0
- package/src/components/MissionDetailHero/MissionDetailHero.stories.js +303 -0
- package/src/components/MissionDetailHero/MissionDetailHero.vue +292 -0
- package/src/components/MissionDetailHighlights/MissionDetailHighlights.stories.js +278 -0
- package/src/components/MissionDetailHighlights/MissionDetailHighlights.vue +332 -0
- package/src/components/MissionDetailHighlights/MissionDetailHighlightsCarousel.vue +160 -0
- package/src/components/MissionDetailHighlights/MissionDetailHighlightsCarouselItem.vue +123 -0
- package/src/components/MissionDetailInlineImage/MissionDetailInlineImage.stories.js +43 -0
- package/src/components/MissionDetailInlineImage/MissionDetailInlineImage.vue +97 -0
- package/src/components/MissionDetailStats/DistanceStats.test.js +133 -0
- package/src/components/MissionDetailStats/DistanceStats.vue +250 -0
- package/src/components/MissionDetailStats/MissionDetailStats.stories.js +95 -0
- package/src/components/MissionDetailStats/MissionDetailStats.test.js +23 -0
- package/src/components/MissionDetailStats/MissionDetailStats.vue +187 -0
- package/src/components/MissionDetailStats/MissionDetailStatsMicro.vue +52 -0
- package/src/components/MissionDetailStats/MissionDetailStatsMini.vue +109 -0
- package/src/components/MissionDetailStreamfield/MissionDetailStreamfield.stories.js +55 -0
- package/src/components/MissionDetailStreamfield/MissionDetailStreamfield.vue +95 -0
- package/src/components/MixinAnimationCaret/MixinAnimationCaret.stories.ts +24 -0
- package/src/components/MixinAnimationCaret/MixinAnimationCaret.vue +81 -0
- package/src/components/MixinCarousel/MixinCarousel.docs.mdx +33 -0
- package/src/components/MixinCarousel/MixinCarousel.stories.js +53 -0
- package/src/components/MixinCarousel/MixinCarousel.vue +236 -0
- package/src/components/MixinDropdownToggle/MixinDropdownToggle.vue +53 -0
- package/src/components/MixinFancybox/MixinFancybox.vue +405 -0
- package/src/components/MixinFancybox/MixinFancyboxOpenButton.vue +35 -0
- package/src/components/MixinVideoBg/MixinVideoBg.stories.js +23 -0
- package/src/components/MixinVideoBg/MixinVideoBg.vue +39 -0
- package/src/components/NavDesktop/NavDesktop.stories.js +254 -0
- package/src/components/NavDesktop/NavDesktop.vue +355 -0
- package/src/components/NavDesktop/NavDesktopDropdown.vue +201 -0
- package/src/components/NavDesktop/NavDesktopDropdownContent.vue +87 -0
- package/src/components/NavDesktop/NavDesktopDropdownMore.vue +112 -0
- package/src/components/NavDesktop/NavDesktopTopHat.vue +56 -0
- package/src/components/NavHeading/NavHeading.stories.js +23 -0
- package/src/components/NavHeading/NavHeading.vue +40 -0
- package/src/components/NavHighlight/NavHighlight.stories.js +42 -0
- package/src/components/NavHighlight/NavHighlight.vue +67 -0
- package/src/components/NavLinkList/NavLinkList.stories.js +46 -0
- package/src/components/NavLinkList/NavLinkList.vue +66 -0
- package/src/components/NavLogoLinks/NavLogoLinks.stories.js +22 -0
- package/src/components/NavLogoLinks/NavLogoLinks.vue +57 -0
- package/src/components/NavMobile/NavMobile.stories.js +231 -0
- package/src/components/NavMobile/NavMobile.vue +280 -0
- package/src/components/NavMobile/NavMobileDropdown.vue +175 -0
- package/src/components/NavMobile/NavMobileLink.vue +69 -0
- package/src/components/NavMobile/NavMobileSecondaryDropdown.vue +124 -0
- package/src/components/NavSearchForm/NavSearchForm.stories.js +13 -0
- package/src/components/NavSearchForm/NavSearchForm.vue +102 -0
- package/src/components/NavSecondary/NavSecondary.stories.js +24 -0
- package/src/components/NavSecondary/NavSecondary.vue +191 -0
- package/src/components/NavSecondary/NavSecondaryDropdown.vue +181 -0
- package/src/components/NavSecondary/NavSecondaryDropdownContent.vue +140 -0
- package/src/components/NavSecondary/NavSecondaryLink.vue +62 -0
- package/src/components/NavSocial/NavSocial.stories.js +20 -0
- package/src/components/NavSocial/NavSocial.vue +97 -0
- package/src/components/NewsDetailMediaContact/NewsDetailMediaContact.stories.js +60 -0
- package/src/components/NewsDetailMediaContact/NewsDetailMediaContact.test.js +30 -0
- package/src/components/NewsDetailMediaContact/NewsDetailMediaContact.vue +73 -0
- package/src/components/ParallaxContainer/ParallaxContainer.stories.js +47 -0
- package/src/components/ParallaxContainer/ParallaxContainer.vue +76 -0
- package/src/components/ParallaxElement/ParallaxElement.vue +25 -0
- package/src/components/PastEventsCarousel/PastEventsCarousel.vue +86 -0
- package/src/components/PodcastEpisodeCard/PodcastEpisodeCard.vue +251 -0
- package/src/components/PodcastSeriesCarousel/PodcastSeriesCarousel.stories.js +235 -0
- package/src/components/PodcastSeriesCarousel/PodcastSeriesCarousel.vue +171 -0
- package/src/components/ProfileDetailSectionGroup/ProfileDetailSectionGroup.vue +84 -0
- package/src/components/RoboticsDetailStats/RoboticsDetailStats.stories.js +97 -0
- package/src/components/RoboticsDetailStats/RoboticsDetailStats.test.js +21 -0
- package/src/components/RoboticsDetailStats/RoboticsDetailStats.vue +217 -0
- package/src/components/RoboticsDetailStats/RoboticsDetailStatsMini.vue +182 -0
- package/src/components/SearchFilterGroup/SearchFilterGroup.stories.js +59 -0
- package/src/components/SearchFilterGroup/SearchFilterGroup.vue +221 -0
- package/src/components/SearchInput/SearchInput.stories.js +35 -0
- package/src/components/SearchInput/SearchInput.vue +93 -0
- package/src/components/SearchPagination/SearchPagination.stories.js +55 -0
- package/src/components/SearchPagination/SearchPagination.vue +173 -0
- package/src/components/SearchResultCard/SearchResultCard.stories.js +57 -0
- package/src/components/SearchResultCard/SearchResultCard.vue +282 -0
- package/src/components/SearchResultGridItem/SearchResultGridItem.stories.js +70 -0
- package/src/components/SearchResultGridItem/SearchResultGridItem.vue +140 -0
- package/src/components/SearchResultsList/SearchResultsList.vue +183 -0
- package/src/components/SearchSelectMenu/SearchSelectMenu.stories.js +25 -0
- package/src/components/SearchSelectMenu/SearchSelectMenu.vue +86 -0
- package/src/components/ShareButtons/ShareButtons.stories.js +16 -0
- package/src/components/ShareButtons/ShareButtons.vue +132 -0
- package/src/components/ShareButtonsEdu/ShareButtonsEdu.stories.js +14 -0
- package/src/components/ShareButtonsEdu/ShareButtonsEdu.vue +215 -0
- package/src/components/SkipLink/SkipLink.stories.js +9 -0
- package/src/components/SkipLink/SkipLink.vue +53 -0
- package/src/components/SwimlaneCTA/SwimlaneCTA.stories.mdx +77 -0
- package/src/components/SwimlaneCTA/SwimlaneCTA.vue +281 -0
- package/src/components/TheFooter/TheFooter.stories.js +602 -0
- package/src/components/TheFooter/TheFooter.vue +228 -0
- package/src/components/TheFooter/TheFooterSignUp.vue +61 -0
- package/src/components/ThumbnailCarousel/ThumbnailCarousel.stories.js +106 -0
- package/src/components/ThumbnailCarousel/ThumbnailCarousel.vue +76 -0
- package/src/components/TopicDetailMissionCarousel/TopicDetailMissionCarousel.stories.js +93 -0
- package/src/components/TopicDetailMissionCarousel/TopicDetailMissionCarousel.vue +68 -0
- package/src/components/TopicDetailMissionCarouselItem/TopicDetailMissionCarouselItem.stories.js +38 -0
- package/src/components/TopicDetailMissionCarouselItem/TopicDetailMissionCarouselItem.vue +104 -0
- package/src/components/TopicDetailMissionSpotlight/TopicDetailMissionSpotlight.stories.js +84 -0
- package/src/components/TopicDetailMissionSpotlight/TopicDetailMissionSpotlight.vue +112 -0
- package/src/components/TopicDetailMore/TopicDetailMore.stories.js +221 -0
- package/src/components/TopicDetailMore/TopicDetailMore.vue +124 -0
- package/src/components/TopicDetailMore/TopicDetailMoreVisibility.vue +51 -0
- package/src/components/TopicDetailMoreItem/TopicDetailMoreItem.stories.js +116 -0
- package/src/components/TopicDetailMoreItem/TopicDetailMoreItem.vue +130 -0
- package/src/components/TopicDetailStreamfield/TopicDetailStreamfield.stories.js +34 -0
- package/src/components/TopicDetailStreamfield/TopicDetailStreamfield.vue +98 -0
- package/src/components/YearTicker/YearTicker.stories.js +37 -0
- package/src/components/YearTicker/YearTicker.vue +132 -0
- package/src/docs/foundation/DynamicTokens.vue +106 -0
- package/src/docs/foundation/FontVariants.vue +80 -0
- package/src/docs/foundation/color.docs.mdx +112 -0
- package/src/docs/foundation/grid.docs.mdx +189 -0
- package/src/docs/foundation/grid.stories.js +263 -0
- package/src/docs/foundation/grid_layouthelpers.docs.mdx +78 -0
- package/src/docs/foundation/grid_layouthelpers.stories.js +53 -0
- package/src/docs/foundation/themes.docs.mdx +71 -0
- package/src/docs/foundation/themes.stories.js +63 -0
- package/src/docs/foundation/typography.docs.mdx +50 -0
- package/src/docs/foundation/typography.stories.js +119 -0
- package/src/interfaces.ts +129 -0
- package/src/main.ts +34 -0
- package/src/store/header.ts +40 -0
- package/src/store/theme.ts +27 -0
- package/src/templates/PageContent/PageContent.stories.js +92 -0
- package/src/templates/PageContent/PageContent.vue +140 -0
- package/src/templates/PageEventDetail/PageEventDetail.stories.js +104 -0
- package/src/templates/PageEventDetail/PageEventDetail.vue +358 -0
- package/src/templates/PageNewsDetail/PageNewsDetail.stories.js +158 -0
- package/src/templates/PageNewsDetail/PageNewsDetail.vue +242 -0
- package/src/templates/edu/PageEduNewsDetail.stories.js +64 -0
- package/src/templates/edu/PageEduNewsDetail.vue +155 -0
- package/src/templates/www/HomePage/HomePage.vue +30 -0
- package/src/utils/dayjs.js +32 -0
- package/src/utils/filters.js +33 -0
- package/src/utils/mixins.ts +353 -0
- package/src/vite-env.d.ts +1 -0
- package/tailwind.config.js +24 -0
- package/tsconfig.json +29 -0
- package/tsconfig.node.json +11 -0
- package/vite.config.ts +55 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="Fonts md:grid-cols-2 grid gap-2 mt-4">
|
|
3
|
+
<div>
|
|
4
|
+
<h3
|
|
5
|
+
id="primary"
|
|
6
|
+
class="inline-block align-top mr-4 font-primary"
|
|
7
|
+
>
|
|
8
|
+
Metropolis
|
|
9
|
+
<br />
|
|
10
|
+
<code class="text-base">.font-primary</code>
|
|
11
|
+
</h3>
|
|
12
|
+
<ol class="list-none inline-block">
|
|
13
|
+
<li>
|
|
14
|
+
<span class="leading-loose">
|
|
15
|
+
<span class="capitalize font-primary font-light"> Metropolis light </span>
|
|
16
|
+
<code>.font-light</code>
|
|
17
|
+
</span>
|
|
18
|
+
</li>
|
|
19
|
+
<li>
|
|
20
|
+
<span class="leading-loose">
|
|
21
|
+
<span class="capitalize font-primary font-normal"> Metropolis normal </span>
|
|
22
|
+
<code>.font-normal</code>
|
|
23
|
+
</span>
|
|
24
|
+
</li>
|
|
25
|
+
<li>
|
|
26
|
+
<span class="leading-loose">
|
|
27
|
+
<span class="capitalize font-primary font-medium"> Metropolis medium </span>
|
|
28
|
+
<code>.font-medium</code>
|
|
29
|
+
</span>
|
|
30
|
+
</li>
|
|
31
|
+
<li>
|
|
32
|
+
<span class="leading-loose">
|
|
33
|
+
<span class="capitalize font-primary font-semibold"> Metropolis semi bold </span>
|
|
34
|
+
<code>.font-semibold</code>
|
|
35
|
+
</span>
|
|
36
|
+
</li>
|
|
37
|
+
<li>
|
|
38
|
+
<span class="leading-loose">
|
|
39
|
+
<span class="capitalize font-primary font-bold">Metropolis bold</span>
|
|
40
|
+
<code>.font-bold</code>
|
|
41
|
+
</span>
|
|
42
|
+
</li>
|
|
43
|
+
<li>
|
|
44
|
+
<span class="leading-loose">
|
|
45
|
+
<span class="capitalize font-primary font-extrabold"> Metropolis extra bold </span>
|
|
46
|
+
<code>.font-extrabold</code>
|
|
47
|
+
</span>
|
|
48
|
+
</li>
|
|
49
|
+
</ol>
|
|
50
|
+
</div>
|
|
51
|
+
<div>
|
|
52
|
+
<h3
|
|
53
|
+
id="secondary"
|
|
54
|
+
class="inline-block align-top mr-4 font-secondary"
|
|
55
|
+
>
|
|
56
|
+
Archivo Narrow
|
|
57
|
+
<br />
|
|
58
|
+
<code class="text-base">.font-secondary</code>
|
|
59
|
+
</h3>
|
|
60
|
+
<ol class="list-none inline-block">
|
|
61
|
+
<li></li>
|
|
62
|
+
<li></li>
|
|
63
|
+
<li></li>
|
|
64
|
+
<li>
|
|
65
|
+
<span class="leading-loose">
|
|
66
|
+
<span class="capitalize font-secondary font-semibold"> Archivo Narrow semi bold </span>
|
|
67
|
+
<code>.font-semibold</code>
|
|
68
|
+
</span>
|
|
69
|
+
</li>
|
|
70
|
+
<li>
|
|
71
|
+
<span class="leading-loose">
|
|
72
|
+
<span class="capitalize font-secondary font-bold"> Archivo Narrow bold </span>
|
|
73
|
+
<code>.font-bold</code>
|
|
74
|
+
</span>
|
|
75
|
+
</li>
|
|
76
|
+
<li></li>
|
|
77
|
+
</ol>
|
|
78
|
+
</div>
|
|
79
|
+
</div>
|
|
80
|
+
</template>
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { Meta, Story, Canvas } from '@storybook/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title="Foundation/Colors" />
|
|
4
|
+
|
|
5
|
+
# Colors
|
|
6
|
+
|
|
7
|
+
- [Brand Colors](#brand-colors)
|
|
8
|
+
- [Functional Gray Tones](#functional-gray-tones)
|
|
9
|
+
- [Semantic Colors](#semantic-colors)
|
|
10
|
+
- [Tokens](#tokens)
|
|
11
|
+
|
|
12
|
+
<span id="brand-colors"></span>
|
|
13
|
+
|
|
14
|
+
## Brand Colors
|
|
15
|
+
|
|
16
|
+
Each of these foundation colors has specific usage scenarios.
|
|
17
|
+
|
|
18
|
+
| Color | Name | Token |
|
|
19
|
+
| :---------------------------------------- | :------------- | :--------------- |
|
|
20
|
+
| <div class="bg-jpl-red-light p-4"></div> | JPL Red Light | `jpl-red-light` |
|
|
21
|
+
| <div class="bg-jpl-red p-4"></div> | JPL Red | `jpl-red` |
|
|
22
|
+
| <div class="bg-jpl-red-dark p-4"></div> | JPL Red Dark | `jpl-red-dark` |
|
|
23
|
+
| <div class="bg-jpl-red-darker p-4"></div> | JPL Red Darker | `jpl-red-darker` |
|
|
24
|
+
| <div class="bg-jpl-aqua p-4"></div> | JPL Aqua | `aqua` |
|
|
25
|
+
| <div class="bg-blue p-4"></div> | Blue | `blue` |
|
|
26
|
+
| <div class="bg-dark-blue p-4"></div> | Dark Blue | `dark-blue` |
|
|
27
|
+
| <div class="bg-green p-4"></div> | Green | `green` |
|
|
28
|
+
|
|
29
|
+
### Reserved for Internal Use
|
|
30
|
+
|
|
31
|
+
These colors should not be used on public-facing JPL websites.
|
|
32
|
+
|
|
33
|
+
| Color | Name | Token |
|
|
34
|
+
| :--------------------------------------------- | :------------------ | :-------------------- |
|
|
35
|
+
| <div class="bg-jpl-sky-blue-light p-4"></div> | JPL Sky Blue Light | `jpl-sky-blue-light` |
|
|
36
|
+
| <div class="bg-jpl-sky-blue p-4"></div> | JPL Sky Blue | `jpl-sky-blue` |
|
|
37
|
+
| <div class="bg-jpl-sky-blue-dark p-4"></div> | JPL Sky Blue Dark | `jpl-sky-blue-dark` |
|
|
38
|
+
| <div class="bg-jpl-sky-blue-darker p-4"></div> | JPL Sky Blue Darker | `jpl-sky-blue-darker` |
|
|
39
|
+
|
|
40
|
+
### Reserved for EDU Use
|
|
41
|
+
|
|
42
|
+
These colors should not be used on public-facing JPL websites.
|
|
43
|
+
|
|
44
|
+
| Color | Name | Token |
|
|
45
|
+
| :------------------------------------------- | :---------------- | :------------------ |
|
|
46
|
+
| <div class="bg-jpl-purple-light p-4"></div> | JPL Purple Light | `jpl-purple-light` |
|
|
47
|
+
| <div class="bg-jpl-purple p-4"></div> | JPL Purple | `jpl-purple` |
|
|
48
|
+
| <div class="bg-jpl-purple-dark p-4"></div> | JPL Purple Dark | `jpl-purple-dark` |
|
|
49
|
+
| <div class="bg-jpl-purple-darker p-4"></div> | JPL Purple Darker | `jpl-purple-darker` |
|
|
50
|
+
| <div class="bg-jpl-teal-light p-4"></div> | JPL Teal Light | `jpl-teal-light` |
|
|
51
|
+
| <div class="bg-jpl-teal p-4"></div> | JPL Teal | `jpl-teal` |
|
|
52
|
+
| <div class="bg-jpl-teal-dark p-4"></div> | JPL Teal Dark | `jpl-teal-dark` |
|
|
53
|
+
| <div class="bg-jpl-teal-darker p-4"></div> | JPL Teal Darker | `jpl-teal-darker` |
|
|
54
|
+
|
|
55
|
+
<span id="functional-gray-tones"></span>
|
|
56
|
+
|
|
57
|
+
## Functional Gray Tones
|
|
58
|
+
|
|
59
|
+
Grayscale colors are used throughout the site for text and layout.
|
|
60
|
+
|
|
61
|
+
| Color | Name | Token | Value |
|
|
62
|
+
| :---------------------------------------- | :------------- | :--------------- | :-------- |
|
|
63
|
+
| <div class="bg-white p-4"></div> | White | `white` | `#FFFFFF` |
|
|
64
|
+
| <div class="bg-off-white p-4"></div> | Off White | `off-white` | `#FAFAFA` |
|
|
65
|
+
| <div class="bg-gray-light p-4"></div> | Gray Light | `gray-light` | `#F5F5F5` |
|
|
66
|
+
| <div class="bg-gray-light-mid p-4"></div> | Gray Light Mid | `gray-light-mid` | `#D8D8D8` |
|
|
67
|
+
| <div class="bg-gray-mid p-4"></div> | Gray Mid | `gray-mid` | `#949494` |
|
|
68
|
+
| <div class="bg-gray-mid-dark p-4"></div> | Gray Mid Dark | `gray-mid-dark` | `#6F6F6F` |
|
|
69
|
+
| <div class="bg-gray-dark p-4"></div> | Gray Dark | `gray-dark` | `#222222` |
|
|
70
|
+
| <div class="bg-black p-4"></div> | Black | `black` | `#000000` |
|
|
71
|
+
|
|
72
|
+
Although several gradations are available via Tailwind CSS classes, make sure to only use the intended colors for text:
|
|
73
|
+
|
|
74
|
+
- <div class="w-3 h-3 bg-gray-dark inline-block"></div>
|
|
75
|
+
<code>.text-gray-dark</code>
|
|
76
|
+
- <div class="w-3 h-3 bg-gray-mid-dark inline-block"></div>
|
|
77
|
+
<code>.text-gray-mid-dark</code>
|
|
78
|
+
- <div class="w-3 h-3 bg-gray-mid inline-block"></div>
|
|
79
|
+
<code>.text-gray-mid</code>
|
|
80
|
+
|
|
81
|
+
<span id="semantic-colors"></span>
|
|
82
|
+
|
|
83
|
+
## Semantic Colors
|
|
84
|
+
|
|
85
|
+
Recommended for use in forms, alerts, or any element meant to communicate a state.
|
|
86
|
+
|
|
87
|
+
**Note:** Color should never be the _only_ means used to convey state information;
|
|
88
|
+
it must always be accompanied by text or iconography that makes it clear for colorblind users.
|
|
89
|
+
|
|
90
|
+
| Color | Name | Token | Value |
|
|
91
|
+
| :--------------------------------------------- | :------------------ | :-------------------- | :-------- |
|
|
92
|
+
| <div class="bg-alert-gold p-4"></div> | Alert Gold | `alert-gold` | `#FFBA32` |
|
|
93
|
+
| <div class="bg-alert-gold-light p-4"></div> | Alert Gold Light | `alert-gold-light` | `#FFF9EB` |
|
|
94
|
+
| <div class="bg-disabled-gray p-4"></div> | Disabled Gray | `disabled-gray` | `#D8D8D8` |
|
|
95
|
+
| <div class="bg-error-red p-4"></div> | Error Red | `error-red` | `#C1152E` |
|
|
96
|
+
| <div class="bg-error-red-light p-4"></div> | Error Red Light | `error-red-light` | `#FFE8EB` |
|
|
97
|
+
| <div class="bg-focus-blue p-4"></div> | Focus Blue | `focus-blue` | `#1871C9` |
|
|
98
|
+
| <div class="bg-focus-blue-light p-4"></div> | Focus Blue Light | `focus-blue-light` | `#E8F1FA` |
|
|
99
|
+
| <div class="bg-success-green p-4"></div> | Success Green | `success-green` | `#33A17B` |
|
|
100
|
+
| <div class="bg-success-green-light p-4"></div> | Success Green Light | `success-green-light` | `#E1F5EE` |
|
|
101
|
+
|
|
102
|
+
<span id="tokens"></span>
|
|
103
|
+
|
|
104
|
+
## Tokens
|
|
105
|
+
|
|
106
|
+
All colors are available via Tailwind CSS classes using tokens:
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
.bg-{token}
|
|
110
|
+
.text-{token}
|
|
111
|
+
.border-{token}
|
|
112
|
+
```
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { Meta, Story, Canvas } from '@storybook/blocks'
|
|
2
|
+
import * as Stories from './grid.stories'
|
|
3
|
+
|
|
4
|
+
<Meta of={Stories} />
|
|
5
|
+
|
|
6
|
+
# Grid and Layout
|
|
7
|
+
|
|
8
|
+
We use a 12-column grid paired with our [Responsive Design](?path=/docs/guides-responsive-design--docs) strategy to create all of our page and component layouts.
|
|
9
|
+
|
|
10
|
+
> The examples on this page assume you are viewing this page on a desktop. Examples may not appear correct on smaller screens.
|
|
11
|
+
|
|
12
|
+
- [BaseGrid](#basegrid)
|
|
13
|
+
- [Example Usage](#example-usage)
|
|
14
|
+
- [Mixed Bleed](#mixed-bleed)
|
|
15
|
+
- [Example Usage](#example-usage-1)
|
|
16
|
+
- [Page layout recommendations](#page-layout-recommendations)
|
|
17
|
+
- [Full Page Example](#full-page-example)
|
|
18
|
+
|
|
19
|
+
<span id="basegrid"></span>
|
|
20
|
+
|
|
21
|
+
## BaseGrid
|
|
22
|
+
|
|
23
|
+
There is a globally available `.BaseGrid` class that is the basis of our main grid, which contains `12` columns with a gutter of `gap-6`.
|
|
24
|
+
|
|
25
|
+
<Canvas
|
|
26
|
+
className="sbdocs-preview-full-width"
|
|
27
|
+
of={Stories.BaseGrid}
|
|
28
|
+
/>
|
|
29
|
+
|
|
30
|
+
Although `.BaseGrid` is always used with or wrapped by a `.container`, `.BaseGrid` itself does not include any margins or container behavior. This is to allow for maximum flexibility when using this class in your components:
|
|
31
|
+
|
|
32
|
+
```css
|
|
33
|
+
.BaseGrid {
|
|
34
|
+
@apply grid grid-cols-12 gap-6;
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Adjustments like margins and container can be applied as needed, such as:
|
|
39
|
+
|
|
40
|
+
```html
|
|
41
|
+
<div class="BaseGrid container mx-auto">Centered 12 col grid bound by container</div>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
If you just need a container and no grid, you can simply omit the `BaseGrid`:
|
|
45
|
+
|
|
46
|
+
```html
|
|
47
|
+
<div class="container mx-auto">Content with no grid</div>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
<span id="example-usage"></span>
|
|
51
|
+
|
|
52
|
+
### Example Usage
|
|
53
|
+
|
|
54
|
+
Some common component layouts:
|
|
55
|
+
|
|
56
|
+
<Canvas
|
|
57
|
+
className="sbdocs-preview-full-width"
|
|
58
|
+
of={Stories.ComponentA}
|
|
59
|
+
/>
|
|
60
|
+
|
|
61
|
+
<Canvas
|
|
62
|
+
className="sbdocs-preview-full-width"
|
|
63
|
+
of={Stories.ComponentB}
|
|
64
|
+
/>
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
<span id="mixed-bleed"></span>
|
|
69
|
+
|
|
70
|
+
## Mixed Bleed
|
|
71
|
+
|
|
72
|
+
Some components only bleed to one side of the screen. There is a `.MixedBleedGrid` class available for use that sets named grid lines. Note that these grid lines assume `.container` has zero padding.
|
|
73
|
+
|
|
74
|
+
| Named Line | Description |
|
|
75
|
+
| :---------------- | :----------------------------------- |
|
|
76
|
+
| `bleed-start` | Left edge of the viewport |
|
|
77
|
+
| `container-start` | Left edge of the standard container |
|
|
78
|
+
| `indent-col-2` | Aligns with column 2 in `BaseGrid` |
|
|
79
|
+
| `indent-col-3` | Aligns with column 3 in `BaseGrid` |
|
|
80
|
+
| `container-end` | Right edge of the standard container |
|
|
81
|
+
| `bleed-end` | Right edge of the viewport |
|
|
82
|
+
|
|
83
|
+
These named lines are used to construct the following `col-start-` and `col-end-` classes:
|
|
84
|
+
|
|
85
|
+
```css
|
|
86
|
+
@responsive {
|
|
87
|
+
.col-start-bleed {
|
|
88
|
+
grid-column-start: bleed-start;
|
|
89
|
+
}
|
|
90
|
+
.col-end-container-start {
|
|
91
|
+
grid-column-end: container-start;
|
|
92
|
+
}
|
|
93
|
+
.col-start-container {
|
|
94
|
+
grid-column-start: container-start;
|
|
95
|
+
}
|
|
96
|
+
.col-start-indent-col-2 {
|
|
97
|
+
grid-column-start: indent-col-2;
|
|
98
|
+
}
|
|
99
|
+
.col-start-indent-col-3 {
|
|
100
|
+
grid-column-start: indent-col-3;
|
|
101
|
+
}
|
|
102
|
+
.col-end-container {
|
|
103
|
+
grid-column-end: container-end;
|
|
104
|
+
}
|
|
105
|
+
.col-start-container-end {
|
|
106
|
+
grid-column-start: container-end;
|
|
107
|
+
}
|
|
108
|
+
.col-end-bleed {
|
|
109
|
+
grid-column-end: bleed-end;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Note the usage of `.px-0` in addition to `.container` in the example below:
|
|
115
|
+
|
|
116
|
+
<Canvas
|
|
117
|
+
className="sbdocs-preview-full-width"
|
|
118
|
+
of={Stories.MixedBleedGridLines}
|
|
119
|
+
/>
|
|
120
|
+
|
|
121
|
+
<span id="example-usage-1"></span>
|
|
122
|
+
|
|
123
|
+
### Example Usage
|
|
124
|
+
|
|
125
|
+
Responsive styles within MixedBleed will need to be determined on a case-by-base basis. Usage of this class is best followed by observing existing usage and examples.
|
|
126
|
+
|
|
127
|
+
#### Simple mixed bleed
|
|
128
|
+
|
|
129
|
+
Starts at `indent-col-2` (col-2 of the `BaseGrid`) and bleeds fully to the right.
|
|
130
|
+
|
|
131
|
+
```html
|
|
132
|
+
<div class="MixedBleedGrid">
|
|
133
|
+
<div class="col-start-indent-col-2 col-end-bleed">Indented to col-2 and bleeds right</div>
|
|
134
|
+
</div>
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
<Canvas
|
|
138
|
+
className="sbdocs-preview-full-width"
|
|
139
|
+
of={Stories.MixedBleed}
|
|
140
|
+
/>
|
|
141
|
+
|
|
142
|
+
#### Complex mixed bleed
|
|
143
|
+
|
|
144
|
+
When elements of an indented MixedBleed area must align with the BaseGrid, we need to get a bit more creative. We will still use mixed bleed grid lines, but we will not use `BaseGrid` within since the container is already indented. We instead need to use a custom grid for this use-case. Luckily, with Tailwind CSS, this is fairly straightforward. The nested grid should contain the number of columns offset by the amount that is already indented, and no `gap` should be used.
|
|
145
|
+
|
|
146
|
+
```html
|
|
147
|
+
<div class="MixedBleedGrid">
|
|
148
|
+
<div class="col-start-indent-col-3 col-end-container bg-black">
|
|
149
|
+
<div class="grid grid-cols-10">
|
|
150
|
+
<div class="col-start-2 col-end-7">Text aligned with apparent col 4</div>
|
|
151
|
+
<div class="col-start-7 col-end-11">Text aligned with apparent col 9</div>
|
|
152
|
+
</div>
|
|
153
|
+
</div>
|
|
154
|
+
<div class="col-start-container-end col-end-bleed bg-black"></div>
|
|
155
|
+
</div>
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
<Canvas
|
|
159
|
+
className="sbdocs-preview-full-width"
|
|
160
|
+
of={Stories.MixedBleedComplex}
|
|
161
|
+
/>
|
|
162
|
+
|
|
163
|
+
<span id="page-layout-recommendations"></span>
|
|
164
|
+
|
|
165
|
+
## Page layout recommendations
|
|
166
|
+
|
|
167
|
+
Explorer 1 components vary in width. This can make page layouts challenging if the entire content area is bound by a single `.container` div, a strategy that is commonly used on other websites. For Explorer 1, we recommend avoiding this strategy and instead giving each section or component on the page its own set of layout markup.
|
|
168
|
+
|
|
169
|
+
[Blocks](?path=/docs/components-blocks-overview--docs) provided by Explorer 1 are compatible with this strategy. However, if a block notes that "layout assumptions have been made," this means that the entire layout for that block is already included in the markup, and you shouldn't include any additional layout. Doing so could break the display of that block.
|
|
170
|
+
|
|
171
|
+
View the code below for an example of how to give each section its own set of layout markup. You can also see this strategy employed in the [Full Page Example](#full-page-example).
|
|
172
|
+
|
|
173
|
+
<Canvas
|
|
174
|
+
className="sbdocs-preview-full-width"
|
|
175
|
+
of={Stories.PageLayout}
|
|
176
|
+
/>
|
|
177
|
+
|
|
178
|
+
<br />
|
|
179
|
+
|
|
180
|
+
<span id="full-page-example"></span>
|
|
181
|
+
|
|
182
|
+
## Full Page Example
|
|
183
|
+
|
|
184
|
+
An example of the foundations of a full page layout.
|
|
185
|
+
|
|
186
|
+
<Canvas
|
|
187
|
+
className="sbdocs-preview-full-width"
|
|
188
|
+
of={Stories.FullPageExample}
|
|
189
|
+
/>
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
import LayoutHelper from './../../components/LayoutHelper/LayoutHelper.vue'
|
|
2
|
+
export default {
|
|
3
|
+
title: 'Foundation/Grid and Layout',
|
|
4
|
+
component: LayoutHelper,
|
|
5
|
+
tags: ['!autodocs']
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export const BaseGrid = {
|
|
9
|
+
args: {},
|
|
10
|
+
render: () => ({
|
|
11
|
+
template: `<div class="max-w-screen-3xl mx-auto">
|
|
12
|
+
<div class="BaseGrid container mx-auto mb-10 bg-gray-light-mid">
|
|
13
|
+
<div class="text-center text-white bg-gray-mid-dark p-4">1</div>
|
|
14
|
+
<div class="text-center text-white bg-gray-mid-dark p-4">2</div>
|
|
15
|
+
<div class="text-center text-white bg-gray-mid-dark p-4">3</div>
|
|
16
|
+
<div class="text-center text-white bg-gray-mid-dark p-4">4</div>
|
|
17
|
+
<div class="text-center text-white bg-gray-mid-dark p-4">5</div>
|
|
18
|
+
<div class="text-center text-white bg-gray-mid-dark p-4">6</div>
|
|
19
|
+
<div class="text-center text-white bg-gray-mid-dark p-4">7</div>
|
|
20
|
+
<div class="text-center text-white bg-gray-mid-dark p-4">8</div>
|
|
21
|
+
<div class="text-center text-white bg-gray-mid-dark p-4">9</div>
|
|
22
|
+
<div class="text-center text-white bg-gray-mid-dark p-4">10</div>
|
|
23
|
+
<div class="text-center text-white bg-gray-mid-dark p-4">11</div>
|
|
24
|
+
<div class="text-center text-white bg-gray-mid-dark p-4">12</div>
|
|
25
|
+
</div>
|
|
26
|
+
<div class="container mx-auto">
|
|
27
|
+
<div class="text-white bg-gray-mid-dark p-4">
|
|
28
|
+
Container, but no grid
|
|
29
|
+
</div>
|
|
30
|
+
</div>
|
|
31
|
+
</div>`
|
|
32
|
+
})
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export const ComponentA = {
|
|
36
|
+
args: {},
|
|
37
|
+
render: () => ({
|
|
38
|
+
template: `<div class="BaseGrid container mx-auto border border-jpl-red-light">
|
|
39
|
+
<div class="col-start-4 col-end-10 bg-black text-white px-4 py-10">
|
|
40
|
+
Starts at col 4 and ends at the col 10 line.
|
|
41
|
+
</div>
|
|
42
|
+
</div>`
|
|
43
|
+
})
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export const ComponentB = {
|
|
47
|
+
args: {},
|
|
48
|
+
render: () => ({
|
|
49
|
+
template: `<div class="BaseGrid container mx-auto border border-jpl-red-light">
|
|
50
|
+
<div class="col-start-2 col-end-8 bg-black text-white px-4 py-10">
|
|
51
|
+
Primary content
|
|
52
|
+
</div>
|
|
53
|
+
<div class="col-start-8 col-end-12 bg-black text-white px-4 py-10">
|
|
54
|
+
Secondary content
|
|
55
|
+
</div>
|
|
56
|
+
</div>`
|
|
57
|
+
})
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export const MixedBleedGridLines = {
|
|
61
|
+
args: {},
|
|
62
|
+
render: () => ({
|
|
63
|
+
template: `<div class="max-w-screen-3xl mx-auto bg-white">
|
|
64
|
+
<div class="BaseGrid container px-0 mx-auto bg-gray-light-mid mb-5">
|
|
65
|
+
<div class="text-center text-white bg-gray-mid-dark py-4">1</div>
|
|
66
|
+
<div class="text-center text-white bg-gray-mid-dark py-4">2</div>
|
|
67
|
+
<div class="text-center text-white bg-gray-mid-dark py-4">3</div>
|
|
68
|
+
<div class="text-center text-white bg-gray-mid-dark py-4">4</div>
|
|
69
|
+
<div class="text-center text-white bg-gray-mid-dark py-4">5</div>
|
|
70
|
+
<div class="text-center text-white bg-gray-mid-dark py-4">6</div>
|
|
71
|
+
<div class="text-center text-white bg-gray-mid-dark py-4">7</div>
|
|
72
|
+
<div class="text-center text-white bg-gray-mid-dark py-4">8</div>
|
|
73
|
+
<div class="text-center text-white bg-gray-mid-dark py-4">9</div>
|
|
74
|
+
<div class="text-center text-white bg-gray-mid-dark py-4">10</div>
|
|
75
|
+
<div class="text-center text-white bg-gray-mid-dark py-4">11</div>
|
|
76
|
+
<div class="text-center text-white bg-gray-mid-dark py-4">12</div>
|
|
77
|
+
</div>
|
|
78
|
+
<div class="MixedBleedGrid">
|
|
79
|
+
<div class="col-start-bleed col-end-bleed py-5 mb-5 text-sm border-l border-jpl-red">
|
|
80
|
+
<code>[bleed-start]<br>
|
|
81
|
+
.col-start-bleed</code>
|
|
82
|
+
</div>
|
|
83
|
+
<div class="col-start-container col-end-bleed py-5 mb-5 text-sm border-l border-jpl-red">
|
|
84
|
+
<code>[container-start]<br>
|
|
85
|
+
.col-start-container</code>
|
|
86
|
+
</div>
|
|
87
|
+
<div class="col-start-indent-col-2 col-end-bleed py-5 mb-5 text-sm border-l border-jpl-red">
|
|
88
|
+
<code>[indent-col-2]<br>
|
|
89
|
+
.col-start-indent-col-2</code>
|
|
90
|
+
</div>
|
|
91
|
+
<div class="col-start-indent-col-3 col-end-bleed py-5 mb-5 text-sm border-l border-jpl-red">
|
|
92
|
+
<code>[indent-col-3]<br>
|
|
93
|
+
.col-start-indent-col-3</code>
|
|
94
|
+
</div>
|
|
95
|
+
<div class="col-start-bleed col-end-container py-5 mb-5 text-sm border-r border-jpl-red text-right">
|
|
96
|
+
<code>[container-end]<br>
|
|
97
|
+
.col-end-container<br>
|
|
98
|
+
.col-start-container-end</code>
|
|
99
|
+
</div>
|
|
100
|
+
<div class="col-start-bleed col-end-bleed py-5 mb-5 text-sm border-r border-jpl-red text-right">
|
|
101
|
+
<code>[bleed-end]<br>
|
|
102
|
+
.col-end-bleed</code>
|
|
103
|
+
</div>
|
|
104
|
+
</div>
|
|
105
|
+
</div>`
|
|
106
|
+
})
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export const MixedBleed = {
|
|
110
|
+
args: {},
|
|
111
|
+
render: () => ({
|
|
112
|
+
template: `<div class="MixedBleedGrid">
|
|
113
|
+
<div class="col-start-indent-col-2 col-end-bleed text-white bg-black px-4 py-10">
|
|
114
|
+
Gallery Container (inner layout not dependent on grid)
|
|
115
|
+
</div>
|
|
116
|
+
</div>`
|
|
117
|
+
})
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export const MixedBleedComplex = {
|
|
121
|
+
args: {},
|
|
122
|
+
render: () => ({
|
|
123
|
+
template: `<div>
|
|
124
|
+
<div class="MixedBleedGrid mb-10">
|
|
125
|
+
<div class="col-start-indent-col-3 col-end-container text-white bg-black">
|
|
126
|
+
<div class="grid grid-cols-10 border border-jpl-red-light">
|
|
127
|
+
<div class="col-start-2 col-end-7 text-white px-4 py-10">
|
|
128
|
+
Text aligned with apparent col 4
|
|
129
|
+
</div>
|
|
130
|
+
<div class="col-start-7 col-end-11 px-4 py-10">
|
|
131
|
+
Text aligned with apparent col 9
|
|
132
|
+
</div>
|
|
133
|
+
</div>
|
|
134
|
+
</div>
|
|
135
|
+
<div class="col-start-container-end col-end-bleed bg-black"></div>
|
|
136
|
+
</div>
|
|
137
|
+
</div>`
|
|
138
|
+
})
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export const PageLayout = {
|
|
142
|
+
args: {},
|
|
143
|
+
render: () => ({
|
|
144
|
+
template: `<!-- first section -->
|
|
145
|
+
<div class="bg-gray-light mb-5">
|
|
146
|
+
<div class="max-w-screen-3xl mx-auto bg-black text-white p-6">
|
|
147
|
+
Component with content bound <code>.max-w-screen-3xl</code> but with a background color that extends beyond <code>3xl</code>
|
|
148
|
+
</div>
|
|
149
|
+
</div>
|
|
150
|
+
<!-- second section -->
|
|
151
|
+
<div class="container lg:BaseGrid mx-auto mb-5">
|
|
152
|
+
<div class="col-start-3 col-end-11 bg-gray-light p-6">
|
|
153
|
+
Component filling columns 3-10 on large screens and above.
|
|
154
|
+
</div>
|
|
155
|
+
</div>
|
|
156
|
+
<!-- third section -->
|
|
157
|
+
<div class="container BaseGrid mx-auto mb-5">
|
|
158
|
+
<div class="col-start-2 col-end-12 lg:col-start-4 lg:col-end-10 bg-gray-light p-6">
|
|
159
|
+
Component filling columns 4-9 on large screens and above and columns 2-11 on smaller screens.
|
|
160
|
+
</div>
|
|
161
|
+
</div>
|
|
162
|
+
<!-- fourth section -->
|
|
163
|
+
<div class="container mx-auto bg-gray-light p-6 mb-5">
|
|
164
|
+
Component with content bound by <code>.container</code>
|
|
165
|
+
</div>
|
|
166
|
+
<!-- fifth section -->
|
|
167
|
+
<div class="max-w-screen-3xl mx-auto bg-gray-light p-6 mb-5">
|
|
168
|
+
Component with content bound by <code>.max-w-screen-3xl</code>
|
|
169
|
+
</div>
|
|
170
|
+
<!-- sixth section -->
|
|
171
|
+
<div class="container lg:BaseGrid mx-auto">
|
|
172
|
+
<div class="col-start-3 col-end-11 bg-gray-light p-6">
|
|
173
|
+
Another component filling columns 3-10 on large screens and above.
|
|
174
|
+
</div>
|
|
175
|
+
</div>`
|
|
176
|
+
})
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
export const FullPageExample = {
|
|
180
|
+
args: {},
|
|
181
|
+
render: () => ({
|
|
182
|
+
template: `<div class="bg-black text-white py-5 mb-10">
|
|
183
|
+
<div class="max-w-screen-2xl mx-auto border border-white p-3">
|
|
184
|
+
Top Hat
|
|
185
|
+
</div>
|
|
186
|
+
</div>
|
|
187
|
+
<div class="bg-black mb-20 py-10">
|
|
188
|
+
<div class="container mx-auto text-white">
|
|
189
|
+
Page title with full bleed background<br>
|
|
190
|
+
Lorem ipsum dolor sit amet<br>
|
|
191
|
+
Consectatur
|
|
192
|
+
</div>
|
|
193
|
+
</div>
|
|
194
|
+
<div class="MixedBleedGrid mb-20">
|
|
195
|
+
<div class="col-start-indent-col-2 col-end-container bg-gray-light-mid py-10 border border-jpl-red-light">
|
|
196
|
+
<div class="grid grid-cols-11 gap-5">
|
|
197
|
+
<div class="col-start-2 col-end-7">
|
|
198
|
+
Countdown Timer
|
|
199
|
+
</div>
|
|
200
|
+
<div class="col-start-7 col-end-12">
|
|
201
|
+
Distance to Target
|
|
202
|
+
</div>
|
|
203
|
+
</div>
|
|
204
|
+
</div>
|
|
205
|
+
<div class="col-start-container-end col-end-bleed bg-gray-light-mid"></div>
|
|
206
|
+
</div>
|
|
207
|
+
<div class="BaseGrid container mx-auto mb-20 py-10">
|
|
208
|
+
<div class="col-start-2 col-end-8">
|
|
209
|
+
About the mission
|
|
210
|
+
</div>
|
|
211
|
+
<div class="col-start-8 col-end-12">
|
|
212
|
+
Instrument list
|
|
213
|
+
</div>
|
|
214
|
+
</div>
|
|
215
|
+
<div class="bg-black mb-20">
|
|
216
|
+
<div class="BaseGrid container mx-auto">
|
|
217
|
+
<div class="col-start-6 col-end-11 text-white border-b border-white py-5 my-10">
|
|
218
|
+
Full bleed background with BaseGrid inner container
|
|
219
|
+
</div>
|
|
220
|
+
</div>
|
|
221
|
+
</div>
|
|
222
|
+
<div class="BaseGrid container mx-auto mb-20">
|
|
223
|
+
<div class="col-start-2 col-end-7 py-10">
|
|
224
|
+
Mission Data
|
|
225
|
+
</div>
|
|
226
|
+
<div class="col-start-7 col-end-12 bg-black py-10 text-white text-center">
|
|
227
|
+
Square Image
|
|
228
|
+
</div>
|
|
229
|
+
</div>
|
|
230
|
+
<div class="BaseGrid container mx-auto mb-20">
|
|
231
|
+
<div class="col-start-3 col-end-11 py-10 text-center border-t border-b">
|
|
232
|
+
Blockquote
|
|
233
|
+
</div>
|
|
234
|
+
</div>
|
|
235
|
+
<div class="MixedBleedGrid mb-20">
|
|
236
|
+
<div class="col-start-indent-col-2 col-end-bleed px-5 py-10 border border-jpl-red-light">
|
|
237
|
+
Gallery Container
|
|
238
|
+
</div>
|
|
239
|
+
</div>
|
|
240
|
+
<div class="BaseGrid container mx-auto mb-2">
|
|
241
|
+
<div class="col-start-2 col-end-9 p-5 bg-gray-light-mid ">
|
|
242
|
+
Link 1
|
|
243
|
+
</div>
|
|
244
|
+
</div>
|
|
245
|
+
<div class="BaseGrid container mx-auto mb-20">
|
|
246
|
+
<div class="col-start-2 col-end-9 p-5 bg-gray-light-mid ">
|
|
247
|
+
Link 2
|
|
248
|
+
</div>
|
|
249
|
+
</div>
|
|
250
|
+
<div class="bg-gray-light-mid">
|
|
251
|
+
<div class="MixedBleedGrid mb-20">
|
|
252
|
+
<div class="col-start-indent-col-2 col-end-bleed px-5 py-10 border border-jpl-red-light">
|
|
253
|
+
Gallery Container
|
|
254
|
+
</div>
|
|
255
|
+
</div>
|
|
256
|
+
</div>
|
|
257
|
+
<div class="bg-black py-20">
|
|
258
|
+
<div class="container mx-auto text-white">
|
|
259
|
+
Footer
|
|
260
|
+
</div>
|
|
261
|
+
</div>`
|
|
262
|
+
})
|
|
263
|
+
}
|