diff --git a/docusaurus.config.js b/docusaurus.config.js index 7e342e43..e6703bd4 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -262,7 +262,7 @@ const config = { position: "right", }, { - label: "Get in Touch", + label: "Get in Touch Today", href: "https://www.elasticpath.com/get-in-touch", position: "right", className: "navbar-book-demo", diff --git a/package.json b/package.json index c9f2cf01..29dbf2f5 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "@easyops-cn/docusaurus-search-local": "^0.36.0", "@fluentui/react-icons": "^2.0.230", "@headlessui/react": "^1.7.14", + "@heroicons/react": "^2.1.5", "@mdx-js/react": "^1.6.22", "@radix-ui/react-select": "^2.0.0", "@radix-ui/react-tabs": "^1.0.4", @@ -53,10 +54,13 @@ "prism-react-renderer": "^1.3.5", "raw-loader": "^4.0.2", "react": "^18.0.2", + "react-countup": "^6.5.3", "react-dom": "^18.0.2", "react-feather": "^2.0.10", "react-highlight": "^0.15.0", "react-parallax-tilt": "^1.7.227", + "react-slick": "^0.30.2", + "slick-carousel": "^1.8.1", "styled-components": "^6.1.8", "tailwindcss": "^3.4.1", "webpack": "^5.89.0" diff --git a/src/components/composable/Architecture.jsx b/src/components/composable/Architecture.jsx new file mode 100644 index 00000000..6740ef11 --- /dev/null +++ b/src/components/composable/Architecture.jsx @@ -0,0 +1,25 @@ +import React from 'react'; + +const Architecture = () => { + return ( +
+
+
+

Composable, API-First, Headless Architecture

+

+ Flexible. Secure. Performant. Open. Our composable architecture gives you the control and confidence to build exceptional experiences. +

+
+
+ Placeholder +
+
+
+ ); +}; + +export default Architecture; diff --git a/src/components/composable/DeveloperGrid.jsx b/src/components/composable/DeveloperGrid.jsx new file mode 100644 index 00000000..dcafbdea --- /dev/null +++ b/src/components/composable/DeveloperGrid.jsx @@ -0,0 +1,29 @@ +import React from 'react'; +import { BoltIcon, PuzzlePieceIcon, CircleStackIcon, ShieldCheckIcon, CodeBracketIcon, LockClosedIcon, CloudIcon } from '@heroicons/react/24/outline'; + +const DeveloperGrid = () => { + const capabilities = [ + { icon: , title: 'Data Freedom', description: 'Leverage a flexible data model to gain complete control over your commerce data. Connect any data source, create custom data structures, utilize our Custom API builder / Database-as-a-Service (DBaaS), and unlock powerful insights to drive business growth.', cta: '' }, + { icon: , title: 'Developer-Friendly', description: 'Empower your development team with tech-agnostic tools. Choose the best technologies for your needs and accelerate time-to-market with our low-code/no-code framework. Used our JS-SDK, Next.js App and Command Line Interface (CLI) to get up and running quickly.', cta: '' }, + { icon: , title: 'Unwavering Security', description: 'Rest easy with enterprise-grade security features built into the core of our platform. Protect your business and your customers with robust security protocols and industry-leading compliance certifications including GDPR Compliance, SOC2 and HIPPA Certification.', cta: '' }, + ]; + + return ( +
+
+
+ {capabilities.map((capability, index) => ( +
+ {capability.icon} +

{capability.title}

+

{capability.description}

+ {capability.cta && ()} +
+ ))} +
+
+
+ ); +}; + +export default DeveloperGrid; diff --git a/src/components/composable/HeroSection.jsx b/src/components/composable/HeroSection.jsx new file mode 100644 index 00000000..0ee90691 --- /dev/null +++ b/src/components/composable/HeroSection.jsx @@ -0,0 +1,45 @@ +import React from 'react'; + +const HeroSection = () => { + return ( + // Hero section container with black background and gradient +
+
+
+

+ Elastic Path{' '} + Composable Commerce +

+

+ API-first. Limitless potential. Easily tailor and scale your commerce solution to meet your exact + requirements, now and in the future. +

+

+ Start building today with a free trial +

+
+ + +
+
+
+ Composable Commerce +
+
+
+ ); +}; + +export default HeroSection; diff --git a/src/components/composable/LogoCarousel.jsx b/src/components/composable/LogoCarousel.jsx new file mode 100644 index 00000000..da533048 --- /dev/null +++ b/src/components/composable/LogoCarousel.jsx @@ -0,0 +1,35 @@ +import React from 'react'; +import './ScrollingLogos.css'; // Import the CSS file for styling + +const ScrollingLogos = () => { + const logos = [ + 'https://elastic-path.files.svdcdn.com/production/logos/logo_full-color-1_2023-08-11-151836_empf.svg?dm=1704716726', + 'https://elastic-path.transforms.svdcdn.com/production/logos/SerenaandLily.png?w=145&q=100&auto=format&fit=clip&dm=1692011476&s=e60ad243b3d0aa0ef9683ce90ad5bf9d', + 'https://elastic-path.transforms.svdcdn.com/production/logos/Orgill.png?w=145&q=100&auto=format&fit=clip&dm=1704716413&s=cc351cc8509524e2b0e74837e9f7d1b4', + 'https://elastic-path.transforms.svdcdn.com/production/logos/pella-new.png?w=145&q=100&auto=format&fit=clip&dm=1709710124&s=0940c480c4b938710e12ddee5c076f61', + 'https://elastic-path.files.svdcdn.com/production/logos/logo_full-color-1_2023-08-11-151836_empf.svg?dm=1704716726', + 'https://elastic-path.transforms.svdcdn.com/production/logos/SerenaandLily.png?w=145&q=100&auto=format&fit=clip&dm=1692011476&s=e60ad243b3d0aa0ef9683ce90ad5bf9d', + 'https://elastic-path.transforms.svdcdn.com/production/logos/Orgill.png?w=145&q=100&auto=format&fit=clip&dm=1704716413&s=cc351cc8509524e2b0e74837e9f7d1b4', + 'https://elastic-path.transforms.svdcdn.com/production/logos/pella-new.png?w=145&q=100&auto=format&fit=clip&dm=1709710124&s=0940c480c4b938710e12ddee5c076f61', + // Add more logos as needed + ]; + + return ( +
+
+ {logos.map((logo, index) => ( +
+ {`Logo +
+ ))} + {logos.map((logo, index) => ( +
+ {`Logo +
+ ))} +
+
+ ); +}; + +export default ScrollingLogos; diff --git a/src/components/composable/Products.jsx b/src/components/composable/Products.jsx new file mode 100644 index 00000000..18f464fb --- /dev/null +++ b/src/components/composable/Products.jsx @@ -0,0 +1,50 @@ +import React from 'react'; + +const Products = () => { + const capabilities = [ + { title: 'Cart & Checkout', description: 'Integrate our fast cart and checkout with your e-commerce stack, regardless of platform, payment provider, or catalog complexity. Boost conversions and delight customers without the need for a costly replatform.', cta: '' }, + { title: 'Product Merchandising', description: 'Curate shopping journeys that truly resonate with your customers. Design captivating product pages, craft compelling narratives and merchandise your products together, however you choose.', cta: '' }, + { title: 'Automated Re-Orders', description: 'Turn everyday purchases into lasting customer relationships. Automated reorders build loyalty and drive recurring revenue. Create "subscribe and save" offers, personalized schedules and curated boxes with ease.', cta: '' }, + { title: 'Membership Subscriptions', description: 'Unlock a new revenue stream and build lasting customer loyalty with memberships. Create exclusive tiers offering premium content, special deals, and unique product experiences. Turn one-time buyers into loyal members.', cta: '' }, + { title: 'Custom APIs & DBaaS', description: 'Coordinating data between systems to use on your commerce site is difficult. Create and launch custom APIs with unparalleled flexibility. Leave database management to us with our hosted service and accelerate development time.', cta: '' }, + { title: 'Bundles & Configurations', description: 'Create fixed or dynamic bundles customized to your merchandisers\' needs. Provide configurable products and assembly options, simplifying the delivery of complex or custom-built items with unmatched flexibility.', cta: ''}, + { title: 'Complex Catalogs', description: 'Design catalogs that match your complex products and merchandising needs perfectly. Organize with unlimited categories for easy navigation and precise searches. Combine with Price Books for a tailored experience and specialized pricing.', cta: '' }, + { title: 'Complex Promotions', description: 'Our rules-based promotion service empowers you to craft precisely targeted offers, from simple discounts to complex tiered rewards and beyond. Drive engagement, boost average order value, and incentivize desired behaviors with unparalleled promotional power.', cta: '' }, + { title: 'Pricing Management', description: 'Pair any price book with any catalog(s), enabling limitless possibilities for omnichannel experiences, targeted flash sales, and tiered pricing. Easily manage complex bundle pricing and adjust strategies dynamically to boost revenue and drive conversions.', cta: '' }, + { title: 'Orders & Inventory', description: 'Take control over your inventory and offer unparalleled flexibility to your customers. Maintain precise stock visibility across all locations and empower shoppers with convenient options like "buy online, pick up in store" & "click and collect".', cta: '' }, + { title: 'B2B2C Management', description: 'Expand your market presence and effortlessly manage complex distribution networks with our powerful B2B2C solution. Whether you work with resellers, franchises, or need to segment data by country, our platform provides the flexibility and control you need.', cta: '' }, + { title: 'Payment Gateways', description: 'Choose from ten out-of-the-box payment gateways or manual payment options to customize your checkout and optimize transaction flow. Effortlessly integrate your preferred providers which boosts conversions and improves customer satisfaction.', cta: '' }, + ]; + + return ( +
+
+

Meet the APIs That Power Commerce Innovation

+

+ Our modular approach empowers you to create unique and engaging shopping journeys across all channels, enhancing customer experiences and drive business growth. With Elastic Path, you can accelerate your time-to-market, adapt to changing demands with ease, and future-proof your commerce solution. +

+

+ +

+
+ {capabilities.map((capability, index) => ( +
+

+ {capability.title} + + → + +

+

{capability.description}

+ {capability.cta && ()} +
+ ))} +
+
+
+ ); +}; + +export default Products; diff --git a/src/components/composable/ScrollingLogos.css b/src/components/composable/ScrollingLogos.css new file mode 100644 index 00000000..d006e83a --- /dev/null +++ b/src/components/composable/ScrollingLogos.css @@ -0,0 +1,50 @@ +.scrolling-logos-container { + overflow: hidden; + width: 100%; /* Ensure it spans full width of the page */ + padding: 20px 0; + background-color: #f8f8f8; +} + +.scrolling-logos-track { + display: flex; + gap: 40px; /* Set space between logos */ + animation: scroll 30s linear infinite; /* Continuous scrolling */ +} + +.logo-item { + display: inline-block; + justify-content: center; /* Center the track horizontally */ + align-items: center; +} + +.logo-item img { + max-height: 80px; /* Set max height */ + height: auto; + width: auto; /* Ensure aspect ratio is maintained */ + filter: grayscale(100%); /* Apply grayscale */ + justify-content: center; + align-items: center; + transition: filter 0.3s ease; /* Smooth transition for hover effect */ +} + +.logo-item img:hover { + filter: grayscale(0%); /* Restore original color on hover */ +} + +@keyframes scroll { + 0% { + transform: translateX(0); + } + 100% { + transform: translateX(-100%); + } +} + +/* Duplicate the logos to make the scrolling seamless */ +.scrolling-logos-track::after { + content: ""; + display: block; + position: absolute; + white-space: nowrap; + transform: translateX(100%); /* Start where the original logos end */ +} diff --git a/src/components/composable/StatsComponent.jsx b/src/components/composable/StatsComponent.jsx new file mode 100644 index 00000000..40e4868d --- /dev/null +++ b/src/components/composable/StatsComponent.jsx @@ -0,0 +1,49 @@ +import React from 'react'; +import { CheckCircleIcon, CubeIcon, ChartBarIcon, GlobeAltIcon } from '@heroicons/react/24/solid'; +import CountUp from 'react-countup'; + +const StatsComponent = () => { + return ( +
+ {/* First Column */} +
+ +

+ + % +

+

Unprecedented Uptime

+
+ + {/* Second Column */} +
+ +

+ +

+

Months to Launch

+
+ + {/* Third Column */} +
+ +

+ + % +

+

TCO Reduction

+
+ + {/* Fourth Column */} +
+ +

+ $ +

+

Transactions Processed

+
+
+ ); +}; + +export default StatsComponent; diff --git a/src/components/composable/TwoColumnLeft.jsx b/src/components/composable/TwoColumnLeft.jsx new file mode 100644 index 00000000..f1789a6c --- /dev/null +++ b/src/components/composable/TwoColumnLeft.jsx @@ -0,0 +1,31 @@ +import React from 'react'; + +const TwoColumnRight = () => { + return ( +
+
+
+

Escape Rigid Commerce and Empower Your Merchandisers

+

+ Traditional commerce platforms confine merchandisers with rigid product and catalog management, stifling creativity and hindering the ability to craft truly unique shopping experiences. +

+

+ Elastic Path breaks the mold. +

+

+ We've reimagined commerce at the core, empowering your merchandisers with complete and unfettered flexibility. With Elastic Path, your merchandisers gain the flexibility to build the exact product experiences they envision, driving engagement, conversions, and customer loyalty. +

+
+
+ Placeholder +
+
+
+ ); +}; + +export default TwoColumnRight; diff --git a/src/components/composable/TwoColumnRight.jsx b/src/components/composable/TwoColumnRight.jsx new file mode 100644 index 00000000..293fbcda --- /dev/null +++ b/src/components/composable/TwoColumnRight.jsx @@ -0,0 +1,25 @@ +import React from 'react'; + +const TwoColumnRight = () => { + return ( +
+
+
+ Placeholder +
+
+

One Platform, Endless Possibilities

+

+ Elastic Path is more than just a commerce platform – it's a comprehensive ecosystem designed to empower your business at every level. From seamless backend integrations to a flexible core and a truly composable frontend, we provide everything you need to create exceptional omnichannel customer experiences. +

+
+
+
+ ); +}; + +export default TwoColumnRight; diff --git a/src/components/composable/Uptime.jsx b/src/components/composable/Uptime.jsx new file mode 100644 index 00000000..7ec16634 --- /dev/null +++ b/src/components/composable/Uptime.jsx @@ -0,0 +1,19 @@ +import { CloudIcon } from "@heroicons/react/24/outline"; +import React from "react"; + +const Uptime = () => { + return ( +
+
+
+

Unprecedented Uptime - 99.999%

+

+ 100% Update during Black Friday and all major holiday sales events. Experience best-in-class resiliency that keeps your commerce operations running smoothly, even during peak traffic or unexpected disruptions. +

+
+
+
+ ); +}; + +export default Uptime; diff --git a/src/components/composable/commerce-grid.jsx b/src/components/composable/commerce-grid.jsx new file mode 100644 index 00000000..70628031 --- /dev/null +++ b/src/components/composable/commerce-grid.jsx @@ -0,0 +1,29 @@ +import React from 'react'; +import { BoltIcon, PuzzlePieceIcon, CircleStackIcon, ShieldCheckIcon, CodeBracketIcon, LockClosedIcon, CloudIcon } from '@heroicons/react/24/outline'; + +const HeadlessCommerceCapabilities = () => { + const capabilities = [ + { icon: , title: 'Unmatched Agility', description: 'Our versionless platform eliminates upgrade headaches and allows for continuous innovation. Adapt to market changes swiftly and effortlessly with seamless updates and new feature releases.', cta: '' }, + { icon: , title: 'Limitless Extensibility', description: 'Extend your commerce capabilities without limits. Integrate any third-party system, customize every aspect of your storefront, and build unique shopping experiences that set you apart.', cta: '' }, + { icon: , title: 'Rock-Solid Foundation', description: 'Built on a cloud-native infrastructure, Elastic Path delivers unmatched scalability, reliability, and performance. Scale your business with confidence, knowing your platform can handle peak demand.', cta: '' }, + ]; + + return ( +
+
+
+ {capabilities.map((capability, index) => ( +
+ {capability.icon} +

{capability.title}

+

{capability.description}

+ {capability.cta && ()} +
+ ))} +
+
+
+ ); +}; + +export default HeadlessCommerceCapabilities; diff --git a/src/pages/composablecommerce.jsx b/src/pages/composablecommerce.jsx new file mode 100644 index 00000000..ad31282d --- /dev/null +++ b/src/pages/composablecommerce.jsx @@ -0,0 +1,34 @@ +import React from 'react'; +import Layout from '@theme/Layout'; +import HomeFooter from '../components/homepage/HomeFooter'; +import HeadlessCommerceCapabilities from "../components/composable/commerce-grid"; +import HeroSection from "../components/composable/HeroSection"; +import TwoColumnRight from "../components/composable/TwoColumnRight"; +import TwoColumnLeft from "../components/composable/TwoColumnLeft"; +import DeveloperGrid from "../components/composable/DeveloperGrid"; +import LogoCarousel from "../components/composable/LogoCarousel"; +import Products from "../components/composable/Products"; +import Architecture from "../components/composable/Architecture"; +import Uptime from "../components/composable/Uptime"; +import StatsComponent from "../components/composable/StatsComponent"; + +export default function Homepage() { + return ( + + + + + + + + + + + + + ); +} diff --git a/yarn.lock b/yarn.lock index 0d29d046..cb9c01f6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4101,6 +4101,11 @@ "@tanstack/react-virtual" "^3.0.0-beta.60" client-only "^0.0.1" +"@heroicons/react@^2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@heroicons/react/-/react-2.1.5.tgz#1e13f34976cc542deae92353c01c8b3d7942e9ba" + integrity sha512-FuzFN+BsHa+7OxbvAERtgBTNeZpUjgM/MIizfVkSCL2/edriN0Hx/DWRCR//aPYwO5QX/YlgLGXk+E3PcfZwjA== + "@hookform/error-message@^2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@hookform/error-message/-/error-message-2.0.1.tgz#6a37419106e13664ad6a29c9dae699ae6cd276b8" @@ -6741,6 +6746,11 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" +classnames@^2.2.5: + version "2.5.1" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b" + integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow== + clean-css@^5.2.2, clean-css@^5.3.0, clean-css@^5.3.2, clean-css@~5.3.2: version "5.3.3" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.3.tgz#b330653cd3bd6b75009cc25c714cae7b93351ccd" @@ -7211,6 +7221,11 @@ cosmiconfig@^8.1.3, cosmiconfig@^8.3.5: parse-json "^5.2.0" path-type "^4.0.0" +countup.js@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/countup.js/-/countup.js-2.8.0.tgz#64951f2df3ede28839413d654d8fef28251c32a8" + integrity sha512-f7xEhX0awl4NOElHulrl4XRfKoNH3rB+qfNSZZyjSZhaAoUk6elvhH+MNxMmlmuUJ2/QNTWPSA7U4mNtIAKljQ== + create-ecdh@^4.0.0: version "4.0.4" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" @@ -8400,6 +8415,11 @@ enhanced-resolve@^5.16.0: graceful-fs "^4.2.4" tapable "^2.2.0" +enquire.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/enquire.js/-/enquire.js-2.1.6.tgz#3e8780c9b8b835084c3f60e166dbc3c2a3c89814" + integrity sha512-/KujNpO+PT63F7Hlpu4h3pE3TokKRHN26JYmQpPyjkRD/N57R7bPDNojMXdi7uveAKjYB7yQnartCxZnFWr0Xw== + entities@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" @@ -10646,6 +10666,13 @@ json-schema@^0.4.0: resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== +json2mq@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/json2mq/-/json2mq-0.2.0.tgz#b637bd3ba9eabe122c83e9720483aeb10d2c904a" + integrity sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA== + dependencies: + string-convert "^0.2.0" + json5@^2.1.2, json5@^2.2.0, json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" @@ -13698,6 +13725,13 @@ react-base16-styling@^0.6.0: lodash.flow "^3.3.0" pure-color "^1.2.0" +react-countup@^6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/react-countup/-/react-countup-6.5.3.tgz#e892aa3eab2d6ba9c3cdba30bf4ed6764826d848" + integrity sha512-udnqVQitxC7QWADSPDOxVWULkLvKUWrDapn5i53HE4DPRVgs+Y5rr4bo25qEl8jSh+0l2cToJgGMx+clxPM3+w== + dependencies: + countup.js "^2.8.0" + react-dev-utils@^12.0.1: version "12.0.1" resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73" @@ -13968,6 +14002,17 @@ react-simple-code-editor@^0.10.0: resolved "https://registry.yarnpkg.com/react-simple-code-editor/-/react-simple-code-editor-0.10.0.tgz#73e7ac550a928069715482aeb33ccba36efe2373" integrity sha512-bL5W5mAxSW6+cLwqqVWY47Silqgy2DKDTR4hDBrLrUqC5BXc29YVx17l2IZk5v36VcDEq1Bszu2oHm1qBwKqBA== +react-slick@^0.30.2: + version "0.30.2" + resolved "https://registry.yarnpkg.com/react-slick/-/react-slick-0.30.2.tgz#b28e992f9c519bb516a0af8d37e82cb59fee08ce" + integrity sha512-XvQJi7mRHuiU3b9irsqS9SGIgftIfdV5/tNcURTb5LdIokRA5kIIx3l4rlq2XYHfxcSntXapoRg/GxaVOM1yfg== + dependencies: + classnames "^2.2.5" + enquire.js "^2.1.6" + json2mq "^0.2.0" + lodash.debounce "^4.0.8" + resize-observer-polyfill "^1.5.0" + react-style-singleton@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz#f99e420492b2d8f34d38308ff660b60d0b1205b4" @@ -14420,6 +14465,11 @@ reselect@^4.1.8: resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.8.tgz#3f5dc671ea168dccdeb3e141236f69f02eaec524" integrity sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ== +resize-observer-polyfill@^1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" + integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== + resolve-alpn@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" @@ -15018,6 +15068,11 @@ slash@^4.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== +slick-carousel@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/slick-carousel/-/slick-carousel-1.8.1.tgz#a4bfb29014887bb66ce528b90bd0cda262cc8f8d" + integrity sha512-XB9Ftrf2EEKfzoQXt3Nitrt/IPbT+f1fgqBdoxO3W/+JYvtEOW6EgxnWfr9GH6nmULv7Y2tPmEX3koxThVmebA== + slugify@^1.6.5: version "1.6.6" resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.6.6.tgz#2d4ac0eacb47add6af9e04d3be79319cbcc7924b" @@ -15200,6 +15255,11 @@ streamx@^2.15.0, streamx@^2.16.1: optionalDependencies: bare-events "^2.2.0" +string-convert@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97" + integrity sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A== + "string-width-cjs@npm:string-width@^4.2.0", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"