-
-
Sealos
+
+ window.location.replace(
+ `${location.origin}${currentLocale === 'en' ? '/' : '/zh-Hans/'}`
+ )
+ }
+ >
+
+ Sealos
+
{navbar.map((item) => (
@@ -165,17 +175,12 @@ const HomeHeader = ({ isPc }: { isPc: boolean }) => {
{isBrowser && (
-
+
{i18nMap[currentLocale]?.label}
)}
-
+
{i18nObj.startNow}
@@ -199,9 +204,8 @@ const HomeHeader = ({ isPc }: { isPc: boolean }) => {
{currentLocale === 'en' ? (
- Abstracting the entire data center as a singular server, where
- everything is an application. You can use Sealos as seamlessly as
- operating a
+ Abstracting the entire data center as a singular server, where everything is an
+ application. You can use Sealos as seamlessly as operating a
personal computer.
) : (
@@ -212,13 +216,10 @@ const HomeHeader = ({ isPc }: { isPc: boolean }) => {
)}
-
+
- )
-}
+ );
+};
-export default React.memo(HomeHeader)
+export default React.memo(HomeHeader);
diff --git a/docs/website/src/pages/components/Introduce/index.phone.scss b/docs/website/src/pages/components/Introduce/index.phone.scss
index ca97b4830f7..82417b181d7 100644
--- a/docs/website/src/pages/components/Introduce/index.phone.scss
+++ b/docs/website/src/pages/components/Introduce/index.phone.scss
@@ -1,4 +1,4 @@
-@media screen and (max-width: 996px) {
+@media screen and (max-width: 1000px) {
.introduce {
display: flex;
justify-content: center;
diff --git a/docs/website/src/pages/components/Introduce/index.scss b/docs/website/src/pages/components/Introduce/index.scss
index d08fbb68455..fdaa54d7989 100644
--- a/docs/website/src/pages/components/Introduce/index.scss
+++ b/docs/website/src/pages/components/Introduce/index.scss
@@ -62,7 +62,7 @@
text-align: right;
display: flex;
flex-direction: column;
- align-items: end;
+ align-items: flex-end;
}
.route {
diff --git a/docs/website/src/pages/components/Introduce/index.tsx b/docs/website/src/pages/components/Introduce/index.tsx
index c50139d2f36..2b30dc06e84 100644
--- a/docs/website/src/pages/components/Introduce/index.tsx
+++ b/docs/website/src/pages/components/Introduce/index.tsx
@@ -10,25 +10,25 @@ const Introduce = ({ isPc }: { isPc: boolean }) => {
const i18nObj = {
whySealos:
Why Sealos,
- lowerCosts:
Efficient & Economical,
+ lowerCosts:
Lower Costs,
lowerCostsIntroduce: (
- Pay solely for the containers you utilize; automatic scaling prevents resource
- squandering and substantially reduces costs.
+ Save resources and reduce expenses by paying only for containers, with
+ automatic scaling to prevent waste.
),
userFriendly:
User Friendly,
userFriendlyIntroduce: (
- Concentrate on your core business activities without worrying about system complexities;
- negligible learning costs involved.
+ Focus on your business without being bogged down by unnecessary
+ complexity, regardless of your level of Kubernetes expertise.
),
- flexibilitySecurity:
Agility & Security,
+ flexibilitySecurity:
Flexibility and Security,
flexibilitySecurityIntroduce: (
- The distinctive multi-tenancy sharing model ensures both effective resource segmentation
- and collaboration, all under a secure framework.
+ Its unique multi-tenant sharing mechanism can achieve effective resource
+ isolation and collaboration while ensuring safety.
),
}
diff --git a/docs/website/src/pages/components/UserBy/index.phone.scss b/docs/website/src/pages/components/UserBy/index.phone.scss
index 6d03e22a4c3..1921ffda2db 100644
--- a/docs/website/src/pages/components/UserBy/index.phone.scss
+++ b/docs/website/src/pages/components/UserBy/index.phone.scss
@@ -1,4 +1,4 @@
-@media screen and (max-width: 996px) {
+@media screen and (max-width: 1000px) {
.home-user-by {
user-select: none;
display: flex;
diff --git a/docs/website/src/pages/components/VideoPlayer/index.scss b/docs/website/src/pages/components/VideoPlayer/index.scss
index 71e19050bfd..85655441b60 100644
--- a/docs/website/src/pages/components/VideoPlayer/index.scss
+++ b/docs/website/src/pages/components/VideoPlayer/index.scss
@@ -37,8 +37,9 @@
}
}
-@media screen and (max-width: 996px) {
+@media screen and (max-width: 1000px) {
.video-box {
+ height: 200px;
height: 400px;
}
}
@@ -47,4 +48,4 @@
.video-box {
height: 200px;
}
-}
\ No newline at end of file
+}
diff --git a/docs/website/src/pages/index.scss b/docs/website/src/pages/index.scss
index 395ef8f9163..c4e13e49e8a 100644
--- a/docs/website/src/pages/index.scss
+++ b/docs/website/src/pages/index.scss
@@ -1,3 +1,7 @@
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
+
.home {
overflow-x: hidden;
// background-color: '#FCFCFF' !important;
@@ -48,7 +52,7 @@
display: none;
}
-@media screen and (max-width: 996px) {
+@media screen and (max-width: 1000px) {
.home {
.title {
height: 100px;
diff --git a/docs/website/src/pages/pricing/advantage/index.tsx b/docs/website/src/pages/pricing/advantage/index.tsx
new file mode 100644
index 00000000000..4e19dd21f5d
--- /dev/null
+++ b/docs/website/src/pages/pricing/advantage/index.tsx
@@ -0,0 +1,202 @@
+import React, { useState, useRef } from 'react';
+import ChevronUpIcon from '@site/static/price/chevronUp.svg';
+const { Disclosure, Transition } = require('@headlessui/react');
+import DataBaseIcon from '@site/static/price/database.svg';
+import GroupsIcon from '@site/static/price/groups.svg';
+import LaunchpadIcon from '@site/static/price/launchpad.svg';
+import QueueIcon from '@site/static/price/queue.svg';
+import PublicCloudIcon from '@site/static/price/publicCloud.svg';
+import WidAppsIcon from '@site/static/price/wideApps.svg';
+import ClarityClusterIcon from '@site/static/price/clarityCluster.svg';
+import CloudServerIcon from '@site/static/price/cloudServer.svg';
+import LightIcon from '@site/static/price/lightning.svg';
+import MoneyIcon from '@site/static/price/money.svg';
+
+function Akkordion({ items }) {
+ const buttonRefs = useRef([]);
+ const openedRef = useRef(null);
+
+ const clickRecent = (index) => {
+ const clickedButton = buttonRefs.current[index];
+ if (clickedButton === openedRef.current) {
+ openedRef.current = null;
+ return;
+ }
+ if (Boolean(openedRef.current?.getAttribute('data-value'))) {
+ openedRef.current?.click();
+ }
+ openedRef.current = clickedButton;
+ };
+
+ return (
+
+ {items.map((item, index) => (
+
+ {({ open }) => (
+ <>
+ {
+ buttonRefs.current[index] = ref;
+ }}
+ onClick={() => clickRecent(index)}
+ className={`${
+ open ? 'bg-white bg-opacity-5' : 'hover:rounded-b-xl'
+ } flex items-center justify-between lg:text-sm rounded-t-xl px-8 py-6 hover:bg-white/5 mt-1`}
+ >
+
+ {item.icon}
+ {item.title}
+
+
+
+
+
+ {item.value}
+
+
+ >
+ )}
+
+ ))}
+
+ );
+}
+
+export default function Advantage() {
+ const Advantage1 = [
+ {
+ title: '应用管理',
+ value: '快速部署任意分布式应用',
+ icon:
+ },
+ {
+ title: '丰富的数据库支持',
+ value:
+ '秒级创建高可用数据库,支持 MySQL、PostgreSQL、MongoDB 和 Redis 等,满足您的各种数据存储需求',
+ icon:
+ },
+ {
+ title: '消息队列支持',
+ value: '支持多种消息队列,包含 Kafka、RocketMQ 和 RabbitMQ 等',
+ icon:
+ },
+ {
+ title: '多租户能力',
+ value: '其独特的多租户共享机制,能在保障安全的前提下实现资源的有效隔离和协作',
+ icon:
+ }
+ ];
+
+ const Advantage2 = [
+ {
+ title: '公有云经验',
+ value:
+ 'Sealos 公有云服务已经得到了数万开发者的验证,其稳定性得到了广大用户的认可。只需一键就可以在私有云环境中获得与公有云相同的能力',
+ icon:
+ },
+ {
+ title: '应用广泛',
+ value: '已经有数千家企业选择在生产环境中使用 Sealos 私有云,这也是对其稳定性的最好证明',
+ icon:
+ },
+ {
+ title: '支持大规模集群',
+ value: 'Sealos 能够支撑超大规模的集群,能够在上万节点规模上运行,满足大型企业的需求',
+ icon:
+ }
+ ];
+
+ const Advantage3 = [
+ {
+ title: '快速部署',
+ value: '一键构建一个生产级别的云操作系统,而且只需要半个人力就可以维护',
+ icon:
+ },
+ {
+ title: '成本节省',
+ value: '与主流的云服务厂商相比,Sealos 的软硬件综合成本可以节省 80% 以上的费用',
+ icon:
+ },
+ {
+ title: '资源高效利用',
+ value: '使用 Sealos 私有云,一台服务器就可以运行上千个应用,极度提升资源利用率',
+ icon:
+ }
+ ];
+ return (
+
+ );
+}
diff --git a/docs/website/src/pages/pricing/header/index.scss b/docs/website/src/pages/pricing/header/index.scss
new file mode 100644
index 00000000000..1f9c0bd3df2
--- /dev/null
+++ b/docs/website/src/pages/pricing/header/index.scss
@@ -0,0 +1,277 @@
+.sealo_price_header {
+ width: 100%;
+ position: relative;
+ overflow: hidden;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ max-width: 1280px;
+ // padding: 0px 40px;
+ box-sizing: content-box;
+
+ nav {
+ position: relative;
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 30px 0;
+ margin-top: 48px;
+
+ .sealos-title {
+ line-height: 140%;
+ color: #fff;
+ font-size: 24px;
+ font-style: normal;
+ font-weight: 700;
+ }
+
+ .left {
+ display: flex;
+ align-items: center;
+ cursor: default;
+
+ svg {
+ margin-right: 6px;
+ height: 46px;
+ }
+ }
+
+ .links {
+ margin-left: 40px;
+ a {
+ position: relative;
+ margin-right: 28px;
+ font-size: 1rem;
+ color: #fff;
+ font-weight: 500;
+ text-decoration: none;
+
+ &::after {
+ content: '';
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ width: 0;
+ height: 2px;
+ background-color: #69bcf8;
+ transition: 0.2s;
+ }
+
+ &:hover::after {
+ width: 100%;
+ }
+ }
+ }
+
+ .right {
+ display: flex;
+ align-items: center;
+ color: #fff;
+ .git-icon {
+ margin-left: 20px;
+ line-height: 1;
+ display: flex;
+ align-items: center;
+ text-decoration: none;
+ }
+
+ .git-stars {
+ margin-left: 8px;
+ font-weight: 500;
+ font-size: 16px;
+ color: #fff;
+ }
+
+ .i18nIcon {
+ margin-left: 16px;
+ font-weight: 500;
+ color: #fff;
+ a {
+ font-size: 16px;
+ }
+ }
+
+ a {
+ color: #fff;
+ font-size: 1.1rem;
+ }
+
+ .start-now-button-wrap {
+ position: absolute;
+ width: 150px;
+ height: 42px;
+ border-radius: 4px;
+ background: rgba(255, 255, 255, 0.2);
+ filter: blur(4px);
+ }
+
+ .start-now-button {
+ margin-left: 44px;
+ cursor: pointer;
+ border-radius: 4px;
+ background: rgba(255, 255, 255, 0.9);
+ color: #000;
+ font-weight: 600;
+ font-size: 1rem;
+ width: 142px;
+ height: 36px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ position: relative;
+ text-decoration: none;
+ }
+ }
+ }
+ main {
+ text-align: center;
+ max-width: 1120px;
+ margin: 0 auto;
+ z-index: 9;
+ h1 {
+ margin-top: 100px;
+ margin-bottom: 0;
+ font-size: 48px;
+ font-weight: 600;
+ .txt-title {
+ color: #379fff;
+ }
+ .txt-aid {
+ color: rgba(185, 221, 255, 1);
+ }
+ }
+ h2 {
+ margin-bottom: 0;
+ color: rgba(255, 255, 255, 1);
+ text-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.25);
+ font-size: 96px;
+ font-weight: 600;
+ line-height: 140%;
+ }
+ h3 {
+ margin: 28px 48px 0px 48px;
+ color: #b9ddff;
+ text-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.25);
+ font-size: 24px;
+ font-weight: 600;
+ line-height: 140%;
+ margin-top: 16px;
+ .txt-title {
+ color: #379fff;
+ }
+ @media screen and (min-width: 450px) and (max-width: 1000px) {
+ padding: 0 60px;
+ }
+ }
+ }
+ .comet {
+ width: 100%;
+ height: 30px;
+ margin-top: 140px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
+}
+
+@media screen and (max-width: 1220px) {
+ .sealo_price_header {
+ main {
+ h2 {
+ font-size: 80px;
+ }
+ }
+ }
+}
+
+@media screen and (max-width: 1000px) {
+ .sealo_price_header {
+ position: relative;
+ overflow: hidden;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ padding: 0;
+
+ nav {
+ padding: 28px 16px;
+ // display: none;
+ .left {
+ svg {
+ margin: 0;
+ }
+ }
+ }
+
+ main {
+ text-align: center;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ padding: 0 16px;
+ z-index: 9;
+ h1 {
+ margin-top: 30px;
+ font-size: 20px;
+ font-weight: 600;
+ }
+
+ h2 {
+ font-weight: 600;
+ font-size: 30px;
+ @media screen and (max-width: 385px) {
+ font-size: 24px;
+ }
+ }
+
+ h3 {
+ font-weight: 600;
+ font-size: 14px;
+ margin: 0;
+ margin-top: 10px;
+ }
+
+ .start-now-button-wrap {
+ position: absolute;
+ width: 150px;
+ height: 42px;
+ border-radius: 4px;
+ background: rgba(255, 255, 255, 0.2);
+ filter: blur(4px);
+ }
+
+ .start-now-button {
+ cursor: pointer;
+ margin-top: 27px;
+ border-radius: 4px;
+ background: rgba(255, 255, 255, 0.9);
+ color: #000;
+ font-weight: 600;
+ font-size: 1rem;
+ width: 142px;
+ height: 36px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ position: relative;
+ text-decoration: none;
+ }
+
+ video {
+ width: 100%;
+ margin-top: 35px;
+ }
+ }
+ }
+}
+
+.sealos_home_header_title {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ cursor: pointer;
+}
diff --git a/docs/website/src/pages/pricing/header/index.tsx b/docs/website/src/pages/pricing/header/index.tsx
new file mode 100644
index 00000000000..af0df47ec37
--- /dev/null
+++ b/docs/website/src/pages/pricing/header/index.tsx
@@ -0,0 +1,154 @@
+import Link from '@docusaurus/Link';
+import Translate from '@docusaurus/Translate';
+import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
+import useIsBrowser from '@docusaurus/useIsBrowser';
+import GithubIcon from '@site/static/icons/github.svg';
+import MeunIcon from '@site/static/icons/meun.svg';
+import LogoIcon from '@site/static/icons/sealos.svg';
+import React, { useEffect, useMemo, useState } from 'react';
+import './index.scss';
+
+const navbar = [
+ {
+ key: 'docs',
+ label:
Documentation,
+ to: '/docs/Intro'
+ },
+ {
+ key: 'community',
+ label:
Community,
+ to: 'https://forum.laf.run/'
+ },
+ {
+ key: 'pricing',
+ label:
Pricing,
+ to: '/pricing'
+ },
+ {
+ key: 'contact',
+ label:
Contact,
+ to: 'https://fael3z0zfze.feishu.cn/share/base/form/shrcnesSfEK65JZaAf2W6Fwz6Ad'
+ }
+];
+
+const i18nObj = {
+ startNow:
Start Now,
+ cloudOS:
Cloud Operating System
+};
+
+const HomeHeader = ({ isPc }: { isPc: boolean }) => {
+ const [stars, setStars] = useState(10000);
+ const isBrowser = useIsBrowser();
+ const [cloudUrl, setCloudurl] = useState('https://cloud.sealos.io');
+ useEffect(() => {
+ if (!!window) {
+ setCloudurl(
+ window.self === window.top ? 'https://cloud.sealos.io' : 'https://cloud.sealos.top'
+ );
+ }
+ }, []);
+
+ const i18nMap: { [key: string]: { label: string; link: string } } = {
+ en: { label: '中', link: '/zh-Hans/' },
+ ['zh-Hans']: { label: 'En', link: '/' }
+ };
+
+ const {
+ i18n: { currentLocale },
+ siteConfig: {
+ themeConfig: {
+ // @ts-ignore nextLine
+ navbar: { items: navbarData }
+ }
+ }
+ } = useDocusaurusContext();
+
+ useEffect(() => {
+ const getStars = async () => {
+ try {
+ const { stargazers_count } = await (
+ await fetch('https://api.github.com/repos/labring/sealos')
+ ).json();
+ setStars(isNaN(stargazers_count) ? 11 * 1000 : stargazers_count);
+ } catch (error) {}
+ };
+ getStars();
+ }, []);
+
+ const openSideBar = () => {
+ const NavbarButton: HTMLBaseElement = document.querySelector('.navbar__toggle');
+ const event = new MouseEvent('click', {
+ view: window,
+ bubbles: true,
+ cancelable: true
+ });
+ NavbarButton.dispatchEvent(event);
+ };
+
+ if (!isPc) {
+ return (
+
+
+
+ );
+ }
+
+ return (
+
+
+
+ );
+};
+
+export default React.memo(HomeHeader);
diff --git a/docs/website/src/pages/pricing/index.scss b/docs/website/src/pages/pricing/index.scss
new file mode 100644
index 00000000000..81307ef003a
--- /dev/null
+++ b/docs/website/src/pages/pricing/index.scss
@@ -0,0 +1,111 @@
+.sealos_price_page {
+ color: #ffffff;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ height: 100%;
+ // background: linear-gradient(to bottom, #05101d, #02070d, transparent);
+ background: linear-gradient(180deg, #05101d 0%, #02070d 100%);
+ position: relative;
+ overflow: hidden;
+}
+
+.sealos_price_btn {
+ width: 100%;
+ height: 50px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ border-radius: 6px;
+ background: rgba(183, 216, 255, 0.15);
+ color: rgba(255, 255, 255, 0.8);
+ font-size: 18px;
+ font-weight: 600;
+ line-height: 140%;
+ margin-top: 42px;
+ cursor: pointer;
+}
+
+.home-footer {
+ width: 100%;
+}
+
+.sealos_divid_line {
+ width: 100%;
+ height: 1px;
+ background: rgba(255, 255, 255, 0.1);
+ margin: 42px 0px;
+}
+
+.sealos_service_item {
+ display: flex;
+ align-items: center;
+ margin-bottom: 18px;
+ span {
+ color: rgba(255, 255, 255, 0.8);
+ font-size: 16px;
+ font-weight: 500;
+ margin-left: 15px;
+ }
+}
+
+.sealo_price_header_bg {
+ position: absolute;
+ top: 0;
+ width: 1000px;
+ height: 1000px;
+ border-radius: 50%;
+ background: radial-gradient(
+ 50% 50% at 50% 50%,
+ rgba(82, 176, 189, 0.3) 0%,
+ rgba(38, 184, 193, 0.3) 33.85%,
+ rgba(22, 97, 158, 0.3) 63.02%,
+ rgba(18, 55, 150, 0.3) 100%
+ );
+ filter: blur(262px);
+ transform: translateY(-50%);
+}
+
+.sealos_price_gradient_background {
+ border-radius: 50%;
+ background: radial-gradient(
+ 50% 50% at 50% 50%,
+ rgba(82, 176, 189, 0.2) 0%,
+ rgba(69, 171, 177, 0.2) 33.85%,
+ rgba(43, 102, 151, 0.2) 63.02%,
+ rgba(56, 82, 149, 0.2) 100%
+ );
+ filter: blur(261.32037353515625px);
+ // background-color: red;
+}
+
+//////1000
+@media (max-width: 1000px) {
+ .sealos_price_btn {
+ font-size: 14px;
+ margin-top: 32px !important;
+ height: 38px;
+ }
+
+ // .sealos_price_btn .contact {
+ // margin-top: 35px;
+ // }
+
+ .sealos_service_item {
+ margin-bottom: 12px;
+ }
+
+ .sealos_service_item span {
+ font-size: 12px;
+ }
+
+ .sealos_divid_line {
+ margin: 32px 0px;
+ }
+}
+
+.footer-right {
+ .list-item {
+ list-style-type: none;
+ }
+}
diff --git a/docs/website/src/pages/pricing/index.tsx b/docs/website/src/pages/pricing/index.tsx
new file mode 100644
index 00000000000..7c649b6d5cb
--- /dev/null
+++ b/docs/website/src/pages/pricing/index.tsx
@@ -0,0 +1,31 @@
+import { PC_MIN_WIDTH } from '@site/src/constants/platform';
+import useWindow from '@site/src/hooks/useWindow';
+import React, { useMemo } from 'react';
+import Banner from '../components/Banner';
+import Footer from '../components/Footer';
+import Header from './header';
+import './index.scss';
+import Plan from './plan';
+import Product from './product';
+import Advantage from './advantage';
+import Overview from './overview';
+
+export default function Pricing() {
+ const { screenWidth } = useWindow();
+ const isPc = useMemo(() => screenWidth > PC_MIN_WIDTH, [screenWidth]);
+
+ return (
+
+ );
+}
diff --git a/docs/website/src/pages/pricing/overview/index.scss b/docs/website/src/pages/pricing/overview/index.scss
new file mode 100644
index 00000000000..027bd4a74b9
--- /dev/null
+++ b/docs/website/src/pages/pricing/overview/index.scss
@@ -0,0 +1,55 @@
+.sealos_overview_tabs {
+ overflow: auto;
+ width: inherit;
+ scroll-behavior: smooth;
+
+ // &:hover {
+ // overflow-x: auto;
+ // }
+
+ &::-webkit-scrollbar {
+ width: 6px;
+ height: 6px;
+ border-radius: 6px;
+ }
+
+ &::-webkit-scrollbar-track {
+ background: transparent;
+ border-radius: 6px;
+ }
+
+ &::-webkit-scrollbar-thumb {
+ background: rgba(255, 255, 255, 0.05);
+ border-radius: 6px;
+ }
+
+ &::-webkit-scrollbar-thumb:hover {
+ background: #999;
+ }
+
+ &::-webkit-scrollbar-corner {
+ background-color: transparent;
+ }
+}
+
+.sealos_overview_panel {
+ border-radius: 16px;
+ min-height: 660px;
+ display: flex;
+ justify-content: center;
+ background-image: url('/static/price/functionBackground.svg');
+ background-size: cover; /* 调整图像以填充整个元素 */
+ background-repeat: no-repeat; /* 防止图像重复 */
+}
+
+.sealos_overview_gradient_background {
+ border-radius: 50%;
+ background: radial-gradient(
+ 50% 50% at 50% 50%,
+ rgba(52, 196, 216, 0.3) 0%,
+ rgba(8, 181, 192, 0.3) 33.85%,
+ rgba(7, 86, 150, 0.3) 63.02%,
+ rgba(0, 42, 150, 0.3) 100%
+ );
+ filter: blur(261px);
+}
diff --git a/docs/website/src/pages/pricing/overview/index.tsx b/docs/website/src/pages/pricing/overview/index.tsx
new file mode 100644
index 00000000000..fca7174328c
--- /dev/null
+++ b/docs/website/src/pages/pricing/overview/index.tsx
@@ -0,0 +1,232 @@
+import CheckIcon from '@site/static/price/check.svg';
+import DashedIcon from '@site/static/price/dashed.svg';
+import DottedLineIcon from '@site/static/price/dottedLine.svg';
+import React, { useEffect, useRef, useState } from 'react';
+import './index.scss';
+const { Tab, Transition } = require('@headlessui/react');
+
+function classNames(...classes) {
+ return classes.filter(Boolean).join(' ');
+}
+
+export default function Overview() {
+ const [categories] = useState([
+ {
+ id: '应用管理',
+ label: '应用管理',
+ dottedLine: true,
+ features: [
+ '帮助用户快速运行各种容器应用',
+ '支持 Docker hub 上所有镜像的运行',
+ '支持各种编程语言业务运行'
+ ],
+ specificFeatures: [
+ '各种 Docker 镜像运行',
+ '私有镜像仓库访问',
+ '无状态应用多副本高可用运行',
+ '无状态应用自动横向伸缩',
+ '应用 CPU 内存配额',
+ '外网访问/负载均衡',
+ '自动 DNS',
+ '自动配置 https',
+ '应用多端口暴露',
+ '启动命令,环境变量,配置文件',
+ '有状态应用,存储卷',
+ '应用配置导出',
+ '重启变更删除升级,应用生命周期管理',
+ '日志/终端访问/资源监控',
+ '定时任务'
+ ]
+ },
+ {
+ id: '数据库管理',
+ label: '数据库管理',
+ features: ['支持主流的数据库高可用运行'],
+ specificFeatures: [
+ 'mysql/redis/mongo/pgsql',
+ '数据库高可用/多副本运行',
+ '存储与计算资源配额',
+ '自定义 YAML 配置',
+ '一键通过终端链接数据库',
+ '资源监控/状态监控/性能监控',
+ '更新/变更/扩容',
+ '手动备份/自动备份/恢复',
+ '集群内 DNS 访问'
+ ]
+ },
+ {
+ id: '应用市场',
+ label: '应用市场',
+ features: ['支持各种扩展应用'],
+ specificFeatures: [
+ '应用上架/安装/卸载',
+ '应用组件统一展示',
+ '低代码/函数计算/博客系统/播测系统/GPT相关应用',
+ '应用扩展',
+ '应用添加到桌面快捷方式'
+ ]
+ },
+ {
+ id: 'Web 终端',
+ label: 'Web 终端',
+ features: ['支持 k8s 原生命令,完全兼容 kubectl'],
+ specificFeatures: [
+ '权限控制,普通租户只有 ns 级别权限',
+ '默认安装 kubectl, helm',
+ '独立的租户级别 kubeconfig',
+ '通过别的应用唤醒 terminal',
+ '多个终端列表'
+ ]
+ },
+ {
+ id: '多租户',
+ label: '多租户',
+ features: ['企业多部门/多开发者协作/隔离/权限控制/资源配额'],
+ specificFeatures: [
+ '用户登录/注册 默认 namespace 分配',
+ '多 namespace 创建',
+ 'Namespace 权限控制与配额',
+ '邀请加入协作',
+ '租户资源计量与计费'
+ ]
+ },
+ {
+ id: '计量/计费系统',
+ label: '计量/计费系统',
+ features: ['控制企业资源消耗,业务计算资源成本分析,团队额度控制'],
+ specificFeatures: [
+ '充值/配额',
+ '账户站内转账',
+ '资源支出大盘',
+ '账单详情',
+ '计价标准',
+ '应用维度精细计量',
+ 'CPU/内存/磁盘/网络带宽计量计费'
+ ]
+ },
+ {
+ id: '开放 API 能力',
+ label: '开放 API 能力',
+ features: ['所有能力均支持申明式 API'],
+ specificFeatures: [
+ '下载 kubeconfig 文件',
+ '外网通过 kubeconfig 文件连接 apiserver',
+ '定制开发扩展应用'
+ ]
+ },
+ {
+ id: '函数计算',
+ label: '函数计算',
+ features: ['写完代码,毫秒级上线,无需关心业务逻辑以外的任何事'],
+ specificFeatures: [
+ '应用管理/弹性伸缩/规格设置',
+ '云函数/在线 IDE',
+ '自定义安装包',
+ '自动测试',
+ '版本管理',
+ '二级域名',
+ '自动 https',
+ '多人协作',
+ 'Serverless mongo 云数据库',
+ '对象存储'
+ ]
+ }
+ ]);
+ const [tabIndex, setTabIndex] = useState(0);
+ const tabRef = useRef(null); // Create a ref for the Tab component
+
+ useEffect(() => {
+ const numTabs = categories.length;
+ const interval = setInterval(() => {
+ const nextTabIndex = (tabIndex + 1) % numTabs;
+ setTabIndex(nextTabIndex);
+ // Scroll to the new tab's position, not exceeding the width of the previous tab
+ if (tabRef.current) {
+ const tabWidth = tabRef.current.offsetWidth;
+ const scrollLeft = nextTabIndex * tabWidth - tabWidth; // Scroll back by one tab's width
+ tabRef.current.scrollLeft = scrollLeft;
+ }
+ }, 3000);
+ return () => clearInterval(interval);
+ }, [tabIndex]);
+
+ return (
+
+
Sealos 功能概览
+
+
+
+ {categories.map((item) => (
+
+ classNames(
+ 'px-8 py-3 text-lg font-semibold focus:outline-none cursor-pointer lg:text-xs lg:px-5 lg:py-1',
+ selected
+ ? 'text-white bg-[#B7D8FF1A] border border-solid border-white/5 rounded-md'
+ : 'text-white/70',
+ 'whitespace-nowrap'
+ )
+ }
+ >
+ {item.label}
+
+ ))}
+
+
+
+
+ {categories.map((item, idx) => (
+
+
+ {item.label}
+
+
+
+ {item.dottedLine ? (
+
+ ) : (
+
+ )}
+
+
+
+
+
+ {item.features.map((i) => (
+
+ {i}
+
+ ))}
+
+
+
+
+
+ {item.specificFeatures.map((i) => (
+
+
+ {i}
+
+ ))}
+
+
+ ))}
+
+
+
+
+ );
+}
diff --git a/docs/website/src/pages/pricing/plan/index.tsx b/docs/website/src/pages/pricing/plan/index.tsx
new file mode 100644
index 00000000000..1ebbab695e2
--- /dev/null
+++ b/docs/website/src/pages/pricing/plan/index.tsx
@@ -0,0 +1,181 @@
+import React, { useState, Fragment } from 'react';
+import BulbIcon from '@site/static/price/bulb.svg';
+import CpuIcon from '@site/static/price/cpu.svg';
+import MemoryIcon from '@site/static/price/memory.svg';
+import DiskIcon from '@site/static/price/disk.svg';
+import FlowIcon from '@site/static/price/flow.svg';
+
+export default function Plan() {
+ const [select, setSelect] = useState('year');
+ const [prices] = useState([
+ {
+ id: 'CPU',
+ icon:
,
+ label: 'CPU',
+ year: {
+ unit: '核/年',
+ value: '19.60'
+ },
+ month: {
+ unit: '核/月',
+ value: '1.61'
+ },
+ day: {
+ unit: '核/天',
+ value: '0.05'
+ }
+ },
+ {
+ id: '内存',
+ icon:
,
+ label: '内存',
+ year: { unit: 'G/年', value: '9.80' },
+ month: {
+ unit: 'G/月',
+ value: '0.80'
+ },
+ day: {
+ unit: 'G/天',
+ value: '0.03'
+ }
+ },
+ {
+ id: '存储卷',
+ icon:
,
+ label: '存储卷',
+ year: { unit: 'G/年', value: '0' },
+ month: { unit: 'G/月', value: '0' },
+ day: { unit: 'G/天', value: '0' }
+ },
+ {
+ id: '网络',
+ icon:
,
+ label: '网络',
+ year: { unit: 'M/年', value: '0' },
+ month: { unit: 'M/月', value: '0' },
+ day: { unit: 'M/天', value: '0' }
+ }
+ ]);
+
+ return (
+
+
计价方案
+
+ Sealos 私有云版本采用 按量计费 的方式,根据集群中实际消耗的计算/存储/网络等资源进行计费
+
+
+
+
+
+
+
名称
+
+
单位
+
+
+
+
+
价格(元)
+
+
+
+ {prices.map((item) => (
+
+
+ {item.icon}
+ {item.label}
+
+
{item?.[select]?.unit}
+
{item?.[select]?.value}
+
+ ))}
+
+
+
+
+
+ 计价示例
+
+
+ {select === 'year' && (
+
+ 如集群中运行一个容器,配额是 CPU 1核 x 内存1G x 存储卷 100G x 网络 10G,
+ 则一年消耗的费用为 19.6 + 9.80 + 0 + 0 = 29.4元
+
+ )}
+
+ {select === 'month' && (
+
+ 如集群中运行一个容器,配额是 CPU 1核 x 内存1G x 存储卷 100G x 网络 10G,
+ 则一年消耗的费用为 1.61 + 0.80 + 0 + 0 = 2.41元
+
+ )}
+
+ {select === 'day' && (
+
+ 如集群中运行一个容器,配额是 CPU 1核 x 内存1G x 存储卷 100G x 网络 10G,
+ 则一年消耗的费用为 0.05 + 0.03 + 0 + 0 = 0.08元
+
+ )}
+
+ window.open(
+ 'https://rowan-nannyberry-f3f.notion.site/0aa37f19b32d4189aa006de9786a35df?pvs=4',
+ '_black'
+ )
+ }
+ >
+ 详细文档
+
+
+
+
+ 可通过购买 licence 文件进行续费
+
+
+
+
window.open('https://license.sealos.io', '_black')}
+ >
+ 购买入口
+
+
+
+ window.open(
+ 'https://fael3z0zfze.feishu.cn/docx/MLJVddCVqoEfIwxwP7lcO0P1nch',
+ '_black'
+ )
+ }
+ >
+ 通过 licence 续费文档教程
+
+
+
+
+
+ );
+}
diff --git a/docs/website/src/pages/pricing/product/index.tsx b/docs/website/src/pages/pricing/product/index.tsx
new file mode 100644
index 00000000000..b225917cc46
--- /dev/null
+++ b/docs/website/src/pages/pricing/product/index.tsx
@@ -0,0 +1,149 @@
+import CheckIcon from '@site/static/price/check.svg';
+import StarIcon from '@site/static/price/star.svg';
+import React from 'react';
+
+export default function Product() {
+ const standard = ['工单服务', '应用管理', '高可用数据库', '应用市场', '多租户', '计量/配额'];
+ const company = [
+ '工单/即时通信服务',
+ '周一到周五, 8h 内响应',
+ '应用管理',
+ '高可用数据库',
+ '应用市场',
+ '多租户',
+ '计量/配额'
+ ];
+ const contact = [
+ '定制化开发与业务云原生化服务',
+ '超大规模集群',
+ '私有化/离线部署',
+ '工单/即时通信/专家对接/现场支持',
+ '周一到周日,24h 内响应',
+ '应用管理',
+ '高可用数据库',
+ '应用市场',
+ '多租户',
+ '计量/配额'
+ ];
+
+ return (
+
+
+ Sealos 私有云
+
+
+ 通过 Sealos 的私有化交付能力一键构建私有云,全面支撑企业各类应用需求
+
+ 且维护成本极低,仅需半个人力
+
+
+
+
+
+ 标准版
+
+
+
+ 适合开发者测试,或 POC demo
+
+
+ window.open(
+ 'https://license.sealos.io/signin?external=true&clusterType=Standard',
+ '_black'
+ )
+ }
+ >
+ 一键安装
+
+
+ {standard.map((i) => (
+
+
+ {i}
+
+ ))}
+
+
+
+ 企业版
+
+
+
+ ¥599
+
+
+ 赠 ¥599
+
+
+
+ 适合企业生产环境
+
+
+ window.open(
+ 'https://license.sealos.io/signin?external=true&clusterType=Enterprise',
+ '_black'
+ )
+ }
+ >
+ 购买
+
+
+
+
+ 私有化/离线部署
+
+ {company.map((i) => (
+
+
+ {i}
+
+ ))}
+
+
+
+ 定制版
+
+
+ 适合大规模集群
+
+ 与大型企业客户
+
+
+ window.open(
+ 'https://fael3z0zfze.feishu.cn/share/base/form/shrcnesSfEK65JZaAf2W6Fwz6Ad',
+ '_black'
+ )
+ }
+ >
+ 联系我们
+
+
+ {contact.map((i) => (
+
+
+ {i}
+
+ ))}
+
+
+
+ );
+}
diff --git a/docs/website/static/price/bulb.svg b/docs/website/static/price/bulb.svg
new file mode 100644
index 00000000000..02f2b3049b5
--- /dev/null
+++ b/docs/website/static/price/bulb.svg
@@ -0,0 +1,3 @@
+
diff --git a/docs/website/static/price/check.svg b/docs/website/static/price/check.svg
new file mode 100644
index 00000000000..46ffcaf0bf1
--- /dev/null
+++ b/docs/website/static/price/check.svg
@@ -0,0 +1,3 @@
+
diff --git a/docs/website/static/price/chevronUp.svg b/docs/website/static/price/chevronUp.svg
new file mode 100644
index 00000000000..a54f975c14c
--- /dev/null
+++ b/docs/website/static/price/chevronUp.svg
@@ -0,0 +1,3 @@
+
diff --git a/docs/website/static/price/clarityCluster.svg b/docs/website/static/price/clarityCluster.svg
new file mode 100644
index 00000000000..50de63413e1
--- /dev/null
+++ b/docs/website/static/price/clarityCluster.svg
@@ -0,0 +1,14 @@
+
diff --git a/docs/website/static/price/cloudServer.svg b/docs/website/static/price/cloudServer.svg
new file mode 100644
index 00000000000..2456ad111be
--- /dev/null
+++ b/docs/website/static/price/cloudServer.svg
@@ -0,0 +1,5 @@
+
diff --git a/docs/website/static/price/cpu.svg b/docs/website/static/price/cpu.svg
new file mode 100644
index 00000000000..b63d9a9c1ea
--- /dev/null
+++ b/docs/website/static/price/cpu.svg
@@ -0,0 +1,3 @@
+
diff --git a/docs/website/static/price/dashed.svg b/docs/website/static/price/dashed.svg
new file mode 100644
index 00000000000..ea9bb56db88
--- /dev/null
+++ b/docs/website/static/price/dashed.svg
@@ -0,0 +1,14 @@
+
\ No newline at end of file
diff --git a/docs/website/static/price/database.svg b/docs/website/static/price/database.svg
new file mode 100644
index 00000000000..1b4a6bedc40
--- /dev/null
+++ b/docs/website/static/price/database.svg
@@ -0,0 +1,5 @@
+
diff --git a/docs/website/static/price/disk.svg b/docs/website/static/price/disk.svg
new file mode 100644
index 00000000000..1cddd3072c6
--- /dev/null
+++ b/docs/website/static/price/disk.svg
@@ -0,0 +1,5 @@
+
diff --git a/docs/website/static/price/dottedLine.svg b/docs/website/static/price/dottedLine.svg
new file mode 100644
index 00000000000..5475f4535d2
--- /dev/null
+++ b/docs/website/static/price/dottedLine.svg
@@ -0,0 +1,27 @@
+
\ No newline at end of file
diff --git a/docs/website/static/price/flow.svg b/docs/website/static/price/flow.svg
new file mode 100644
index 00000000000..709d9316340
--- /dev/null
+++ b/docs/website/static/price/flow.svg
@@ -0,0 +1,3 @@
+
diff --git a/docs/website/static/price/functionBackground.svg b/docs/website/static/price/functionBackground.svg
new file mode 100644
index 00000000000..713488f2188
--- /dev/null
+++ b/docs/website/static/price/functionBackground.svg
@@ -0,0 +1,14 @@
+
diff --git a/docs/website/static/price/groups.svg b/docs/website/static/price/groups.svg
new file mode 100644
index 00000000000..f188cb8ae87
--- /dev/null
+++ b/docs/website/static/price/groups.svg
@@ -0,0 +1,3 @@
+
diff --git a/docs/website/static/price/launchpad.svg b/docs/website/static/price/launchpad.svg
new file mode 100644
index 00000000000..80737a2eb73
--- /dev/null
+++ b/docs/website/static/price/launchpad.svg
@@ -0,0 +1,3 @@
+
diff --git a/docs/website/static/price/lightning.svg b/docs/website/static/price/lightning.svg
new file mode 100644
index 00000000000..df232443f6e
--- /dev/null
+++ b/docs/website/static/price/lightning.svg
@@ -0,0 +1,3 @@
+
diff --git a/docs/website/static/price/memory.svg b/docs/website/static/price/memory.svg
new file mode 100644
index 00000000000..7ff0258b221
--- /dev/null
+++ b/docs/website/static/price/memory.svg
@@ -0,0 +1,4 @@
+
diff --git a/docs/website/static/price/money.svg b/docs/website/static/price/money.svg
new file mode 100644
index 00000000000..597465ff6ee
--- /dev/null
+++ b/docs/website/static/price/money.svg
@@ -0,0 +1,4 @@
+
diff --git a/docs/website/static/price/publicCloud.svg b/docs/website/static/price/publicCloud.svg
new file mode 100644
index 00000000000..d8d0ba67e61
--- /dev/null
+++ b/docs/website/static/price/publicCloud.svg
@@ -0,0 +1,5 @@
+
+
+
diff --git a/docs/website/static/price/queue.svg b/docs/website/static/price/queue.svg
new file mode 100644
index 00000000000..0547b110b80
--- /dev/null
+++ b/docs/website/static/price/queue.svg
@@ -0,0 +1,7 @@
+
diff --git a/docs/website/static/price/star.svg b/docs/website/static/price/star.svg
new file mode 100644
index 00000000000..6a96831e724
--- /dev/null
+++ b/docs/website/static/price/star.svg
@@ -0,0 +1,3 @@
+
diff --git a/docs/website/static/price/wideApps.svg b/docs/website/static/price/wideApps.svg
new file mode 100644
index 00000000000..6da752fc898
--- /dev/null
+++ b/docs/website/static/price/wideApps.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/docs/website/tailwind.config.js b/docs/website/tailwind.config.js
new file mode 100644
index 00000000000..9979c1f0110
--- /dev/null
+++ b/docs/website/tailwind.config.js
@@ -0,0 +1,29 @@
+/** @type {import('tailwindcss').Config} */
+module.exports = {
+ content: ["./src/**/*.{js,jsx,ts,tsx,md,mdx}", "./docs/**/*.{md,mdx}"],
+ theme: {
+ extend: {},
+ screens: {
+ '2xl': { 'max': '1535px' },
+ // => @media (max-width: 1535px) { ... }
+
+ 'xl': { 'max': '1279px' },
+ // => @media (max-width: 1279px) { ... }
+
+ 'lg': { 'max': '1000px' },
+ // => @media (max-width: 1000px) { ... }
+
+ 'md': { 'max': '767px' },
+ // => @media (max-width: 767px) { ... }
+
+ 'sm': { 'max': '639px' },
+ // => @media (max-width: 639px) { ... }
+ }
+ },
+ plugins: [],
+ darkMode: ["class", '[data-theme="dark"]'],
+ corePlugins: {
+ preflight: false,
+ },
+ blocklist: ["container"],
+}
\ No newline at end of file
diff --git a/docs/website/yarn.lock b/docs/website/yarn.lock
index e49616c033a..7d3088d3bae 100644
--- a/docs/website/yarn.lock
+++ b/docs/website/yarn.lock
@@ -130,6 +130,11 @@
"@algolia/logger-common" "4.17.1"
"@algolia/requester-common" "4.17.1"
+"@alloc/quick-lru@^5.2.0":
+ version "5.2.0"
+ resolved "https://registry.npmmirror.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30"
+ integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==
+
"@ampproject/remapping@^2.2.0":
version "2.2.1"
resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz"
@@ -1683,6 +1688,13 @@
dependencies:
"@hapi/hoek" "^9.0.0"
+"@headlessui/react@^1.7.17":
+ version "1.7.17"
+ resolved "https://registry.npmmirror.com/@headlessui/react/-/react-1.7.17.tgz#a0ec23af21b527c030967245fd99776aa7352bc6"
+ integrity sha512-4am+tzvkqDSSgiwrsEpGWqgGo9dz8qU5M3znCkC4PgkpY4HcCZzEDEvozltGGGHIKl9jbXbZPSH5TWn4sWJdow==
+ dependencies:
+ client-only "^0.0.1"
+
"@jest/schemas@^29.4.3":
version "29.4.3"
resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz"
@@ -2528,6 +2540,11 @@ ansi-styles@^6.1.0:
resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz"
integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
+any-promise@^1.0.0:
+ version "1.3.0"
+ resolved "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
+ integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==
+
anymatch@~3.1.2:
version "3.1.3"
resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz"
@@ -2536,7 +2553,7 @@ anymatch@~3.1.2:
normalize-path "^3.0.0"
picomatch "^2.0.4"
-arg@^5.0.0:
+arg@^5.0.0, arg@^5.0.2:
version "5.0.2"
resolved "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz"
integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==
@@ -2590,6 +2607,18 @@ autoprefixer@^10.4.12, autoprefixer@^10.4.7:
picocolors "^1.0.0"
postcss-value-parser "^4.2.0"
+autoprefixer@^10.4.16:
+ version "10.4.16"
+ resolved "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.16.tgz#fad1411024d8670880bdece3970aa72e3572feb8"
+ integrity sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==
+ dependencies:
+ browserslist "^4.21.10"
+ caniuse-lite "^1.0.30001538"
+ fraction.js "^4.3.6"
+ normalize-range "^0.1.2"
+ picocolors "^1.0.0"
+ postcss-value-parser "^4.2.0"
+
axios@^0.25.0:
version "0.25.0"
resolved "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz"
@@ -2774,6 +2803,16 @@ browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.18.1, browserslist@^4
node-releases "^2.0.12"
update-browserslist-db "^1.0.11"
+browserslist@^4.21.10:
+ version "4.22.1"
+ resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619"
+ integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==
+ dependencies:
+ caniuse-lite "^1.0.30001541"
+ electron-to-chromium "^1.4.535"
+ node-releases "^2.0.13"
+ update-browserslist-db "^1.0.13"
+
buffer-from@^1.0.0:
version "1.1.2"
resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz"
@@ -2823,7 +2862,7 @@ camel-case@^4.1.2:
pascal-case "^3.1.2"
tslib "^2.0.3"
-camelcase-css@2.0.1:
+camelcase-css@2.0.1, camelcase-css@^2.0.1:
version "2.0.1"
resolved "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz"
integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==
@@ -2848,6 +2887,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001464, caniuse-lite@^1.0.30001489:
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001491.tgz"
integrity sha512-17EYIi4TLnPiTzVKMveIxU5ETlxbSO3B6iPvMbprqnKh4qJsQGk5Nh1Lp4jIMAE0XfrujsJuWZAM3oJdMHaKBA==
+caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001541:
+ version "1.0.30001558"
+ resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001558.tgz#d2c6e21fdbfe83817f70feab902421a19b7983ee"
+ integrity sha512-/Et7DwLqpjS47JPEcz6VnxU9PwcIdVi0ciLXRWBQdj1XFye68pSQYpV0QtPTfUKWuOaEig+/Vez2l74eDc1tPQ==
+
ccount@^1.0.0:
version "1.1.0"
resolved "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz"
@@ -2971,6 +3015,11 @@ cli-table3@^0.6.2:
optionalDependencies:
"@colors/colors" "1.5.0"
+client-only@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.npmmirror.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1"
+ integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==
+
clone-deep@^4.0.1:
version "4.0.1"
resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz"
@@ -3046,6 +3095,11 @@ commander@^2.20.0:
resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz"
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+commander@^4.0.0:
+ version "4.1.1"
+ resolved "https://registry.npmmirror.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
+ integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
+
commander@^5.1.0:
version "5.1.0"
resolved "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz"
@@ -3494,6 +3548,11 @@ detect-port@^1.3.0:
address "^1.0.1"
debug "4"
+didyoumean@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.npmmirror.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037"
+ integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==
+
dir-glob@^3.0.1:
version "3.0.1"
resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz"
@@ -3501,6 +3560,11 @@ dir-glob@^3.0.1:
dependencies:
path-type "^4.0.0"
+dlv@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.npmmirror.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79"
+ integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==
+
dns-equal@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz"
@@ -3622,6 +3686,11 @@ electron-to-chromium@^1.4.411:
resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.413.tgz"
integrity sha512-Gd+/OAhRca06dkVxIQo/W7dr6Nmk9cx6lQdZ19GvFp51k5B/lUAokm6SJfNkdV8kFLsC3Z4sLTyEHWCnB1Efbw==
+electron-to-chromium@^1.4.535:
+ version "1.4.571"
+ resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.571.tgz#8aa71539eb82db98740c3ec861256cc34e0356fd"
+ integrity sha512-Sc+VtKwKCDj3f/kLBjdyjMpNzoZsU6WuL/wFb6EH8USmHEcebxRXcRrVpOpayxd52tuey4RUDpUsw5OS5LhJqg==
+
emoji-regex@^8.0.0:
version "8.0.0"
resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz"
@@ -3852,6 +3921,17 @@ fast-glob@^3.2.11, fast-glob@^3.2.9:
merge2 "^1.3.0"
micromatch "^4.0.4"
+fast-glob@^3.3.0:
+ version "3.3.1"
+ resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4"
+ integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==
+ dependencies:
+ "@nodelib/fs.stat" "^2.0.2"
+ "@nodelib/fs.walk" "^1.2.3"
+ glob-parent "^5.1.2"
+ merge2 "^1.3.0"
+ micromatch "^4.0.4"
+
fast-json-stable-stringify@^2.0.0:
version "2.1.0"
resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz"
@@ -4017,6 +4097,11 @@ fraction.js@^4.2.0:
resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz"
integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==
+fraction.js@^4.3.6:
+ version "4.3.7"
+ resolved "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7"
+ integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==
+
fresh@0.5.2:
version "0.5.2"
resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz"
@@ -4061,6 +4146,11 @@ function-bind@^1.1.1:
resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+function-bind@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
+ integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
+
gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2:
version "1.0.0-beta.2"
resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz"
@@ -4112,7 +4202,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.2:
dependencies:
is-glob "^4.0.1"
-glob-parent@^6.0.1:
+glob-parent@^6.0.1, glob-parent@^6.0.2:
version "6.0.2"
resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz"
integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
@@ -4124,6 +4214,18 @@ glob-to-regexp@^0.4.1:
resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz"
integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
+glob@7.1.6:
+ version "7.1.6"
+ resolved "https://registry.npmmirror.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
+ integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
glob@^7.0.0, glob@^7.1.3, glob@^7.1.6:
version "7.2.3"
resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"
@@ -4270,6 +4372,13 @@ has@^1.0.3:
dependencies:
function-bind "^1.1.1"
+hasown@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmmirror.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c"
+ integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==
+ dependencies:
+ function-bind "^1.1.2"
+
hast-to-hyperscript@^9.0.0:
version "9.0.1"
resolved "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz"
@@ -4653,6 +4762,13 @@ is-core-module@^2.11.0:
dependencies:
has "^1.0.3"
+is-core-module@^2.13.0:
+ version "2.13.1"
+ resolved "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384"
+ integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==
+ dependencies:
+ hasown "^2.0.0"
+
is-decimal@^1.0.0:
version "1.0.4"
resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz"
@@ -4843,6 +4959,11 @@ jiti@^1.18.2:
resolved "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz"
integrity sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==
+jiti@^1.19.1:
+ version "1.21.0"
+ resolved "https://registry.npmmirror.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d"
+ integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==
+
joi@^17.6.0:
version "17.9.2"
resolved "https://registry.npmjs.org/joi/-/joi-17.9.2.tgz"
@@ -4960,7 +5081,7 @@ leven@^3.1.0:
resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz"
integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==
-lilconfig@^2.0.3:
+lilconfig@^2.0.3, lilconfig@^2.0.5, lilconfig@^2.1.0:
version "2.1.0"
resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz"
integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==
@@ -5272,6 +5393,15 @@ multicast-dns@^7.2.5:
dns-packet "^5.2.2"
thunky "^1.0.2"
+mz@^2.7.0:
+ version "2.7.0"
+ resolved "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32"
+ integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==
+ dependencies:
+ any-promise "^1.0.0"
+ object-assign "^4.0.1"
+ thenify-all "^1.0.0"
+
nanoid@^3.3.6:
version "3.3.6"
resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz"
@@ -5319,6 +5449,11 @@ node-releases@^2.0.12:
resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz"
integrity sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==
+node-releases@^2.0.13:
+ version "2.0.13"
+ resolved "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d"
+ integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==
+
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz"
@@ -5358,11 +5493,16 @@ nth-check@^2.0.1:
dependencies:
boolbase "^1.0.0"
-object-assign@^4.1.0, object-assign@^4.1.1:
+object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
version "4.1.1"
resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"
integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
+object-hash@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmmirror.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9"
+ integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==
+
object-inspect@^1.9.0:
version "1.12.3"
resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz"
@@ -5635,6 +5775,16 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1:
resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+pify@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+ integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==
+
+pirates@^4.0.1:
+ version "4.0.6"
+ resolved "https://registry.npmmirror.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9"
+ integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==
+
pkg-dir@^4.1.0:
version "4.2.0"
resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz"
@@ -5702,6 +5852,30 @@ postcss-discard-unused@^5.1.0:
dependencies:
postcss-selector-parser "^6.0.5"
+postcss-import@^15.1.0:
+ version "15.1.0"
+ resolved "https://registry.npmmirror.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70"
+ integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==
+ dependencies:
+ postcss-value-parser "^4.0.0"
+ read-cache "^1.0.0"
+ resolve "^1.1.7"
+
+postcss-js@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2"
+ integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==
+ dependencies:
+ camelcase-css "^2.0.1"
+
+postcss-load-config@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/postcss-load-config/-/postcss-load-config-4.0.1.tgz#152383f481c2758274404e4962743191d73875bd"
+ integrity sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==
+ dependencies:
+ lilconfig "^2.0.5"
+ yaml "^2.1.1"
+
postcss-loader@^7.0.0:
version "7.3.2"
resolved "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.2.tgz"
@@ -5798,6 +5972,13 @@ postcss-modules-values@^4.0.0:
dependencies:
icss-utils "^5.0.0"
+postcss-nested@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.npmmirror.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c"
+ integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==
+ dependencies:
+ postcss-selector-parser "^6.0.11"
+
postcss-normalize-charset@^5.1.0:
version "5.1.0"
resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz"
@@ -5891,7 +6072,7 @@ postcss-reduce-transforms@^5.1.0:
dependencies:
postcss-value-parser "^4.2.0"
-postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9:
+postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9:
version "6.0.13"
resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz"
integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==
@@ -5921,7 +6102,7 @@ postcss-unique-selectors@^5.1.1:
dependencies:
postcss-selector-parser "^6.0.5"
-postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
+postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
version "4.2.0"
resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz"
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
@@ -5940,6 +6121,15 @@ postcss@^8.3.11, postcss@^8.4.14, postcss@^8.4.17, postcss@^8.4.21:
picocolors "^1.0.0"
source-map-js "^1.0.2"
+postcss@^8.4.23, postcss@^8.4.31:
+ version "8.4.31"
+ resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d"
+ integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==
+ dependencies:
+ nanoid "^3.3.6"
+ picocolors "^1.0.0"
+ source-map-js "^1.0.2"
+
prepend-http@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz"
@@ -6270,6 +6460,13 @@ react@^17.0.2:
loose-envify "^1.1.0"
object-assign "^4.1.1"
+read-cache@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774"
+ integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==
+ dependencies:
+ pify "^2.3.0"
+
readable-stream@^2.0.1:
version "2.3.8"
resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz"
@@ -6487,6 +6684,15 @@ resolve@^1.1.6, resolve@^1.14.2, resolve@^1.3.2:
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
+resolve@^1.1.7, resolve@^1.22.2:
+ version "1.22.8"
+ resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d"
+ integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
+ dependencies:
+ is-core-module "^2.13.0"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
+
responselike@^1.0.2:
version "1.0.2"
resolved "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz"
@@ -7018,6 +7224,19 @@ stylehacks@^5.1.1:
browserslist "^4.21.4"
postcss-selector-parser "^6.0.4"
+sucrase@^3.32.0:
+ version "3.34.0"
+ resolved "https://registry.npmmirror.com/sucrase/-/sucrase-3.34.0.tgz#1e0e2d8fcf07f8b9c3569067d92fbd8690fb576f"
+ integrity sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==
+ dependencies:
+ "@jridgewell/gen-mapping" "^0.3.2"
+ commander "^4.0.0"
+ glob "7.1.6"
+ lines-and-columns "^1.1.6"
+ mz "^2.7.0"
+ pirates "^4.0.1"
+ ts-interface-checker "^0.1.9"
+
supports-color@^5.3.0:
version "5.5.0"
resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz"
@@ -7062,6 +7281,34 @@ svgo@^2.7.0, svgo@^2.8.0:
picocolors "^1.0.0"
stable "^0.1.8"
+tailwindcss@^3.3.3:
+ version "3.3.5"
+ resolved "https://registry.npmmirror.com/tailwindcss/-/tailwindcss-3.3.5.tgz#22a59e2fbe0ecb6660809d9cc5f3976b077be3b8"
+ integrity sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA==
+ dependencies:
+ "@alloc/quick-lru" "^5.2.0"
+ arg "^5.0.2"
+ chokidar "^3.5.3"
+ didyoumean "^1.2.2"
+ dlv "^1.1.3"
+ fast-glob "^3.3.0"
+ glob-parent "^6.0.2"
+ is-glob "^4.0.3"
+ jiti "^1.19.1"
+ lilconfig "^2.1.0"
+ micromatch "^4.0.5"
+ normalize-path "^3.0.0"
+ object-hash "^3.0.0"
+ picocolors "^1.0.0"
+ postcss "^8.4.23"
+ postcss-import "^15.1.0"
+ postcss-js "^4.0.1"
+ postcss-load-config "^4.0.1"
+ postcss-nested "^6.0.1"
+ postcss-selector-parser "^6.0.11"
+ resolve "^1.22.2"
+ sucrase "^3.32.0"
+
tapable@^1.0.0:
version "1.1.3"
resolved "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz"
@@ -7098,6 +7345,20 @@ text-table@^0.2.0:
resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz"
integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
+thenify-all@^1.0.0:
+ version "1.6.0"
+ resolved "https://registry.npmmirror.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726"
+ integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==
+ dependencies:
+ thenify ">= 3.1.0 < 4"
+
+"thenify@>= 3.1.0 < 4":
+ version "3.3.1"
+ resolved "https://registry.npmmirror.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f"
+ integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==
+ dependencies:
+ any-promise "^1.0.0"
+
thunky@^1.0.2:
version "1.1.0"
resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz"
@@ -7160,6 +7421,11 @@ trough@^1.0.0:
resolved "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz"
integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==
+ts-interface-checker@^0.1.9:
+ version "0.1.13"
+ resolved "https://registry.npmmirror.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699"
+ integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==
+
tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0:
version "2.5.2"
resolved "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz"
@@ -7338,6 +7604,14 @@ update-browserslist-db@^1.0.11:
escalade "^3.1.1"
picocolors "^1.0.0"
+update-browserslist-db@^1.0.13:
+ version "1.0.13"
+ resolved "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4"
+ integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==
+ dependencies:
+ escalade "^3.1.1"
+ picocolors "^1.0.0"
+
update-notifier@^5.1.0:
version "5.1.0"
resolved "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz"
@@ -7750,6 +8024,11 @@ yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2:
resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz"
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
+yaml@^2.1.1:
+ version "2.3.3"
+ resolved "https://registry.npmmirror.com/yaml/-/yaml-2.3.3.tgz#01f6d18ef036446340007db8e016810e5d64aad9"
+ integrity sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==
+
yocto-queue@^0.1.0:
version "0.1.0"
resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz"