From 331576cce2047f0827a0542a14f8cbe477900c6d Mon Sep 17 00:00:00 2001 From: Carolina Menezes Date: Wed, 16 Aug 2023 18:03:51 -0300 Subject: [PATCH 1/9] feat(code-samples): add code samples page to showcase boilerplate repositories --- public/images/codesamples.png | Bin 0 -> 104734 bytes src/components/code-sample-card/index.tsx | 52 +++++ src/components/code-sample-card/styles.ts | 84 ++++++++ src/components/code-sample-section/index.tsx | 42 ++++ src/components/icons/github-icon.tsx | 2 +- src/pages/docs/guides/code-samples.tsx | 89 +++++++++ src/utils/constants.ts | 198 +++++++++++++++++++ src/utils/typings/types.ts | 9 + 8 files changed, 475 insertions(+), 1 deletion(-) create mode 100644 public/images/codesamples.png create mode 100644 src/components/code-sample-card/index.tsx create mode 100644 src/components/code-sample-card/styles.ts create mode 100644 src/components/code-sample-section/index.tsx create mode 100644 src/pages/docs/guides/code-samples.tsx diff --git a/public/images/codesamples.png b/public/images/codesamples.png new file mode 100644 index 0000000000000000000000000000000000000000..6df4b9ab34f510513326bff5f8d050fa0f520c6c GIT binary patch literal 104734 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

2;1(cgj~nBX<$=Jv%xSM4yPX1X$3_ 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 z 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 Uzh}WpM*si-07*qoM6N<$g5JTEN&o-= literal 0 HcmV?d00001 diff --git a/src/components/code-sample-card/index.tsx b/src/components/code-sample-card/index.tsx new file mode 100644 index 000000000..e4992c37d --- /dev/null +++ b/src/components/code-sample-card/index.tsx @@ -0,0 +1,52 @@ +import { Box, Flex, Text, IconCaret, Link } from '@vtex/brand-ui' +import GithubIcon from 'components/icons/github-icon' + +import type { CodeSamplesElement } from 'utils/typings/types' + +import styles from './styles' + +const CodeSampleCard = ({ + title, + description, + builders, + linkTitle, + linkTo, + repoLink, +}: CodeSamplesElement) => { + return ( + + + + {title} + + + + + + + {description} + + + + {builders.map((builder) => ( + {builder} + ))} + + + + + {linkTitle} + + + + + + ) +} + +export default CodeSampleCard diff --git a/src/components/code-sample-card/styles.ts b/src/components/code-sample-card/styles.ts new file mode 100644 index 000000000..a2d7d70b7 --- /dev/null +++ b/src/components/code-sample-card/styles.ts @@ -0,0 +1,84 @@ +import type { SxStyleProp } from '@vtex/brand-ui' + +const container: SxStyleProp = { + mt: '16px', + padding: '16px', + borderRadius: '4px', + border: '1px solid #E7E9EE', + width: ['100%', '49%'], + transition: 'all 0.3s ease-out', + ':active, :hover': { + borderColor: 'muted.2', + boxShadow: '0px 0px 16px rgba(0, 0, 0, 0.1)', + transition: 'all 0.3 ease-out', + + '.title, .description': { + transition: 'all 0.3s ease-out', + color: '#000711', + }, + + '.link, .caret': { + transition: 'all 0.3s ease-out', + color: 'muted.0', + }, + }, +} + +const title: SxStyleProp = { + mb: '8px', + fontSize: '16px', + fontWeight: '400', + lineHeight: ['22px', '18px'], + color: 'muted.0', +} + +const description: SxStyleProp = { + fontSize: '14px', + fontWeight: '400', + lineHeight: '20px', + color: 'muted.0', +} + +const linkContainer: SxStyleProp = { + mt: '8px', + alignItems: 'center', +} + +const link: SxStyleProp = { + ...description, + color: 'muted.1', + ':hover': { + color: '#e31d58 !important', + }, +} + +const builderList: SxStyleProp = { + display: 'flex', + gap: '8px', + mt: '10px', + flexWrap: 'wrap', +} + +const builderListItem: SxStyleProp = { + ...description, + bg: '#e7e9ed', + px: '6px', + borderRadius: '4px', + display: 'inline', +} + +const flexLinks: SxStyleProp = { + ...builderList, + justifyContent: 'space-between', +} + +export default { + container, + title, + description, + linkContainer, + link, + builderList, + builderListItem, + flexLinks, +} diff --git a/src/components/code-sample-section/index.tsx b/src/components/code-sample-section/index.tsx new file mode 100644 index 000000000..592e63b00 --- /dev/null +++ b/src/components/code-sample-section/index.tsx @@ -0,0 +1,42 @@ +import { useState } from 'react' +import { Box, Flex } from '@vtex/brand-ui' + +import { getMessages } from 'utils/get-messages' +import { codeSamples } from 'utils/constants' + +import styles from 'styles/documentation-landing-page' +import Multiselect from 'components/multiselect' +import { SelectOption } from 'utils/typings/types' +import CodeSampleCard from 'components/code-sample-card' + +interface ICodeSamplesSection { + builders: SelectOption[] +} + +const CodeSamplesSection = ({ builders }: ICodeSamplesSection) => { + const messages = getMessages() + const [filter, setFilter] = useState([]) + const filteredCodeSamples = codeSamples.filter( + (codeSampleItem) => + filter.length === 0 || + filter.some((option) => codeSampleItem.builders.includes(option.label)) + ) + return ( + + { + setFilter(selection) + }} + /> + + {filteredCodeSamples.map((codeSample) => ( + + ))} + + + ) +} + +export default CodeSamplesSection diff --git a/src/components/icons/github-icon.tsx b/src/components/icons/github-icon.tsx index 3e595ada8..95b7baab9 100644 --- a/src/components/icons/github-icon.tsx +++ b/src/components/icons/github-icon.tsx @@ -13,7 +13,7 @@ const GithubIcon = (props: IconProps) => ( fillRule="evenodd" clipRule="evenodd" d="M14.4 16.7314C10.6667 20.7314 8 26.3314 8 33.5314C8 38.8647 9.86667 43.9314 12.8 47.9314C16.2667 52.4647 21.3333 55.1314 24 56.198V54.3314C24 54.3314 24 50.0647 26.4 46.3314C21.0667 46.0647 16.8 40.998 16.8 35.1314C16.8 32.998 17.6 31.1314 18.9333 29.5314L19.2 24.4647C19.2 23.1314 20.5333 22.3314 21.8667 22.598L27.4667 24.7314C29.0667 24.4647 30.6667 24.198 32.5333 24.198C34.4 24.198 36 24.4647 37.6 24.7314L42.4 22.3314C43.7333 21.798 45.0667 22.8647 45.0667 24.198L45.3333 29.2647C46.6667 30.8647 47.4667 32.998 47.4667 34.8647C47.4667 40.7314 43.2 45.5314 37.8667 46.0647C40.2667 49.798 40.2667 54.0647 40.2667 54.0647V55.9314C42.9333 54.8647 48 52.198 51.4667 47.6647C54.4 43.9314 56.2667 38.598 56.2667 33.2647C56.2667 26.0647 53.6 20.4647 49.8667 16.4647C44.8 11.398 37.8667 8.99805 32 8.99805C26.1333 8.99805 19.2 11.398 14.4 16.7314V16.7314Z" - stroke="#4A596B" + stroke="currentColor" strokeWidth="3" strokeLinecap="round" strokeLinejoin="round" diff --git a/src/pages/docs/guides/code-samples.tsx b/src/pages/docs/guides/code-samples.tsx new file mode 100644 index 000000000..b2df7fa77 --- /dev/null +++ b/src/pages/docs/guides/code-samples.tsx @@ -0,0 +1,89 @@ +import PageHeader from 'components/page-header' +import { getMessages } from 'utils/get-messages' +import image from '../../../../public/images/codesamples.png' +import Head from 'next/head' +import CodeSamplesSection from 'components/code-sample-section' +import getNavigation from 'utils/getNavigation' +import { codeSamples } from 'utils/constants' +import { CodeSamplesElement, SelectOption } from 'utils/typings/types' +import { GetStaticProps, NextPage } from 'next' +import { PreviewContext } from 'utils/contexts/preview' +import { useContext } from 'react' +import { DocumentationTitle, UpdatesTitle } from 'utils/typings/unionTypes' + +interface Props { + sidebarfallback: any //eslint-disable-line + sectionSelected?: DocumentationTitle | UpdatesTitle | '' + builders: SelectOption[] + branch: string +} + +const AppDevelopmentPage: NextPage = ({ builders, branch }) => { + const { setBranchPreview } = useContext(PreviewContext) + setBranchPreview(branch) + const messages = getMessages() + return ( + <> + + Code Samples + + + + + <> + + + + + ) +} + +export const getStaticProps: GetStaticProps = async ({ + preview, + previewData, +}) => { + const sidebarfallback = await getNavigation() + const sectionSelected = 'App Development' + const previewBranch = + preview && JSON.parse(JSON.stringify(previewData)).hasOwnProperty('branch') + ? JSON.parse(JSON.stringify(previewData)).branch + : 'main' + const branch = preview ? previewBranch : 'main' + + function getBuilders(samples: CodeSamplesElement[]) { + const uniqueBuilders: Map = new Map() + + for (const sample of samples) { + sample.builders.forEach((builder) => { + uniqueBuilders.set(builder, builder) // Using Map to ensure uniqueness + }) + } + + return Array.from(uniqueBuilders, ([id, label]) => ({ id, label })) + } + + const builders: SelectOption[] = getBuilders(codeSamples) + + return { + props: { + sidebarfallback, + sectionSelected, + builders, + branch, + }, + } +} + +export default AppDevelopmentPage diff --git a/src/utils/constants.ts b/src/utils/constants.ts index 829a4545a..34d8a44a1 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -21,6 +21,7 @@ import { DocDataElement, UpdatesDataElement, WhatsNextDataElement, + CodeSamplesElement, ResourceDataElement, AdminDataElement, } from './typings/types' @@ -177,3 +178,200 @@ export const resources: ResourceDataElement[] = [ link: getSupportURL(), }, ] + +export const codeSamples: CodeSamplesElement[] = [ + { + title: 'Admin app', + description: 'Create an Admin app.', + builders: ['admin', 'react'], + linkTo: 'https://developers.vtex.com/', + linkTitle: messages['app_development_page_new_to_app_development.link'], + repoLink: 'https://github.com/vtex/admin-ui-example', + }, + { + title: 'Scripts app', + description: 'DESCRIPTION', + builders: ['scripts'], + linkTo: + 'https://developers.vtex.com/docs/guides/vtex-io-documentation-running-io-scripts-in-non-io-vtex-stores#step-1-developing-your-app', + linkTitle: 'See guide', + repoLink: 'https://github.com/vtex-apps/app-scripts-example', + }, + { + title: 'Buyer Organization Supplier app', + description: 'DESCRIPTION', + builders: ['node'], + linkTo: 'https://developers.vtex.com/', + linkTitle: 'See guide', + repoLink: 'https://github.com/vtex-apps/buyer-org-supplier', + }, + { + title: 'Carrier Hubs', + description: + 'Examples using vtex.carrier-notifier and vtex.carrier-tracking as builders', + builders: ['node'], + linkTo: 'https://developers.vtex.com/', + linkTitle: 'See guide', + repoLink: 'https://github.com/vtex-apps/carrier-hubs-examples', + }, + { + title: 'Checkout UI Settings', + description: 'DESC', + builders: ['checkout-ui-custom'], + linkTo: 'https://developers.vtex.com/', + linkTitle: 'See guide', + repoLink: 'https://github.com/vtex-apps/checkout-ui-settings', + }, + { + title: 'Delivery Theme', + description: 'DESC', + builders: ['store', 'styles'], + linkTo: 'https://developers.vtex.com/', + linkTitle: 'See guide', + repoLink: 'https://github.com/vtex-apps/delivery-theme', + }, + { + title: 'Edition app', + description: 'DESC', + builders: ['edition'], + linkTo: 'https://developers.vtex.com/', + linkTitle: 'See guide', + repoLink: 'https://github.com/vtex-apps/edition-hello', + }, + { + title: 'Events service', + description: 'DESC', + builders: ['node'], + linkTo: 'https://developers.vtex.com/', + linkTitle: 'See guide', + repoLink: 'https://github.com/vtex-apps/events-example', + }, + { + title: 'Payment app', + description: 'DESC', + builders: ['react', 'pages', 'messages'], + linkTo: 'https://developers.vtex.com/', + linkTitle: 'See guide', + repoLink: 'https://github.com/vtex-apps/example-payment-authorization-app', + }, + { + title: 'GraphQL app', + description: 'DESC', + builders: ['node', 'graphql'], + linkTo: 'https://developers.vtex.com/', + linkTitle: 'See guide', + repoLink: 'https://github.com/vtex-apps/graphql-example', + }, + { + title: 'Integration app', + description: 'DESC', + builders: ['react', 'messages', 'node', 'admin', 'graphql'], + linkTo: 'https://developers.vtex.com/', + linkTitle: 'See guide', + repoLink: 'https://github.com/vtex/mkp-app-template', + }, + { + title: 'Orders Feed', + description: 'DESC', + builders: ['node'], + linkTo: 'https://developers.vtex.com/', + linkTitle: 'See guide', + repoLink: 'https://github.com/vtex-apps/orders-feed-example', + }, + { + title: 'Payment Provider Framework', + description: 'DESC', + builders: ['paymentProvider', 'node'], + linkTo: 'https://developers.vtex.com/', + linkTitle: 'See guide', + repoLink: 'https://github.com/vtex-apps/payment-provider-example', + }, + { + title: 'Pixel app', + description: 'DESC', + builders: ['react', 'store', 'pixel'], + linkTo: 'https://developers.vtex.com/', + linkTitle: 'See guide', + repoLink: 'https://github.com/vtex-apps/pixel-app-template', + }, + { + title: 'React app', + description: 'DESC', + builders: ['react', 'messages'], + linkTo: 'https://developers.vtex.com/', + linkTitle: 'See guide', + repoLink: 'https://github.com/vtex-apps/react-app-template', + }, + { + title: 'Search GraphQL Resolver', + description: 'DESC', + builders: ['node'], + linkTo: 'https://developers.vtex.com/', + linkTitle: 'See guide', + repoLink: 'https://github.com/vtex-apps/search-resolver', + }, + { + title: 'Store Theme Robots', + description: 'DESC', + builders: ['sitemap'], + linkTo: 'https://developers.vtex.com/', + linkTitle: 'See guide', + repoLink: 'https://github.com/vtex-apps/store-theme-robots', + }, + { + title: 'Store theme', + description: 'DESC', + builders: ['styles', 'store', 'sitemap'], + linkTo: 'https://developers.vtex.com/', + linkTitle: 'See guide', + repoLink: 'https://github.com/vtex-apps/store-theme', + }, + { + title: 'Store Block course template', + description: 'DESC', + builders: ['store', 'react', 'messages'], + linkTo: 'https://developers.vtex.com/', + linkTitle: 'See guide', + repoLink: 'https://github.com/vtex-trainings/store-block-template', + }, + { + title: 'Minimum Boilerplate Theme', + description: 'DESC', + builders: ['store', 'styles'], + linkTo: 'https://developers.vtex.com/', + linkTitle: 'See guide', + repoLink: 'https://github.com/vtex-apps/minimum-boilerplate-theme', + }, + { + title: 'Service Worker', + description: 'DESC', + builders: ['service-worker'], + linkTo: 'https://developers.vtex.com/', + linkTitle: 'See guide', + repoLink: 'https://github.com/vtex-apps/service-worker-example', + }, + { + title: 'Service', + description: 'DESC', + builders: ['node'], + linkTo: 'https://developers.vtex.com/', + linkTitle: 'See guide', + repoLink: 'https://github.com/vtex-apps/service-example', + }, + { + title: 'search-segment-resolver', + description: 'DESC', + builders: ['node'], + linkTo: 'https://developers.vtex.com/', + linkTitle: 'See guide', + repoLink: 'https://github.com/vtex-apps/search-segment-resolver', + }, + { + title: 'Search Resolver', + description: 'DESC', + builders: ['node'], + linkTo: 'https://developers.vtex.com/', + linkTitle: 'See guide', + repoLink: 'https://github.com/vtex-apps/search-resolver', + }, +] diff --git a/src/utils/typings/types.ts b/src/utils/typings/types.ts index 21e9a355b..13c44754a 100644 --- a/src/utils/typings/types.ts +++ b/src/utils/typings/types.ts @@ -50,6 +50,15 @@ export type WhatsNextDataElement = { linkTo: string } +export type CodeSamplesElement = { + title: string + description: string + builders: string[] + linkTitle: string + linkTo: string + repoLink: string +} + export type ResourceDataElement = { title: ResourceTitle description: string From 1f018d119e631c6397262be6749aa6ceef4e5ec5 Mon Sep 17 00:00:00 2001 From: Carolina Menezes Date: Wed, 1 Nov 2023 21:20:11 -0300 Subject: [PATCH 2/9] style(code-samples): add content and improve styles --- src/components/code-sample-card/index.tsx | 66 ++-- src/components/code-sample-card/styles.ts | 67 +++- src/components/code-sample-section/index.tsx | 4 +- src/components/multiselect/styles.ts | 12 +- src/styles/global.css | 6 + src/utils/constants.ts | 303 ++++++++++--------- src/utils/typings/types.ts | 4 +- 7 files changed, 270 insertions(+), 192 deletions(-) diff --git a/src/components/code-sample-card/index.tsx b/src/components/code-sample-card/index.tsx index e4992c37d..d5fa64804 100644 --- a/src/components/code-sample-card/index.tsx +++ b/src/components/code-sample-card/index.tsx @@ -1,5 +1,4 @@ import { Box, Flex, Text, IconCaret, Link } from '@vtex/brand-ui' -import GithubIcon from 'components/icons/github-icon' import type { CodeSamplesElement } from 'utils/typings/types' @@ -9,43 +8,52 @@ const CodeSampleCard = ({ title, description, builders, - linkTitle, linkTo, repoLink, + category, }: CodeSamplesElement) => { return ( - - + + + {category && {category}} {title} - - + + {description} + + + {builders.map((builder) => ( + {builder} + ))} + + {linkTo && ( + + + + Learn more + + + + )} + + + + + + + View GitHub repository + + + - - {description} - - - - {builders.map((builder) => ( - {builder} - ))} - - - - - {linkTitle} - - - - - + ) } diff --git a/src/components/code-sample-card/styles.ts b/src/components/code-sample-card/styles.ts index a2d7d70b7..52a702ad2 100644 --- a/src/components/code-sample-card/styles.ts +++ b/src/components/code-sample-card/styles.ts @@ -1,8 +1,10 @@ import type { SxStyleProp } from '@vtex/brand-ui' const container: SxStyleProp = { + flexDirection: 'column', + justifyContent: 'space-between', + fontSize: '14px', mt: '16px', - padding: '16px', borderRadius: '4px', border: '1px solid #E7E9EE', width: ['100%', '49%'], @@ -24,8 +26,21 @@ const container: SxStyleProp = { }, } +const innerContent: SxStyleProp = { + padding: '16px', +} + +const category: SxStyleProp = { + textTransform: 'uppercase', + fontWeight: '600', + fontSize: '12px', + letterSpacing: '0.8px', + color: '#a1a8b3', + mb: '10px', +} + const title: SxStyleProp = { - mb: '8px', + mb: '6px', fontSize: '16px', fontWeight: '400', lineHeight: ['22px', '18px'], @@ -33,9 +48,38 @@ const title: SxStyleProp = { } const description: SxStyleProp = { - fontSize: '14px', + fontSize: '1.05em', + fontWeight: '400', + color: 'muted.0', + minHeight: '42px', + maxHeight: '82px', +} + +const ctaLink: SxStyleProp = { + padding: '8px 0 15px', + maxHeight: '56px', + justifyContent: 'center', + alignItems: 'center', + borderTop: '1px solid #E7E9EE', + borderBottomLeftRadius: '8px', + borderBottomRightRadius: '8px', + transition: 'all 0.3s ease-out', + '.ctaLinkText': { + transition: 'all 0.3s ease-out', + }, + ':active, :hover': { + backgroundColor: '#F8F7FC', + transition: 'all 0.3s ease-out', + '.ctaLinkText': { + color: '#000711', + transition: 'all 0.3s ease-out', + }, + }, +} + +const ctaLinkText: SxStyleProp = { + fontSize: '1.1em', fontWeight: '400', - lineHeight: '20px', color: 'muted.0', } @@ -45,8 +89,8 @@ const linkContainer: SxStyleProp = { } const link: SxStyleProp = { - ...description, color: 'muted.1', + textDecoration: 'underline', ':hover': { color: '#e31d58 !important', }, @@ -60,25 +104,22 @@ const builderList: SxStyleProp = { } const builderListItem: SxStyleProp = { - ...description, - bg: '#e7e9ed', + bg: 'muted.3', px: '6px', borderRadius: '4px', display: 'inline', } -const flexLinks: SxStyleProp = { - ...builderList, - justifyContent: 'space-between', -} - export default { container, + innerContent, title, description, linkContainer, link, builderList, builderListItem, - flexLinks, + ctaLink, + ctaLinkText, + category, } diff --git a/src/components/code-sample-section/index.tsx b/src/components/code-sample-section/index.tsx index 592e63b00..cf2912ffd 100644 --- a/src/components/code-sample-section/index.tsx +++ b/src/components/code-sample-section/index.tsx @@ -1,7 +1,6 @@ import { useState } from 'react' import { Box, Flex } from '@vtex/brand-ui' -import { getMessages } from 'utils/get-messages' import { codeSamples } from 'utils/constants' import styles from 'styles/documentation-landing-page' @@ -14,7 +13,6 @@ interface ICodeSamplesSection { } const CodeSamplesSection = ({ builders }: ICodeSamplesSection) => { - const messages = getMessages() const [filter, setFilter] = useState([]) const filteredCodeSamples = codeSamples.filter( (codeSampleItem) => @@ -24,7 +22,7 @@ const CodeSamplesSection = ({ builders }: ICodeSamplesSection) => { return ( { setFilter(selection) diff --git a/src/components/multiselect/styles.ts b/src/components/multiselect/styles.ts index a81178ab8..5a02de382 100644 --- a/src/components/multiselect/styles.ts +++ b/src/components/multiselect/styles.ts @@ -14,11 +14,12 @@ const multiselect: SxStyleProp = { } const input: SxStyleProp = { - padding: '8px 12px 7px', + fontSize: '15px', + padding: '8px 12px 4px', background: '#F4F4F4', borderRadius: '4px', justifyContent: 'space-between', - width: '230px', + width: '150px', cursor: 'pointer', } @@ -38,6 +39,9 @@ const dropdown: SxStyleProp = { const optionsContainer: SxStyleProp = { flexDirection: 'column', + overflowY: 'auto', + maxHeight: '35vh', + width: '256px', } const checkbox: SxStyleProp = { @@ -48,12 +52,14 @@ const checkbox: SxStyleProp = { } const option: SxStyleProp = { + fontSize: '15px', columnGap: '8px', padding: '8px 0px', } const buttonsContainer: SxStyleProp = { - marginTop: '10px', + marginTop: '14px', + justifyContent: 'flex-end', } export default { diff --git a/src/styles/global.css b/src/styles/global.css index ce6e44454..25169011b 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -182,6 +182,12 @@ hr { height: 20px; } +@media screen and (max-width: 40em) { + .ch-editor-frame > div{ + height: auto; + } +} + body { --ch-scrollycoding-sticker-width: 40%; --ch-scrollycoding-code-min-height: 80vh; diff --git a/src/utils/constants.ts b/src/utils/constants.ts index 34d8a44a1..3e3324e82 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -181,197 +181,216 @@ export const resources: ResourceDataElement[] = [ export const codeSamples: CodeSamplesElement[] = [ { - title: 'Admin app', - description: 'Create an Admin app.', - builders: ['admin', 'react'], - linkTo: 'https://developers.vtex.com/', - linkTitle: messages['app_development_page_new_to_app_development.link'], - repoLink: 'https://github.com/vtex/admin-ui-example', + title: 'React app', + description: + 'Create custom React-based apps for your Store Theme with internationalization support.', + builders: ['react', 'messages'], + linkTo: + 'https://developers.vtex.com/docs/guides/vtex-io-documentation-1-developing-storefront-apps-using-react-and-vtex-io', + category: 'Frontend', + repoLink: 'https://github.com/vtex-apps/react-app-template', + }, + { + title: 'Service', + description: 'Leverage Node.js to implement custom route handling logic.', + builders: ['node'], + linkTo: + 'https://learn.vtex.com/docs/course-calling-commerce-apis-step01introduction-lang-en', + category: 'Backend', + repoLink: 'https://github.com/vtex-apps/service-example', + }, + { + title: 'Pixel app', + description: + 'Run scripts in your store website to integrate with third-party solutions and services.', + builders: ['react', 'store', 'pixel'], + linkTo: + 'https://developers.vtex.com/docs/guides/vtex-io-documentation-1-developnativeintegrationswithpixelapps', + category: 'Scripts', + repoLink: 'https://github.com/vtex-apps/pixel-app-template', }, { title: 'Scripts app', - description: 'DESCRIPTION', + description: + 'Run VTEX IO scripts in Legacy CMS stores using a custom Scripts app.', builders: ['scripts'], linkTo: 'https://developers.vtex.com/docs/guides/vtex-io-documentation-running-io-scripts-in-non-io-vtex-stores#step-1-developing-your-app', - linkTitle: 'See guide', + category: 'Scripts', repoLink: 'https://github.com/vtex-apps/app-scripts-example', }, { - title: 'Buyer Organization Supplier app', - description: 'DESCRIPTION', - builders: ['node'], - linkTo: 'https://developers.vtex.com/', - linkTitle: 'See guide', - repoLink: 'https://github.com/vtex-apps/buyer-org-supplier', - }, - { - title: 'Carrier Hubs', + title: 'Store Theme', description: - 'Examples using vtex.carrier-notifier and vtex.carrier-tracking as builders', - builders: ['node'], - linkTo: 'https://developers.vtex.com/', - linkTitle: 'See guide', - repoLink: 'https://github.com/vtex-apps/carrier-hubs-examples', + 'Jumpstart the development of Store Themes with this pre-defined template.', + builders: ['styles', 'store', 'sitemap'], + linkTo: 'https://developers.vtex.com/docs/guides/getting-started-3', + category: 'Store Framework', + repoLink: 'https://github.com/vtex-apps/store-theme', }, { - title: 'Checkout UI Settings', - description: 'DESC', - builders: ['checkout-ui-custom'], - linkTo: 'https://developers.vtex.com/', - linkTitle: 'See guide', - repoLink: 'https://github.com/vtex-apps/checkout-ui-settings', + title: 'Minimum Store Theme', + description: + 'Jumpstart the development of Store Themes with this minimum Store Theme.', + builders: ['styles', 'store'], + linkTo: 'https://learn.vtex.com/docs/course-basic-blocks-lang-en', + category: 'Store Framework', + repoLink: 'https://github.com/vtex-apps/minimum-boilerplate-theme', }, { - title: 'Delivery Theme', - description: 'DESC', - builders: ['store', 'styles'], - linkTo: 'https://developers.vtex.com/', - linkTitle: 'See guide', - repoLink: 'https://github.com/vtex-apps/delivery-theme', + title: 'Store Theme robots', + description: "Customize your cross-border store's robots.txt files.", + builders: ['sitemap'], + linkTo: + 'https://developers.vtex.com/docs/guides/vtex-io-documentation-creating-robots-files-for-cross-border-stores', + category: 'Store Framework', + repoLink: 'https://github.com/vtex-apps/store-theme-robots', }, { - title: 'Edition app', - description: 'DESC', + title: 'Edition App', + description: + 'Streamline the setup of a group of VTEX accounts by creating your own Edition App.', builders: ['edition'], - linkTo: 'https://developers.vtex.com/', - linkTitle: 'See guide', + linkTo: + 'https://developers.vtex.com/docs/guides/vtex-io-documentation-configuring-an-edition-app', + category: 'Edition App', repoLink: 'https://github.com/vtex-apps/edition-hello', }, { - title: 'Events service', - description: 'DESC', - builders: ['node'], - linkTo: 'https://developers.vtex.com/', - linkTitle: 'See guide', - repoLink: 'https://github.com/vtex-apps/events-example', + title: 'Carrier Hubs - Tracking', + description: 'Obtain tracking events from custom carriers.', + builders: ['node', 'vtex.carrier-tracking'], + linkTo: 'https://developers.vtex.com/docs/guides/tracking-1', + category: 'Fulfillment', + repoLink: + 'https://github.com/vtex-apps/carrier-hubs-examples/tree/main/carrier-tracking-example', + }, + { + title: 'Carrier Hubs - Notifier', + description: 'Notify custom carriers about a dispatch order.', + builders: ['node', 'vtex.carrier-notifier'], + linkTo: 'https://developers.vtex.com/docs/guides/notification-1', + category: 'Fulfillment', + repoLink: + 'https://github.com/vtex-apps/carrier-hubs-examples/tree/main/carrier-notifier-example', }, { title: 'Payment app', - description: 'DESC', + description: + "Develop your own Payment app to provide an additional verification step in your store's checkout process.", builders: ['react', 'pages', 'messages'], - linkTo: 'https://developers.vtex.com/', - linkTitle: 'See guide', + linkTo: + 'https://developers.vtex.com/docs/guides/payments-integration-payment-app', + category: 'Payments', repoLink: 'https://github.com/vtex-apps/example-payment-authorization-app', }, - { - title: 'GraphQL app', - description: 'DESC', - builders: ['node', 'graphql'], - linkTo: 'https://developers.vtex.com/', - linkTitle: 'See guide', - repoLink: 'https://github.com/vtex-apps/graphql-example', - }, - { - title: 'Integration app', - description: 'DESC', - builders: ['react', 'messages', 'node', 'admin', 'graphql'], - linkTo: 'https://developers.vtex.com/', - linkTitle: 'See guide', - repoLink: 'https://github.com/vtex/mkp-app-template', - }, - { - title: 'Orders Feed', - description: 'DESC', - builders: ['node'], - linkTo: 'https://developers.vtex.com/', - linkTitle: 'See guide', - repoLink: 'https://github.com/vtex-apps/orders-feed-example', - }, { title: 'Payment Provider Framework', - description: 'DESC', + description: 'Integrate custom payment providers into your VTEX store.', builders: ['paymentProvider', 'node'], - linkTo: 'https://developers.vtex.com/', - linkTitle: 'See guide', + linkTo: + 'https://developers.vtex.com/docs/guides/payments-integration-payment-provider-framework', + category: 'Payments', repoLink: 'https://github.com/vtex-apps/payment-provider-example', }, - { - title: 'Pixel app', - description: 'DESC', - builders: ['react', 'store', 'pixel'], - linkTo: 'https://developers.vtex.com/', - linkTitle: 'See guide', - repoLink: 'https://github.com/vtex-apps/pixel-app-template', - }, - { - title: 'React app', - description: 'DESC', - builders: ['react', 'messages'], - linkTo: 'https://developers.vtex.com/', - linkTitle: 'See guide', - repoLink: 'https://github.com/vtex-apps/react-app-template', + // { + // title: 'Service Worker', + // description: + // 'Offload network requests to a service worker for improved performance.', + // builders: ['service-worker'], + // repoLink: 'https://github.com/vtex-apps/service-worker-example', + // }, + // { + // title: 'React app', + // description: + // 'Create custom React and GraphQL-based apps for your Store Theme.', + // builders: ['store', 'react', 'messages'], + // linkTo: 'https://learn.vtex.com/docs/course-store-block-lang-en', + // linkTitle: 'See guide', + // repoLink: 'https://github.com/vtex-trainings/store-block-template', + // }, + { + title: 'Search Segment resolver', + description: + 'Segment the search result page of your store to present custom search results for each of your shoppers.', + builders: ['node'], + linkTo: + 'https://developers.vtex.com/docs/guides/vtex-io-documentation-segmenting-the-search-result', + category: 'Search', + repoLink: 'https://github.com/vtex-apps/search-segment-resolver', }, { title: 'Search GraphQL Resolver', - description: 'DESC', + description: + 'Extend VTEX search capabilities with external search providers.', builders: ['node'], - linkTo: 'https://developers.vtex.com/', - linkTitle: 'See guide', + linkTo: + 'https://developers.vtex.com/docs/guides/external-search-provider-recipe', + category: 'Search', repoLink: 'https://github.com/vtex-apps/search-resolver', }, { - title: 'Store Theme Robots', - description: 'DESC', - builders: ['sitemap'], - linkTo: 'https://developers.vtex.com/', - linkTitle: 'See guide', - repoLink: 'https://github.com/vtex-apps/store-theme-robots', - }, - { - title: 'Store theme', - description: 'DESC', - builders: ['styles', 'store', 'sitemap'], - linkTo: 'https://developers.vtex.com/', - linkTitle: 'See guide', - repoLink: 'https://github.com/vtex-apps/store-theme', + title: 'External Marketplace Integration app', + description: 'Integrate with external marketplaces.', + builders: ['react', 'messages', 'node', 'admin', 'graphql'], + linkTo: + 'https://developers.vtex.com/docs/guides/external-marketplace-integration-app-template', + category: 'Marketplace', + repoLink: 'https://github.com/vtex/mkp-app-template', }, { - title: 'Store Block course template', - description: 'DESC', - builders: ['store', 'react', 'messages'], - linkTo: 'https://developers.vtex.com/', - linkTitle: 'See guide', - repoLink: 'https://github.com/vtex-trainings/store-block-template', + title: 'Orders Feed', + description: 'Develop an app to handle status updates from OMS Feed.', + builders: ['node'], + linkTo: + 'https://developers.vtex.com/docs/guides/how-to-receive-order-notifications-on-vtex-io', + category: 'Orders', + repoLink: 'https://github.com/vtex-apps/orders-feed-example', }, { - title: 'Minimum Boilerplate Theme', - description: 'DESC', - builders: ['store', 'styles'], - linkTo: 'https://developers.vtex.com/', - linkTitle: 'See guide', - repoLink: 'https://github.com/vtex-apps/minimum-boilerplate-theme', + title: 'Events service', + description: 'Trigger events based on specific actions.', + builders: ['node'], + repoLink: 'https://github.com/vtex-apps/events-example', + category: 'Backend', }, + { - title: 'Service Worker', - description: 'DESC', - builders: ['service-worker'], - linkTo: 'https://developers.vtex.com/', - linkTitle: 'See guide', - repoLink: 'https://github.com/vtex-apps/service-worker-example', + title: 'GraphQL app', + description: 'Jumpstart the development of a GraphQL service.', + builders: ['node', 'graphql'], + repoLink: 'https://github.com/vtex-apps/graphql-example', + category: 'Backend', }, + { - title: 'Service', - description: 'DESC', - builders: ['node'], - linkTo: 'https://developers.vtex.com/', - linkTitle: 'See guide', - repoLink: 'https://github.com/vtex-apps/service-example', + title: 'Admin app', + description: + 'Build a tailored frontend app for the VTEX Admin using React.', + builders: ['admin', 'messages', 'react'], + repoLink: 'https://github.com/vtex/admin-ui-example', + category: 'Admin', }, { - title: 'search-segment-resolver', - description: 'DESC', + title: 'Buyer Organization Supplier app', + description: + 'Create an app to save custom data from a Buyer Organization to the Profile System.', builders: ['node'], - linkTo: 'https://developers.vtex.com/', - linkTitle: 'See guide', - repoLink: 'https://github.com/vtex-apps/search-segment-resolver', + repoLink: 'https://github.com/vtex-apps/buyer-org-supplier', + category: 'B2B', }, { - title: 'Search Resolver', - description: 'DESC', - builders: ['node'], - linkTo: 'https://developers.vtex.com/', - linkTitle: 'See guide', - repoLink: 'https://github.com/vtex-apps/search-resolver', - }, + title: 'Checkout UI Settings', + description: "Customize the user interface of your store's Checkout.", + builders: ['checkout-ui-custom'], + repoLink: 'https://github.com/vtex-apps/checkout-ui-settings', + category: 'Checkout', + }, + // { + // title: 'Delivery Theme', + // description: 'DESC', + // builders: ['store', 'styles'], + // linkTo: 'https://developers.vtex.com/', + // repoLink: 'https://github.com/vtex-apps/delivery-theme', + // }, ] diff --git a/src/utils/typings/types.ts b/src/utils/typings/types.ts index 13c44754a..479981838 100644 --- a/src/utils/typings/types.ts +++ b/src/utils/typings/types.ts @@ -54,8 +54,8 @@ export type CodeSamplesElement = { title: string description: string builders: string[] - linkTitle: string - linkTo: string + category: string + linkTo?: string repoLink: string } From 4151397eee9e67168b50a34a73643d343f16fb10 Mon Sep 17 00:00:00 2001 From: Carolina Menezes <60782333+carolinamenezes@users.noreply.github.com> Date: Tue, 7 Nov 2023 15:43:11 -0300 Subject: [PATCH 3/9] Update src/utils/constants.ts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Júlia Rabello <77292838+julia-rabello@users.noreply.github.com> --- src/utils/constants.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/constants.ts b/src/utils/constants.ts index 3e3324e82..999c23a2b 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -222,7 +222,7 @@ export const codeSamples: CodeSamplesElement[] = [ { title: 'Store Theme', description: - 'Jumpstart the development of Store Themes with this pre-defined template.', + 'Jumpstart the development of Store Themes with this predefined template.', builders: ['styles', 'store', 'sitemap'], linkTo: 'https://developers.vtex.com/docs/guides/getting-started-3', category: 'Store Framework', From 142c6a0293421b75ee21ae4124eda4c1b1d8d718 Mon Sep 17 00:00:00 2001 From: Carolina Menezes <60782333+carolinamenezes@users.noreply.github.com> Date: Tue, 7 Nov 2023 15:43:18 -0300 Subject: [PATCH 4/9] Update src/utils/constants.ts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Júlia Rabello <77292838+julia-rabello@users.noreply.github.com> --- src/utils/constants.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/constants.ts b/src/utils/constants.ts index 999c23a2b..d9364a2d3 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -231,7 +231,7 @@ export const codeSamples: CodeSamplesElement[] = [ { title: 'Minimum Store Theme', description: - 'Jumpstart the development of Store Themes with this minimum Store Theme.', + 'Jumpstart the development of Store Themes with this minimum template.', builders: ['styles', 'store'], linkTo: 'https://learn.vtex.com/docs/course-basic-blocks-lang-en', category: 'Store Framework', From bb37a02f9e2ac3ea03d0bdc0414b09ce9b1d1082 Mon Sep 17 00:00:00 2001 From: Carolina Menezes <60782333+carolinamenezes@users.noreply.github.com> Date: Tue, 7 Nov 2023 15:43:35 -0300 Subject: [PATCH 5/9] Update src/utils/constants.ts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Júlia Rabello <77292838+julia-rabello@users.noreply.github.com> --- src/utils/constants.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/constants.ts b/src/utils/constants.ts index d9364a2d3..362151fc9 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -312,7 +312,7 @@ export const codeSamples: CodeSamplesElement[] = [ { title: 'Search Segment resolver', description: - 'Segment the search result page of your store to present custom search results for each of your shoppers.', + 'Segment the search result page of your store to present custom search results for each shopper.', builders: ['node'], linkTo: 'https://developers.vtex.com/docs/guides/vtex-io-documentation-segmenting-the-search-result', From 29ff2dda8bcbe6b73cc5c5a964306f9a1b80dd34 Mon Sep 17 00:00:00 2001 From: Carolina Menezes <60782333+carolinamenezes@users.noreply.github.com> Date: Tue, 7 Nov 2023 15:44:24 -0300 Subject: [PATCH 6/9] Update src/utils/constants.ts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Júlia Rabello <77292838+julia-rabello@users.noreply.github.com> --- src/utils/constants.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/constants.ts b/src/utils/constants.ts index 362151fc9..0917a776f 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -340,7 +340,7 @@ export const codeSamples: CodeSamplesElement[] = [ }, { title: 'Orders Feed', - description: 'Develop an app to handle status updates from OMS Feed.', + description: 'Develop an app to handle status updates from Orders Feed.', builders: ['node'], linkTo: 'https://developers.vtex.com/docs/guides/how-to-receive-order-notifications-on-vtex-io', From 8b39684107b44629ed7a7b5038ecce181f0cd218 Mon Sep 17 00:00:00 2001 From: Carolina Menezes <60782333+carolinamenezes@users.noreply.github.com> Date: Tue, 7 Nov 2023 15:44:33 -0300 Subject: [PATCH 7/9] Update src/utils/constants.ts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Júlia Rabello <77292838+julia-rabello@users.noreply.github.com> --- src/utils/constants.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/constants.ts b/src/utils/constants.ts index 0917a776f..e201e255f 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -374,7 +374,7 @@ export const codeSamples: CodeSamplesElement[] = [ { title: 'Buyer Organization Supplier app', description: - 'Create an app to save custom data from a Buyer Organization to the Profile System.', + 'Create an app to save custom data from a Buyer Organization to Master Data.', builders: ['node'], repoLink: 'https://github.com/vtex-apps/buyer-org-supplier', category: 'B2B', From 9e45814dbbb9e478d72bc177e819ed465b1e1bd6 Mon Sep 17 00:00:00 2001 From: Carolina Menezes Date: Wed, 8 Nov 2023 12:06:50 -0300 Subject: [PATCH 8/9] chore(code-samples): improve code-samples page --- public/navigation.json | 39 +++++++++++++--------- src/components/code-sample-card/index.tsx | 40 +++++++++++------------ src/components/code-sample-card/styles.ts | 11 +++---- src/utils/constants.ts | 21 ++++++------ 4 files changed, 57 insertions(+), 54 deletions(-) diff --git a/public/navigation.json b/public/navigation.json index 77b053254..067539f10 100644 --- a/public/navigation.json +++ b/public/navigation.json @@ -4945,7 +4945,7 @@ "type": "openapi", "method": "PUT", "origin": "", - "endpoint": "/giftcardproviders/-giftCardProviderId-", + "endpoint": "/api/giftcardproviders/-giftCardProviderId-", "children": [] }, { @@ -4954,7 +4954,7 @@ "type": "openapi", "method": "GET", "origin": "", - "endpoint": "/giftcardproviders/-giftCardProviderId-", + "endpoint": "/api/giftcardproviders/-giftCardProviderId-", "children": [] }, { @@ -4963,7 +4963,7 @@ "type": "openapi", "method": "GET", "origin": "", - "endpoint": "/giftcardproviders", + "endpoint": "/api/giftcardproviders", "children": [] }, { @@ -4972,7 +4972,7 @@ "type": "openapi", "method": "DELETE", "origin": "", - "endpoint": "/giftcardproviders/-giftCardProviderId-", + "endpoint": "/api/giftcardproviders/-giftCardProviderId-", "children": [] } ] @@ -4988,7 +4988,7 @@ "type": "openapi", "method": "POST", "origin": "", - "endpoint": "/giftcardproviders/-giftCardProviderId-/giftcards", + "endpoint": "/api/giftcardproviders/-giftCardProviderId-/giftcards", "children": [] }, { @@ -4997,7 +4997,7 @@ "type": "openapi", "method": "POST", "origin": "", - "endpoint": "/giftcardproviders/-giftCardProviderId-/giftcards/_search", + "endpoint": "/api/giftcardproviders/-giftCardProviderId-/giftcards/_search", "children": [] }, { @@ -5006,7 +5006,7 @@ "type": "openapi", "method": "GET", "origin": "", - "endpoint": "/giftcardproviders/-giftCardProviderId-/giftcards/-giftCardId-", + "endpoint": "/api/giftcardproviders/-giftCardProviderId-/giftcards/-giftCardId-", "children": [] }, { @@ -5015,7 +5015,7 @@ "type": "openapi", "method": "POST", "origin": "", - "endpoint": "/giftcardproviders/-giftCardProviderId-/giftcards/-giftCardId-/transactions", + "endpoint": "/api/giftcardproviders/-giftCardProviderId-/giftcards/-giftCardId-/transactions", "children": [] }, { @@ -5024,7 +5024,7 @@ "type": "openapi", "method": "GET", "origin": "", - "endpoint": "/giftcardproviders/-giftCardProviderId-/giftcards/-giftCardId-/transactions/-transactionId-", + "endpoint": "/api/giftcardproviders/-giftCardProviderId-/giftcards/-giftCardId-/transactions/-transactionId-", "children": [] }, { @@ -5033,7 +5033,7 @@ "type": "openapi", "method": "GET", "origin": "", - "endpoint": "/giftcardproviders/-giftCardProviderId-/giftcards/-giftCardId-/transactions", + "endpoint": "/api/giftcardproviders/-giftCardProviderId-/giftcards/-giftCardId-/transactions", "children": [] }, { @@ -5042,7 +5042,7 @@ "type": "openapi", "method": "GET", "origin": "", - "endpoint": "/giftcardproviders/-giftCardProviderId-/giftcards/-giftCardId-/transactions/-tId-/authorization", + "endpoint": "/api/giftcardproviders/-giftCardProviderId-/giftcards/-giftCardId-/transactions/-tId-/authorization", "children": [] }, { @@ -5051,7 +5051,7 @@ "type": "openapi", "method": "POST", "origin": "", - "endpoint": "/giftcardproviders/-giftCardProviderId-/giftcards/-giftCardId-/transactions/-tId-/cancellations", + "endpoint": "/api/giftcardproviders/-giftCardProviderId-/giftcards/-giftCardId-/transactions/-tId-/cancellations", "children": [] }, { @@ -5060,7 +5060,7 @@ "type": "openapi", "method": "GET", "origin": "", - "endpoint": "/giftcardproviders/-giftCardProviderId-/giftcards/-giftCardId-/transactions/-tId-/cancellations", + "endpoint": "/api/giftcardproviders/-giftCardProviderId-/giftcards/-giftCardId-/transactions/-tId-/cancellations", "children": [] }, { @@ -5069,7 +5069,7 @@ "type": "openapi", "method": "POST", "origin": "", - "endpoint": "/giftcardproviders/-giftCardProviderId-/giftcards/-giftCardId-/transactions/-tId-/settlements", + "endpoint": "/api/giftcardproviders/-giftCardProviderId-/giftcards/-giftCardId-/transactions/-tId-/settlements", "children": [] }, { @@ -5078,7 +5078,7 @@ "type": "openapi", "method": "GET", "origin": "", - "endpoint": "/giftcardproviders/-giftCardProviderId-/giftcards/-giftCardId-/transactions/-tId-/settlements", + "endpoint": "/api/giftcardproviders/-giftCardProviderId-/giftcards/-giftCardId-/transactions/-tId-/settlements", "children": [] } ] @@ -10060,6 +10060,13 @@ "type": "markdown", "children": [] }, + { + "name": "Code samples and templates", + "slug": "code-samples", + "origin": "", + "type": "markdown", + "children": [] + }, { "name": "Getting Started", "slug": "vtex-io-getting-started", @@ -14998,4 +15005,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/components/code-sample-card/index.tsx b/src/components/code-sample-card/index.tsx index d5fa64804..01360f2d3 100644 --- a/src/components/code-sample-card/index.tsx +++ b/src/components/code-sample-card/index.tsx @@ -27,32 +27,30 @@ const CodeSampleCard = ({ {builder} ))} - {linkTo && ( + + + View GitHub repository + + + + + {linkTo && ( + - - Learn more + + View documentation + - )} - - - - - - - View GitHub repository - - - - - + + )} ) } diff --git a/src/components/code-sample-card/styles.ts b/src/components/code-sample-card/styles.ts index 52a702ad2..bcd526f05 100644 --- a/src/components/code-sample-card/styles.ts +++ b/src/components/code-sample-card/styles.ts @@ -42,8 +42,8 @@ const category: SxStyleProp = { const title: SxStyleProp = { mb: '6px', fontSize: '16px', - fontWeight: '400', - lineHeight: ['22px', '18px'], + fontWeight: 'bold', + lineHeight: '22px', color: 'muted.0', } @@ -51,12 +51,11 @@ const description: SxStyleProp = { fontSize: '1.05em', fontWeight: '400', color: 'muted.0', - minHeight: '42px', maxHeight: '82px', } const ctaLink: SxStyleProp = { - padding: '8px 0 15px', + padding: '12px 0', maxHeight: '56px', justifyContent: 'center', alignItems: 'center', @@ -84,11 +83,11 @@ const ctaLinkText: SxStyleProp = { } const linkContainer: SxStyleProp = { - mt: '8px', alignItems: 'center', } const link: SxStyleProp = { + mt: '10px', color: 'muted.1', textDecoration: 'underline', ':hover': { @@ -115,8 +114,8 @@ export default { innerContent, title, description, - linkContainer, link, + linkContainer, builderList, builderListItem, ctaLink, diff --git a/src/utils/constants.ts b/src/utils/constants.ts index e201e255f..09d4f3811 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -277,7 +277,7 @@ export const codeSamples: CodeSamplesElement[] = [ { title: 'Payment app', description: - "Develop your own Payment app to provide an additional verification step in your store's checkout process.", + "Provide an additional verification step in your store's checkout process.", builders: ['react', 'pages', 'messages'], linkTo: 'https://developers.vtex.com/docs/guides/payments-integration-payment-app', @@ -312,7 +312,7 @@ export const codeSamples: CodeSamplesElement[] = [ { title: 'Search Segment resolver', description: - 'Segment the search result page of your store to present custom search results for each shopper.', + 'Segment the search result page to present custom results for each shopper.', builders: ['node'], linkTo: 'https://developers.vtex.com/docs/guides/vtex-io-documentation-segmenting-the-search-result', @@ -340,7 +340,7 @@ export const codeSamples: CodeSamplesElement[] = [ }, { title: 'Orders Feed', - description: 'Develop an app to handle status updates from Orders Feed.', + description: 'Handle status updates from the Orders Feed.', builders: ['node'], linkTo: 'https://developers.vtex.com/docs/guides/how-to-receive-order-notifications-on-vtex-io', @@ -371,14 +371,6 @@ export const codeSamples: CodeSamplesElement[] = [ repoLink: 'https://github.com/vtex/admin-ui-example', category: 'Admin', }, - { - title: 'Buyer Organization Supplier app', - description: - 'Create an app to save custom data from a Buyer Organization to Master Data.', - builders: ['node'], - repoLink: 'https://github.com/vtex-apps/buyer-org-supplier', - category: 'B2B', - }, { title: 'Checkout UI Settings', description: "Customize the user interface of your store's Checkout.", @@ -386,6 +378,13 @@ export const codeSamples: CodeSamplesElement[] = [ repoLink: 'https://github.com/vtex-apps/checkout-ui-settings', category: 'Checkout', }, + { + title: 'Buyer Organization Supplier app', + description: 'Save custom data from a Buyer Organization to Master Data.', + builders: ['node'], + repoLink: 'https://github.com/vtex-apps/buyer-org-supplier', + category: 'B2B', + }, // { // title: 'Delivery Theme', // description: 'DESC', From 4bef05b7a5b939fd3fb67f7d06694a68d3a34d2a Mon Sep 17 00:00:00 2001 From: Carolina Menezes Date: Wed, 8 Nov 2023 12:25:34 -0300 Subject: [PATCH 9/9] style(global.css): fix code hike style --- src/styles/global.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/styles/global.css b/src/styles/global.css index 25169011b..b286f7dad 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -178,12 +178,12 @@ hr { width: 40% !important; } -.ch-editor-frame > div{ +.ch-scrollycoding .ch-editor-frame > div{ height: 20px; } @media screen and (max-width: 40em) { - .ch-editor-frame > div{ + .ch-scrollycoding .ch-editor-frame > div{ height: auto; } }