-
+
+
+
- )}
+
+
{props.title}
+
+ {props.description}
+
+
+
);
TTTTile.propTypes = {
className: PropTypes.string,
description: PropTypes.string,
- onGuideClick: PropTypes.func,
- thumbUrl: PropTypes.string.isRequired,
- title: PropTypes.string.isRequired,
- tutorialLoc: PropTypes.string.isRequired
+ onClick: PropTypes.func,
+ thumbImage: PropTypes.string.isRequired,
+ title: PropTypes.string.isRequired
};
module.exports = TTTTile;
diff --git a/src/components/ttt-tile/ttt-tile.scss b/src/components/ttt-tile/ttt-tile.scss
index 148168675..7c465ef18 100644
--- a/src/components/ttt-tile/ttt-tile.scss
+++ b/src/components/ttt-tile/ttt-tile.scss
@@ -19,21 +19,6 @@
position: relative;
}
-// nesting is required (not just name-spacing) because we want the image
-// and tile box to change style on hover of the parent component.
-.ttt-tile-tutorial:hover {
-
- .ttt-tile-image {
- .ttt-tile-image-img {
- opacity: .5;
- }
-
- .ttt-tile-image-try {
- display: inline-block;
- }
- }
-}
-
.ttt-tile-image {
border-radius: 1rem 1rem 0 0;
background: $ui-blue;
diff --git a/src/routes.json b/src/routes.json
index 2f8888786..3e31f2430 100644
--- a/src/routes.json
+++ b/src/routes.json
@@ -566,5 +566,12 @@
"name": "bird-redirect",
"pattern": "^/bird/?$",
"redirect": "/tips"
+ },
+ {
+ "name": "ideas",
+ "pattern": "^/ideas/?(\\?.*)?$",
+ "routeAlias": "/ideas/?\\??",
+ "view": "ideas/ideas",
+ "title": "Ideas"
}
]
diff --git a/src/views/ideas/ideas.jsx b/src/views/ideas/ideas.jsx
new file mode 100644
index 000000000..c6ce85f86
--- /dev/null
+++ b/src/views/ideas/ideas.jsx
@@ -0,0 +1,248 @@
+const bindAll = require('lodash.bindall');
+const FormattedHTMLMessage = require('react-intl').FormattedHTMLMessage;
+const FormattedMessage = require('react-intl').FormattedMessage;
+const injectIntl = require('react-intl').injectIntl;
+const intlShape = require('react-intl').intlShape;
+const React = require('react');
+
+const Button = require('../../components/forms/button.jsx');
+const FlexRow = require('../../components/flex-row/flex-row.jsx');
+const MasonryGrid = require('../../components/masonrygrid/masonrygrid.jsx');
+const TitleBanner = require('../../components/title-banner/title-banner.jsx');
+const TTTModal = require('../../components/modal/ttt/modal.jsx');
+const TTTTile = require('../../components/ttt-tile/ttt-tile.jsx');
+
+const Page = require('../../components/page/www/page.jsx');
+const render = require('../../lib/render.jsx');
+
+const Tiles = require('./ttt.json');
+
+require('./ideas.scss');
+
+class Ideas extends React.Component {
+ constructor (props) {
+ super(props);
+ bindAll(this, [
+ 'handleShowTTTModal',
+ 'handleHideTTTModal',
+ 'renderTTTTiles'
+ ]);
+ this.state = {
+ currentTile: Tiles[0],
+ TTTModalOpen: false
+ };
+ }
+ handleShowTTTModal (tile) {
+ // expects translated tile
+ this.setState({
+ currentTile: tile,
+ TTTModalOpen: true
+ });
+ }
+ handleHideTTTModal () {
+ this.setState({
+ TTTModalOpen: false
+ });
+ }
+ renderTTTTiles () {
+ return Tiles.map((tile, key) => {
+ const translatedTile = {
+ tutorialUrl: this.props.intl.formatMessage({id: tile.tutorialUrl}),
+ modalImage: tile.modalImage,
+ description: this.props.intl.formatMessage({id: tile.description}),
+ guideUrl: this.props.intl.formatMessage({id: tile.guideUrl}),
+ thumbImage: tile.thumbImage,
+ title: this.props.intl.formatMessage({id: tile.title}),
+ cardsUrl: tile.cardsUrl
+ };
+ return (
+
{ // eslint-disable-line react/jsx-no-bind
+ this.handleShowTTTModal(translatedTile);
+ }}
+ {...translatedTile}
+ />
+ );
+ });
+ }
+ render () {
+ return (
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+ {this.renderTTTTiles()}
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+
+
+ );
+ }
+}
+
+Ideas.propTypes = {
+ intl: intlShape
+};
+
+const WrappedIdeas = injectIntl(Ideas);
+
+render(
+ , document.getElementById('app'));
diff --git a/src/views/ideas/ideas.scss b/src/views/ideas/ideas.scss
new file mode 100644
index 000000000..acd392a87
--- /dev/null
+++ b/src/views/ideas/ideas.scss
@@ -0,0 +1,226 @@
+@import "../../colors";
+@import "../../frameless";
+
+$base-bg: $ui-white;
+
+#view {
+ background-color: $ui-white;
+ padding: 0;
+}
+
+.banner-wrapper {
+ background: $ui-yellow bottom right url('/images/ideas/right-juice.png') no-repeat;
+}
+
+.ideas-banner {
+ background: bottom left url('/images/ideas/left-juice.png') no-repeat;
+}
+
+.ttt-section {
+ display: flex;
+ margin: 0 auto;
+ text-align: center;
+ justify-content: center;
+ flex-wrap: wrap;
+ align-items: center;
+}
+
+.tips-divider {
+ border-top: 1px solid $ui-gray;
+ width: 100%;
+}
+
+.tips-banner-image {
+ max-width: calc(100% - 2rem);
+}
+
+.ideas-button {
+ margin-right: .75rem;
+ background-color: $ui-blue;
+ color: $ui-white;
+ font-size: 1rem;
+
+ img {
+ margin-right: 1rem;
+ height: 1.25rem;
+ vertical-align: middle;
+ }
+
+ a {
+ color: $ui-white;
+ }
+}
+
+.wide-button {
+ width: 100%;
+}
+
+.purchase-button {
+ img {
+ margin-right: 0;
+ margin-left: .75rem;
+ width: 1rem;
+ vertical-align: baseline;
+ }
+}
+
+.tips-info-section {
+ padding: 2.5rem 0;
+ width: 100%;
+ justify-content: space-between;
+}
+
+.tips-info-body {
+ text-align: left;
+}
+
+.tips-cards-buttons {
+ a {
+ white-space: normal;
+ }
+}
+
+.gray-area {
+ background-color: $ui-gray;
+}
+
+img.tips-icon {
+ height: 1.75rem;
+}
+//4 columns
+@media #{$small} {
+
+ .title-banner {
+ &.masthead {
+ padding-bottom: 1.25rem;
+
+ p {
+ max-width: $cols4;
+ }
+ }
+ }
+
+ .ttt-head {
+
+ p {
+ max-width: $cols4;
+ }
+ }
+
+ //put the image first if in 4-column
+ .tips-info-body {
+ max-width: $cols4;
+ text-align: center;
+
+ &.tips-illustration {
+ order: -1;
+ img {
+ width: $cols4;
+ }
+ }
+
+ .button {
+ width: 100%;
+ }
+ }
+}
+
+//6 columns
+@media #{$medium} {
+ .title-banner {
+ &.masthead {
+
+ p {
+ max-width: $cols6;
+ }
+ }
+ }
+
+ .ttt-head {
+ p {
+ max-width: $cols6;
+ }
+ }
+
+ .tips-info-body.tips-illustration {
+ order: -1;
+ img {
+ width: $cols4;
+ }
+ }
+
+ .tips-info-body {
+ max-width: $cols4;
+ text-align: center;
+ }
+}
+
+
+//8 columns
+@media #{$intermediate} {
+ .title-banner {
+ &.masthead {
+ padding-bottom: 2rem;
+
+ p {
+ max-width: $cols6;
+ }
+ }
+ }
+
+ .ttt-head {
+ p {
+ max-width: $cols6;
+ }
+ }
+
+ .tips-info-section {
+ &.mod-align-top {
+ align-items: flex-start;
+ }
+ }
+
+ .tips-info-body {
+ max-width: $cols4;
+ }
+
+ .tips-button {
+ width: 100%;
+ }
+
+ img.mod-flow-left {
+ transform: translate(-1*$cols2);
+ }
+}
+
+// 12 columns
+@media #{$big} {
+ .title-banner {
+ &.masthead {
+ padding-bottom: 1.25rem;
+
+ p {
+ max-width: $cols8;
+ }
+ }
+ }
+
+ .ttt-head {
+ p {
+ max-width: $cols8;
+ }
+ }
+
+ .tips-info-section {
+ &.mod-align-top {
+ align-items: flex-start;
+ }
+ }
+
+ .tips-info-body {
+ max-width: $cols6;
+ &.mod-narrow {
+ max-width: $cols5;
+ }
+ }
+}
diff --git a/src/views/ideas/l10n-static.json b/src/views/ideas/l10n-static.json
new file mode 100644
index 000000000..8792f7d3a
--- /dev/null
+++ b/src/views/ideas/l10n-static.json
@@ -0,0 +1,28 @@
+{
+ "cards.Scratch2CardsLink": "https://resources.scratch.mit.edu/www/cards/en/Scratch2Cards.pdf",
+ "cards.ScratchCardsAllLink": "https://resources.scratch.mit.edu/www/cards/en/ScratchCardsAll.pdf",
+ "cards.catchCardsLink": "https://resources.scratch.mit.edu/www/cards/en/catchCards.pdf",
+ "cards.danceCardsLink": "https://resources.scratch.mit.edu/www/cards/en/danceCards.pdf",
+ "cards.dressupCardsLink": "https://resources.scratch.mit.edu/www/cards/en/dressupCards.pdf",
+ "cards.fashionCardsLink": "https://resources.scratch.mit.edu/www/cards/en/fashionCards.pdf",
+ "cards.flyCardsLink": "https://resources.scratch.mit.edu/www/cards/en/flyCards.pdf",
+ "cards.hide-seekCardsLink": "https://resources.scratch.mit.edu/www/cards/en/hide-seekCards.pdf",
+ "cards.musicCardsLink": "https://resources.scratch.mit.edu/www/cards/en/musicCards.pdf",
+ "cards.nameCardsLink": "https://resources.scratch.mit.edu/www/cards/en/nameCards.pdf",
+ "cards.petCardsLink": "https://resources.scratch.mit.edu/www/cards/en/petCards.pdf",
+ "cards.pongCardsLink": "https://resources.scratch.mit.edu/www/cards/en/pongCards.pdf",
+ "cards.raceCardsLink": "https://resources.scratch.mit.edu/www/cards/en/raceCards.pdf",
+ "cards.storyCardsLink": "https://resources.scratch.mit.edu/www/cards/en/storyCards.pdf",
+ "guides.CatchGuideLink": "https://resources.scratch.mit.edu/www/guides/en/CatchGuide.pdf",
+ "guides.DanceGuideLink": "https://resources.scratch.mit.edu/www/guides/en/DanceGuide.pdf",
+ "guides.FashionGuideLink": "https://resources.scratch.mit.edu/www/guides/en/FashionGuide.pdf",
+ "guides.FlyGuideLink": "https://resources.scratch.mit.edu/www/guides/en/FlyGuide.pdf",
+ "guides.Getting-Started-Guide-Scratch2Link": "https://resources.scratch.mit.edu/www/guides/en/Getting-Started-Guide-Scratch2.pdf",
+ "guides.HideandSeekGuideLink": "https://resources.scratch.mit.edu/www/guides/en/HideandSeekGuide.pdf",
+ "guides.MusicGuideLink": "https://resources.scratch.mit.edu/www/guides/en/MusicGuide.pdf",
+ "guides.NameGuideLink": "https://resources.scratch.mit.edu/www/guides/en/NameGuide.pdf",
+ "guides.PetGuideLink": "https://resources.scratch.mit.edu/www/guides/en/PetGuide.pdf",
+ "guides.PongGuideLink": "https://resources.scratch.mit.edu/www/guides/en/PongGuide.pdf",
+ "guides.RaceGuideLink": "https://resources.scratch.mit.edu/www/guides/en/RaceGuide.pdf",
+ "guides.StoryGuideLink": "https://resources.scratch.mit.edu/www/guides/en/StoryGuide.pdf"
+}
diff --git a/src/views/ideas/l10n.json b/src/views/ideas/l10n.json
new file mode 100644
index 000000000..52f82469e
--- /dev/null
+++ b/src/views/ideas/l10n.json
@@ -0,0 +1,74 @@
+{
+ "ideas.headerMessage": "What will you create?",
+ "ideas.headerButtonMessage": "Choose a tutorial",
+ "ideas.gettingStartedTitle": "Getting Started",
+ "ideas.gettingStartedText": "New to Scratch? Try the Getting Started tutorial.",
+ "ideas.tryIt": "Try it!",
+ "ideas.activityGuidesTitle": "Activity Guides",
+ "ideas.activityGuidesText": "What do you want to make with Scratch? For each activity, you can try the Tutorial, download a set of Coding Cards, or view the Educator Guide.",
+ "ideas.animateANameTitle": "Animate a Name",
+ "ideas.animateANameDescription": "Animate the letters of your name, initials, or favorite word.",
+ "ideas.animateACharacterTitle": "Animate a Character",
+ "ideas.animateACharacterDescription": "Bring characters to life with animation.",
+ "ideas.makeMusicTitle": "Make Music",
+ "ideas.makeMusicDescription": "Choose instruments, add sounds, and press keys to play music.",
+ "ideas.createAStoryTitle": "Create a Story",
+ "ideas.createAStoryDescription": "Choose characters, add conversation, and bring your story to life.",
+ "ideas.chaseGameTitle": "Make a Chase Game",
+ "ideas.chaseGameDescription": "Make a game where you chase a character to score points.",
+ "ideas.videoSensingTitle": "Video Sensing",
+ "ideas.videoSensingDescription": "Interact with a project using the Video Sensing extension.",
+ "ideas.seeAllTutorials": "See All Tutorials",
+ "ideas.cardsTitle": "Get the Entire Collection of Coding Cards",
+ "ideas.cardsText": "With the Scratch Coding Cards, you can learn to create interactive games, stories, music, animations, and more!",
+ "ideas.downloadPDF": "Download PDF",
+ "ideas.starterProjectsTitle": "Starter Projects",
+ "ideas.starterProjectsText": "You can play with Starter Projects and remix them to make your own creations.",
+ "ideas.starterProjectsButton": "Explore Starter Projects",
+
+ "ideas.tttHeader": "Things to Try",
+ "ideas.tttBody": "What do you want to make with Scratch? For each activity, you can try the Tutorial, download a set of Activity Cards, or view the Educator Guide.",
+ "ideas.cardsHeader": "Get the Entire Collection of Activity Cards",
+ "ideas.cardsBody": "With the Scratch Activity Cards, you can learn to create interactive games, stories, music, animations, and more!",
+ "ideas.cardsDownload": "Download PDF",
+ "ideas.cardsPurchase": "Purchase Printed Set",
+ "ideas.starterProjectsHeader": "Starter Projects",
+ "ideas.starterProjectsBody": "You can play with Starter Projects to get ideas for making your own projects.",
+ "ideas.starterProjectsPlay": "Play with Starter Projects",
+ "ideas.offlineEditorHeader": "Offline Editor",
+ "ideas.offlineEditorBody": "To create projects without an Internet connection, you can download the offline editor.",
+ "ideas.questionsHeader": "Questions",
+ "ideas.questionsBody": "Have more questions? See the Frequently Asked Questions or visit the Help with Scripts Forum.",
+ "ttt.tutorial": "Tutorial",
+ "tile.guides": "See Cards and Guides",
+ "tile.tryIt": "Try It",
+ "ttt.placeholder": "Placeholder text",
+ "ttt.tutorialSubtitle": "Find out how to make this project using a step-by-step tutorial in Scratch.",
+ "ttt.activityTitle": "Activity Cards",
+ "ttt.activitySubtitle": "Explore new coding ideas using this set of illustrated cards you can print out.",
+ "ttt.educatorTitle": "Educator Guide",
+ "ttt.educatorSubtitle": "Use this educator guide to plan and lead a one-hour Scratch workshop.",
+ "ttt.open": "Open",
+ "ttt.MakeItFlyTitle": "Make It Fly",
+ "ttt.MakeItFlyDescription": "Animate the Scratch Cat, The Powerpuff Girls, or even a taco!",
+ "ttt.AnimateYourNameTitle": "Animate a Name",
+ "ttt.AnimateYourNameDescription": "Animate the letters of your username, initials, or favorite word.",
+ "ttt.RaceTitle": "Race to the Finish",
+ "ttt.RaceDescription": "Make a game where two characters race each other.",
+ "ttt.MakeMusicTitle": "Make Music",
+ "ttt.MakeMusicDescription": "Choose instruments, add sounds, and press keys to play music.",
+ "ttt.HideAndSeekTitle": "Hide and Seek",
+ "ttt.HideAndSeekDescription": "Make a hide-and-seek game with characters that appear and disappear.",
+ "ttt.StoryTitle": "Create a Story",
+ "ttt.StoryDescription": "Choose characters, add conversation, and bring your story to life.",
+ "ttt.FashionTitle": "Fashion Game",
+ "ttt.FashionDescription": "Make a game where you dress a character with different clothes and styles.",
+ "ttt.PongTitle": "Pong Game",
+ "ttt.PongDescription": "Make a bouncing ball game with sounds, points, and other effects.",
+ "ttt.DanceTitle": "Let's Dance",
+ "ttt.DanceDescription": "Design an animated dance scene with music and dance moves.",
+ "ttt.CatchTitle": "Catch Game",
+ "ttt.CatchDescription": "Make a game where you catch things falling from the sky.",
+ "ttt.VirtualPetTitle": "Virtual Pet",
+ "ttt.VirtualPetDescription": "Create an interactive pet that can eat, drink, and play."
+}
diff --git a/src/views/ideas/ttt.json b/src/views/ideas/ttt.json
new file mode 100644
index 000000000..57b053adf
--- /dev/null
+++ b/src/views/ideas/ttt.json
@@ -0,0 +1,56 @@
+[
+ {
+ "title": "ideas.animateANameTitle",
+ "description": "ideas.animateANameDescription",
+ "thumbImage": "/images/ideas/activities/animate-a-name-thumb.jpg",
+ "modalImage": "/images/ideas/activities/animate-a-name-modal.jpg",
+ "tutorialUrl": "name",
+ "cardsUrl": "cards.nameCardsLink",
+ "guideUrl": "guides.nameGuideLink"
+ },
+ {
+ "title": "ideas.animateACharacterTitle",
+ "description": "ideas.animateACharacterDescription",
+ "thumbImage": "/images/ideas/activities/animate-a-character-thumb.jpg",
+ "modalImage": "/images/ideas/activities/animate-a-character-modal.jpg",
+ "tutorialUrl": "animate-a-character",
+ "cardsUrl": "cards.animateACharacterCardsLink",
+ "guideUrl": "guides.animateACharacterGuideLink"
+ },
+ {
+ "title": "ideas.makeMusicTitle",
+ "description": "ideas.makeMusicDescription",
+ "thumbImage": "/images/ideas/activities/make-music-thumb.jpg",
+ "modalImage": "/images/ideas/activities/make-music-modal.jpg",
+ "tutorialUrl": "music",
+ "cardsUrl": "cards.makeMusicCardsLink",
+ "guideUrl": "guides.makeMusicGuideLink"
+ },
+ {
+ "title": "ideas.createAStoryTitle",
+ "description": "ideas.createAStoryDescription",
+ "thumbImage": "/images/ideas/activities/create-a-story-thumb.jpg",
+ "modalImage": "/images/ideas/activities/create-a-story-modal.jpg",
+ "tutorialUrl": "tell-a-story",
+ "cardsUrl": "cards.createAStoryCardsLink",
+ "guideUrl": "guides.createAStoryGuideLink"
+ },
+ {
+ "title": "ideas.chaseGameTitle",
+ "description": "ideas.chaseGameDescription",
+ "thumbImage": "/images/ideas/activities/chase-game-thumb.jpg",
+ "modalImage": "/images/ideas/activities/chase-game-modal.jpg",
+ "tutorialUrl": "chase-game",
+ "cardsUrl": "cards.chaseGameCardsLink",
+ "guideUrl": "guides.chaseGameGuideLink"
+ },
+ {
+ "title": "ideas.videoSensingTitle",
+ "description": "ideas.videoSensingDescription",
+ "thumbImage": "/images/ideas/activities/video-sensing-thumb.jpg",
+ "modalImage": "/images/ideas/activities/video-sensing-modal.jpg",
+ "tutorialUrl": "video-sensing",
+ "cardsUrl": "cards.videoSensingCardsLink",
+ "guideUrl": "guides.videoSensingGuideLink"
+ }
+]
diff --git a/static/images/ideas/activities/animate-a-character-modal.jpg b/static/images/ideas/activities/animate-a-character-modal.jpg
new file mode 100644
index 000000000..01db1b5c0
Binary files /dev/null and b/static/images/ideas/activities/animate-a-character-modal.jpg differ
diff --git a/static/images/ideas/activities/animate-a-character-thumb.jpg b/static/images/ideas/activities/animate-a-character-thumb.jpg
new file mode 100644
index 000000000..1fddfb5c5
Binary files /dev/null and b/static/images/ideas/activities/animate-a-character-thumb.jpg differ
diff --git a/static/images/ideas/activities/animate-a-name-modal.jpg b/static/images/ideas/activities/animate-a-name-modal.jpg
new file mode 100644
index 000000000..0b7d0662e
Binary files /dev/null and b/static/images/ideas/activities/animate-a-name-modal.jpg differ
diff --git a/static/images/ideas/activities/animate-a-name-thumb.jpg b/static/images/ideas/activities/animate-a-name-thumb.jpg
new file mode 100644
index 000000000..391eb8971
Binary files /dev/null and b/static/images/ideas/activities/animate-a-name-thumb.jpg differ
diff --git a/static/images/ideas/activities/chase-game-modal.jpg b/static/images/ideas/activities/chase-game-modal.jpg
new file mode 100644
index 000000000..ea80e60e3
Binary files /dev/null and b/static/images/ideas/activities/chase-game-modal.jpg differ
diff --git a/static/images/ideas/activities/chase-game-thumb.jpg b/static/images/ideas/activities/chase-game-thumb.jpg
new file mode 100644
index 000000000..6e74c2128
Binary files /dev/null and b/static/images/ideas/activities/chase-game-thumb.jpg differ
diff --git a/static/images/ideas/activities/create-a-story-modal.jpg b/static/images/ideas/activities/create-a-story-modal.jpg
new file mode 100644
index 000000000..5b2e1e0fc
Binary files /dev/null and b/static/images/ideas/activities/create-a-story-modal.jpg differ
diff --git a/static/images/ideas/activities/create-a-story-thumb.jpg b/static/images/ideas/activities/create-a-story-thumb.jpg
new file mode 100644
index 000000000..6fc76abcd
Binary files /dev/null and b/static/images/ideas/activities/create-a-story-thumb.jpg differ
diff --git a/static/images/ideas/activities/make-music-modal.jpg b/static/images/ideas/activities/make-music-modal.jpg
new file mode 100644
index 000000000..4fe12554f
Binary files /dev/null and b/static/images/ideas/activities/make-music-modal.jpg differ
diff --git a/static/images/ideas/activities/make-music-thumb.jpg b/static/images/ideas/activities/make-music-thumb.jpg
new file mode 100644
index 000000000..a00248320
Binary files /dev/null and b/static/images/ideas/activities/make-music-thumb.jpg differ
diff --git a/static/images/ideas/activities/video-sensing-modal.jpg b/static/images/ideas/activities/video-sensing-modal.jpg
new file mode 100644
index 000000000..9018af521
Binary files /dev/null and b/static/images/ideas/activities/video-sensing-modal.jpg differ
diff --git a/static/images/ideas/activities/video-sensing-thumb.jpg b/static/images/ideas/activities/video-sensing-thumb.jpg
new file mode 100644
index 000000000..b87690652
Binary files /dev/null and b/static/images/ideas/activities/video-sensing-thumb.jpg differ
diff --git a/static/images/ideas/activity-cards-icon.svg b/static/images/ideas/activity-cards-icon.svg
new file mode 100644
index 000000000..3accb5a11
--- /dev/null
+++ b/static/images/ideas/activity-cards-icon.svg
@@ -0,0 +1,18 @@
+
+
\ No newline at end of file
diff --git a/static/images/ideas/bulb-icon.svg b/static/images/ideas/bulb-icon.svg
new file mode 100644
index 000000000..75bc5e617
--- /dev/null
+++ b/static/images/ideas/bulb-icon.svg
@@ -0,0 +1,20 @@
+
+
\ No newline at end of file
diff --git a/static/images/ideas/cards-illustration.svg b/static/images/ideas/cards-illustration.svg
new file mode 100644
index 000000000..9418706d9
--- /dev/null
+++ b/static/images/ideas/cards-illustration.svg
@@ -0,0 +1,489 @@
+
+
\ No newline at end of file
diff --git a/static/images/ideas/download-icon.svg b/static/images/ideas/download-icon.svg
new file mode 100644
index 000000000..f3fe8c6e4
--- /dev/null
+++ b/static/images/ideas/download-icon.svg
@@ -0,0 +1,20 @@
+
+
\ No newline at end of file
diff --git a/static/images/ideas/educator-guide-icon.svg b/static/images/ideas/educator-guide-icon.svg
new file mode 100644
index 000000000..52b42dd78
--- /dev/null
+++ b/static/images/ideas/educator-guide-icon.svg
@@ -0,0 +1,18 @@
+
+
\ No newline at end of file
diff --git a/static/images/ideas/getting-started-illustration.svg b/static/images/ideas/getting-started-illustration.svg
new file mode 100644
index 000000000..ae29d001d
--- /dev/null
+++ b/static/images/ideas/getting-started-illustration.svg
@@ -0,0 +1,25 @@
+
+
\ No newline at end of file
diff --git a/static/images/ideas/left-juice.png b/static/images/ideas/left-juice.png
new file mode 100644
index 000000000..0c5dd016b
Binary files /dev/null and b/static/images/ideas/left-juice.png differ
diff --git a/static/images/ideas/masthead-illustration.svg b/static/images/ideas/masthead-illustration.svg
new file mode 100644
index 000000000..d0bb08066
--- /dev/null
+++ b/static/images/ideas/masthead-illustration.svg
@@ -0,0 +1,602 @@
+
+
\ No newline at end of file
diff --git a/static/images/ideas/right-juice.png b/static/images/ideas/right-juice.png
new file mode 100644
index 000000000..22b346f38
Binary files /dev/null and b/static/images/ideas/right-juice.png differ
diff --git a/static/images/ideas/starter-projects-illustration.svg b/static/images/ideas/starter-projects-illustration.svg
new file mode 100644
index 000000000..a6ff93b1d
--- /dev/null
+++ b/static/images/ideas/starter-projects-illustration.svg
@@ -0,0 +1,216 @@
+
+
\ No newline at end of file
diff --git a/static/images/ideas/try-it-icon.svg b/static/images/ideas/try-it-icon.svg
new file mode 100644
index 000000000..a98587188
--- /dev/null
+++ b/static/images/ideas/try-it-icon.svg
@@ -0,0 +1,20 @@
+
+
\ No newline at end of file