![Maven Central Adds Sigstore Signature Validation](https://cdn.sanity.io/images/cgdhsj6q/production/7da3bc8a946cfb5df15d7fcf49767faedc72b483-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Maven Central Adds Sigstore Signature Validation
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.
@walltowall/gatsby-theme-ww-prismic-docs
Advanced tools
Gatsby theme providing an interactive playground for Prismic slices.
Gatsby theme that provides interactive client documentation for Wall-to-Wall Gatsby websites.
yarn add @walltowall/gatsby-theme-ww-slice-studio
Setup the consuming project's gatsby-config
as shown below:
// In your gatsby-config.js
plugins: [
{
resolve: '@walltowall/gatsby-theme-ww-slice-studio',
options: {
// Path to the project's root directory. This is required and should be set to __dirname.
root: __dirname,
// Name of the client for the site. Will appear throughout documentation.
siteTitle: 'Site Title',
// Provide an object of Prismic custom type JSON schemas to load into Gatsby.
schemas,
// Provide a list of layouts to show in the client documentation. Each named layout should have a corresponding
// .js file in `/studio/layouts`.
layouts: [
'about',
'design',
'home',
'project',
'services',
'recognition',
'team',
],
// Provide an object of Prismic custom types and slice zones. These keys should have corresponding entries
// from the provided `schemas` object.
sliceZones: {
page: {
description:
'Each page document in Prismic represents a unique and visitable page on your website.',
zones: {
body:
"Body slices comprise the majority of the content on it's respective page.",
},
},
},
},
},
]
Once your gatsby-config
has been set-up, you'll need to configure a
netlify.toml
in your project root to serve the appropriate lambda functions
for authentication. Below is the absolute minimum you'll need to configure
lambda functionality.
[build]
functions = "node_modules/@walltowall/gatsby-theme-ww-slice-studio/src/lambda"
After setting up your .toml
file, ensure to add the appropriate environment
variables to your Netlify site's dashboard. See .env
for the values to enter.
As shown in the example gatsby-config
, every defined layout will need to have
a corresponding .js
file in your project's /studio/layouts
that follow the
following structure:
export const LAYOUT_NAME = {
// The display name for this layout.
name: 'Name',
// The custom type in Prismic this layout is available under.
customType: 'page',
// A short description for this layout.
description: 'Sample description',
// The list of slices to pre-populate the Prototyper when this layout is selected.
// Must be a list of tuples containing the full slice name and the example index to render.
example: [
['PageBodyHorizontalNavigation', 0],
['PageBodyFeaturedProjects', 0],
['PageBodyMixedSizedProjects', 0],
],
// A list of zones to render in the layout documentation.
// A zone can render any arbitrary JSX and label itself with a name and
// reasoning.
zones: [
{
// If you would like to render JSX without displaying any additional info,
// e.g. rendering a <Header /> or <Footer />, just omit the `name`, property.
render: () => <PageBodyHeader nextSharesBg={[true]} />,
},
{
// Heading for the zone.
name: 'Navigation',
// If a zone is from a "preset", designate it as one with the `preset` property.
// This will prevent this zone from being modified in the Prototyper tool.
preset: 'Horizontal Navigation',
// Client friendly reasoning as to why these slices were selected.
reasoning:
'Provides quick access to different project types for visitors.',
// The actual JSX to render for this zone.
render: () => (
<PageBodyHorizontalNavigation
title="design"
rootHref="/"
nextSharesBg={[true]}
>
<PageBodyHorizontalNavigation.Item href="/">
Hospitality + Leisure
</PageBodyHorizontalNavigation.Item>
<PageBodyHorizontalNavigation.Item href="/">
Interior Design
</PageBodyHorizontalNavigation.Item>
<PageBodyHorizontalNavigation.Item href="/">
Office + Healthcare
</PageBodyHorizontalNavigation.Item>
<PageBodyHorizontalNavigation.Item href="/">
Residential
</PageBodyHorizontalNavigation.Item>
<PageBodyHorizontalNavigation.Item href="/">
Retail + Restaurants
</PageBodyHorizontalNavigation.Item>
</PageBodyHorizontalNavigation>
),
},
{
name: 'Project Grid',
// If a zone is not a preset, include the exact list of slices used in the example.
slices: ['PageBodyFeaturedProjects', 'PageBodyBrandedCallout'],
// In addition to the exact list, also provide a list of recommended slices for this zone.
// In some designs, this may differ from `slices` since an example may not include every slice
// that would be appropriate.
recommendedSlices: [
'PageBodyFeaturedProjects',
'PageBodyMixedSizedProjects',
'PageBodySmallProjects',
'PageBodyBrandedCallout',
],
reasoning:
'Varied usage of the recommended slices helps give the layout a dynamic flow. The callout helps to provide a break in the list of projects.',
render: () => (
<>
<PageBodyFeaturedProjects nextSharesBg={[true]}>
<PageBodyFeaturedProjects.Project
variant="large"
imageURL="https://pvadev.cdn.prismic.io/pvadev/541704ba04a3f58caa4a37dd325d793d351dbd1d_0-flower-avenue.jpg"
imageAlt="Example."
location="Honolulu, Hawaii"
categoryUID="residential"
name="Flower Avenue"
href={true}
/>
</PageBodyFeaturedProjects>
<PageBodyBrandedCallout
variant="dark"
textHTML="<h1>Our team of architects and interior designers is both collaborative and visionary.</h1>"
buttonHref={true}
buttonText="Our approach"
nextSharesBg={[true]}
/>
<PageBodyFooter />
</>
),
},
],
}
Once you have written all of your required layouts, create
/studio/layouts/index.js
in your project and export all of your layouts as
named exports:
export { project } from './project'
export { otherLayout } from './otherLayout'
To write documentation for individual slices, create a docs
object property on
the slice component directly.
See below for an example:
export const PageBodyText = props => {
// ... implementation details
}
// At the end of the file, add the `docs` object to the component.
PageBodyText.docs = {
// The display name of the slice.
name: 'Text',
// List of examples of this slice. If a slice has variations of itself, each variant should be included.
examples: [
{
// Name of the example. This will show in the prototyper tool.
name: 'With Heading',
// Corresponding JSX for this example.
render: () => <PageBodyText />,
},
],
}
To write additional general documentation, you can create additional markdown
files in the /src/docs
directory of this theme.
Each markdown file should have generally follow the following frontmatter:
---
parent: General
title: Images
path: general/images
summary: >-
Short summary of article
---
Due to the nature of aliased imports with webpack, below is a comprehensive list of required files that your project needs for this theme to function correctly:
src/index.css
: Your fonts and base styles to inject into each Studio Frame.src/slices/index.js
: Export slicesMap
as PageBody
fromsrc/slices/PageBody
: so our theme has alias access to it./netlify.toml
: Must be configured to point to the theme's lambda folder. Ex:
node_modules/@walltowall/gatsby-theme-ww-slice-studio/src/lambda
studio/layouts
: Must contain your layouts and the appropriate index.js
FAQs
Gatsby theme providing an interactive playground for Prismic slices.
The npm package @walltowall/gatsby-theme-ww-prismic-docs receives a total of 0 weekly downloads. As such, @walltowall/gatsby-theme-ww-prismic-docs popularity was classified as not popular.
We found that @walltowall/gatsby-theme-ww-prismic-docs demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 4 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.
Security News
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Research
Security News
Socket researchers uncovered a backdoored typosquat of BoltDB in the Go ecosystem, exploiting Go Module Proxy caching to persist undetected for years.