From b59c5bb735c0217f434809545bbb074b2adb3e33 Mon Sep 17 00:00:00 2001 From: Martin Smit Date: Fri, 23 Jan 2026 11:09:09 +0200 Subject: [PATCH 01/15] Replace site with oatmeal-mist-instrument template - Remove old Next.js Pages Router site with Storyblok CMS - Add new Next.js 16 App Router site with React 19 and Tailwind 4 - Include template library in templates/pages/ for alternative page designs - Features: home, about, pricing, and privacy policy pages Co-Authored-By: Claude Opus 4.5 --- .editorconfig | 13 - .eslintrc.json | 3 - LICENSE.md | 129 + README.md | 20 - assets/images/logo-block.svg | 177 - components/BlogPost.js | 28 - components/CallToAction.js | 31 - components/ContactForm.js | 377 - components/DynamicComponent.js | 44 - components/Feature.js | 19 - components/FeaturedPosts.js | 71 - components/Footer.js | 142 - components/Grid.js | 18 - components/Head.js | 25 - components/HeaderBanner.js | 38 - components/Headline.js | 38 - components/HeroImageOnRight.js | 60 - components/ImageWithTextOnRight.js | 54 - components/Layout.js | 15 - components/Navigation.js | 169 - components/Page.js | 72 - components/Placeholder.js | 7 - components/PostsList.js | 48 - components/Prose.js | 15 - components/Testimonial.js | 35 - components/TextWithImage.js | 67 - components/icons/DynamicIcon.js | 20 - components/icons/Mail.js | 25 - components/icons/Phone.js | 23 - components/icons/Twitter.js | 23 - eslint.config.mjs | 19 + jsconfig.json | 12 - lib/constant.js | 3 - netlify.toml | 9 - next-env.d.ts | 6 + next.config.js | 14 - next.config.ts | 7 + package.json | 60 +- pages/404.js | 31 - pages/[[...slug]].js | 78 - pages/_app.js | 12 - pages/api/exit-preview.js | 17 - pages/api/preview.js | 26 - postcss.config.js | 3 - postcss.config.mjs | 7 + public/favicon.ico | Bin 15406 -> 0 bytes public/fonts/Merriweather-Bold.ttf | Bin 141964 -> 0 bytes public/fonts/Roboto-Medium.ttf | Bin 171656 -> 0 bytes public/fonts/Roboto-Regular.ttf | Bin 171272 -> 0 bytes public/fonts/fonts.css | 20 - public/img/avatars/1-h-1000-w-800.webp | Bin 0 -> 30688 bytes public/img/avatars/10-size-160.webp | Bin 0 -> 2858 bytes public/img/avatars/11-size-160.webp | Bin 0 -> 3610 bytes public/img/avatars/12-size-160.webp | Bin 0 -> 3034 bytes public/img/avatars/13-size-160.webp | Bin 0 -> 2520 bytes public/img/avatars/14-size-160.webp | Bin 0 -> 1966 bytes public/img/avatars/15-size-160.webp | Bin 0 -> 2224 bytes public/img/avatars/16-h-1000-w-1400.webp | Bin 0 -> 32020 bytes public/img/avatars/2-h-1000-w-800.webp | Bin 0 -> 41976 bytes public/img/avatars/3-h-1000-w-800.webp | Bin 0 -> 38390 bytes public/img/avatars/4-h-1000-w-800.webp | Bin 0 -> 32188 bytes public/img/avatars/5-h-1000-w-800.webp | Bin 0 -> 32598 bytes public/img/avatars/6-h-1000-w-800.webp | Bin 0 -> 30710 bytes public/img/avatars/7-h-1000-w-800.webp | Bin 0 -> 49914 bytes public/img/avatars/8-h-1000-w-800.webp | Bin 0 -> 21906 bytes public/img/logos/10-color-black-height-32.svg | 3 + public/img/logos/10-color-white-height-32.svg | 3 + public/img/logos/11-color-black-height-32.svg | 6 + public/img/logos/11-color-white-height-32.svg | 6 + public/img/logos/12-color-black-height-32.svg | 3 + public/img/logos/12-color-white-height-32.svg | 3 + public/img/logos/13-color-black-height-32.svg | 7 + public/img/logos/13-color-white-height-32.svg | 7 + public/img/logos/8-color-black-height-32.svg | 6 + public/img/logos/8-color-white-height-32.svg | 6 + public/img/logos/9-color-black-height-32.svg | 3 + public/img/logos/9-color-white-height-32.svg | 3 + .../oatmeal-instrument-color-mist-950.svg | 3 + .../logos/oatmeal-instrument-color-white.svg | 3 + public/img/photos/1.webp | Bin 0 -> 228362 bytes .../1-color-mist-left-1000-top-800.webp | Bin 0 -> 31142 bytes .../1-color-mist-left-1300-top-1300.webp | Bin 0 -> 63570 bytes .../1-color-mist-left-1670-top-1408.webp | Bin 0 -> 101154 bytes .../1-color-mist-left-1800-top-1250.webp | Bin 0 -> 96464 bytes .../1-color-mist-left-1800-top-660.webp | Bin 0 -> 53268 bytes .../1-color-mist-left-2000-top-1408.webp | Bin 0 -> 119068 bytes .../1-color-mist-right-1000-top-800.webp | Bin 0 -> 35500 bytes .../1-color-mist-right-1300-top-1300.webp | Bin 0 -> 66946 bytes .../1-color-mist-right-1800-top-1250.webp | Bin 0 -> 83098 bytes .../1-color-mist-right-1800-top-660.webp | Bin 0 -> 47326 bytes public/img/screenshots/1-color-mist.webp | Bin 0 -> 525404 bytes .../img/screenshots/1-left-1000-top-800.webp | Bin 0 -> 37536 bytes .../img/screenshots/1-left-1300-top-1300.webp | Bin 0 -> 74616 bytes .../img/screenshots/1-left-1670-top-1408.webp | Bin 0 -> 113290 bytes .../img/screenshots/1-left-1800-top-1250.webp | Bin 0 -> 104184 bytes .../img/screenshots/1-left-1800-top-660.webp | Bin 0 -> 57592 bytes .../img/screenshots/1-left-2000-top-1408.webp | Bin 0 -> 131574 bytes .../img/screenshots/1-right-1000-top-800.webp | Bin 0 -> 33416 bytes .../screenshots/1-right-1300-top-1300.webp | Bin 0 -> 64260 bytes .../screenshots/1-right-1800-top-1250.webp | Bin 0 -> 80808 bytes .../img/screenshots/1-right-1800-top-660.webp | Bin 0 -> 46220 bytes public/img/screenshots/1.webp | Bin 0 -> 508180 bytes public/meta/android-chrome-192x192.png | Bin 23040 -> 0 bytes public/meta/android-chrome-512x512.png | Bin 88255 -> 0 bytes public/meta/apple-touch-icon.png | Bin 20343 -> 0 bytes public/meta/favicon-16x16.png | Bin 631 -> 0 bytes public/meta/favicon-32x32.png | Bin 1543 -> 0 bytes public/meta/favicon.ico | Bin 15406 -> 0 bytes src/app/404/page.tsx | 19 + src/app/about/page.tsx | 208 + src/app/globals.css | 32 + src/app/layout.tsx | 146 + src/app/page.tsx | 607 ++ src/app/pricing/page.tsx | 350 + src/app/privacy-policy/page.tsx | 72 + .../elements/announcement-badge.tsx | 52 + src/components/elements/button.tsx | 156 + src/components/elements/container.tsx | 10 + src/components/elements/document.tsx | 16 + src/components/elements/email-signup-form.tsx | 43 + src/components/elements/eyebrow.tsx | 10 + src/components/elements/heading.tsx | 23 + src/components/elements/install-command.tsx | 41 + src/components/elements/link.tsx | 20 + src/components/elements/logo-grid.tsx | 18 + src/components/elements/main.tsx | 10 + src/components/elements/screenshot.tsx | 24 + src/components/elements/section.tsx | 39 + src/components/elements/subheading.tsx | 16 + src/components/elements/text.tsx | 18 + src/components/elements/wallpaper.tsx | 48 + src/components/icons/alert-triangle-icon.tsx | 26 + src/components/icons/archive-box-icon.tsx | 33 + src/components/icons/archive-box-x-icon.tsx | 34 + .../icons/arrow-down-arrow-up-icon.tsx | 32 + .../icons/arrow-left-arrow-right-icon.tsx | 27 + .../icons/arrow-narrow-down-icon.tsx | 25 + .../icons/arrow-narrow-left-icon.tsx | 25 + .../icons/arrow-narrow-right-icon.tsx | 20 + src/components/icons/arrow-narrow-up-icon.tsx | 25 + src/components/icons/at-symbol-icon.tsx | 25 + src/components/icons/banknotes-icon.tsx | 59 + src/components/icons/beaker-icon.tsx | 27 + src/components/icons/bell-icon.tsx | 32 + src/components/icons/book-open-icon.tsx | 30 + src/components/icons/briefcase-icon.tsx | 39 + src/components/icons/building-2-icon.tsx | 35 + src/components/icons/building-icon.tsx | 30 + .../icons/building-library-icon.tsx | 29 + .../icons/building-storefront-icon.tsx | 29 + src/components/icons/calendar-icon.tsx | 24 + src/components/icons/camera-icon.tsx | 33 + src/components/icons/camera-video-icon.tsx | 31 + src/components/icons/chart-bar-icon.tsx | 20 + src/components/icons/chart-line-icon.tsx | 38 + .../icons/chart-pie-circle-icon.tsx | 27 + .../chat-bubble-circle-ellipsis-icon.tsx | 25 + .../icons/chat-bubble-circle-icon.tsx | 22 + .../icons/chat-bubble-circle-stacked-icon.tsx | 31 + .../chat-bubble-rectangle-ellipsis-icon.tsx | 27 + .../icons/chat-bubble-rectangle-icon.tsx | 24 + src/components/icons/checkmark-icon.tsx | 20 + src/components/icons/chevron-icon.tsx | 22 + src/components/icons/clipboard-icon.tsx | 35 + src/components/icons/clock-icon.tsx | 20 + .../icons/cloud-arrow-down-icon.tsx | 31 + src/components/icons/cloud-arrow-up-icon.tsx | 31 + src/components/icons/cloud-icon.tsx | 24 + src/components/icons/code-square-icon.tsx | 26 + src/components/icons/cog-icon.tsx | 28 + src/components/icons/compass-icon.tsx | 28 + src/components/icons/cpu-icon.tsx | 44 + .../icons/document-2-stacked-icon.tsx | 52 + src/components/icons/document-icon.tsx | 35 + src/components/icons/education-cap-icon.tsx | 34 + src/components/icons/filter-icon.tsx | 24 + src/components/icons/fingerprint-icon.tsx | 36 + src/components/icons/flag-icon.tsx | 25 + .../icons/folder-arrow-left-icon.tsx | 37 + .../icons/folder-arrow-right-icon.tsx | 37 + src/components/icons/folder-icon.tsx | 35 + src/components/icons/folder-minus-icon.tsx | 36 + src/components/icons/folder-plus-icon.tsx | 37 + src/components/icons/git-branch-icon.tsx | 46 + src/components/icons/git-diff-icon.tsx | 56 + src/components/icons/git-merge-icon.tsx | 46 + src/components/icons/git-pull-icon.tsx | 52 + src/components/icons/hard-drive-icon.tsx | 34 + src/components/icons/heart-icon.tsx | 24 + src/components/icons/heart-pulse-icon.tsx | 38 + src/components/icons/home-icon.tsx | 31 + src/components/icons/inbox-icon.tsx | 26 + .../icons/information-circle-icon.tsx | 25 + src/components/icons/key-icon.tsx | 30 + src/components/icons/language-icon.tsx | 28 + src/components/icons/lifebuoy-icon.tsx | 30 + src/components/icons/light-bulb-icon.tsx | 28 + src/components/icons/lighting-bolt-icon.tsx | 20 + src/components/icons/lock-icon.tsx | 30 + src/components/icons/lock-open-icon.tsx | 30 + .../icons/magnifying-glass-icon.tsx | 25 + src/components/icons/mail-icon.tsx | 32 + src/components/icons/map-icon.tsx | 27 + src/components/icons/map-pin-icon.tsx | 22 + src/components/icons/microphone-icon.tsx | 34 + src/components/icons/minus-circle-icon.tsx | 20 + src/components/icons/minus-icon.tsx | 20 + src/components/icons/moon-icon.tsx | 24 + src/components/icons/newspaper-icon.tsx | 45 + src/components/icons/paperclip-icon.tsx | 24 + .../icons/pencil-on-square-icon.tsx | 32 + src/components/icons/photo-icon.tsx | 37 + src/components/icons/plus-circle-icon.tsx | 20 + src/components/icons/plus-icon.tsx | 21 + src/components/icons/question-circle-icon.tsx | 31 + src/components/icons/repeat-icon.tsx | 32 + src/components/icons/rocket-icon.tsx | 45 + .../icons/shield-exclamation-icon.tsx | 26 + src/components/icons/shopping-bag-icon.tsx | 30 + src/components/icons/shopping-cart-icon.tsx | 35 + src/components/icons/sliders-icon.tsx | 32 + src/components/icons/social/facebook-icon.tsx | 22 + src/components/icons/social/github-icon.tsx | 22 + .../icons/social/instagram-icon.tsx | 22 + src/components/icons/social/x-icon.tsx | 18 + src/components/icons/social/youtube-icon.tsx | 22 + src/components/icons/sparkles-icon.tsx | 24 + .../icons/square-3-stack-3d-icon.tsx | 41 + .../icons/squares-2-stacked-icon.tsx | 35 + src/components/icons/star-icon.tsx | 24 + src/components/icons/sun-icon.tsx | 25 + src/components/icons/tag-icon.tsx | 24 + src/components/icons/target-icon.tsx | 44 + src/components/icons/terminal-icon.tsx | 26 + src/components/icons/ticket-icon.tsx | 24 + src/components/icons/trash-icon.tsx | 33 + src/components/icons/ui-layout-icon.tsx | 30 + src/components/icons/unordered-list-icon.tsx | 22 + src/components/icons/user-2-icon.tsx | 46 + src/components/icons/user-arrow-left-icon.tsx | 34 + .../icons/user-arrow-right-icon.tsx | 34 + .../icons/user-circle-dotted-icon.tsx | 39 + src/components/icons/user-circle-icon.tsx | 38 + .../sections/brands-cards-multi-column.tsx | 38 + .../call-to-action-simple-centered.tsx | 29 + .../sections/call-to-action-simple.tsx | 35 + src/components/sections/document-centered.tsx | 33 + .../sections/document-left-aligned.tsx | 33 + src/components/sections/faqs-accordion.tsx | 65 + .../sections/faqs-two-column-accordion.tsx | 66 + ...eatures-stacked-alternating-with-demos.tsx | 47 + .../features-three-column-with-demos.tsx | 38 + .../sections/features-three-column.tsx | 39 + .../features-two-column-with-demos.tsx | 42 + .../sections/features-with-large-demo.tsx | 43 + .../sections/footer-with-link-categories.tsx | 47 + .../footer-with-links-and-social-icons.tsx | 61 + ...etter-form-categories-and-social-icons.tsx | 110 + .../sections/hero-centered-with-demo.tsx | 42 + .../sections/hero-centered-with-photo.tsx | 44 + .../sections/hero-left-aligned-with-demo.tsx | 42 + .../sections/hero-left-aligned-with-photo.tsx | 44 + .../sections/hero-simple-centered.tsx | 32 + .../sections/hero-simple-left-aligned.tsx | 32 + .../sections/hero-two-column-with-photo.tsx | 39 + .../sections/hero-with-demo-on-background.tsx | 52 + ...r-with-links-actions-and-centered-logo.tsx | 103 + ...r-with-logo-actions-and-centered-links.tsx | 103 + ...th-logo-actions-and-left-aligned-links.tsx | 105 + .../sections/plan-comparison-table.tsx | 137 + .../sections/pricing-hero-multi-tier.tsx | 117 + .../sections/pricing-multi-tier.tsx | 73 + .../pricing-single-tier-two-column.tsx | 58 + .../sections/stats-four-columns.tsx | 25 + .../stats-three-column-with-description.tsx | 46 + src/components/sections/stats-with-graph.tsx | 72 + .../sections/team-four-column-grid.tsx | 37 + .../sections/team-three-column-grid.tsx | 37 + ...estimonial-two-column-with-large-photo.tsx | 38 + .../sections/testimonial-with-large-quote.tsx | 36 + .../testimonials-three-column-grid.tsx | 48 + styles/tailwind.css | 5 - tailwind.config.js | 60 - templates/pages/404-01.tsx | 134 + templates/pages/404-02.tsx | 134 + templates/pages/about-01.tsx | 324 + templates/pages/about-02.tsx | 364 + templates/pages/about-03.tsx | 297 + templates/pages/home-01.tsx | 725 ++ templates/pages/home-02.tsx | 604 ++ templates/pages/home-03.tsx | 593 ++ templates/pages/pricing-01.tsx | 466 ++ templates/pages/pricing-02.tsx | 192 + templates/pages/pricing-03.tsx | 373 + templates/pages/privacy-policy-01.tsx | 190 + templates/pages/privacy-policy-02.tsx | 161 + tsconfig.json | 27 + utils/storyblok.js | 91 - yarn.lock | 6659 +++++++---------- 299 files changed, 14856 insertions(+), 6219 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .eslintrc.json create mode 100644 LICENSE.md delete mode 100644 README.md delete mode 100644 assets/images/logo-block.svg delete mode 100644 components/BlogPost.js delete mode 100644 components/CallToAction.js delete mode 100644 components/ContactForm.js delete mode 100644 components/DynamicComponent.js delete mode 100644 components/Feature.js delete mode 100644 components/FeaturedPosts.js delete mode 100644 components/Footer.js delete mode 100644 components/Grid.js delete mode 100644 components/Head.js delete mode 100644 components/HeaderBanner.js delete mode 100644 components/Headline.js delete mode 100644 components/HeroImageOnRight.js delete mode 100644 components/ImageWithTextOnRight.js delete mode 100644 components/Layout.js delete mode 100644 components/Navigation.js delete mode 100644 components/Page.js delete mode 100644 components/Placeholder.js delete mode 100644 components/PostsList.js delete mode 100644 components/Prose.js delete mode 100644 components/Testimonial.js delete mode 100644 components/TextWithImage.js delete mode 100644 components/icons/DynamicIcon.js delete mode 100644 components/icons/Mail.js delete mode 100644 components/icons/Phone.js delete mode 100644 components/icons/Twitter.js create mode 100644 eslint.config.mjs delete mode 100644 jsconfig.json delete mode 100644 lib/constant.js delete mode 100644 netlify.toml create mode 100644 next-env.d.ts delete mode 100644 next.config.js create mode 100644 next.config.ts delete mode 100644 pages/404.js delete mode 100644 pages/[[...slug]].js delete mode 100644 pages/_app.js delete mode 100644 pages/api/exit-preview.js delete mode 100644 pages/api/preview.js delete mode 100644 postcss.config.js create mode 100644 postcss.config.mjs delete mode 100644 public/favicon.ico delete mode 100644 public/fonts/Merriweather-Bold.ttf delete mode 100644 public/fonts/Roboto-Medium.ttf delete mode 100644 public/fonts/Roboto-Regular.ttf delete mode 100644 public/fonts/fonts.css create mode 100644 public/img/avatars/1-h-1000-w-800.webp create mode 100644 public/img/avatars/10-size-160.webp create mode 100644 public/img/avatars/11-size-160.webp create mode 100644 public/img/avatars/12-size-160.webp create mode 100644 public/img/avatars/13-size-160.webp create mode 100644 public/img/avatars/14-size-160.webp create mode 100644 public/img/avatars/15-size-160.webp create mode 100644 public/img/avatars/16-h-1000-w-1400.webp create mode 100644 public/img/avatars/2-h-1000-w-800.webp create mode 100644 public/img/avatars/3-h-1000-w-800.webp create mode 100644 public/img/avatars/4-h-1000-w-800.webp create mode 100644 public/img/avatars/5-h-1000-w-800.webp create mode 100644 public/img/avatars/6-h-1000-w-800.webp create mode 100644 public/img/avatars/7-h-1000-w-800.webp create mode 100644 public/img/avatars/8-h-1000-w-800.webp create mode 100644 public/img/logos/10-color-black-height-32.svg create mode 100644 public/img/logos/10-color-white-height-32.svg create mode 100644 public/img/logos/11-color-black-height-32.svg create mode 100644 public/img/logos/11-color-white-height-32.svg create mode 100644 public/img/logos/12-color-black-height-32.svg create mode 100644 public/img/logos/12-color-white-height-32.svg create mode 100644 public/img/logos/13-color-black-height-32.svg create mode 100644 public/img/logos/13-color-white-height-32.svg create mode 100644 public/img/logos/8-color-black-height-32.svg create mode 100644 public/img/logos/8-color-white-height-32.svg create mode 100644 public/img/logos/9-color-black-height-32.svg create mode 100644 public/img/logos/9-color-white-height-32.svg create mode 100644 public/img/logos/oatmeal-instrument-color-mist-950.svg create mode 100644 public/img/logos/oatmeal-instrument-color-white.svg create mode 100644 public/img/photos/1.webp create mode 100644 public/img/screenshots/1-color-mist-left-1000-top-800.webp create mode 100644 public/img/screenshots/1-color-mist-left-1300-top-1300.webp create mode 100644 public/img/screenshots/1-color-mist-left-1670-top-1408.webp create mode 100644 public/img/screenshots/1-color-mist-left-1800-top-1250.webp create mode 100644 public/img/screenshots/1-color-mist-left-1800-top-660.webp create mode 100644 public/img/screenshots/1-color-mist-left-2000-top-1408.webp create mode 100644 public/img/screenshots/1-color-mist-right-1000-top-800.webp create mode 100644 public/img/screenshots/1-color-mist-right-1300-top-1300.webp create mode 100644 public/img/screenshots/1-color-mist-right-1800-top-1250.webp create mode 100644 public/img/screenshots/1-color-mist-right-1800-top-660.webp create mode 100644 public/img/screenshots/1-color-mist.webp create mode 100644 public/img/screenshots/1-left-1000-top-800.webp create mode 100644 public/img/screenshots/1-left-1300-top-1300.webp create mode 100644 public/img/screenshots/1-left-1670-top-1408.webp create mode 100644 public/img/screenshots/1-left-1800-top-1250.webp create mode 100644 public/img/screenshots/1-left-1800-top-660.webp create mode 100644 public/img/screenshots/1-left-2000-top-1408.webp create mode 100644 public/img/screenshots/1-right-1000-top-800.webp create mode 100644 public/img/screenshots/1-right-1300-top-1300.webp create mode 100644 public/img/screenshots/1-right-1800-top-1250.webp create mode 100644 public/img/screenshots/1-right-1800-top-660.webp create mode 100644 public/img/screenshots/1.webp delete mode 100644 public/meta/android-chrome-192x192.png delete mode 100644 public/meta/android-chrome-512x512.png delete mode 100644 public/meta/apple-touch-icon.png delete mode 100644 public/meta/favicon-16x16.png delete mode 100644 public/meta/favicon-32x32.png delete mode 100644 public/meta/favicon.ico create mode 100644 src/app/404/page.tsx create mode 100644 src/app/about/page.tsx create mode 100644 src/app/globals.css create mode 100644 src/app/layout.tsx create mode 100644 src/app/page.tsx create mode 100644 src/app/pricing/page.tsx create mode 100644 src/app/privacy-policy/page.tsx create mode 100644 src/components/elements/announcement-badge.tsx create mode 100644 src/components/elements/button.tsx create mode 100644 src/components/elements/container.tsx create mode 100644 src/components/elements/document.tsx create mode 100644 src/components/elements/email-signup-form.tsx create mode 100644 src/components/elements/eyebrow.tsx create mode 100644 src/components/elements/heading.tsx create mode 100644 src/components/elements/install-command.tsx create mode 100644 src/components/elements/link.tsx create mode 100644 src/components/elements/logo-grid.tsx create mode 100644 src/components/elements/main.tsx create mode 100644 src/components/elements/screenshot.tsx create mode 100644 src/components/elements/section.tsx create mode 100644 src/components/elements/subheading.tsx create mode 100644 src/components/elements/text.tsx create mode 100644 src/components/elements/wallpaper.tsx create mode 100644 src/components/icons/alert-triangle-icon.tsx create mode 100644 src/components/icons/archive-box-icon.tsx create mode 100644 src/components/icons/archive-box-x-icon.tsx create mode 100644 src/components/icons/arrow-down-arrow-up-icon.tsx create mode 100644 src/components/icons/arrow-left-arrow-right-icon.tsx create mode 100644 src/components/icons/arrow-narrow-down-icon.tsx create mode 100644 src/components/icons/arrow-narrow-left-icon.tsx create mode 100644 src/components/icons/arrow-narrow-right-icon.tsx create mode 100644 src/components/icons/arrow-narrow-up-icon.tsx create mode 100644 src/components/icons/at-symbol-icon.tsx create mode 100644 src/components/icons/banknotes-icon.tsx create mode 100644 src/components/icons/beaker-icon.tsx create mode 100644 src/components/icons/bell-icon.tsx create mode 100644 src/components/icons/book-open-icon.tsx create mode 100644 src/components/icons/briefcase-icon.tsx create mode 100644 src/components/icons/building-2-icon.tsx create mode 100644 src/components/icons/building-icon.tsx create mode 100644 src/components/icons/building-library-icon.tsx create mode 100644 src/components/icons/building-storefront-icon.tsx create mode 100644 src/components/icons/calendar-icon.tsx create mode 100644 src/components/icons/camera-icon.tsx create mode 100644 src/components/icons/camera-video-icon.tsx create mode 100644 src/components/icons/chart-bar-icon.tsx create mode 100644 src/components/icons/chart-line-icon.tsx create mode 100644 src/components/icons/chart-pie-circle-icon.tsx create mode 100644 src/components/icons/chat-bubble-circle-ellipsis-icon.tsx create mode 100644 src/components/icons/chat-bubble-circle-icon.tsx create mode 100644 src/components/icons/chat-bubble-circle-stacked-icon.tsx create mode 100644 src/components/icons/chat-bubble-rectangle-ellipsis-icon.tsx create mode 100644 src/components/icons/chat-bubble-rectangle-icon.tsx create mode 100644 src/components/icons/checkmark-icon.tsx create mode 100644 src/components/icons/chevron-icon.tsx create mode 100644 src/components/icons/clipboard-icon.tsx create mode 100644 src/components/icons/clock-icon.tsx create mode 100644 src/components/icons/cloud-arrow-down-icon.tsx create mode 100644 src/components/icons/cloud-arrow-up-icon.tsx create mode 100644 src/components/icons/cloud-icon.tsx create mode 100644 src/components/icons/code-square-icon.tsx create mode 100644 src/components/icons/cog-icon.tsx create mode 100644 src/components/icons/compass-icon.tsx create mode 100644 src/components/icons/cpu-icon.tsx create mode 100644 src/components/icons/document-2-stacked-icon.tsx create mode 100644 src/components/icons/document-icon.tsx create mode 100644 src/components/icons/education-cap-icon.tsx create mode 100644 src/components/icons/filter-icon.tsx create mode 100644 src/components/icons/fingerprint-icon.tsx create mode 100644 src/components/icons/flag-icon.tsx create mode 100644 src/components/icons/folder-arrow-left-icon.tsx create mode 100644 src/components/icons/folder-arrow-right-icon.tsx create mode 100644 src/components/icons/folder-icon.tsx create mode 100644 src/components/icons/folder-minus-icon.tsx create mode 100644 src/components/icons/folder-plus-icon.tsx create mode 100644 src/components/icons/git-branch-icon.tsx create mode 100644 src/components/icons/git-diff-icon.tsx create mode 100644 src/components/icons/git-merge-icon.tsx create mode 100644 src/components/icons/git-pull-icon.tsx create mode 100644 src/components/icons/hard-drive-icon.tsx create mode 100644 src/components/icons/heart-icon.tsx create mode 100644 src/components/icons/heart-pulse-icon.tsx create mode 100644 src/components/icons/home-icon.tsx create mode 100644 src/components/icons/inbox-icon.tsx create mode 100644 src/components/icons/information-circle-icon.tsx create mode 100644 src/components/icons/key-icon.tsx create mode 100644 src/components/icons/language-icon.tsx create mode 100644 src/components/icons/lifebuoy-icon.tsx create mode 100644 src/components/icons/light-bulb-icon.tsx create mode 100644 src/components/icons/lighting-bolt-icon.tsx create mode 100644 src/components/icons/lock-icon.tsx create mode 100644 src/components/icons/lock-open-icon.tsx create mode 100644 src/components/icons/magnifying-glass-icon.tsx create mode 100644 src/components/icons/mail-icon.tsx create mode 100644 src/components/icons/map-icon.tsx create mode 100644 src/components/icons/map-pin-icon.tsx create mode 100644 src/components/icons/microphone-icon.tsx create mode 100644 src/components/icons/minus-circle-icon.tsx create mode 100644 src/components/icons/minus-icon.tsx create mode 100644 src/components/icons/moon-icon.tsx create mode 100644 src/components/icons/newspaper-icon.tsx create mode 100644 src/components/icons/paperclip-icon.tsx create mode 100644 src/components/icons/pencil-on-square-icon.tsx create mode 100644 src/components/icons/photo-icon.tsx create mode 100644 src/components/icons/plus-circle-icon.tsx create mode 100644 src/components/icons/plus-icon.tsx create mode 100644 src/components/icons/question-circle-icon.tsx create mode 100644 src/components/icons/repeat-icon.tsx create mode 100644 src/components/icons/rocket-icon.tsx create mode 100644 src/components/icons/shield-exclamation-icon.tsx create mode 100644 src/components/icons/shopping-bag-icon.tsx create mode 100644 src/components/icons/shopping-cart-icon.tsx create mode 100644 src/components/icons/sliders-icon.tsx create mode 100644 src/components/icons/social/facebook-icon.tsx create mode 100644 src/components/icons/social/github-icon.tsx create mode 100644 src/components/icons/social/instagram-icon.tsx create mode 100644 src/components/icons/social/x-icon.tsx create mode 100644 src/components/icons/social/youtube-icon.tsx create mode 100644 src/components/icons/sparkles-icon.tsx create mode 100644 src/components/icons/square-3-stack-3d-icon.tsx create mode 100644 src/components/icons/squares-2-stacked-icon.tsx create mode 100644 src/components/icons/star-icon.tsx create mode 100644 src/components/icons/sun-icon.tsx create mode 100644 src/components/icons/tag-icon.tsx create mode 100644 src/components/icons/target-icon.tsx create mode 100644 src/components/icons/terminal-icon.tsx create mode 100644 src/components/icons/ticket-icon.tsx create mode 100644 src/components/icons/trash-icon.tsx create mode 100644 src/components/icons/ui-layout-icon.tsx create mode 100644 src/components/icons/unordered-list-icon.tsx create mode 100644 src/components/icons/user-2-icon.tsx create mode 100644 src/components/icons/user-arrow-left-icon.tsx create mode 100644 src/components/icons/user-arrow-right-icon.tsx create mode 100644 src/components/icons/user-circle-dotted-icon.tsx create mode 100644 src/components/icons/user-circle-icon.tsx create mode 100644 src/components/sections/brands-cards-multi-column.tsx create mode 100644 src/components/sections/call-to-action-simple-centered.tsx create mode 100644 src/components/sections/call-to-action-simple.tsx create mode 100644 src/components/sections/document-centered.tsx create mode 100644 src/components/sections/document-left-aligned.tsx create mode 100644 src/components/sections/faqs-accordion.tsx create mode 100644 src/components/sections/faqs-two-column-accordion.tsx create mode 100644 src/components/sections/features-stacked-alternating-with-demos.tsx create mode 100644 src/components/sections/features-three-column-with-demos.tsx create mode 100644 src/components/sections/features-three-column.tsx create mode 100644 src/components/sections/features-two-column-with-demos.tsx create mode 100644 src/components/sections/features-with-large-demo.tsx create mode 100644 src/components/sections/footer-with-link-categories.tsx create mode 100644 src/components/sections/footer-with-links-and-social-icons.tsx create mode 100644 src/components/sections/footer-with-newsletter-form-categories-and-social-icons.tsx create mode 100644 src/components/sections/hero-centered-with-demo.tsx create mode 100644 src/components/sections/hero-centered-with-photo.tsx create mode 100644 src/components/sections/hero-left-aligned-with-demo.tsx create mode 100644 src/components/sections/hero-left-aligned-with-photo.tsx create mode 100644 src/components/sections/hero-simple-centered.tsx create mode 100644 src/components/sections/hero-simple-left-aligned.tsx create mode 100644 src/components/sections/hero-two-column-with-photo.tsx create mode 100644 src/components/sections/hero-with-demo-on-background.tsx create mode 100644 src/components/sections/navbar-with-links-actions-and-centered-logo.tsx create mode 100644 src/components/sections/navbar-with-logo-actions-and-centered-links.tsx create mode 100644 src/components/sections/navbar-with-logo-actions-and-left-aligned-links.tsx create mode 100644 src/components/sections/plan-comparison-table.tsx create mode 100644 src/components/sections/pricing-hero-multi-tier.tsx create mode 100644 src/components/sections/pricing-multi-tier.tsx create mode 100644 src/components/sections/pricing-single-tier-two-column.tsx create mode 100644 src/components/sections/stats-four-columns.tsx create mode 100644 src/components/sections/stats-three-column-with-description.tsx create mode 100644 src/components/sections/stats-with-graph.tsx create mode 100644 src/components/sections/team-four-column-grid.tsx create mode 100644 src/components/sections/team-three-column-grid.tsx create mode 100644 src/components/sections/testimonial-two-column-with-large-photo.tsx create mode 100644 src/components/sections/testimonial-with-large-quote.tsx create mode 100644 src/components/sections/testimonials-three-column-grid.tsx delete mode 100644 styles/tailwind.css delete mode 100644 tailwind.config.js create mode 100644 templates/pages/404-01.tsx create mode 100644 templates/pages/404-02.tsx create mode 100644 templates/pages/about-01.tsx create mode 100644 templates/pages/about-02.tsx create mode 100644 templates/pages/about-03.tsx create mode 100644 templates/pages/home-01.tsx create mode 100644 templates/pages/home-02.tsx create mode 100644 templates/pages/home-03.tsx create mode 100644 templates/pages/pricing-01.tsx create mode 100644 templates/pages/pricing-02.tsx create mode 100644 templates/pages/pricing-03.tsx create mode 100644 templates/pages/privacy-policy-01.tsx create mode 100644 templates/pages/privacy-policy-02.tsx create mode 100644 tsconfig.json delete mode 100644 utils/storyblok.js diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 5d12634..0000000 --- a/.editorconfig +++ /dev/null @@ -1,13 +0,0 @@ -# editorconfig.org -root = true - -[*] -indent_style = space -indent_size = 2 -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -[*.md] -trim_trailing_whitespace = false diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index bffb357..0000000 --- a/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "next/core-web-vitals" -} diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..482f68b --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,129 @@ +# Tailwind Plus License + +## Personal License + +Tailwind Labs Inc. grants you an on-going, non-exclusive license to use the Components and Templates. + +The license grants permission to **one individual** (the Licensee) to access and use the Components and Templates. + +You **can**: + +- Use the Components and Templates to create unlimited End Products. +- Modify the Components and Templates to create derivative components and templates. Those components and templates are subject to this license. +- Use the Components and Templates to create unlimited End Products for unlimited Clients. +- Use the Components and Templates to create End Products where the End Product is sold to End Users. +- Use the Components and Templates to create End Products that are open source and freely available to End Users. + +You **cannot**: + +- Use the Components and Templates to create End Products that are designed to allow an End User to build their own End Products using the Components and Templates or derivatives of the Components and Templates. +- Re-distribute the Components and Templates or derivatives of the Components and Templates separately from an End Product, neither in code or as design assets. +- Share your access to the Components and Templates with any other individuals. +- Use the Components and Templates to produce anything that may be deemed by Tailwind Labs Inc, in their sole and absolute discretion, to be competitive or in conflict with the business of Tailwind Labs Inc. + +### Example usage + +Examples of usage **allowed** by the license: + +- Creating a personal website by yourself. +- Creating a website or web application for a client that will be owned by that client. +- Creating a commercial SaaS application (like an invoicing app for example) where end users have to pay a fee to use the application. +- Creating a commercial self-hosted web application that is sold to end users for a one-time fee. +- Creating a web application where the primary purpose is clearly not to simply re-distribute the components (like a conference organization app that uses the components for its UI for example) that is free and open source, where the source code is publicly available. + +Examples of usage **not allowed** by the license: + +- Creating a repository of your favorite Tailwind Plus components or templates (or derivatives based on Tailwind Plus components or templates) and publishing it publicly. +- Creating a React or Vue version of Tailwind Plus and making it available either for sale or for free. +- Create a Figma or Sketch UI kit based on the Tailwind Plus component designs. +- Creating a "website builder" project where end users can build their own websites using components or templates included with or derived from Tailwind Plus. +- Creating a theme, template, or project starter kit using the components or templates and making it available either for sale or for free. +- Creating an admin panel tool (like [Laravel Nova](https://nova.laravel.com/) or [ActiveAdmin](https://activeadmin.info/)) that is made available either for sale or for free. + +In simple terms, use Tailwind Plus for anything you like as long as it doesn't compete with Tailwind Plus. + +### Personal License Definitions + +Licensee is the individual who has purchased a Personal License. + +Components and Templates are the source code and design assets made available to the Licensee after purchasing a Tailwind Plus license. + +End Product is any artifact produced that incorporates the Components or Templates or derivatives of the Components or Templates. + +End User is a user of an End Product. + +Client is an individual or entity receiving custom professional services directly from the Licensee, produced specifically for that individual or entity. Customers of software-as-a-service products are not considered clients for the purpose of this document. + +## Team License + +Tailwind Labs Inc. grants you an on-going, non-exclusive license to use the Components and Templates. + +The license grants permission for **up to 25 Employees and Contractors of the Licensee** to access and use the Components and Templates. + +You **can**: + +- Use the Components and Templates to create unlimited End Products. +- Modify the Components and Templates to create derivative components and templates. Those components and templates are subject to this license. +- Use the Components and Templates to create unlimited End Products for unlimited Clients. +- Use the Components and Templates to create End Products where the End Product is sold to End Users. +- Use the Components and Templates to create End Products that are open source and freely available to End Users. + +You **cannot**: + +- Use the Components or Templates to create End Products that are designed to allow an End User to build their own End Products using the Components or Templates or derivatives of the Components or Templates. +- Re-distribute the Components or Templates or derivatives of the Components or Templates separately from an End Product. +- Use the Components or Templates to create End Products that are the property of any individual or entity other than the Licensee or Clients of the Licensee. +- Use the Components or Templates to produce anything that may be deemed by Tailwind Labs Inc, in their sole and absolute discretion, to be competitive or in conflict with the business of Tailwind Labs Inc. + +### Example usage + +Examples of usage **allowed** by the license: + +- Creating a website for your company. +- Creating a website or web application for a client that will be owned by that client. +- Creating a commercial SaaS application (like an invoicing app for example) where end users have to pay a fee to use the application. +- Creating a commercial self-hosted web application that is sold to end users for a one-time fee. +- Creating a web application where the primary purpose is clearly not to simply re-distribute the components or templates (like a conference organization app that uses the components or a template for its UI for example) that is free and open source, where the source code is publicly available. + +Examples of use **not allowed** by the license: + +- Creating a repository of your favorite Tailwind Plus components or template (or derivatives based on Tailwind Plus components or templates) and publishing it publicly. +- Creating a React or Vue version of Tailwind Plus and making it available either for sale or for free. +- Creating a "website builder" project where end users can build their own websites using components or templates included with or derived from Tailwind Plus. +- Creating a theme or template using the components or templates and making it available either for sale or for free. +- Creating an admin panel tool (like [Laravel Nova](https://nova.laravel.com/) or [ActiveAdmin](https://activeadmin.info/)) that is made available either for sale or for free. +- Creating any End Product that is not the sole property of either your company or a client of your company. For example your employees/contractors can't use your company Tailwind Plus license to build their own websites or side projects. + +### Team License Definitions + +Licensee is the business entity who has purchased a Team License. + +Components and Templates are the source code and design assets made available to the Licensee after purchasing a Tailwind Plus license. + +End Product is any artifact produced that incorporates the Components or Templates or derivatives of the Components or Templates. + +End User is a user of an End Product. + +Employee is a full-time or part-time employee of the Licensee. + +Contractor is an individual or business entity contracted to perform services for the Licensee. + +Client is an individual or entity receiving custom professional services directly from the Licensee, produced specifically for that individual or entity. Customers of software-as-a-service products are not considered clients for the purpose of this document. + +## Enforcement + +If you are found to be in violation of the license, access to your Tailwind Plus account will be terminated, and a refund may be issued at our discretion. When license violation is blatant and malicious (such as intentionally redistributing the Components or Templates through private warez channels), no refund will be issued. + +The copyright of the Components and Templates is owned by Tailwind Labs Inc. You are granted only the permissions described in this license; all other rights are reserved. Tailwind Labs Inc. reserves the right to pursue legal remedies for any unauthorized use of the Components or Templates outside the scope of this license. + +## Liability + +Tailwind Labs Inc.’s liability to you for costs, damages, or other losses arising from your use of the Components or Templates — including third-party claims against you — is limited to a refund of your license fee. Tailwind Labs Inc. may not be held liable for any consequential damages related to your use of the Components or Templates. + +This Agreement is governed by the laws of the Province of Ontario and the applicable laws of Canada. Legal proceedings related to this Agreement may only be brought in the courts of Ontario. You agree to service of process at the e-mail address on your original order. + +## Questions? + +Unsure which license you need, or unsure if your use case is covered by our licenses? + +Email us at [support@tailwindcss.com](mailto:support@tailwindcss.com) with your questions. diff --git a/README.md b/README.md deleted file mode 100644 index 90dc910..0000000 --- a/README.md +++ /dev/null @@ -1,20 +0,0 @@ -## Storyblok Next.js Multi-language Blog - -This is the example repository for building a multi-language blog with Storyblok. - -Follow our [The Complete Guide to Build a Full Blown Multilanguage Website with Next.js](https://www.storyblok.com/tp/next-js-react-guide) tutorial to set it up - -1. Clone the example space with this link: -2. Enter your preview token in the `util/storyblok.js` file -3. Install dependencies and start the development server `npm install && npm run dev` -4. Add your [http://localhost:3000](http://localhost:3000) as the **default location URL** in your Storyblok space settings - - -## Learn More - -To learn more about Next.js, take a look at the following resources: - -- [Add a headless CMS to Next.js in 5 minutes](https://www.storyblok.com/tp/add-a-headless-cms-to-next-js-in-5-minutes) - Tutorial to get started with Next.js & Storyblok -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. - diff --git a/assets/images/logo-block.svg b/assets/images/logo-block.svg deleted file mode 100644 index ef2de7e..0000000 --- a/assets/images/logo-block.svg +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/components/BlogPost.js b/components/BlogPost.js deleted file mode 100644 index 6b4ebcb..0000000 --- a/components/BlogPost.js +++ /dev/null @@ -1,28 +0,0 @@ -import React, { useState } from "react"; -import SbEditable from "storyblok-react"; -import { render } from "storyblok-rich-text-react-renderer"; -import Image from "next/image"; - -const BlogPost = ({ blok }) => { - return ( - -
-

- {blok.title} -

- -
- {blok.image.alt} -
-
{render(blok.long_text)}
-
-
- ); -}; - -export default BlogPost; diff --git a/components/CallToAction.js b/components/CallToAction.js deleted file mode 100644 index b5a7733..0000000 --- a/components/CallToAction.js +++ /dev/null @@ -1,31 +0,0 @@ -/* This example requires Tailwind CSS v2.0+ */ -import React from "react"; -import SbEditable from "storyblok-react"; -import { render } from "storyblok-rich-text-react-renderer"; -import Link from "next/link"; - -export default function CallToAction({ blok }) { - return ( - -
-
-
-

- {blok.title} -

-
{render(blok.description)}
-
- -
-
-
- ); -} diff --git a/components/ContactForm.js b/components/ContactForm.js deleted file mode 100644 index 1b177bc..0000000 --- a/components/ContactForm.js +++ /dev/null @@ -1,377 +0,0 @@ -import React, { useState } from "react"; -import SbEditable from "storyblok-react"; -import { render } from "storyblok-rich-text-react-renderer"; -import { MailIcon, PhoneIcon } from "@heroicons/react/outline"; -import { useRouter } from "next/router"; -import { useFormspark } from "@formspark/use-formspark"; - -const FORMSPARK_FORM_ID = "d9x4tlQD"; - -function transactionID() { - return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) { - var r = (Math.random() * 16) | 0, - v = c == "x" ? r : (r & 0x3) | 0x8; - return v.toString(16); - }); -} - -export default function ContactForm({ blok }) { - const router = useRouter(); - const { locale } = router; - const initialValues = { - firstname: "", - lastname: "", - email: "", - phone: "", - message: "", - language: locale, - }; - - const trans = { - contact: { - en: "Contact Information", - af: "Kontakbesonderhede", - }, - submit: { - en: "Submit", - af: "Stuur", - }, - name: { - en: "First name", - af: "Naame", - }, - surname: { - en: "Last name", - af: "Van", - }, - email: { - en: "Email", - af: "E-pos", - }, - cellphone: { - en: "Cellphone", - af: "Selfoon", - }, - message: { - en: "Message", - af: "Boodskap", - }, - max: { - en: "Max. 500 characters", - af: "Maximum 500 letters", - }, - }; - - const [submit, submitting] = useFormspark({ - formId: FORMSPARK_FORM_ID, - }); - - const [values, setValues] = useState(initialValues); - - const handleInputChange = (e) => { - const { name, value } = e.target; - setValues({ - ...values, - [name]: value, - }); - }; - - const onSubmit = async (e) => { - e.preventDefault(); - values.language = locale; - await submit({ ...values }); - router.push(`/${locale}/thank-you?transaction_id=${transactionID()}`); - }; - - return ( - -
-
-
-

Contact us

- -
- {/* Contact information */} -
- - - -

- {trans.contact[locale]} -

-
- {render(blok.description)} -
- -
- {render(blok.address)} -
-
-
- Phone number -
- {/*
-
*/} -
- Email -
-
-
-
-
- {render(blok.additional_info)} -
-
- - {/* Contact form */} -
-

- {blok.title} -

-
- -
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
-
- -
-
- -
-
- -
-
- - - {trans.max[locale]} - -
-
-