-
-
-
- }
- title="Lorem ipsum dolor sit amet"
- desc="Consecatur vestibulum coret save Storybook makes it easy to keep track of edge cases and as a result you get tests for free"
- />
-
-
-
- }
- title="Lorem ipsum dolor sit amet"
- desc="Consecatur vestibulum coret save Storybook makes it easy to keep track of edge cases and as a result you get tests for free"
- />
- Insert any DOM element here
-));
+export const Default = () => ;
+Default.parameters = {
+ backgrounds: { default: 'dark' },
+};
diff --git a/src/components/screens/IndexScreen/IndexScreen.js b/src/components/screens/IndexScreen/IndexScreen.js
index e8637c03..0cf3b52e 100644
--- a/src/components/screens/IndexScreen/IndexScreen.js
+++ b/src/components/screens/IndexScreen/IndexScreen.js
@@ -1,68 +1,122 @@
import PropTypes from 'prop-types';
-import React from 'react';
-import { styled } from '@storybook/theming';
-
-import { Button, Link, styles } from '@storybook/design-system';
+import React, { useMemo, useRef } from 'react';
+import { Global, css, styled } from '@storybook/theming';
+import { styles } from '@storybook/components-marketing';
+import { useInView } from 'framer-motion';
import useSiteMetadata from '../../lib/useSiteMetadata';
+import { SocialGraph } from '../../basics';
+import { Hero } from './Hero';
+import { Develop } from './Develop';
+import { Test } from './Test';
+import { Document } from './Document';
+import { Share } from './Share/Share';
+import { Automate } from './Automate/Automate';
+import { SocialValidation } from './SocialValidation';
+import { StickyNav } from './StickyNav';
+
+const globalStyles = css`
+ body {
+ background-color: ${styles.color.midnight};
+ }
+`;
-import { SocialGraph, Video } from '../../basics';
-import GatsbyLink from '../../basics/GatsbyLink';
-import Hero from './Hero';
-import SocialProof from '../../layout/SocialProof';
-import Integrations from './Integrations';
-import PlaceholderAspectRatio from '../../layout/PlaceholderAspectRatio';
-import ValueProp from '../../layout/ValueProp';
-import Testimonial from '../../layout/Testimonial';
-import BenefitItem from './BenefitItem';
-import BenefitList from './BenefitList';
-import CTA from '../../layout/CTA';
-import { BlogCTA } from './BlogCTA';
+export const storybooks = [
+ {
+ name: 'Monday.com',
+ logo: 'https://avatars.githubusercontent.com/u/61420283?v=4',
+ url: 'https://style.monday.com/',
+ image: { src: 'images/home/storybooks/monday-com.webp', width: 1440, height: 1050 },
+ },
+ {
+ name: 'Microsoft',
+ logo: 'https://avatars.githubusercontent.com/u/6154722?v=4',
+ url: 'https://master--628d031b55e942004ac95df1.chromatic.com/',
+ image: { src: 'images/home/storybooks/microsoft.webp', width: 1440, height: 1050 },
+ },
+ {
+ name: 'D2IQ',
+ logo: 'https://avatars.githubusercontent.com/u/19392808?v=4',
+ url: 'https://dcos-labs.github.io/ui-kit/',
+ image: { src: 'images/home/storybooks/d2iq.webp', width: 1440, height: 1050 },
+ },
+ {
+ name: 'Drei',
+ logo: 'https://avatars.githubusercontent.com/u/45790596?v=4',
+ url: 'https://drei.pmnd.rs/',
+ image: { src: 'images/home/storybooks/drei.webp', width: 1440, height: 1050 },
+ },
+ {
+ name: 'Shopify',
+ logo: 'https://avatars.githubusercontent.com/u/8085?v=4',
+ url: 'https://main--5d559397bae39100201eedc1.chromatic.com/',
+ image: { src: 'images/home/storybooks/shopify.webp', width: 1440, height: 1050 },
+ },
+ {
+ name: 'kickstartDS',
+ logo: 'https://avatars.githubusercontent.com/u/79609753?v=4',
+ url: 'https://www.kickstartds.com/storybook/',
+ image: { src: 'images/home/storybooks/kickstart-ds.webp', width: 1440, height: 1050 },
+ },
+ {
+ name: 'Grommet',
+ logo: 'https://avatars.githubusercontent.com/u/14203820?v=4',
+ url: 'https://master--5d9774839a6eff00203f5cbf.chromatic.com/',
+ image: { src: 'images/home/storybooks/grommet.webp', width: 1440, height: 1050 },
+ },
+ {
+ name: 'JSTOR',
+ logo: 'https://avatars.githubusercontent.com/u/74469?v=4',
+ url: 'https://develop--60919c26122bd50039b34644.chromatic.com/',
+ image: { src: 'images/home/storybooks/jstor.webp', width: 1440, height: 1050 },
+ },
+];
+
+const Clip = styled.div`
+ contain: paint;
+`;
-import AtomicDesignLogoSVG from '../../../images/logos/user/logo-atomicdesign.svg';
-import GitlabLogoSVG from '../../../images/logos/user/logo-gitlab.svg';
-import AirBnBLogoSVG from '../../../images/logos/user/logo-airbnb.svg';
+export default function IndexScreen({
+ projects,
+ npmDownloads,
+ twitterFollowerCount,
+ discordMemberCount,
+ githubContributorCount,
+ youTubeSubscriberCount,
+}) {
+ const { ogImage, urls = {} } = useSiteMetadata();
+ const { home, docs = {} } = urls;
-const { background, color, breakpoint } = styles;
+ const developRef = useRef(null);
+ const developInView = useInView(developRef, { margin: '0px 0px -100% 0px' });
-const BlogCTAWrapper = styled.div`
- display: flex;
- justify-content: center;
- padding: 20px ${styles.spacing.padding.medium}px 0;
-`;
+ const testRef = useRef(null);
+ const testInView = useInView(testRef);
-const Contrast = styled.div`
- background-color: ${background.app};
-`;
+ const documentRef = useRef(null);
+ const documentInView = useInView(documentRef);
-const Separator = styled.hr`
- margin: 0;
-`;
+ const shareRef = useRef(null);
+ const shareInView = useInView(shareRef);
-const Placeholder = styled(PlaceholderAspectRatio)`
- img {
- width: 100%;
- height: auto;
- display: block;
- }
-`;
+ const automateRef = useRef(null);
+ const automateInView = useInView(automateRef);
-const Code = styled.code`
- background-color: ${color.lighter};
- border-radius: 3px;
+ const whoRef = useRef(null);
+ const whoInView = useInView(whoRef);
- color: inherit;
- border: 1px solid ${color.border};
- font-size: 85%;
- line-height: 1;
- padding: 3px 5px;
- white-space: nowrap;
-`;
+ const activeSection = useMemo(() => {
+ if (whoInView) return 'who';
+ if (automateInView) return 'automate';
+ if (shareInView) return 'share';
+ if (documentInView) return 'document';
+ if (testInView) return 'test';
+ if (developInView) return 'develop';
+ return null;
+ }, [developInView, testInView, documentInView, shareInView, automateInView, whoInView]);
-export function PureIndexScreen({ latestBlogPost }) {
- const { ogImage, urls = {} } = useSiteMetadata();
- const { home, docs = {} } = urls;
return (
<>
+
-
-
-
-
-
-
- }
- title="Develop durable UIs"
- desc="Storybook provides a sandbox to build UIs in isolation so you can develop hard-to-reach states and edge cases."
- lazyloadPlaceholder={}
- />
-
- }
- title="Build UIs in isolation"
- desc={
- <>
- Implement components and pages without needing to fuss with
- data, APIs, or business logic.
- >
- }
- />
- }
- title="Mock hard to reach use cases"
- desc="Render components in key states that are tricky to reproduce in an app."
- />
- }
- title="Keep track of use cases as stories"
- desc={
- <>
- Save use cases as stories in{' '}
- plain JavaScript{' '}
- to revisit during development, testing, and QA.
- >
- }
- />
- }
- title="Supercharge your workflow with addons"
- desc={
- <>
- Use addons to customize your workflow, automate
- testing, and integrate with your favorite tools.
- >
- }
- />
-
-
- โStorybook is a powerful frontend workshop environment tool that allows teams to design,
- build, and organize UI components (and even full screens!) without getting tripped up
- over business logic and plumbing.โ
-
- }
- avatarUrl="https://avatars3.githubusercontent.com/u/383701?s=460&v=4"
- name="Brad Frost"
- jobTitle="Author of Atomic Design"
- logo={AtomicDesignLogoSVG}
- />
-
-
-
-
-
- }
- title="Test UIs with less effort and no flake"
- desc="Stories are a pragmatic, reproducible way to keep track of UI edge cases. Write stories once then reuse them to power automated tests."
- lazyloadPlaceholder={}
- />
-
- }
- title="Spot test in a glance"
- desc={
- <>
- Whenever you write a story you get a{' '}
- handy test case.
- Quickly browse stories to make sure your UI looks right.
- >
- }
- />
-
- }
- title="Visual test appearance"
- desc={
- <>
- Pinpoint UI changes down to the pixel by comparing{' '}
- image snapshots of
- stories.
- >
- }
- />
-
- }
- title="Interaction test behavior"
- desc={
- <>
- Verify interactions by simulating{' '}
- user behavior.
- Debug visually alongside your story. Integrates with Testing Library.
- >
- }
- />
-
- }
- title="Accessibility test"
- desc={
- <>
- Check stories for WCAG and ARIA issues in your browser with the{' '}
- A11y addon.
- >
- }
- />
-
- }
- title="Snapshot test markup"
- desc={
- <>
- Detect regressions in DOM markup and run smoke tests with{' '}
- code snapshots.
- >
- }
- />
- }
- title="Unit test functionality"
- desc={
- <>
-
- Reuse stories
- {' '}
- in your unit tests to confirm nuanced functionality.
- >
- }
- />
-
-
-
- โThe tool we use for editing UI is Storybook. It is the perfect place to make sure
- your work aligns with designs to the pixel across breakpoints.โ
-
- }
- avatarUrl="https://avatars2.githubusercontent.com/u/1247751?s=100&v=4"
- name="Adam Neary"
- jobTitle="Tech lead"
- logo={AirBnBLogoSVG}
- />
-
-
-
-
-
-
-
- }
- title="Document UI for your team to reuse"
- desc="Storybook brings together UI, examples, and documentation in one place. That helps teammates adopt existing UI patterns."
- lazyloadPlaceholder={}
- />
-
- }
- title="Find any component or page in your app"
- desc={
- <>
- Storybook is a searchable,{' '}
- single source of truth{' '}
- for your UI.
- >
- }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- }
- title="Generate UI docs automatically"
- desc={
- <>
- Write Markdown/MDX to generate a{' '}
- docs site for component
- libraries and design systems.
- >
- }
- />
- }
- title="Reuse components across screens and apps"
- desc="Every story is a use case that your team can find and reuse. "
- />
-
- }
- title="Track component history and versions"
- desc={
- <>
- QA unexpected bugs by going back in time to compare components from previous
- Storybooks with the Chromatic addon.
- >
- }
- />
-
-
-
- โStorybook has made developing components more streamlined by allowing us to easily
- include technical documentation within our design system!โ
-
- }
- avatarUrl="https://avatars0.githubusercontent.com/u/3028593?s=460&v=4"
- name="Taurie Davis"
- jobTitle="Author of Building Design Systems"
- logo={GitlabLogoSVG}
- />
-
-
-
-
-
-
- }
- title="Share to get sign off from teammates"
- desc="Stories show how UIs actually work not just how they're supposed to work. That makes
- gathering feedback and reproductions easy."
- lazyloadPlaceholder={}
- />
-
- }
- title="Publish to get feedback"
- desc={
- <>
- Publish Storybook{' '}
- online to give your team a universal reference point for feedback.
- >
- }
- />
- }
- title="Embed stories in your favorite sites"
- desc={
- <>
- Embed stories to showcase live
- interactive examples in your docs. Works with Notion, Medium and any site supporting
- the oEmbed standard.
- >
- }
- />
- }
- title="Compose multiple Storybooks together"
- desc={
- <>
-
- Reference external Storybooks
- {' '}
- inside your local Storybook, no matter the view layer, tech stack, or dependencies.
- >
- }
- />
- }
- title={
- <>
- import stories into other JavaScript tooling
- >
- }
- desc={
- <>
- Stories are a{' '}
-
- portable standard
- {' '}
- based on ES6 modules. Write stories once and import them into any JavaScript testing
- library.
- >
- }
- />
-
- Storybook is quick to install and itโs easy to get started.}
- action={
-
- Go to the docs
-
- }
- />
-
-
-
-
+