├── .gitignore
├── .gitmodules
├── README.md
├── gatsbyjs
├── .gitignore
├── .prettierignore
├── .prettierrc
├── LICENSE
├── README.md
├── gatsby-browser.js
├── gatsby-config.js
├── gatsby-node.js
├── gatsby-ssr.js
├── package-lock.json
├── package.json
├── sandbox.config.json
├── src
│ ├── components
│ │ ├── Feature.js
│ │ ├── Grid.js
│ │ ├── Layout.js
│ │ ├── Teaser.js
│ │ └── seo.js
│ ├── images
│ │ ├── example.png
│ │ └── gatsby-icon.png
│ ├── pages
│ │ ├── 404.js
│ │ ├── home.js
│ │ ├── index.js
│ │ ├── page-2.js
│ │ ├── using-ssr.js
│ │ └── using-typescript.tsx
│ ├── styles
│ │ └── global.css
│ └── templates
│ │ └── using-dsg.js
└── tailwind.config.js
├── nuxtjs
├── README.md
├── components
│ └── storyblok
│ │ ├── Feature.vue
│ │ ├── Grid.vue
│ │ ├── Page.vue
│ │ └── Teaser.vue
├── nuxt.config.js
├── package-lock.json
├── package.json
├── pages
│ └── index.vue
└── static
│ └── favicon.ico
├── package-lock.json
├── package.json
├── remix
├── .eslintrc.js
├── .gitignore
├── README.md
├── app
│ ├── components
│ │ ├── Feature.jsx
│ │ ├── Grid.jsx
│ │ ├── Layout.jsx
│ │ ├── Page.jsx
│ │ └── Teaser.jsx
│ ├── entry.client.jsx
│ ├── entry.server.jsx
│ ├── root.jsx
│ └── routes
│ │ ├── home.jsx
│ │ └── index.jsx
├── package-lock.json
├── package.json
├── public
│ └── favicon.ico
├── remix.config.js
└── tsconfig.json
└── vuejs
├── README.md
├── index.html
├── package-lock.json
├── package.json
├── src
├── App.vue
├── components
│ ├── Feature.vue
│ ├── Grid.vue
│ ├── Page.vue
│ └── Teaser.vue
├── main.js
└── pages
│ └── Home.vue
└── vite.config.js
/.gitignore:
--------------------------------------------------------------------------------
1 | # Created by .ignore support plugin (hsz.mobi)
2 | ### Node template
3 | # Logs
4 | /logs
5 | *.log
6 | npm-debug.log*
7 | yarn-debug.log*
8 | yarn-error.log*
9 |
10 | # Runtime data
11 | pids
12 | *.pid
13 | *.seed
14 | *.pid.lock
15 |
16 | # Directory for instrumented libs generated by jscoverage/JSCover
17 | lib-cov
18 |
19 | # Coverage directory used by tools like istanbul
20 | coverage
21 |
22 | # nyc test coverage
23 | .nyc_output
24 |
25 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
26 | .grunt
27 |
28 | # Bower dependency directory (https://bower.io/)
29 | bower_components
30 |
31 | # node-waf configuration
32 | .lock-wscript
33 |
34 | # Compiled binary addons (https://nodejs.org/api/addons.html)
35 | build/Release
36 |
37 | # Dependency directories
38 | node_modules/
39 | jspm_packages/
40 |
41 | # TypeScript v1 declaration files
42 | typings/
43 |
44 | # Optional npm cache directory
45 | .npm
46 |
47 | # Optional eslint cache
48 | .eslintcache
49 |
50 | # Optional REPL history
51 | .node_repl_history
52 |
53 | # Output of 'npm pack'
54 | *.tgz
55 |
56 | # Yarn Integrity file
57 | .yarn-integrity
58 |
59 | # dotenv environment variables file
60 | .env
61 |
62 | # parcel-bundler cache (https://parceljs.org/)
63 | .cache
64 |
65 | # next.js build output
66 | .next
67 |
68 | # nuxt.js build output
69 | .nuxt
70 |
71 | # Nuxt generate
72 | dist
73 |
74 | # vuepress build output
75 | .vuepress/dist
76 |
77 | # sveltekit build output
78 | .svelte-kit
79 |
80 | # Serverless directories
81 | .serverless
82 |
83 | # IDE / Editor
84 | .idea
85 |
86 | # Service worker
87 | sw.*
88 |
89 | # macOS
90 | .DS_Store
91 |
92 | # Vim swap files
93 | *.swp
94 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "sveltekit"]
2 | path = sveltekit
3 | url = https://github.com/storyblok/sveltekit-ultimate-tutorial-series.git
4 | branch = part-1-sveltekit-ut
5 | [submodule "nuxtjs-3"]
6 | path = nuxtjs-3
7 | url = https://github.com/storyblok/nuxt-ultimate-tutorial.git
8 | branch = part-1
9 | [submodule "reactjs"]
10 | path = reactjs
11 | url = https://github.com/storyblok/storyblok-react-boilerplate.git
12 | branch = master
13 | [submodule "nextjs"]
14 | path = nextjs
15 | url = https://github.com/storyblok/next.js-ultimate-tutorial.git
16 | branch = part-1
17 | [submodule "astro"]
18 | path = astro
19 | url = https://github.com/storyblok/astro-ultimate-tutorial.git
20 | branch = part-1
21 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # ⛔️ DEPRECATED: Getting Started
2 | [](http://unmaintained.tech/)
3 |
4 | This project has been deprecated in favor of the [Storyblok Technologies](https://www.storyblok.com/technologies) page, allowing you to kickstart a new project within minutes.
5 | ___
6 |
7 | > Repository of the Getting Started (Hello World) projects built with Storyblok and various frontend frameworks.
8 |
9 | Follow the instruction on [Storyblok Getting Started Page](https://www.storyblok.com/docs/guide/getting-started) to correctly configure your space and understand the basics of headless CMS approach.
10 |
11 | **Our Getting Started covers following frameworks:**
12 |
13 | - Next.js
14 | - Gatsby.js
15 | - Nuxt 2
16 | - Nuxt 3
17 | - React
18 | - SvelteKit
19 | - Remix
20 | - Vue js
21 |
22 |
23 | ## Submodules Scaffolding
24 |
25 | To get the code from the submodules, run the following command
26 |
27 | ```
28 | npm run prepare
29 | ```
30 |
31 | ### Resources
32 |
33 | Visit our technology hubs for more tutorials and videos how to use Storyblok together with your favorite technology.
34 |
35 | - [Next.js Hub](https://www.storyblok.com/tc/nextjs)
36 | - [Gatsby.js Hub](https://www.storyblok.com/tc/gatsbyjs)
37 | - [Nuxt Hub](https://www.storyblok.com/tc/nuxtjs)
38 | - [React Hub](https://www.storyblok.com/tc/react)
39 | - For other languages/frameworks check the tutorial on our [technology page overview](https://www.storyblok.com/technologies)
40 |
--------------------------------------------------------------------------------
/gatsbyjs/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Runtime data
9 | pids
10 | *.pid
11 | *.seed
12 | *.pid.lock
13 |
14 | # Directory for instrumented libs generated by jscoverage/JSCover
15 | lib-cov
16 |
17 | # Coverage directory used by tools like istanbul
18 | coverage
19 |
20 | # nyc test coverage
21 | .nyc_output
22 |
23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
24 | .grunt
25 |
26 | # Bower dependency directory (https://bower.io/)
27 | bower_components
28 |
29 | # node-waf configuration
30 | .lock-wscript
31 |
32 | # Compiled binary addons (http://nodejs.org/api/addons.html)
33 | build/Release
34 |
35 | # Dependency directories
36 | node_modules/
37 | jspm_packages/
38 |
39 | # Typescript v1 declaration files
40 | typings/
41 |
42 | # Optional npm cache directory
43 | .npm
44 |
45 | # Optional eslint cache
46 | .eslintcache
47 |
48 | # Optional REPL history
49 | .node_repl_history
50 |
51 | # Output of 'npm pack'
52 | *.tgz
53 |
54 | # dotenv environment variable files
55 | .env*
56 |
57 | # gatsby files
58 | .cache/
59 | public
60 |
61 | # Mac files
62 | .DS_Store
63 |
64 | # Yarn
65 | yarn-error.log
66 | .pnp/
67 | .pnp.js
68 | # Yarn Integrity file
69 | .yarn-integrity
70 |
--------------------------------------------------------------------------------
/gatsbyjs/.prettierignore:
--------------------------------------------------------------------------------
1 | .cache
2 | package.json
3 | package-lock.json
4 | public
5 |
--------------------------------------------------------------------------------
/gatsbyjs/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "arrowParens": "avoid",
3 | "semi": false
4 | }
5 |
--------------------------------------------------------------------------------
/gatsbyjs/LICENSE:
--------------------------------------------------------------------------------
1 | The BSD Zero Clause License (0BSD)
2 |
3 | Copyright (c) 2020 Gatsby Inc.
4 |
5 | Permission to use, copy, modify, and/or distribute this software for any
6 | purpose with or without fee is hereby granted.
7 |
8 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
9 | REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
10 | AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
11 | INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
12 | LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
13 | OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
14 | PERFORMANCE OF THIS SOFTWARE.
15 |
--------------------------------------------------------------------------------
/gatsbyjs/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Gatsby minimal starter
8 |
9 |
10 | ## 🚀 Quick start
11 |
12 | 1. **Create a Gatsby site.**
13 |
14 | Use the Gatsby CLI to create a new site, specifying the minimal starter.
15 |
16 | ```shell
17 | # create a new Gatsby site using the minimal starter
18 | npm init gatsby
19 | ```
20 |
21 | 2. **Start developing.**
22 |
23 | Navigate into your new site’s directory and start it up.
24 |
25 | ```shell
26 | cd my-gatsby-site/
27 | npm run develop
28 | ```
29 |
30 | 3. **Open the code and start customizing!**
31 |
32 | Your site is now running at http://localhost:8000!
33 |
34 | Edit `src/pages/index.js` to see your site update in real-time!
35 |
36 | 4. **Learn more**
37 |
38 | - [Documentation](https://www.gatsbyjs.com/docs/?utm_source=starter&utm_medium=readme&utm_campaign=minimal-starter)
39 |
40 | - [Tutorials](https://www.gatsbyjs.com/tutorial/?utm_source=starter&utm_medium=readme&utm_campaign=minimal-starter)
41 |
42 | - [Guides](https://www.gatsbyjs.com/tutorial/?utm_source=starter&utm_medium=readme&utm_campaign=minimal-starter)
43 |
44 | - [API Reference](https://www.gatsbyjs.com/docs/api-reference/?utm_source=starter&utm_medium=readme&utm_campaign=minimal-starter)
45 |
46 | - [Plugin Library](https://www.gatsbyjs.com/plugins?utm_source=starter&utm_medium=readme&utm_campaign=minimal-starter)
47 |
48 | - [Cheat Sheet](https://www.gatsbyjs.com/docs/cheat-sheet/?utm_source=starter&utm_medium=readme&utm_campaign=minimal-starter)
49 |
--------------------------------------------------------------------------------
/gatsbyjs/gatsby-browser.js:
--------------------------------------------------------------------------------
1 | import './src/styles/global.css'
--------------------------------------------------------------------------------
/gatsbyjs/gatsby-config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | siteMetadata: {
3 | title: `Gatsby Default Starter`,
4 | description: `Kick off your next, great Gatsby project with this default starter. This barebones starter ships with the main Gatsby configuration files you might need.`,
5 | author: `@gatsbyjs`,
6 | siteUrl: `https://gatsbystarterdefaultsource.gatsbyjs.io/`,
7 | },
8 | plugins: [
9 | 'gatsby-plugin-postcss',
10 | `gatsby-plugin-react-helmet`,
11 | `gatsby-plugin-image`,
12 | {
13 | resolve: `gatsby-source-filesystem`,
14 | options: {
15 | name: `images`,
16 | path: `${__dirname}/src/images`,
17 | },
18 | },
19 | `gatsby-transformer-sharp`,
20 | `gatsby-plugin-sharp`,
21 | {
22 | resolve: `gatsby-plugin-manifest`,
23 | options: {
24 | name: `gatsby-starter-default`,
25 | short_name: `starter`,
26 | start_url: `/`,
27 | background_color: `#663399`,
28 | // This will impact how browsers show your PWA/website
29 | // https://css-tricks.com/meta-theme-color-and-trickery/
30 | // theme_color: `#663399`,
31 | display: `minimal-ui`,
32 | icon: `src/images/gatsby-icon.png`, // This path is relative to the root of the site.
33 | },
34 | },
35 | {
36 | resolve: 'gatsby-source-storyblok',
37 | options: {
38 | accessToken: 'd6IKUtAUDiKyAhpJtrLFcwtt',
39 | region: '',
40 | version: process.env.NODE_ENV === 'production' ? 'published' : 'draft',
41 | localAssets: true, // Optional parameter to download the images to use with Gatsby Image Plugin
42 | // languages: ['de', 'at'] // Optional parameter. Omission will retrieve all languages by default.
43 | }
44 | },
45 | // this (optional) plugin enables Progressive Web App + Offline functionality
46 | // To learn more, visit: https://gatsby.dev/offline
47 | // `gatsby-plugin-offline`,
48 | ],
49 | }
50 |
--------------------------------------------------------------------------------
/gatsbyjs/gatsby-node.js:
--------------------------------------------------------------------------------
1 | exports.createPages = async ({ actions }) => {
2 | const { createPage } = actions
3 | createPage({
4 | path: "/using-dsg",
5 | component: require.resolve("./src/templates/using-dsg.js"),
6 | context: {},
7 | defer: true,
8 | })
9 | }
10 |
--------------------------------------------------------------------------------
/gatsbyjs/gatsby-ssr.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Implement Gatsby's SSR (Server Side Rendering) APIs in this file.
3 | *
4 | * See: https://www.gatsbyjs.com/docs/ssr-apis/
5 | */
6 |
7 | // You can delete this file if you're not using it
8 |
--------------------------------------------------------------------------------
/gatsbyjs/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "gatsby-starter-default",
3 | "private": true,
4 | "description": "A simple starter to get up and developing quickly with Gatsby",
5 | "version": "0.1.0",
6 | "author": "Kyle Mathews ",
7 | "dependencies": {
8 | "gatsby": "^4.15.2",
9 | "gatsby-plugin-gatsby-cloud": "^4.15.0",
10 | "gatsby-plugin-image": "^2.15.1",
11 | "gatsby-plugin-manifest": "^4.15.1",
12 | "gatsby-plugin-offline": "^5.15.1",
13 | "gatsby-plugin-react-helmet": "^5.15.0",
14 | "gatsby-plugin-sharp": "^4.15.1",
15 | "gatsby-source-filesystem": "^4.15.0",
16 | "gatsby-source-storyblok": "^4.0.1",
17 | "gatsby-transformer-sharp": "^4.15.1",
18 | "prop-types": "^15.8.1",
19 | "react": "^18.1.0",
20 | "react-dom": "^18.1.0",
21 | "react-helmet": "^6.1.0"
22 | },
23 | "devDependencies": {
24 | "autoprefixer": "^10.4.7",
25 | "gatsby-plugin-postcss": "^5.16.0",
26 | "postcss": "^8.4.14",
27 | "prettier": "^2.6.2",
28 | "tailwindcss": "^3.0.24"
29 | },
30 | "keywords": [
31 | "gatsby"
32 | ],
33 | "license": "0BSD",
34 | "scripts": {
35 | "build": "gatsby build",
36 | "develop": "ENABLE_GATSBY_REFRESH_ENDPOINT=true gatsby develop",
37 | "format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,md,css}\"",
38 | "start": "gatsby develop",
39 | "serve": "gatsby serve",
40 | "clean": "gatsby clean",
41 | "test": "echo \"Write tests! -> https://gatsby.dev/unit-testing\" && exit 1"
42 | },
43 | "repository": {
44 | "type": "git",
45 | "url": "https://github.com/gatsbyjs/gatsby-starter-default"
46 | },
47 | "bugs": {
48 | "url": "https://github.com/gatsbyjs/gatsby/issues"
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/gatsbyjs/sandbox.config.json:
--------------------------------------------------------------------------------
1 | {
2 | "container": {
3 | "port": 8000
4 | }
5 | }
--------------------------------------------------------------------------------
/gatsbyjs/src/components/Feature.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { storyblokEditable } from "gatsby-source-storyblok";
3 |
4 | const Feature = ({ blok }) => {
5 | return (
6 |
7 |
{blok.name}
8 |
{blok.description}
9 |
10 | );
11 | };
12 |
13 | export default Feature;
--------------------------------------------------------------------------------
/gatsbyjs/src/components/Grid.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { StoryblokComponent, storyblokEditable } from "gatsby-source-storyblok";
3 |
4 | const Grid = ({ blok }) => (
5 |
6 | {blok.columns.map((blok) => (
7 |
8 |
9 |
10 | ))}
11 |
12 | );
13 |
14 | export default Grid;
--------------------------------------------------------------------------------
/gatsbyjs/src/components/Layout.js:
--------------------------------------------------------------------------------
1 | import * as React from "react"
2 | import PropTypes from "prop-types"
3 | import { storyblokInit, apiPlugin } from "gatsby-source-storyblok"
4 | import Teaser from './Teaser'
5 | import configuration from '../../gatsby-config'
6 | import Grid from "./grid"
7 | import Feature from "./feature"
8 |
9 | const sbConfig = configuration.plugins.find((item) => item.resolve === 'gatsby-source-storyblok')
10 |
11 | storyblokInit({
12 | accessToken: sbConfig.options.accessToken,
13 | use: [apiPlugin],
14 | components: {
15 | teaser: Teaser,
16 | grid: Grid,
17 | feature: Feature
18 | },
19 | apiOptions: {
20 | region: sbConfig.options.region
21 | }
22 | });
23 |
24 | const Layout = ({ children }) => {
25 | return (
26 |
27 | {children}
28 |
29 | )
30 | }
31 |
32 | Layout.propTypes = {
33 | children: PropTypes.node.isRequired,
34 | }
35 |
36 | export default Layout
37 |
--------------------------------------------------------------------------------
/gatsbyjs/src/components/Teaser.js:
--------------------------------------------------------------------------------
1 | import * as React from "react"
2 | import { storyblokEditable } from "gatsby-source-storyblok";
3 |
4 | const Teaser = ({ blok }) => {
5 | return (
6 |
7 |
{blok.headline}
8 |
9 | )
10 | }
11 |
12 | export default Teaser
--------------------------------------------------------------------------------
/gatsbyjs/src/components/seo.js:
--------------------------------------------------------------------------------
1 | /**
2 | * SEO component that queries for data with
3 | * Gatsby's useStaticQuery React hook
4 | *
5 | * See: https://www.gatsbyjs.com/docs/use-static-query/
6 | */
7 |
8 | import * as React from "react"
9 | import PropTypes from "prop-types"
10 | import { Helmet } from "react-helmet"
11 | import { useStaticQuery, graphql } from "gatsby"
12 |
13 | function Seo({ description, lang, meta, title }) {
14 | const { site } = useStaticQuery(
15 | graphql`
16 | query {
17 | site {
18 | siteMetadata {
19 | title
20 | description
21 | author
22 | }
23 | }
24 | }
25 | `
26 | )
27 |
28 | const metaDescription = description || site.siteMetadata.description
29 | const defaultTitle = site.siteMetadata?.title
30 |
31 | return (
32 |
73 | )
74 | }
75 |
76 | Seo.defaultProps = {
77 | lang: `en`,
78 | meta: [],
79 | description: ``,
80 | }
81 |
82 | Seo.propTypes = {
83 | description: PropTypes.string,
84 | lang: PropTypes.string,
85 | meta: PropTypes.arrayOf(PropTypes.object),
86 | title: PropTypes.string.isRequired,
87 | }
88 |
89 | export default Seo
90 |
--------------------------------------------------------------------------------
/gatsbyjs/src/images/example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/storyblok/getting-started/4704029ba0f22ee8f6806ab250f774f708c0cab6/gatsbyjs/src/images/example.png
--------------------------------------------------------------------------------
/gatsbyjs/src/images/gatsby-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/storyblok/getting-started/4704029ba0f22ee8f6806ab250f774f708c0cab6/gatsbyjs/src/images/gatsby-icon.png
--------------------------------------------------------------------------------
/gatsbyjs/src/pages/404.js:
--------------------------------------------------------------------------------
1 | import * as React from "react"
2 |
3 | import Layout from "../components/layout"
4 |
5 | const NotFoundPage = () => (
6 |
7 | 404: Not Found
8 | You just hit a route that doesn't exist... the sadness.
9 |
10 | )
11 |
12 | export default NotFoundPage
--------------------------------------------------------------------------------
/gatsbyjs/src/pages/home.js:
--------------------------------------------------------------------------------
1 | import * as React from "react"
2 | import { graphql } from "gatsby"
3 |
4 | import { StoryblokComponent, storyblokEditable, useStoryblokState } from "gatsby-source-storyblok"
5 |
6 | import Layout from "../components/Layout"
7 |
8 | const IndexPage = ({ data }) => {
9 | let story = data.storyblokEntry
10 | story = useStoryblokState(story)
11 |
12 | const components = story.content.body.map(blok => ( ))
13 |
14 | return (
15 |
16 |
17 |
{story.name}
18 | {components}
19 |
20 |
21 | )
22 | }
23 |
24 | export default IndexPage
25 |
26 | export const query = graphql`
27 | query HomeQuery {
28 | storyblokEntry(full_slug: { eq: "home" }) {
29 | content
30 | name
31 | full_slug
32 | uuid
33 | id
34 | internalId
35 | }
36 | }
37 | `
--------------------------------------------------------------------------------
/gatsbyjs/src/pages/index.js:
--------------------------------------------------------------------------------
1 | import * as React from "react"
2 | import { graphql } from "gatsby"
3 |
4 | import { StoryblokComponent, storyblokEditable, useStoryblokState } from "gatsby-source-storyblok"
5 |
6 | import Layout from "../components/layout"
7 |
8 | const IndexPage = ({ data }) => {
9 | let story = data.storyblokEntry
10 | story = useStoryblokState(story)
11 |
12 | const components = story.content.body.map(blok => ( ))
13 |
14 | return (
15 |
16 |
17 |
{story.name}
18 | {components}
19 |
20 |
21 | )
22 | }
23 |
24 | export default IndexPage
25 |
26 | export const query = graphql`
27 | query HomeQuery {
28 | storyblokEntry(full_slug: { eq: "home" }) {
29 | content
30 | name
31 | full_slug
32 | uuid
33 | id
34 | internalId
35 | }
36 | }
37 | `
--------------------------------------------------------------------------------
/gatsbyjs/src/pages/page-2.js:
--------------------------------------------------------------------------------
1 | import * as React from "react"
2 | import { Link } from "gatsby"
3 |
4 | import Layout from "../components/layout"
5 | import Seo from "../components/seo"
6 |
7 | const SecondPage = () => (
8 |
9 |
10 | Hi from the second page
11 | Welcome to page 2
12 | Go back to the homepage
13 |
14 | )
15 |
16 | export default SecondPage
17 |
--------------------------------------------------------------------------------
/gatsbyjs/src/pages/using-ssr.js:
--------------------------------------------------------------------------------
1 | import * as React from "react"
2 | import { Link } from "gatsby"
3 |
4 | import Layout from "../components/layout"
5 | import Seo from "../components/seo"
6 |
7 | const UsingSSR = ({ serverData }) => {
8 | return (
9 |
10 |
11 |
12 | This page is rendered server-side
13 |
14 |
15 | This page is rendered server side every time the page is requested.
16 | Reload it to see a(nother) random photo from{" "}
17 | dog.ceo/api/breed/shiba/images/random
:
18 |
19 |
24 |
25 | To learn more, head over to our{" "}
26 |
27 | documentation about Server Side Rendering
28 |
29 | .
30 |
31 | Go back to the homepage
32 |
33 | )
34 | }
35 |
36 | export default UsingSSR
37 |
38 | export async function getServerData() {
39 | try {
40 | const res = await fetch(`https://dog.ceo/api/breed/shiba/images/random`)
41 | if (!res.ok) {
42 | throw new Error(`Response failed`)
43 | }
44 | return {
45 | props: await res.json(),
46 | }
47 | } catch (error) {
48 | return {
49 | status: 500,
50 | headers: {},
51 | props: {},
52 | }
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/gatsbyjs/src/pages/using-typescript.tsx:
--------------------------------------------------------------------------------
1 | // If you don't want to use TypeScript you can delete this file!
2 | import * as React from "react"
3 | import { PageProps, Link, graphql } from "gatsby"
4 |
5 | import Layout from "../components/layout"
6 | import Seo from "../components/seo"
7 |
8 | type DataProps = {
9 | site: {
10 | buildTime: string
11 | }
12 | }
13 |
14 | const UsingTypescript: React.FC> = ({
15 | data,
16 | location,
17 | }) => (
18 |
19 |
20 |
21 | Gatsby supports TypeScript by default
22 |
23 |
24 | This means that you can create and write .ts/.tsx
files for
25 | your pages, components, and gatsby-*
configuration files (for
26 | example gatsby-config.ts
).
27 |
28 |
29 | For type checking you'll want to install typescript
via npm
30 | and run tsc --init
to create a tsconfig
file.
31 |
32 |
33 | You're currently on the page {location.pathname}
which was
34 | built on {data.site.buildTime}.
35 |
36 |
37 | To learn more, head over to our{" "}
38 |
39 | documentation about TypeScript
40 |
41 | .
42 |
43 | Go back to the homepage
44 |
45 | )
46 |
47 | export default UsingTypescript
48 |
49 | export const query = graphql`
50 | {
51 | site {
52 | buildTime(formatString: "YYYY-MM-DD hh:mm a z")
53 | }
54 | }
55 | `
56 |
--------------------------------------------------------------------------------
/gatsbyjs/src/styles/global.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
--------------------------------------------------------------------------------
/gatsbyjs/src/templates/using-dsg.js:
--------------------------------------------------------------------------------
1 | import * as React from "react"
2 | import { Link } from "gatsby"
3 |
4 | import Layout from "../components/layout"
5 |
6 | const UsingDSG = () => (
7 |
8 |
9 | Hello from a DSG Page
10 |
11 | This page is not created until requested by a user.
12 |
13 | To learn more, head over to our{" "}
14 |
15 | documentation about Deferred Static Generation
16 |
17 | .
18 |
19 | Go back to the homepage
20 |
21 | )
22 |
23 | export default UsingDSG
24 |
--------------------------------------------------------------------------------
/gatsbyjs/tailwind.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | content: [
3 | "./src/**/*.{js,jsx,ts,tsx}",
4 | ],
5 | theme: {
6 | extend: {},
7 | },
8 | plugins: [],
9 | }
10 |
--------------------------------------------------------------------------------
/nuxtjs/README.md:
--------------------------------------------------------------------------------
1 | # Getting Started - Nuxt 2 edition
2 |
3 | This is an example `Hello World` project built with Storyblok and Nuxt 2.
4 |
5 | > To get better understanding of this project and how it works, read our [Getting Started guide](https://www.storyblok.com/docs/guide/getting-started).
6 |
7 | ## Stackblitz
8 |
9 | [Storyblok SDK for Nuxt 2 Demo](https://stackblitz.com/edit/nuxt-2-sdk-demo)
10 |
11 |
12 | ## Configuration Steps
13 |
14 | 1. Create new Space in Storyblok
15 | 2. Obtain the Preview Token from the Settings of the Space.
16 | 3. Replace the `accessToken` value in `nuxt.config.js` file with your Preview Token.
17 | 4. Your Nuxt project can be started and will consume data from your Storyblok Space.
18 |
19 | > For a more detailed article on how to integrate Storyblok in Nuxt, check out [Add a headless CMS to Nuxt in 5 minutes](https://www.storyblok.com/tp/headless-cms-nuxtjs).
20 |
21 | ## Build Setup
22 |
23 | ```bash
24 | # install dependencies
25 | $ npm install
26 |
27 | # serve with hot reload at localhost:3000
28 | $ npm run dev
29 |
30 | # build for production
31 | $ npm run build
32 | ```
33 |
34 | > For detailed explanation on how Nuxt works, check out the [Nuxt docs](https://nuxtjs.org/docs/get-started/installation).
--------------------------------------------------------------------------------
/nuxtjs/components/storyblok/Feature.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
{{ blok.name }}
4 |
5 |
6 |
7 |
10 |
--------------------------------------------------------------------------------
/nuxtjs/components/storyblok/Grid.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 |
11 |
12 |
13 |
14 |
17 |
--------------------------------------------------------------------------------
/nuxtjs/components/storyblok/Page.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
10 |
11 |
14 |
--------------------------------------------------------------------------------
/nuxtjs/components/storyblok/Teaser.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{ blok.headline }}
4 |
5 |
6 |
7 |
10 |
--------------------------------------------------------------------------------
/nuxtjs/nuxt.config.js:
--------------------------------------------------------------------------------
1 | export default {
2 | head: {
3 | title: 'playground',
4 | htmlAttrs: {
5 | lang: 'en',
6 | },
7 | meta: [
8 | { charset: 'utf-8' },
9 | { name: 'viewport', content: 'width=device-width, initial-scale=1' },
10 | { hid: 'description', name: 'description', content: '' },
11 | { name: 'format-detection', content: 'telephone=no' },
12 | ],
13 | link: [{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }],
14 | script: [{ src: 'https://cdn.tailwindcss.com' }],
15 | },
16 |
17 | buildModules: [
18 | ['@storyblok/nuxt-2/module', { accessToken: 'd6IKUtAUDiKyAhpJtrLFcwtt',
19 | apiOptions: {
20 | region: ''
21 | }
22 | }],
23 | ],
24 | };
25 |
--------------------------------------------------------------------------------
/nuxtjs/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "nuxt-2-getting-started",
3 | "version": "1.0.0",
4 | "private": true,
5 | "scripts": {
6 | "dev": "nuxt",
7 | "build": "nuxt build",
8 | "start": "nuxt start",
9 | "generate": "nuxt generate"
10 | },
11 | "devDependencies": {
12 | "@storyblok/nuxt-2": "^1.2.2",
13 | "axios": "^0.26.0",
14 | "core-js": "^3.25.2",
15 | "nuxt": "^2.15.8"
16 | }
17 | }
--------------------------------------------------------------------------------
/nuxtjs/pages/index.vue:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/nuxtjs/static/favicon.ico:
--------------------------------------------------------------------------------
1 | https://cdn.jsdelivr.net/gh/manuelschroederdev/nuxt-5-min-demo@df9367b0917de7f1e9ebd757e71b81f6b210832c/static/favicon.ico
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "getting-started",
3 | "version": "1.0.0",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "getting-started",
9 | "version": "1.0.0",
10 | "license": "ISC"
11 | }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "getting-started",
3 | "version": "1.0.0",
4 | "description": "framework demos for storyblok",
5 | "main": "index.js",
6 | "scripts": {
7 | "prepare": "git submodule update --init --recursive --remote"
8 | },
9 | "repository": {
10 | "type": "git",
11 | "url": "git+https://github.com/storyblok/getting-started.git"
12 | },
13 | "author": "",
14 | "license": "ISC",
15 | "bugs": {
16 | "url": "https://github.com/storyblok/getting-started/issues"
17 | },
18 | "homepage": "https://github.com/storyblok/getting-started#readme"
19 | }
20 |
--------------------------------------------------------------------------------
/remix/.eslintrc.js:
--------------------------------------------------------------------------------
1 | /** @type {import('eslint').Linter.Config} */
2 | module.exports = {
3 | extends: ["@remix-run/eslint-config", "@remix-run/eslint-config/node"],
4 | };
5 |
--------------------------------------------------------------------------------
/remix/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 |
3 | /.cache
4 | /build
5 | /public/build
6 | .env
7 |
--------------------------------------------------------------------------------
/remix/README.md:
--------------------------------------------------------------------------------
1 | # Getting Started - Remix edition
2 |
3 | This is a `Hello World` example project built with Storyblok and Remix.
4 |
5 | > To get better understanding of this project and how it works, read our [Getting Started guide](https://www.storyblok.com/docs/guide/getting-started/?utm_source=github.com&utm_medium=readme&utm_campaign=getting-started).
6 |
7 | ## Configuration Steps
8 |
9 | 1. [Create a new Space](https://app.storyblok.com/#!/me/spaces/new) in Storyblok
10 | 2. Obtain a Preview Token from the Settings of the Space.
11 | 3. Replace the `accessToken` value in the `app/root.jsx` file with your Preview Token.
12 | 4. You can start a Dev Server with your Remix project, and it will consume data from your Storyblok Space.
13 |
14 | > For a more advanced article, check [Add a headless CMS to Remix in 5 minutes](https://www.storyblok.com/tp/headless-cms-remix/?utm_source=github.com&utm_medium=readme&utm_campaign=getting-started).
15 |
16 | ## Learn More
17 |
18 | To learn more about Remix, take a look at the [Remix Documentation](https://remix.run/docs).
19 |
--------------------------------------------------------------------------------
/remix/app/components/Feature.jsx:
--------------------------------------------------------------------------------
1 | import { storyblokEditable } from "@storyblok/react";
2 |
3 | const Feature = ({ blok }) => {
4 | return (
5 |
6 |
{blok.name}
7 |
8 | );
9 | };
10 |
11 | export default Feature;
12 |
--------------------------------------------------------------------------------
/remix/app/components/Grid.jsx:
--------------------------------------------------------------------------------
1 | import { storyblokEditable, StoryblokComponent } from "@storyblok/react";
2 |
3 | const Grid = ({ blok }) => (
4 |
5 | {blok.columns.map((blok) => (
6 |
7 |
8 |
9 | ))}
10 |
11 | );
12 |
13 | export default Grid;
14 |
--------------------------------------------------------------------------------
/remix/app/components/Layout.jsx:
--------------------------------------------------------------------------------
1 | const Layout = ({ children }) => (
2 |
5 | );
6 |
7 | export default Layout;
8 |
--------------------------------------------------------------------------------
/remix/app/components/Page.jsx:
--------------------------------------------------------------------------------
1 | import { storyblokEditable, StoryblokComponent } from "@storyblok/react";
2 |
3 | const Page = ({ blok }) => (
4 |
5 | {blok.body.map((nestedBlok) => (
6 |
7 | ))}
8 |
9 | );
10 |
11 | export default Page;
12 |
--------------------------------------------------------------------------------
/remix/app/components/Teaser.jsx:
--------------------------------------------------------------------------------
1 | import { storyblokEditable } from "@storyblok/react";
2 |
3 | const Teaser = ({ blok }) => {
4 | return (
5 |
6 |
{blok.headline}
7 |
8 | );
9 | };
10 |
11 | export default Teaser;
12 |
--------------------------------------------------------------------------------
/remix/app/entry.client.jsx:
--------------------------------------------------------------------------------
1 | import { RemixBrowser } from "@remix-run/react";
2 | import { startTransition, StrictMode } from "react";
3 | import { hydrateRoot } from "react-dom/client";
4 |
5 | function hydrate() {
6 | startTransition(() => {
7 | hydrateRoot(
8 | document,
9 |
10 |
11 |
12 | );
13 | });
14 | }
15 |
16 | if (typeof requestIdleCallback === "function") {
17 | requestIdleCallback(hydrate);
18 | } else {
19 | // Safari doesn't support requestIdleCallback
20 | // https://caniuse.com/requestidlecallback
21 | setTimeout(hydrate, 1);
22 | }
23 |
--------------------------------------------------------------------------------
/remix/app/entry.server.jsx:
--------------------------------------------------------------------------------
1 | import { PassThrough } from "stream";
2 |
3 | import { Response } from "@remix-run/node";
4 | import { RemixServer } from "@remix-run/react";
5 | import isbot from "isbot";
6 | import { renderToPipeableStream } from "react-dom/server";
7 |
8 | const ABORT_DELAY = 5000;
9 |
10 | export default function handleRequest(
11 | request,
12 | responseStatusCode,
13 | responseHeaders,
14 | remixContext
15 | ) {
16 | return isbot(request.headers.get("user-agent"))
17 | ? handleBotRequest(
18 | request,
19 | responseStatusCode,
20 | responseHeaders,
21 | remixContext
22 | )
23 | : handleBrowserRequest(
24 | request,
25 | responseStatusCode,
26 | responseHeaders,
27 | remixContext
28 | );
29 | }
30 |
31 | function handleBotRequest(
32 | request,
33 | responseStatusCode,
34 | responseHeaders,
35 | remixContext
36 | ) {
37 | return new Promise((resolve, reject) => {
38 | let didError = false;
39 |
40 | const { pipe, abort } = renderToPipeableStream(
41 | ,
42 | {
43 | onAllReady() {
44 | const body = new PassThrough();
45 |
46 | responseHeaders.set("Content-Type", "text/html");
47 |
48 | resolve(
49 | new Response(body, {
50 | headers: responseHeaders,
51 | status: didError ? 500 : responseStatusCode,
52 | })
53 | );
54 |
55 | pipe(body);
56 | },
57 | onShellError(error) {
58 | reject(error);
59 | },
60 | onError(error) {
61 | didError = true;
62 |
63 | console.error(error);
64 | },
65 | }
66 | );
67 |
68 | setTimeout(abort, ABORT_DELAY);
69 | });
70 | }
71 |
72 | function handleBrowserRequest(
73 | request,
74 | responseStatusCode,
75 | responseHeaders,
76 | remixContext
77 | ) {
78 | return new Promise((resolve, reject) => {
79 | let didError = false;
80 |
81 | const { pipe, abort } = renderToPipeableStream(
82 | ,
83 | {
84 | onShellReady() {
85 | const body = new PassThrough();
86 |
87 | responseHeaders.set("Content-Type", "text/html");
88 |
89 | resolve(
90 | new Response(body, {
91 | headers: responseHeaders,
92 | status: didError ? 500 : responseStatusCode,
93 | })
94 | );
95 |
96 | pipe(body);
97 | },
98 | onShellError(err) {
99 | reject(err);
100 | },
101 | onError(error) {
102 | didError = true;
103 |
104 | console.error(error);
105 | },
106 | }
107 | );
108 |
109 | setTimeout(abort, ABORT_DELAY);
110 | });
111 | }
112 |
--------------------------------------------------------------------------------
/remix/app/root.jsx:
--------------------------------------------------------------------------------
1 | import {
2 | Links,
3 | LiveReload,
4 | Meta,
5 | Outlet,
6 | Scripts,
7 | ScrollRestoration,
8 | } from "@remix-run/react";
9 |
10 | import { storyblokInit, apiPlugin } from "@storyblok/react";
11 | import Feature from "./components/Feature";
12 | import Grid from "./components/Grid";
13 | import Page from "./components/Page";
14 | import Teaser from "./components/Teaser";
15 |
16 | const components = {
17 | feature: Feature,
18 | grid: Grid,
19 | teaser: Teaser,
20 | page: Page,
21 | };
22 |
23 | storyblokInit({
24 | accessToken: "d6IKUtAUDiKyAhpJtrLFcwtt",
25 | use: [apiPlugin],
26 | components,
27 | apiOptions: {
28 | region: ''
29 | }
30 | });
31 |
32 | export const meta = () => ({
33 | charset: "utf-8",
34 | title: "New Remix App",
35 | viewport: "width=device-width,initial-scale=1",
36 | });
37 |
38 | export default function App() {
39 | return (
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 | );
53 | }
54 |
--------------------------------------------------------------------------------
/remix/app/routes/home.jsx:
--------------------------------------------------------------------------------
1 | import { json } from "@remix-run/node";
2 | import { useLoaderData } from "@remix-run/react";
3 |
4 | import Layout from "../components/Layout";
5 | import {
6 | useStoryblokState,
7 | getStoryblokApi,
8 | StoryblokComponent,
9 | } from "@storyblok/react";
10 |
11 | export const loader = async () => {
12 | // the slug of the story
13 | let slug = "home";
14 |
15 | let params = {
16 | version: "draft", // or 'published'
17 | };
18 |
19 | const storyblokApi = getStoryblokApi();
20 | let { data } = await storyblokApi.get(`cdn/stories/${slug}`, params);
21 |
22 | return json(data?.story);
23 | };
24 |
25 | export default function Page() {
26 | let story = useLoaderData();
27 |
28 | story = useStoryblokState(story);
29 |
30 | return (
31 |
32 |
33 |
34 | );
35 | }
36 |
--------------------------------------------------------------------------------
/remix/app/routes/index.jsx:
--------------------------------------------------------------------------------
1 | import { json } from "@remix-run/node";
2 | import { useLoaderData } from "@remix-run/react";
3 |
4 | import Layout from "../components/Layout";
5 | import {
6 | useStoryblokState,
7 | getStoryblokApi,
8 | StoryblokComponent,
9 | } from "@storyblok/react";
10 |
11 | export const loader = async () => {
12 | // the slug of the story
13 | let slug = "home";
14 |
15 | let params = {
16 | version: "draft", // or 'published'
17 | };
18 |
19 | const storyblokApi = getStoryblokApi();
20 | let { data } = await storyblokApi.get(`cdn/stories/${slug}`, params);
21 |
22 | return json(data?.story);
23 | };
24 |
25 | export default function Page() {
26 | let story = useLoaderData();
27 |
28 | story = useStoryblokState(story);
29 |
30 | return (
31 |
32 |
33 |
34 | );
35 | }
36 |
--------------------------------------------------------------------------------
/remix/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "sideEffects": false,
4 | "scripts": {
5 | "build": "remix build",
6 | "dev": "remix dev",
7 | "start": "remix-serve build",
8 | "typecheck": "tsc"
9 | },
10 | "dependencies": {
11 | "@remix-run/node": "^1.13.0",
12 | "@remix-run/react": "^1.13.0",
13 | "@remix-run/serve": "^1.13.0",
14 | "@storyblok/react": "^2.0.13",
15 | "isbot": "^3.6.5",
16 | "react": "^18.2.0",
17 | "react-dom": "^18.2.0"
18 | },
19 | "devDependencies": {
20 | "@remix-run/dev": "^1.13.0",
21 | "@remix-run/eslint-config": "^1.13.0",
22 | "@types/react": "^18.0.25",
23 | "@types/react-dom": "^18.0.8",
24 | "eslint": "^8.27.0",
25 | "typescript": "^4.8.4"
26 | },
27 | "engines": {
28 | "node": ">=14"
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/remix/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/storyblok/getting-started/4704029ba0f22ee8f6806ab250f774f708c0cab6/remix/public/favicon.ico
--------------------------------------------------------------------------------
/remix/remix.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('@remix-run/dev').AppConfig} */
2 | module.exports = {
3 | ignoredRouteFiles: ["**/.*"],
4 | // appDirectory: "app",
5 | // assetsBuildDirectory: "public/build",
6 | // serverBuildPath: "build/index.js",
7 | // publicPath: "/build/",
8 | };
9 |
--------------------------------------------------------------------------------
/remix/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "include": ["remix.env.d.ts", "**/*.ts", "**/*.tsx"],
3 | "compilerOptions": {
4 | "lib": ["DOM", "DOM.Iterable", "ES2019"],
5 | "isolatedModules": true,
6 | "esModuleInterop": true,
7 | "jsx": "react-jsx",
8 | "moduleResolution": "node",
9 | "resolveJsonModule": true,
10 | "target": "ES2019",
11 | "strict": true,
12 | "allowJs": true,
13 | "forceConsistentCasingInFileNames": true,
14 | "baseUrl": ".",
15 | "paths": {
16 | "~/*": ["./app/*"]
17 | },
18 |
19 | // Remix takes care of building everything in `remix build`.
20 | "noEmit": true
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/vuejs/README.md:
--------------------------------------------------------------------------------
1 | # Getting Started - Vue edition
2 |
3 | This is an example `Hello World` project built with Storyblok and Vue.
4 |
5 | > To get better understanding of this project and how it works, read our [Getting Started guide](https://www.storyblok.com/docs/guide/getting-started).
6 |
7 | ## Stackblitz
8 |
9 | [Edit on Stackblitz](https://stackblitz.com/edit/vue-5-minutes)
10 |
11 |
12 | ## Configuration Steps
13 |
14 | 1. Create new Space in Storyblok
15 | 2. Obtain the Preview Token from the Settings of the Space.
16 | 3. Replace the `accessToken` value in `src/main.js` file with your Preview Token.
17 | 4. Your Vue project can be started and will consume data from your Storyblok Space.
18 |
19 | > For a more detailed article on how to integrate Storyblok in Vue, check out [Add a headless CMS to VueJS in 5 minutes](https://www.storyblok.com/tp/add-a-headless-CMS-to-vuejs-in-5-minutes).
20 |
21 | ## Build Setup
22 |
23 | ```bash
24 | # install dependencies
25 | $ npm install
26 |
27 | # serve with hot reload at localhost:3000
28 | $ npm run dev
29 |
30 | # build for production
31 | $ npm run build
32 | ```
33 |
34 | > For detailed explanation on how Vue works, check out the [Vue docs](https://vuejs.org/guide/introduction.html).
--------------------------------------------------------------------------------
/vuejs/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Vite App
8 |
9 |
10 |
11 |
12 |
13 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/vuejs/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "-vuejs-5-minutes",
3 | "version": "0.0.0",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "-vuejs-5-minutes",
9 | "version": "0.0.0",
10 | "dependencies": {
11 | "@storyblok/vue": "^6.0.0",
12 | "axios": "^0.26.0",
13 | "vue": "^3.2.26"
14 | },
15 | "devDependencies": {
16 | "@vitejs/plugin-vue": "^2.0.0",
17 | "vite": "^2.7.1"
18 | }
19 | },
20 | "node_modules/@babel/parser": {
21 | "version": "7.17.3",
22 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz",
23 | "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==",
24 | "bin": {
25 | "parser": "bin/babel-parser.js"
26 | },
27 | "engines": {
28 | "node": ">=6.0.0"
29 | }
30 | },
31 | "node_modules/@storyblok/js": {
32 | "version": "1.0.3",
33 | "resolved": "https://registry.npmjs.org/@storyblok/js/-/js-1.0.3.tgz",
34 | "integrity": "sha512-pZR835iffl27YkNfc6ntLDl7HOqFkzzXF5PQHsnZSZVLlUtAmy2BDMDShmuLMgLIZNsGLb8rzbKhSdHjB/+woA==",
35 | "dependencies": {
36 | "storyblok-js-client": "^4.2.0"
37 | }
38 | },
39 | "node_modules/@storyblok/vue": {
40 | "version": "6.0.0",
41 | "resolved": "https://registry.npmjs.org/@storyblok/vue/-/vue-6.0.0.tgz",
42 | "integrity": "sha512-So2sj0G+TIeazIV8wpip9W+Cp6MGJi1twHt3lUJAqPHHk9wROh51NCaJ/xRBcIY2wADWH6As5zIR+u2YvXMgkw==",
43 | "dependencies": {
44 | "@storyblok/js": "^1.0.3"
45 | }
46 | },
47 | "node_modules/@vitejs/plugin-vue": {
48 | "version": "2.2.2",
49 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-2.2.2.tgz",
50 | "integrity": "sha512-3C0s45VOwIFEDU+2ownJOpb0zD5fnjXWaHVOLID2R1mYOlAx3doNBFnNbVjaZvpke/L7IdPJXjpyYpXZToDKig==",
51 | "dev": true,
52 | "engines": {
53 | "node": ">=12.0.0"
54 | },
55 | "peerDependencies": {
56 | "vite": "^2.5.10",
57 | "vue": "^3.2.25"
58 | }
59 | },
60 | "node_modules/@vue/compiler-core": {
61 | "version": "3.2.31",
62 | "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.31.tgz",
63 | "integrity": "sha512-aKno00qoA4o+V/kR6i/pE+aP+esng5siNAVQ422TkBNM6qA4veXiZbSe8OTXHXquEi/f6Akc+nLfB4JGfe4/WQ==",
64 | "dependencies": {
65 | "@babel/parser": "^7.16.4",
66 | "@vue/shared": "3.2.31",
67 | "estree-walker": "^2.0.2",
68 | "source-map": "^0.6.1"
69 | }
70 | },
71 | "node_modules/@vue/compiler-dom": {
72 | "version": "3.2.31",
73 | "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.31.tgz",
74 | "integrity": "sha512-60zIlFfzIDf3u91cqfqy9KhCKIJgPeqxgveH2L+87RcGU/alT6BRrk5JtUso0OibH3O7NXuNOQ0cDc9beT0wrg==",
75 | "dependencies": {
76 | "@vue/compiler-core": "3.2.31",
77 | "@vue/shared": "3.2.31"
78 | }
79 | },
80 | "node_modules/@vue/compiler-sfc": {
81 | "version": "3.2.31",
82 | "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.31.tgz",
83 | "integrity": "sha512-748adc9msSPGzXgibHiO6T7RWgfnDcVQD+VVwYgSsyyY8Ans64tALHZANrKtOzvkwznV/F4H7OAod/jIlp/dkQ==",
84 | "dependencies": {
85 | "@babel/parser": "^7.16.4",
86 | "@vue/compiler-core": "3.2.31",
87 | "@vue/compiler-dom": "3.2.31",
88 | "@vue/compiler-ssr": "3.2.31",
89 | "@vue/reactivity-transform": "3.2.31",
90 | "@vue/shared": "3.2.31",
91 | "estree-walker": "^2.0.2",
92 | "magic-string": "^0.25.7",
93 | "postcss": "^8.1.10",
94 | "source-map": "^0.6.1"
95 | }
96 | },
97 | "node_modules/@vue/compiler-ssr": {
98 | "version": "3.2.31",
99 | "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.31.tgz",
100 | "integrity": "sha512-mjN0rqig+A8TVDnsGPYJM5dpbjlXeHUm2oZHZwGyMYiGT/F4fhJf/cXy8QpjnLQK4Y9Et4GWzHn9PS8AHUnSkw==",
101 | "dependencies": {
102 | "@vue/compiler-dom": "3.2.31",
103 | "@vue/shared": "3.2.31"
104 | }
105 | },
106 | "node_modules/@vue/reactivity": {
107 | "version": "3.2.31",
108 | "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.31.tgz",
109 | "integrity": "sha512-HVr0l211gbhpEKYr2hYe7hRsV91uIVGFYNHj73njbARVGHQvIojkImKMaZNDdoDZOIkMsBc9a1sMqR+WZwfSCw==",
110 | "dependencies": {
111 | "@vue/shared": "3.2.31"
112 | }
113 | },
114 | "node_modules/@vue/reactivity-transform": {
115 | "version": "3.2.31",
116 | "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.31.tgz",
117 | "integrity": "sha512-uS4l4z/W7wXdI+Va5pgVxBJ345wyGFKvpPYtdSgvfJfX/x2Ymm6ophQlXXB6acqGHtXuBqNyyO3zVp9b1r0MOA==",
118 | "dependencies": {
119 | "@babel/parser": "^7.16.4",
120 | "@vue/compiler-core": "3.2.31",
121 | "@vue/shared": "3.2.31",
122 | "estree-walker": "^2.0.2",
123 | "magic-string": "^0.25.7"
124 | }
125 | },
126 | "node_modules/@vue/runtime-core": {
127 | "version": "3.2.31",
128 | "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.31.tgz",
129 | "integrity": "sha512-Kcog5XmSY7VHFEMuk4+Gap8gUssYMZ2+w+cmGI6OpZWYOEIcbE0TPzzPHi+8XTzAgx1w/ZxDFcXhZeXN5eKWsA==",
130 | "dependencies": {
131 | "@vue/reactivity": "3.2.31",
132 | "@vue/shared": "3.2.31"
133 | }
134 | },
135 | "node_modules/@vue/runtime-dom": {
136 | "version": "3.2.31",
137 | "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.31.tgz",
138 | "integrity": "sha512-N+o0sICVLScUjfLG7u9u5XCjvmsexAiPt17GNnaWHJUfsKed5e85/A3SWgKxzlxx2SW/Hw7RQxzxbXez9PtY3g==",
139 | "dependencies": {
140 | "@vue/runtime-core": "3.2.31",
141 | "@vue/shared": "3.2.31",
142 | "csstype": "^2.6.8"
143 | }
144 | },
145 | "node_modules/@vue/server-renderer": {
146 | "version": "3.2.31",
147 | "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.31.tgz",
148 | "integrity": "sha512-8CN3Zj2HyR2LQQBHZ61HexF5NReqngLT3oahyiVRfSSvak+oAvVmu8iNLSu6XR77Ili2AOpnAt1y8ywjjqtmkg==",
149 | "dependencies": {
150 | "@vue/compiler-ssr": "3.2.31",
151 | "@vue/shared": "3.2.31"
152 | },
153 | "peerDependencies": {
154 | "vue": "3.2.31"
155 | }
156 | },
157 | "node_modules/@vue/shared": {
158 | "version": "3.2.31",
159 | "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.31.tgz",
160 | "integrity": "sha512-ymN2pj6zEjiKJZbrf98UM2pfDd6F2H7ksKw7NDt/ZZ1fh5Ei39X5tABugtT03ZRlWd9imccoK0hE8hpjpU7irQ=="
161 | },
162 | "node_modules/axios": {
163 | "version": "0.26.0",
164 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.0.tgz",
165 | "integrity": "sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==",
166 | "dependencies": {
167 | "follow-redirects": "^1.14.8"
168 | }
169 | },
170 | "node_modules/csstype": {
171 | "version": "2.6.19",
172 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.19.tgz",
173 | "integrity": "sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ=="
174 | },
175 | "node_modules/esbuild": {
176 | "version": "0.14.23",
177 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.23.tgz",
178 | "integrity": "sha512-XjnIcZ9KB6lfonCa+jRguXyRYcldmkyZ99ieDksqW/C8bnyEX299yA4QH2XcgijCgaddEZePPTgvx/2imsq7Ig==",
179 | "dev": true,
180 | "hasInstallScript": true,
181 | "bin": {
182 | "esbuild": "bin/esbuild"
183 | },
184 | "engines": {
185 | "node": ">=12"
186 | },
187 | "optionalDependencies": {
188 | "esbuild-android-arm64": "0.14.23",
189 | "esbuild-darwin-64": "0.14.23",
190 | "esbuild-darwin-arm64": "0.14.23",
191 | "esbuild-freebsd-64": "0.14.23",
192 | "esbuild-freebsd-arm64": "0.14.23",
193 | "esbuild-linux-32": "0.14.23",
194 | "esbuild-linux-64": "0.14.23",
195 | "esbuild-linux-arm": "0.14.23",
196 | "esbuild-linux-arm64": "0.14.23",
197 | "esbuild-linux-mips64le": "0.14.23",
198 | "esbuild-linux-ppc64le": "0.14.23",
199 | "esbuild-linux-riscv64": "0.14.23",
200 | "esbuild-linux-s390x": "0.14.23",
201 | "esbuild-netbsd-64": "0.14.23",
202 | "esbuild-openbsd-64": "0.14.23",
203 | "esbuild-sunos-64": "0.14.23",
204 | "esbuild-windows-32": "0.14.23",
205 | "esbuild-windows-64": "0.14.23",
206 | "esbuild-windows-arm64": "0.14.23"
207 | }
208 | },
209 | "node_modules/esbuild-android-arm64": {
210 | "version": "0.14.23",
211 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.23.tgz",
212 | "integrity": "sha512-k9sXem++mINrZty1v4FVt6nC5BQCFG4K2geCIUUqHNlTdFnuvcqsY7prcKZLFhqVC1rbcJAr9VSUGFL/vD4vsw==",
213 | "cpu": [
214 | "arm64"
215 | ],
216 | "dev": true,
217 | "optional": true,
218 | "os": [
219 | "android"
220 | ],
221 | "engines": {
222 | "node": ">=12"
223 | }
224 | },
225 | "node_modules/esbuild-darwin-64": {
226 | "version": "0.14.23",
227 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.23.tgz",
228 | "integrity": "sha512-lB0XRbtOYYL1tLcYw8BoBaYsFYiR48RPrA0KfA/7RFTr4MV7Bwy/J4+7nLsVnv9FGuQummM3uJ93J3ptaTqFug==",
229 | "cpu": [
230 | "x64"
231 | ],
232 | "dev": true,
233 | "optional": true,
234 | "os": [
235 | "darwin"
236 | ],
237 | "engines": {
238 | "node": ">=12"
239 | }
240 | },
241 | "node_modules/esbuild-darwin-arm64": {
242 | "version": "0.14.23",
243 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.23.tgz",
244 | "integrity": "sha512-yat73Z/uJ5tRcfRiI4CCTv0FSnwErm3BJQeZAh+1tIP0TUNh6o+mXg338Zl5EKChD+YGp6PN+Dbhs7qa34RxSw==",
245 | "cpu": [
246 | "arm64"
247 | ],
248 | "dev": true,
249 | "optional": true,
250 | "os": [
251 | "darwin"
252 | ],
253 | "engines": {
254 | "node": ">=12"
255 | }
256 | },
257 | "node_modules/esbuild-freebsd-64": {
258 | "version": "0.14.23",
259 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.23.tgz",
260 | "integrity": "sha512-/1xiTjoLuQ+LlbfjJdKkX45qK/M7ARrbLmyf7x3JhyQGMjcxRYVR6Dw81uH3qlMHwT4cfLW4aEVBhP1aNV7VsA==",
261 | "cpu": [
262 | "x64"
263 | ],
264 | "dev": true,
265 | "optional": true,
266 | "os": [
267 | "freebsd"
268 | ],
269 | "engines": {
270 | "node": ">=12"
271 | }
272 | },
273 | "node_modules/esbuild-freebsd-arm64": {
274 | "version": "0.14.23",
275 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.23.tgz",
276 | "integrity": "sha512-uyPqBU/Zcp6yEAZS4LKj5jEE0q2s4HmlMBIPzbW6cTunZ8cyvjG6YWpIZXb1KK3KTJDe62ltCrk3VzmWHp+iLg==",
277 | "cpu": [
278 | "arm64"
279 | ],
280 | "dev": true,
281 | "optional": true,
282 | "os": [
283 | "freebsd"
284 | ],
285 | "engines": {
286 | "node": ">=12"
287 | }
288 | },
289 | "node_modules/esbuild-linux-32": {
290 | "version": "0.14.23",
291 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.23.tgz",
292 | "integrity": "sha512-37R/WMkQyUfNhbH7aJrr1uCjDVdnPeTHGeDhZPUNhfoHV0lQuZNCKuNnDvlH/u/nwIYZNdVvz1Igv5rY/zfrzQ==",
293 | "cpu": [
294 | "ia32"
295 | ],
296 | "dev": true,
297 | "optional": true,
298 | "os": [
299 | "linux"
300 | ],
301 | "engines": {
302 | "node": ">=12"
303 | }
304 | },
305 | "node_modules/esbuild-linux-64": {
306 | "version": "0.14.23",
307 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.23.tgz",
308 | "integrity": "sha512-H0gztDP60qqr8zoFhAO64waoN5yBXkmYCElFklpd6LPoobtNGNnDe99xOQm28+fuD75YJ7GKHzp/MLCLhw2+vQ==",
309 | "cpu": [
310 | "x64"
311 | ],
312 | "dev": true,
313 | "optional": true,
314 | "os": [
315 | "linux"
316 | ],
317 | "engines": {
318 | "node": ">=12"
319 | }
320 | },
321 | "node_modules/esbuild-linux-arm": {
322 | "version": "0.14.23",
323 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.23.tgz",
324 | "integrity": "sha512-x64CEUxi8+EzOAIpCUeuni0bZfzPw/65r8tC5cy5zOq9dY7ysOi5EVQHnzaxS+1NmV+/RVRpmrzGw1QgY2Xpmw==",
325 | "cpu": [
326 | "arm"
327 | ],
328 | "dev": true,
329 | "optional": true,
330 | "os": [
331 | "linux"
332 | ],
333 | "engines": {
334 | "node": ">=12"
335 | }
336 | },
337 | "node_modules/esbuild-linux-arm64": {
338 | "version": "0.14.23",
339 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.23.tgz",
340 | "integrity": "sha512-c4MLOIByNHR55n3KoYf9hYDfBRghMjOiHLaoYLhkQkIabb452RWi+HsNgB41sUpSlOAqfpqKPFNg7VrxL3UX9g==",
341 | "cpu": [
342 | "arm64"
343 | ],
344 | "dev": true,
345 | "optional": true,
346 | "os": [
347 | "linux"
348 | ],
349 | "engines": {
350 | "node": ">=12"
351 | }
352 | },
353 | "node_modules/esbuild-linux-mips64le": {
354 | "version": "0.14.23",
355 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.23.tgz",
356 | "integrity": "sha512-kHKyKRIAedYhKug2EJpyJxOUj3VYuamOVA1pY7EimoFPzaF3NeY7e4cFBAISC/Av0/tiV0xlFCt9q0HJ68IBIw==",
357 | "cpu": [
358 | "mips64el"
359 | ],
360 | "dev": true,
361 | "optional": true,
362 | "os": [
363 | "linux"
364 | ],
365 | "engines": {
366 | "node": ">=12"
367 | }
368 | },
369 | "node_modules/esbuild-linux-ppc64le": {
370 | "version": "0.14.23",
371 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.23.tgz",
372 | "integrity": "sha512-7ilAiJEPuJJnJp/LiDO0oJm5ygbBPzhchJJh9HsHZzeqO+3PUzItXi+8PuicY08r0AaaOe25LA7sGJ0MzbfBag==",
373 | "cpu": [
374 | "ppc64"
375 | ],
376 | "dev": true,
377 | "optional": true,
378 | "os": [
379 | "linux"
380 | ],
381 | "engines": {
382 | "node": ">=12"
383 | }
384 | },
385 | "node_modules/esbuild-linux-riscv64": {
386 | "version": "0.14.23",
387 | "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.23.tgz",
388 | "integrity": "sha512-fbL3ggK2wY0D8I5raPIMPhpCvODFE+Bhb5QGtNP3r5aUsRR6TQV+ZBXIaw84iyvKC8vlXiA4fWLGhghAd/h/Zg==",
389 | "cpu": [
390 | "riscv64"
391 | ],
392 | "dev": true,
393 | "optional": true,
394 | "os": [
395 | "linux"
396 | ],
397 | "engines": {
398 | "node": ">=12"
399 | }
400 | },
401 | "node_modules/esbuild-linux-s390x": {
402 | "version": "0.14.23",
403 | "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.23.tgz",
404 | "integrity": "sha512-GHMDCyfy7+FaNSO8RJ8KCFsnax8fLUsOrj9q5Gi2JmZMY0Zhp75keb5abTFCq2/Oy6KVcT0Dcbyo/bFb4rIFJA==",
405 | "cpu": [
406 | "s390x"
407 | ],
408 | "dev": true,
409 | "optional": true,
410 | "os": [
411 | "linux"
412 | ],
413 | "engines": {
414 | "node": ">=12"
415 | }
416 | },
417 | "node_modules/esbuild-netbsd-64": {
418 | "version": "0.14.23",
419 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.23.tgz",
420 | "integrity": "sha512-ovk2EX+3rrO1M2lowJfgMb/JPN1VwVYrx0QPUyudxkxLYrWeBxDKQvc6ffO+kB4QlDyTfdtAURrVzu3JeNdA2g==",
421 | "cpu": [
422 | "x64"
423 | ],
424 | "dev": true,
425 | "optional": true,
426 | "os": [
427 | "netbsd"
428 | ],
429 | "engines": {
430 | "node": ">=12"
431 | }
432 | },
433 | "node_modules/esbuild-openbsd-64": {
434 | "version": "0.14.23",
435 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.23.tgz",
436 | "integrity": "sha512-uYYNqbVR+i7k8ojP/oIROAHO9lATLN7H2QeXKt2H310Fc8FJj4y3Wce6hx0VgnJ4k1JDrgbbiXM8rbEgQyg8KA==",
437 | "cpu": [
438 | "x64"
439 | ],
440 | "dev": true,
441 | "optional": true,
442 | "os": [
443 | "openbsd"
444 | ],
445 | "engines": {
446 | "node": ">=12"
447 | }
448 | },
449 | "node_modules/esbuild-sunos-64": {
450 | "version": "0.14.23",
451 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.23.tgz",
452 | "integrity": "sha512-hAzeBeET0+SbScknPzS2LBY6FVDpgE+CsHSpe6CEoR51PApdn2IB0SyJX7vGelXzlyrnorM4CAsRyb9Qev4h9g==",
453 | "cpu": [
454 | "x64"
455 | ],
456 | "dev": true,
457 | "optional": true,
458 | "os": [
459 | "sunos"
460 | ],
461 | "engines": {
462 | "node": ">=12"
463 | }
464 | },
465 | "node_modules/esbuild-windows-32": {
466 | "version": "0.14.23",
467 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.23.tgz",
468 | "integrity": "sha512-Kttmi3JnohdaREbk6o9e25kieJR379TsEWF0l39PQVHXq3FR6sFKtVPgY8wk055o6IB+rllrzLnbqOw/UV60EA==",
469 | "cpu": [
470 | "ia32"
471 | ],
472 | "dev": true,
473 | "optional": true,
474 | "os": [
475 | "win32"
476 | ],
477 | "engines": {
478 | "node": ">=12"
479 | }
480 | },
481 | "node_modules/esbuild-windows-64": {
482 | "version": "0.14.23",
483 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.23.tgz",
484 | "integrity": "sha512-JtIT0t8ymkpl6YlmOl6zoSWL5cnCgyLaBdf/SiU/Eg3C13r0NbHZWNT/RDEMKK91Y6t79kTs3vyRcNZbfu5a8g==",
485 | "cpu": [
486 | "x64"
487 | ],
488 | "dev": true,
489 | "optional": true,
490 | "os": [
491 | "win32"
492 | ],
493 | "engines": {
494 | "node": ">=12"
495 | }
496 | },
497 | "node_modules/esbuild-windows-arm64": {
498 | "version": "0.14.23",
499 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.23.tgz",
500 | "integrity": "sha512-cTFaQqT2+ik9e4hePvYtRZQ3pqOvKDVNarzql0VFIzhc0tru/ZgdLoXd6epLiKT+SzoSce6V9YJ+nn6RCn6SHw==",
501 | "cpu": [
502 | "arm64"
503 | ],
504 | "dev": true,
505 | "optional": true,
506 | "os": [
507 | "win32"
508 | ],
509 | "engines": {
510 | "node": ">=12"
511 | }
512 | },
513 | "node_modules/estree-walker": {
514 | "version": "2.0.2",
515 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
516 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
517 | },
518 | "node_modules/follow-redirects": {
519 | "version": "1.14.9",
520 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz",
521 | "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==",
522 | "funding": [
523 | {
524 | "type": "individual",
525 | "url": "https://github.com/sponsors/RubenVerborgh"
526 | }
527 | ],
528 | "engines": {
529 | "node": ">=4.0"
530 | },
531 | "peerDependenciesMeta": {
532 | "debug": {
533 | "optional": true
534 | }
535 | }
536 | },
537 | "node_modules/fsevents": {
538 | "version": "2.3.2",
539 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
540 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
541 | "dev": true,
542 | "hasInstallScript": true,
543 | "optional": true,
544 | "os": [
545 | "darwin"
546 | ],
547 | "engines": {
548 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
549 | }
550 | },
551 | "node_modules/function-bind": {
552 | "version": "1.1.1",
553 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
554 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
555 | "dev": true
556 | },
557 | "node_modules/has": {
558 | "version": "1.0.3",
559 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
560 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
561 | "dev": true,
562 | "dependencies": {
563 | "function-bind": "^1.1.1"
564 | },
565 | "engines": {
566 | "node": ">= 0.4.0"
567 | }
568 | },
569 | "node_modules/is-core-module": {
570 | "version": "2.8.1",
571 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz",
572 | "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==",
573 | "dev": true,
574 | "dependencies": {
575 | "has": "^1.0.3"
576 | },
577 | "funding": {
578 | "url": "https://github.com/sponsors/ljharb"
579 | }
580 | },
581 | "node_modules/magic-string": {
582 | "version": "0.25.7",
583 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
584 | "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
585 | "dependencies": {
586 | "sourcemap-codec": "^1.4.4"
587 | }
588 | },
589 | "node_modules/nanoid": {
590 | "version": "3.3.1",
591 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz",
592 | "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==",
593 | "bin": {
594 | "nanoid": "bin/nanoid.cjs"
595 | },
596 | "engines": {
597 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
598 | }
599 | },
600 | "node_modules/path-parse": {
601 | "version": "1.0.7",
602 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
603 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
604 | "dev": true
605 | },
606 | "node_modules/picocolors": {
607 | "version": "1.0.0",
608 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
609 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
610 | },
611 | "node_modules/postcss": {
612 | "version": "8.4.6",
613 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.6.tgz",
614 | "integrity": "sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA==",
615 | "dependencies": {
616 | "nanoid": "^3.2.0",
617 | "picocolors": "^1.0.0",
618 | "source-map-js": "^1.0.2"
619 | },
620 | "engines": {
621 | "node": "^10 || ^12 || >=14"
622 | },
623 | "funding": {
624 | "type": "opencollective",
625 | "url": "https://opencollective.com/postcss/"
626 | }
627 | },
628 | "node_modules/resolve": {
629 | "version": "1.22.0",
630 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
631 | "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
632 | "dev": true,
633 | "dependencies": {
634 | "is-core-module": "^2.8.1",
635 | "path-parse": "^1.0.7",
636 | "supports-preserve-symlinks-flag": "^1.0.0"
637 | },
638 | "bin": {
639 | "resolve": "bin/resolve"
640 | },
641 | "funding": {
642 | "url": "https://github.com/sponsors/ljharb"
643 | }
644 | },
645 | "node_modules/rollup": {
646 | "version": "2.68.0",
647 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.68.0.tgz",
648 | "integrity": "sha512-XrMKOYK7oQcTio4wyTz466mucnd8LzkiZLozZ4Rz0zQD+HeX4nUK4B8GrTX/2EvN2/vBF/i2WnaXboPxo0JylA==",
649 | "dev": true,
650 | "bin": {
651 | "rollup": "dist/bin/rollup"
652 | },
653 | "engines": {
654 | "node": ">=10.0.0"
655 | },
656 | "optionalDependencies": {
657 | "fsevents": "~2.3.2"
658 | }
659 | },
660 | "node_modules/source-map": {
661 | "version": "0.6.1",
662 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
663 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
664 | "engines": {
665 | "node": ">=0.10.0"
666 | }
667 | },
668 | "node_modules/source-map-js": {
669 | "version": "1.0.2",
670 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
671 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
672 | "engines": {
673 | "node": ">=0.10.0"
674 | }
675 | },
676 | "node_modules/sourcemap-codec": {
677 | "version": "1.4.8",
678 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
679 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
680 | },
681 | "node_modules/storyblok-js-client": {
682 | "version": "4.2.1",
683 | "resolved": "https://registry.npmjs.org/storyblok-js-client/-/storyblok-js-client-4.2.1.tgz",
684 | "integrity": "sha512-TQfsyBJ6WcjpHFGKYXHy5kef4jXOI/j54wrJmw4Ld13e76dr81EvqZIrwehKPTcRID9+a4rbA0ykn3r3aBpArw==",
685 | "peerDependencies": {
686 | "axios": "^0.21.1"
687 | }
688 | },
689 | "node_modules/supports-preserve-symlinks-flag": {
690 | "version": "1.0.0",
691 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
692 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
693 | "dev": true,
694 | "engines": {
695 | "node": ">= 0.4"
696 | },
697 | "funding": {
698 | "url": "https://github.com/sponsors/ljharb"
699 | }
700 | },
701 | "node_modules/vite": {
702 | "version": "2.8.4",
703 | "resolved": "https://registry.npmjs.org/vite/-/vite-2.8.4.tgz",
704 | "integrity": "sha512-GwtOkkaT2LDI82uWZKcrpRQxP5tymLnC7hVHHqNkhFNknYr0hJUlDLfhVRgngJvAy3RwypkDCWtTKn1BjO96Dw==",
705 | "dev": true,
706 | "dependencies": {
707 | "esbuild": "^0.14.14",
708 | "postcss": "^8.4.6",
709 | "resolve": "^1.22.0",
710 | "rollup": "^2.59.0"
711 | },
712 | "bin": {
713 | "vite": "bin/vite.js"
714 | },
715 | "engines": {
716 | "node": ">=12.2.0"
717 | },
718 | "optionalDependencies": {
719 | "fsevents": "~2.3.2"
720 | },
721 | "peerDependencies": {
722 | "less": "*",
723 | "sass": "*",
724 | "stylus": "*"
725 | },
726 | "peerDependenciesMeta": {
727 | "less": {
728 | "optional": true
729 | },
730 | "sass": {
731 | "optional": true
732 | },
733 | "stylus": {
734 | "optional": true
735 | }
736 | }
737 | },
738 | "node_modules/vue": {
739 | "version": "3.2.31",
740 | "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.31.tgz",
741 | "integrity": "sha512-odT3W2tcffTiQCy57nOT93INw1auq5lYLLYtWpPYQQYQOOdHiqFct9Xhna6GJ+pJQaF67yZABraH47oywkJgFw==",
742 | "dependencies": {
743 | "@vue/compiler-dom": "3.2.31",
744 | "@vue/compiler-sfc": "3.2.31",
745 | "@vue/runtime-dom": "3.2.31",
746 | "@vue/server-renderer": "3.2.31",
747 | "@vue/shared": "3.2.31"
748 | }
749 | }
750 | },
751 | "dependencies": {
752 | "@babel/parser": {
753 | "version": "7.17.3",
754 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz",
755 | "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA=="
756 | },
757 | "@storyblok/js": {
758 | "version": "1.0.3",
759 | "resolved": "https://registry.npmjs.org/@storyblok/js/-/js-1.0.3.tgz",
760 | "integrity": "sha512-pZR835iffl27YkNfc6ntLDl7HOqFkzzXF5PQHsnZSZVLlUtAmy2BDMDShmuLMgLIZNsGLb8rzbKhSdHjB/+woA==",
761 | "requires": {
762 | "storyblok-js-client": "^4.2.0"
763 | }
764 | },
765 | "@storyblok/vue": {
766 | "version": "6.0.0",
767 | "resolved": "https://registry.npmjs.org/@storyblok/vue/-/vue-6.0.0.tgz",
768 | "integrity": "sha512-So2sj0G+TIeazIV8wpip9W+Cp6MGJi1twHt3lUJAqPHHk9wROh51NCaJ/xRBcIY2wADWH6As5zIR+u2YvXMgkw==",
769 | "requires": {
770 | "@storyblok/js": "^1.0.3"
771 | }
772 | },
773 | "@vitejs/plugin-vue": {
774 | "version": "2.2.2",
775 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-2.2.2.tgz",
776 | "integrity": "sha512-3C0s45VOwIFEDU+2ownJOpb0zD5fnjXWaHVOLID2R1mYOlAx3doNBFnNbVjaZvpke/L7IdPJXjpyYpXZToDKig==",
777 | "dev": true,
778 | "requires": {}
779 | },
780 | "@vue/compiler-core": {
781 | "version": "3.2.31",
782 | "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.31.tgz",
783 | "integrity": "sha512-aKno00qoA4o+V/kR6i/pE+aP+esng5siNAVQ422TkBNM6qA4veXiZbSe8OTXHXquEi/f6Akc+nLfB4JGfe4/WQ==",
784 | "requires": {
785 | "@babel/parser": "^7.16.4",
786 | "@vue/shared": "3.2.31",
787 | "estree-walker": "^2.0.2",
788 | "source-map": "^0.6.1"
789 | }
790 | },
791 | "@vue/compiler-dom": {
792 | "version": "3.2.31",
793 | "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.31.tgz",
794 | "integrity": "sha512-60zIlFfzIDf3u91cqfqy9KhCKIJgPeqxgveH2L+87RcGU/alT6BRrk5JtUso0OibH3O7NXuNOQ0cDc9beT0wrg==",
795 | "requires": {
796 | "@vue/compiler-core": "3.2.31",
797 | "@vue/shared": "3.2.31"
798 | }
799 | },
800 | "@vue/compiler-sfc": {
801 | "version": "3.2.31",
802 | "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.31.tgz",
803 | "integrity": "sha512-748adc9msSPGzXgibHiO6T7RWgfnDcVQD+VVwYgSsyyY8Ans64tALHZANrKtOzvkwznV/F4H7OAod/jIlp/dkQ==",
804 | "requires": {
805 | "@babel/parser": "^7.16.4",
806 | "@vue/compiler-core": "3.2.31",
807 | "@vue/compiler-dom": "3.2.31",
808 | "@vue/compiler-ssr": "3.2.31",
809 | "@vue/reactivity-transform": "3.2.31",
810 | "@vue/shared": "3.2.31",
811 | "estree-walker": "^2.0.2",
812 | "magic-string": "^0.25.7",
813 | "postcss": "^8.1.10",
814 | "source-map": "^0.6.1"
815 | }
816 | },
817 | "@vue/compiler-ssr": {
818 | "version": "3.2.31",
819 | "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.31.tgz",
820 | "integrity": "sha512-mjN0rqig+A8TVDnsGPYJM5dpbjlXeHUm2oZHZwGyMYiGT/F4fhJf/cXy8QpjnLQK4Y9Et4GWzHn9PS8AHUnSkw==",
821 | "requires": {
822 | "@vue/compiler-dom": "3.2.31",
823 | "@vue/shared": "3.2.31"
824 | }
825 | },
826 | "@vue/reactivity": {
827 | "version": "3.2.31",
828 | "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.31.tgz",
829 | "integrity": "sha512-HVr0l211gbhpEKYr2hYe7hRsV91uIVGFYNHj73njbARVGHQvIojkImKMaZNDdoDZOIkMsBc9a1sMqR+WZwfSCw==",
830 | "requires": {
831 | "@vue/shared": "3.2.31"
832 | }
833 | },
834 | "@vue/reactivity-transform": {
835 | "version": "3.2.31",
836 | "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.31.tgz",
837 | "integrity": "sha512-uS4l4z/W7wXdI+Va5pgVxBJ345wyGFKvpPYtdSgvfJfX/x2Ymm6ophQlXXB6acqGHtXuBqNyyO3zVp9b1r0MOA==",
838 | "requires": {
839 | "@babel/parser": "^7.16.4",
840 | "@vue/compiler-core": "3.2.31",
841 | "@vue/shared": "3.2.31",
842 | "estree-walker": "^2.0.2",
843 | "magic-string": "^0.25.7"
844 | }
845 | },
846 | "@vue/runtime-core": {
847 | "version": "3.2.31",
848 | "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.31.tgz",
849 | "integrity": "sha512-Kcog5XmSY7VHFEMuk4+Gap8gUssYMZ2+w+cmGI6OpZWYOEIcbE0TPzzPHi+8XTzAgx1w/ZxDFcXhZeXN5eKWsA==",
850 | "requires": {
851 | "@vue/reactivity": "3.2.31",
852 | "@vue/shared": "3.2.31"
853 | }
854 | },
855 | "@vue/runtime-dom": {
856 | "version": "3.2.31",
857 | "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.31.tgz",
858 | "integrity": "sha512-N+o0sICVLScUjfLG7u9u5XCjvmsexAiPt17GNnaWHJUfsKed5e85/A3SWgKxzlxx2SW/Hw7RQxzxbXez9PtY3g==",
859 | "requires": {
860 | "@vue/runtime-core": "3.2.31",
861 | "@vue/shared": "3.2.31",
862 | "csstype": "^2.6.8"
863 | }
864 | },
865 | "@vue/server-renderer": {
866 | "version": "3.2.31",
867 | "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.31.tgz",
868 | "integrity": "sha512-8CN3Zj2HyR2LQQBHZ61HexF5NReqngLT3oahyiVRfSSvak+oAvVmu8iNLSu6XR77Ili2AOpnAt1y8ywjjqtmkg==",
869 | "requires": {
870 | "@vue/compiler-ssr": "3.2.31",
871 | "@vue/shared": "3.2.31"
872 | }
873 | },
874 | "@vue/shared": {
875 | "version": "3.2.31",
876 | "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.31.tgz",
877 | "integrity": "sha512-ymN2pj6zEjiKJZbrf98UM2pfDd6F2H7ksKw7NDt/ZZ1fh5Ei39X5tABugtT03ZRlWd9imccoK0hE8hpjpU7irQ=="
878 | },
879 | "axios": {
880 | "version": "0.26.0",
881 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.0.tgz",
882 | "integrity": "sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==",
883 | "requires": {
884 | "follow-redirects": "^1.14.8"
885 | }
886 | },
887 | "csstype": {
888 | "version": "2.6.19",
889 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.19.tgz",
890 | "integrity": "sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ=="
891 | },
892 | "esbuild": {
893 | "version": "0.14.23",
894 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.23.tgz",
895 | "integrity": "sha512-XjnIcZ9KB6lfonCa+jRguXyRYcldmkyZ99ieDksqW/C8bnyEX299yA4QH2XcgijCgaddEZePPTgvx/2imsq7Ig==",
896 | "dev": true,
897 | "requires": {
898 | "esbuild-android-arm64": "0.14.23",
899 | "esbuild-darwin-64": "0.14.23",
900 | "esbuild-darwin-arm64": "0.14.23",
901 | "esbuild-freebsd-64": "0.14.23",
902 | "esbuild-freebsd-arm64": "0.14.23",
903 | "esbuild-linux-32": "0.14.23",
904 | "esbuild-linux-64": "0.14.23",
905 | "esbuild-linux-arm": "0.14.23",
906 | "esbuild-linux-arm64": "0.14.23",
907 | "esbuild-linux-mips64le": "0.14.23",
908 | "esbuild-linux-ppc64le": "0.14.23",
909 | "esbuild-linux-riscv64": "0.14.23",
910 | "esbuild-linux-s390x": "0.14.23",
911 | "esbuild-netbsd-64": "0.14.23",
912 | "esbuild-openbsd-64": "0.14.23",
913 | "esbuild-sunos-64": "0.14.23",
914 | "esbuild-windows-32": "0.14.23",
915 | "esbuild-windows-64": "0.14.23",
916 | "esbuild-windows-arm64": "0.14.23"
917 | }
918 | },
919 | "esbuild-android-arm64": {
920 | "version": "0.14.23",
921 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.23.tgz",
922 | "integrity": "sha512-k9sXem++mINrZty1v4FVt6nC5BQCFG4K2geCIUUqHNlTdFnuvcqsY7prcKZLFhqVC1rbcJAr9VSUGFL/vD4vsw==",
923 | "dev": true,
924 | "optional": true
925 | },
926 | "esbuild-darwin-64": {
927 | "version": "0.14.23",
928 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.23.tgz",
929 | "integrity": "sha512-lB0XRbtOYYL1tLcYw8BoBaYsFYiR48RPrA0KfA/7RFTr4MV7Bwy/J4+7nLsVnv9FGuQummM3uJ93J3ptaTqFug==",
930 | "dev": true,
931 | "optional": true
932 | },
933 | "esbuild-darwin-arm64": {
934 | "version": "0.14.23",
935 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.23.tgz",
936 | "integrity": "sha512-yat73Z/uJ5tRcfRiI4CCTv0FSnwErm3BJQeZAh+1tIP0TUNh6o+mXg338Zl5EKChD+YGp6PN+Dbhs7qa34RxSw==",
937 | "dev": true,
938 | "optional": true
939 | },
940 | "esbuild-freebsd-64": {
941 | "version": "0.14.23",
942 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.23.tgz",
943 | "integrity": "sha512-/1xiTjoLuQ+LlbfjJdKkX45qK/M7ARrbLmyf7x3JhyQGMjcxRYVR6Dw81uH3qlMHwT4cfLW4aEVBhP1aNV7VsA==",
944 | "dev": true,
945 | "optional": true
946 | },
947 | "esbuild-freebsd-arm64": {
948 | "version": "0.14.23",
949 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.23.tgz",
950 | "integrity": "sha512-uyPqBU/Zcp6yEAZS4LKj5jEE0q2s4HmlMBIPzbW6cTunZ8cyvjG6YWpIZXb1KK3KTJDe62ltCrk3VzmWHp+iLg==",
951 | "dev": true,
952 | "optional": true
953 | },
954 | "esbuild-linux-32": {
955 | "version": "0.14.23",
956 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.23.tgz",
957 | "integrity": "sha512-37R/WMkQyUfNhbH7aJrr1uCjDVdnPeTHGeDhZPUNhfoHV0lQuZNCKuNnDvlH/u/nwIYZNdVvz1Igv5rY/zfrzQ==",
958 | "dev": true,
959 | "optional": true
960 | },
961 | "esbuild-linux-64": {
962 | "version": "0.14.23",
963 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.23.tgz",
964 | "integrity": "sha512-H0gztDP60qqr8zoFhAO64waoN5yBXkmYCElFklpd6LPoobtNGNnDe99xOQm28+fuD75YJ7GKHzp/MLCLhw2+vQ==",
965 | "dev": true,
966 | "optional": true
967 | },
968 | "esbuild-linux-arm": {
969 | "version": "0.14.23",
970 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.23.tgz",
971 | "integrity": "sha512-x64CEUxi8+EzOAIpCUeuni0bZfzPw/65r8tC5cy5zOq9dY7ysOi5EVQHnzaxS+1NmV+/RVRpmrzGw1QgY2Xpmw==",
972 | "dev": true,
973 | "optional": true
974 | },
975 | "esbuild-linux-arm64": {
976 | "version": "0.14.23",
977 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.23.tgz",
978 | "integrity": "sha512-c4MLOIByNHR55n3KoYf9hYDfBRghMjOiHLaoYLhkQkIabb452RWi+HsNgB41sUpSlOAqfpqKPFNg7VrxL3UX9g==",
979 | "dev": true,
980 | "optional": true
981 | },
982 | "esbuild-linux-mips64le": {
983 | "version": "0.14.23",
984 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.23.tgz",
985 | "integrity": "sha512-kHKyKRIAedYhKug2EJpyJxOUj3VYuamOVA1pY7EimoFPzaF3NeY7e4cFBAISC/Av0/tiV0xlFCt9q0HJ68IBIw==",
986 | "dev": true,
987 | "optional": true
988 | },
989 | "esbuild-linux-ppc64le": {
990 | "version": "0.14.23",
991 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.23.tgz",
992 | "integrity": "sha512-7ilAiJEPuJJnJp/LiDO0oJm5ygbBPzhchJJh9HsHZzeqO+3PUzItXi+8PuicY08r0AaaOe25LA7sGJ0MzbfBag==",
993 | "dev": true,
994 | "optional": true
995 | },
996 | "esbuild-linux-riscv64": {
997 | "version": "0.14.23",
998 | "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.23.tgz",
999 | "integrity": "sha512-fbL3ggK2wY0D8I5raPIMPhpCvODFE+Bhb5QGtNP3r5aUsRR6TQV+ZBXIaw84iyvKC8vlXiA4fWLGhghAd/h/Zg==",
1000 | "dev": true,
1001 | "optional": true
1002 | },
1003 | "esbuild-linux-s390x": {
1004 | "version": "0.14.23",
1005 | "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.23.tgz",
1006 | "integrity": "sha512-GHMDCyfy7+FaNSO8RJ8KCFsnax8fLUsOrj9q5Gi2JmZMY0Zhp75keb5abTFCq2/Oy6KVcT0Dcbyo/bFb4rIFJA==",
1007 | "dev": true,
1008 | "optional": true
1009 | },
1010 | "esbuild-netbsd-64": {
1011 | "version": "0.14.23",
1012 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.23.tgz",
1013 | "integrity": "sha512-ovk2EX+3rrO1M2lowJfgMb/JPN1VwVYrx0QPUyudxkxLYrWeBxDKQvc6ffO+kB4QlDyTfdtAURrVzu3JeNdA2g==",
1014 | "dev": true,
1015 | "optional": true
1016 | },
1017 | "esbuild-openbsd-64": {
1018 | "version": "0.14.23",
1019 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.23.tgz",
1020 | "integrity": "sha512-uYYNqbVR+i7k8ojP/oIROAHO9lATLN7H2QeXKt2H310Fc8FJj4y3Wce6hx0VgnJ4k1JDrgbbiXM8rbEgQyg8KA==",
1021 | "dev": true,
1022 | "optional": true
1023 | },
1024 | "esbuild-sunos-64": {
1025 | "version": "0.14.23",
1026 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.23.tgz",
1027 | "integrity": "sha512-hAzeBeET0+SbScknPzS2LBY6FVDpgE+CsHSpe6CEoR51PApdn2IB0SyJX7vGelXzlyrnorM4CAsRyb9Qev4h9g==",
1028 | "dev": true,
1029 | "optional": true
1030 | },
1031 | "esbuild-windows-32": {
1032 | "version": "0.14.23",
1033 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.23.tgz",
1034 | "integrity": "sha512-Kttmi3JnohdaREbk6o9e25kieJR379TsEWF0l39PQVHXq3FR6sFKtVPgY8wk055o6IB+rllrzLnbqOw/UV60EA==",
1035 | "dev": true,
1036 | "optional": true
1037 | },
1038 | "esbuild-windows-64": {
1039 | "version": "0.14.23",
1040 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.23.tgz",
1041 | "integrity": "sha512-JtIT0t8ymkpl6YlmOl6zoSWL5cnCgyLaBdf/SiU/Eg3C13r0NbHZWNT/RDEMKK91Y6t79kTs3vyRcNZbfu5a8g==",
1042 | "dev": true,
1043 | "optional": true
1044 | },
1045 | "esbuild-windows-arm64": {
1046 | "version": "0.14.23",
1047 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.23.tgz",
1048 | "integrity": "sha512-cTFaQqT2+ik9e4hePvYtRZQ3pqOvKDVNarzql0VFIzhc0tru/ZgdLoXd6epLiKT+SzoSce6V9YJ+nn6RCn6SHw==",
1049 | "dev": true,
1050 | "optional": true
1051 | },
1052 | "estree-walker": {
1053 | "version": "2.0.2",
1054 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
1055 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
1056 | },
1057 | "follow-redirects": {
1058 | "version": "1.14.9",
1059 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz",
1060 | "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w=="
1061 | },
1062 | "fsevents": {
1063 | "version": "2.3.2",
1064 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
1065 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
1066 | "dev": true,
1067 | "optional": true
1068 | },
1069 | "function-bind": {
1070 | "version": "1.1.1",
1071 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1072 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
1073 | "dev": true
1074 | },
1075 | "has": {
1076 | "version": "1.0.3",
1077 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1078 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1079 | "dev": true,
1080 | "requires": {
1081 | "function-bind": "^1.1.1"
1082 | }
1083 | },
1084 | "is-core-module": {
1085 | "version": "2.8.1",
1086 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz",
1087 | "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==",
1088 | "dev": true,
1089 | "requires": {
1090 | "has": "^1.0.3"
1091 | }
1092 | },
1093 | "magic-string": {
1094 | "version": "0.25.7",
1095 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz",
1096 | "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
1097 | "requires": {
1098 | "sourcemap-codec": "^1.4.4"
1099 | }
1100 | },
1101 | "nanoid": {
1102 | "version": "3.3.1",
1103 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz",
1104 | "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw=="
1105 | },
1106 | "path-parse": {
1107 | "version": "1.0.7",
1108 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
1109 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
1110 | "dev": true
1111 | },
1112 | "picocolors": {
1113 | "version": "1.0.0",
1114 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
1115 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
1116 | },
1117 | "postcss": {
1118 | "version": "8.4.6",
1119 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.6.tgz",
1120 | "integrity": "sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA==",
1121 | "requires": {
1122 | "nanoid": "^3.2.0",
1123 | "picocolors": "^1.0.0",
1124 | "source-map-js": "^1.0.2"
1125 | }
1126 | },
1127 | "resolve": {
1128 | "version": "1.22.0",
1129 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz",
1130 | "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==",
1131 | "dev": true,
1132 | "requires": {
1133 | "is-core-module": "^2.8.1",
1134 | "path-parse": "^1.0.7",
1135 | "supports-preserve-symlinks-flag": "^1.0.0"
1136 | }
1137 | },
1138 | "rollup": {
1139 | "version": "2.68.0",
1140 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.68.0.tgz",
1141 | "integrity": "sha512-XrMKOYK7oQcTio4wyTz466mucnd8LzkiZLozZ4Rz0zQD+HeX4nUK4B8GrTX/2EvN2/vBF/i2WnaXboPxo0JylA==",
1142 | "dev": true,
1143 | "requires": {
1144 | "fsevents": "~2.3.2"
1145 | }
1146 | },
1147 | "source-map": {
1148 | "version": "0.6.1",
1149 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
1150 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
1151 | },
1152 | "source-map-js": {
1153 | "version": "1.0.2",
1154 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
1155 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
1156 | },
1157 | "sourcemap-codec": {
1158 | "version": "1.4.8",
1159 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
1160 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
1161 | },
1162 | "storyblok-js-client": {
1163 | "version": "4.2.1",
1164 | "resolved": "https://registry.npmjs.org/storyblok-js-client/-/storyblok-js-client-4.2.1.tgz",
1165 | "integrity": "sha512-TQfsyBJ6WcjpHFGKYXHy5kef4jXOI/j54wrJmw4Ld13e76dr81EvqZIrwehKPTcRID9+a4rbA0ykn3r3aBpArw==",
1166 | "requires": {}
1167 | },
1168 | "supports-preserve-symlinks-flag": {
1169 | "version": "1.0.0",
1170 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
1171 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
1172 | "dev": true
1173 | },
1174 | "vite": {
1175 | "version": "2.8.4",
1176 | "resolved": "https://registry.npmjs.org/vite/-/vite-2.8.4.tgz",
1177 | "integrity": "sha512-GwtOkkaT2LDI82uWZKcrpRQxP5tymLnC7hVHHqNkhFNknYr0hJUlDLfhVRgngJvAy3RwypkDCWtTKn1BjO96Dw==",
1178 | "dev": true,
1179 | "requires": {
1180 | "esbuild": "^0.14.14",
1181 | "fsevents": "~2.3.2",
1182 | "postcss": "^8.4.6",
1183 | "resolve": "^1.22.0",
1184 | "rollup": "^2.59.0"
1185 | }
1186 | },
1187 | "vue": {
1188 | "version": "3.2.31",
1189 | "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.31.tgz",
1190 | "integrity": "sha512-odT3W2tcffTiQCy57nOT93INw1auq5lYLLYtWpPYQQYQOOdHiqFct9Xhna6GJ+pJQaF67yZABraH47oywkJgFw==",
1191 | "requires": {
1192 | "@vue/compiler-dom": "3.2.31",
1193 | "@vue/compiler-sfc": "3.2.31",
1194 | "@vue/runtime-dom": "3.2.31",
1195 | "@vue/server-renderer": "3.2.31",
1196 | "@vue/shared": "3.2.31"
1197 | }
1198 | }
1199 | }
1200 | }
1201 |
--------------------------------------------------------------------------------
/vuejs/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "-vuejs-5-minutes",
3 | "version": "0.0.0",
4 | "scripts": {
5 | "dev": "vite",
6 | "build": "vite build",
7 | "preview": "vite preview --port 3000"
8 | },
9 | "dependencies": {
10 | "@storyblok/vue": "^6.0.0",
11 | "axios": "^0.26.0",
12 | "vue": "^3.2.26"
13 | },
14 | "devDependencies": {
15 | "@vitejs/plugin-vue": "^2.0.0",
16 | "vite": "^2.7.1"
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/vuejs/src/App.vue:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | Loading...
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/vuejs/src/components/Feature.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
{{ blok.name }}
4 |
5 |
6 |
7 |
10 |
--------------------------------------------------------------------------------
/vuejs/src/components/Grid.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
12 |
--------------------------------------------------------------------------------
/vuejs/src/components/Page.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
10 |
11 |
14 |
--------------------------------------------------------------------------------
/vuejs/src/components/Teaser.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{ blok.headline }}
4 |
5 |
6 |
7 |
10 |
--------------------------------------------------------------------------------
/vuejs/src/main.js:
--------------------------------------------------------------------------------
1 | import { createApp } from 'vue';
2 | import { StoryblokVue, apiPlugin } from '@storyblok/vue';
3 | import App from './App.vue';
4 | import Grid from './components/Grid.vue';
5 | import Page from './components/Page.vue';
6 | import Teaser from './components/Teaser.vue';
7 | import Feature from './components/Feature.vue';
8 |
9 | const app = createApp(App);
10 |
11 | app.use(StoryblokVue, {
12 | accessToken: 'd6IKUtAUDiKyAhpJtrLFcwtt',
13 | use: [apiPlugin],
14 | apiOptions: {
15 | region: ''
16 | }
17 | });
18 |
19 | app.component('Grid', Grid);
20 | app.component('Page', Page);
21 | app.component('Teaser', Teaser);
22 | app.component('Feature', Feature);
23 |
24 | app.mount('#app');
25 |
--------------------------------------------------------------------------------
/vuejs/src/pages/Home.vue:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/vuejs/vite.config.js:
--------------------------------------------------------------------------------
1 | import { fileURLToPath } from 'url'
2 |
3 | import { defineConfig } from 'vite'
4 | import vue from '@vitejs/plugin-vue'
5 |
6 | // https://vitejs.dev/config/
7 | export default defineConfig({
8 | plugins: [vue()],
9 | resolve: {
10 | alias: {
11 | '@': fileURLToPath(new URL('./src', import.meta.url))
12 | }
13 | }
14 | })
15 |
--------------------------------------------------------------------------------