From 46200befddd8a7c8ba30d4b5d4f7d4ea88c77596 Mon Sep 17 00:00:00 2001 From: Kevin Koech Date: Thu, 27 Jun 2024 17:41:21 +0300 Subject: [PATCH 01/12] Added Roboform to payloadcms --- apps/roboshield/next.config.mjs | 10 + .../ExistingRobots/ExistingRobots.tsx | 9 +- .../src/components/RoboForm/RoboForm.tsx | 194 ++++++++ .../src/components/RoboForm/index.ts | 3 + .../src/components/StepHint/StepHint.tsx | 4 +- .../src/components/StepperNav/StepperNav.tsx | 6 +- apps/roboshield/src/lib/data/common/index.ts | 29 +- .../src/lib/data/common/processPageIndex.ts | 31 ++ apps/roboshield/src/lib/data/local/index.ts | 2 +- apps/roboshield/src/lib/data/payload.types.ts | 65 +++ apps/roboshield/src/pages/index.tsx | 227 +-------- .../roboshield/src/payload/Blocks/RoboForm.ts | 430 ++++++++++++++++++ .../src/payload/collections/Pages.ts | 3 +- apps/roboshield/src/types/stepComponent.ts | 6 +- 14 files changed, 792 insertions(+), 227 deletions(-) create mode 100644 apps/roboshield/src/components/RoboForm/RoboForm.tsx create mode 100644 apps/roboshield/src/components/RoboForm/index.ts create mode 100644 apps/roboshield/src/lib/data/common/processPageIndex.ts create mode 100644 apps/roboshield/src/payload/Blocks/RoboForm.ts diff --git a/apps/roboshield/next.config.mjs b/apps/roboshield/next.config.mjs index 38c5c24cd..f54331b2f 100644 --- a/apps/roboshield/next.config.mjs +++ b/apps/roboshield/next.config.mjs @@ -31,6 +31,16 @@ const nextConfig = { config.experiments = { ...config.experiments, topLevelAwait: true }; // eslint-disable-line no-param-reassign return config; }, + images: { + remotePatterns: [ + { + protocol: "http", + hostname: "**", + port: "3000", + pathname: "**", + }, + ], + }, }; export default withSentryConfig(nextConfig, { diff --git a/apps/roboshield/src/components/ExistingRobots/ExistingRobots.tsx b/apps/roboshield/src/components/ExistingRobots/ExistingRobots.tsx index 94255baee..9516bbaf9 100644 --- a/apps/roboshield/src/components/ExistingRobots/ExistingRobots.tsx +++ b/apps/roboshield/src/components/ExistingRobots/ExistingRobots.tsx @@ -19,6 +19,8 @@ export default function ExistingRobots({ handleSkipToLast, hint, lastStep, + labels, + globalLabels, }: StepComponent) { const { state } = useGlobalState(); const [url, setUrl] = useState(state.url); @@ -107,13 +109,13 @@ export default function ExistingRobots({ }} /> } - label={Fetch existing robots.txt} + label={{labels?.existingRobotsTxt}} /> - Fetch + {globalLabels?.fetch} {showURLError && ( @@ -153,6 +155,7 @@ export default function ExistingRobots({ isValid={allowNextStep || !shouldFetch} lastStep={lastStep} back={true} + labels={globalLabels} /> = React.forwardRef(function RoboForm(props, ref) { + const { steps } = props; + const [activeStep, setActiveStep] = useState(0); + const { state, setState } = useGlobalState(); + const [code, setCode] = useState(state.robots || ""); + + const stepTitleComponentMap = [ + ExistingRobots, + Delays, + CommonSettings, + CommonBots, + Sitemaps, + CommonSettings, + Finish, + ]; + + const handleNext = () => { + setActiveStep((prevActiveStep) => prevActiveStep + 1); + }; + + const handleBack = () => { + setActiveStep((prevActiveStep) => prevActiveStep - 1); + }; + + const handleReset = () => { + setState(defaultState); + setActiveStep(0); + }; + + const handleNextStep = (data: any) => { + const newState = { ...state, ...data }; + setState(newState); + handleNext(); + }; + + const handleSkipToLast = (data: any) => { + const newState = { ...state, ...data }; + setState(newState); + setActiveStep(props.steps.length - 1); + }; + + const handleStep = (step: number) => () => { + setActiveStep(step); + }; + + useEffect(() => { + const generateRobotsFile = async () => { + const robots = await generateRobots(state); + setCode(robots); + }; + + generateRobotsFile(); + }, [state]); + + const ActiveComponent = stepTitleComponentMap[activeStep] ?? null; + const activeComponentProps = steps[activeStep]; + + return ( + <> +
+ + + + + + + + {props.steps.map((step, index) => ( + + + {step.title} + + + ))} + + {ActiveComponent && ( + + + } + handleNext={handleNextStep} + handleBack={handleBack} + handleSkipToLast={handleSkipToLast} + lastStep={activeStep === steps.length - 1} + handleReset={handleReset} + globalLabels={props} + {...activeComponentProps} + /> + + )} + + + + +
+ + ); +}); + +export default RoboForm; diff --git a/apps/roboshield/src/components/RoboForm/index.ts b/apps/roboshield/src/components/RoboForm/index.ts new file mode 100644 index 000000000..0f913a76d --- /dev/null +++ b/apps/roboshield/src/components/RoboForm/index.ts @@ -0,0 +1,3 @@ +import RoboForm from "./RoboForm"; + +export default RoboForm; diff --git a/apps/roboshield/src/components/StepHint/StepHint.tsx b/apps/roboshield/src/components/StepHint/StepHint.tsx index 7695bcf5f..a365859b7 100644 --- a/apps/roboshield/src/components/StepHint/StepHint.tsx +++ b/apps/roboshield/src/components/StepHint/StepHint.tsx @@ -1,8 +1,8 @@ import { Alert } from "@mui/material"; -import React from "react"; +import React, { ReactNode } from "react"; interface StepHintProps { - hint: String; + hint: ReactNode; } const StepHint = ({ hint }: StepHintProps) => { diff --git a/apps/roboshield/src/components/StepperNav/StepperNav.tsx b/apps/roboshield/src/components/StepperNav/StepperNav.tsx index 2eff398ee..c1e6b1176 100644 --- a/apps/roboshield/src/components/StepperNav/StepperNav.tsx +++ b/apps/roboshield/src/components/StepperNav/StepperNav.tsx @@ -6,6 +6,7 @@ interface StepperNavProps { isValid: boolean; lastStep: boolean; back?: boolean; + labels?: { [key: string]: string }; } export default function StepperNav({ @@ -14,6 +15,7 @@ export default function StepperNav({ isValid, lastStep, back = false, + labels, }: StepperNavProps) { return ( @@ -26,10 +28,10 @@ export default function StepperNav({ sx={{ mt: 1, mr: 1 }} disabled={!isValid} > - Continue + {labels?.continue} )} diff --git a/apps/roboshield/src/lib/data/common/index.ts b/apps/roboshield/src/lib/data/common/index.ts index daa5d7c41..22ad14bbf 100644 --- a/apps/roboshield/src/lib/data/common/index.ts +++ b/apps/roboshield/src/lib/data/common/index.ts @@ -1,5 +1,6 @@ import { Api, MediaData, Settings } from "../payload.types"; import { AppContext } from "next/app"; +import processPageIndex from "@/roboshield/lib/data/common/processPageIndex"; export function imageFromMedia({ alt = null, url = null }: Partial) { return { alt, src: url }; @@ -40,15 +41,39 @@ function getFooter(settings: Settings) { }; } -export async function getPageProps(api: Api, context: AppContext) { +function getPageSlug({ params }: { params?: { slugs: string[] } }) { + const slugsCount = params?.slugs?.length ?? 0; + const pageSlugIndex = slugsCount < 3 ? slugsCount - 1 : 1; + return params?.slugs?.[pageSlugIndex] || "index"; +} + +export async function getPageProps( + api: Api, + context: AppContext["ctx"] & { params?: { slugs: string[] } }, +) { const siteSettings: Settings = (await api.findGlobal( "settings-site", )) as Settings; + const { defaultLocale, locale, params } = context; + const fallbackLocale = defaultLocale; + const slug = getPageSlug(context); + const pathname = slug !== "index" ? `/${params?.slugs?.join("/")}` : "/"; + + const { docs: pages } = await api.findPage(slug, { + locale, + fallbackLocale, + }); + if (!pages?.length) { + return null; + } + + const [page] = pages; const navbar = getNavBar(siteSettings); const footer = getFooter(siteSettings); + const processedPage = await processPageIndex(page, api, context); return { - blocks: [], + ...processedPage, footer, navbar, }; diff --git a/apps/roboshield/src/lib/data/common/processPageIndex.ts b/apps/roboshield/src/lib/data/common/processPageIndex.ts new file mode 100644 index 000000000..41cba30d4 --- /dev/null +++ b/apps/roboshield/src/lib/data/common/processPageIndex.ts @@ -0,0 +1,31 @@ +import { AppContext } from "next/app"; +import { Api, Page } from "../payload.types"; + +async function processPageIndex( + page: Page, + api: Api, + context: AppContext["ctx"], +) { + const blockIndex = page.blocks.findIndex( + (block) => block.blockType === "robo-form", + ); + const roboFormBlockIndex = blockIndex > -1 ? blockIndex : page.blocks.length; + const block = page.blocks[roboFormBlockIndex]; + const steps = [ + block.existingRobots, + block.delays, + block.paths, + block.blockBots, + block.siteMaps, + block.finish, + ]; + page.blocks[roboFormBlockIndex] = { + ...block, + slug: "robo-form", + steps, + }; + + return page; +} + +export default processPageIndex; diff --git a/apps/roboshield/src/lib/data/local/index.ts b/apps/roboshield/src/lib/data/local/index.ts index 9b39e0778..a5cdadc98 100644 --- a/apps/roboshield/src/lib/data/local/index.ts +++ b/apps/roboshield/src/lib/data/local/index.ts @@ -2,7 +2,7 @@ import { getPageProps } from "@/roboshield/lib/data/common"; import api from "@/roboshield/lib/payload"; import { AppContext } from "next/app"; -export async function getPageServerSideProps(context: AppContext) { +export async function getPageServerSideProps(context: AppContext["ctx"]) { const props = await getPageProps(api, context); if (!props) { return { notFound: true }; diff --git a/apps/roboshield/src/lib/data/payload.types.ts b/apps/roboshield/src/lib/data/payload.types.ts index f6ec878aa..76361f114 100644 --- a/apps/roboshield/src/lib/data/payload.types.ts +++ b/apps/roboshield/src/lib/data/payload.types.ts @@ -109,3 +109,68 @@ export interface Api { getCollection: (...args: any) => Promise; updateCollection: (...args: any) => Promise; } + +interface Description { + children: null | string; + text: string; +} + +interface Labels { + existingRobotsTxt?: string; + placeholder?: string; + label?: string; + title?: string; +} + +interface DelaysLabels { + crawlDelay: Labels; + cacheDelay: Labels; + visitTime: Labels; +} + +interface PathsLabels { + selectPlatform: Labels; + disallowedPaths: Labels; + allowedPaths: Labels; +} + +interface BlockBotsLabels { + aiWebCrawlers: Labels; + searchEngineCrawlers: Labels; +} + +interface Section { + title: string; + description: Description[]; + labels: Labels | DelaysLabels | PathsLabels | BlockBotsLabels; +} + +interface FinishSection { + title: string; + description: Description[]; + placeholder: string; +} + +interface RoboForm { + existingRobots?: Section; + delays?: Section & { labels: DelaysLabels }; + paths?: Section & { labels: PathsLabels }; + blockBots?: Section & { labels: BlockBotsLabels }; + siteMaps?: Section & { labels: any }; + finish?: FinishSection; + fetch?: string; + continue?: string; + back?: string; + reset?: string; + download?: string; + copyToClipboard?: string; + id?: string; + blockType?: string; + slug?: string; + steps?: any[]; +} + +type BlockTypes = RoboForm; +export interface Page { + blocks: BlockTypes[]; +} diff --git a/apps/roboshield/src/pages/index.tsx b/apps/roboshield/src/pages/index.tsx index 362f300ca..e368b0bbe 100644 --- a/apps/roboshield/src/pages/index.tsx +++ b/apps/roboshield/src/pages/index.tsx @@ -1,227 +1,24 @@ -import { Section } from "@commons-ui/core"; -import { - IconButton, - Alert, - Box, - Paper, - Stack, - Step, - StepButton, - Stepper, - Tooltip, -} from "@mui/material"; -import { useEffect } from "react"; -import React from "react"; -import { useRef, useState } from "react"; - -import Delays from "@/roboshield/components/Delays"; -import Hero from "@/roboshield/components/Hero"; -import Sitemaps from "@/roboshield/components/Sitemaps"; - -import CommonBots from "@/roboshield/components/CommonBots"; -import CommonSettings from "@/roboshield/components/CommonSettings"; -import ExistingRobots from "@/roboshield/components/ExistingRobots"; -import Finish from "@/roboshield/components/Finish"; -import { - useGlobalState, - defaultState, -} from "@/roboshield/context/GlobalContext"; -import { generateRobots } from "@/roboshield/lib/robots"; import { getPageServerSideProps } from "@/roboshield/lib/data"; +import RoboForm from "@/roboshield/components/RoboForm"; +import Hero from "@/roboshield/components/Hero"; +import { useRef } from "react"; +import { Block } from "payload/types"; -interface Step { - label: string; - description: string; - component: React.FC; -} - -export default function Home() { - const [activeStep, setActiveStep] = useState(0); - const { state, setState } = useGlobalState(); - const [code, setCode] = useState(state.robots || ""); +export default function Index(props: any) { const scrolRef = useRef(null); - - const steps: Step[] = [ - { - label: "Existing robots", - description: `Start by fetching the robots.txt file of the website you want to generate robots for.`, - component: ExistingRobots, - }, - { - label: "Delays", - description: `You can set bot delays for the robots you want to generate.`, - component: Delays, - }, - { - label: "Paths", - description: - "You can set disallowed and allowed paths for the robots you want to generate. All paths should be relative to the root of your site and end with a /", - component: CommonSettings, - }, - { - label: "Block Bots", - description: `Select bots you want to block from crawling your website.`, - component: CommonBots, - }, - { - label: "Site Maps", - description: `You can add sitemap URLs to your robots.txt file.`, - component: Sitemaps, - }, - { - label: "Finish", - description: `Your robots.txt file has been generated successfully. You can now copy the code or download the file.`, - component: Finish, - }, - ]; - - const handleNext = () => { - setActiveStep((prevActiveStep) => prevActiveStep + 1); - }; - - const handleBack = () => { - setActiveStep((prevActiveStep) => prevActiveStep - 1); - }; - - const handleReset = () => { - setState(defaultState); - setActiveStep(0); - }; - - const handleNextStep = (data: any) => { - const newState = { ...state, ...data }; - setState(newState); - handleNext(); - }; - - const handleSkipToLast = (data: any) => { - const newState = { ...state, ...data }; - setState(newState); - setActiveStep(steps.length - 1); - }; - - const handleStep = (step: number) => () => { - setActiveStep(step); - }; - - useEffect(() => { - const generateRobotsFile = async () => { - const robots = await generateRobots(state); - setCode(robots); - }; - - generateRobotsFile(); - }, [state]); - - const ActiveComponent = steps[activeStep]?.component ?? null; - + const { blocks } = props; return ( <> -
- - - - - - - - {steps.map((step, index) => ( - - - {step.label} - - - ))} - - {ActiveComponent && ( - - - - )} - - - - -
+ {blocks.map((block: any) => { + if (block.slug === "robo-form") { + return ; + } + return null; + })} ); } - export async function getServerSideProps(context: any) { return getPageServerSideProps(context); } diff --git a/apps/roboshield/src/payload/Blocks/RoboForm.ts b/apps/roboshield/src/payload/Blocks/RoboForm.ts new file mode 100644 index 000000000..dd1de27bb --- /dev/null +++ b/apps/roboshield/src/payload/Blocks/RoboForm.ts @@ -0,0 +1,430 @@ +import { Field } from "payload/types"; +import richText from "../fields/richText"; + +const ExistingRobots: Field = { + type: "collapsible", + label: "Existing Robots", + fields: [ + { + name: "existingRobots", + label: "Existing Robots", + type: "group", + fields: [ + { + name: "title", + type: "text", + required: true, + defaultValue: "Existing Robots", + }, + richText({ + name: "description", + defaultValue: [ + { + children: null, + text: "Start by fetching the robots.txt file of the website you want to generate robots for.", + }, + ], + }) as unknown as Field, + { + name: "labels", + label: "Labels", + type: "group", + fields: [ + { + name: "existingRobotsTxt", + type: "text", + required: true, + defaultValue: "Fetch existing robots.txt", + }, + { + name: "placeholder", + type: "text", + required: true, + defaultValue: "Enter site URL e.g https://example.com", + }, + ], + }, + ], + }, + ], +}; + +const Delays: Field = { + type: "collapsible", + label: "Delays", + fields: [ + { + name: "delays", + label: "Delays", + type: "group", + fields: [ + { + name: "title", + type: "text", + required: true, + defaultValue: "Delays", + }, + richText({ + name: "description", + defaultValue: [ + { + children: null, + text: "You can set bot delays for the robots you want to generate.", + }, + ], + }) as unknown as Field, + { + name: "labels", + label: "Labels", + type: "group", + fields: [ + { + name: "crawlDelay", + type: "group", + fields: [ + { + name: "label", + type: "text", + required: true, + defaultValue: "Crawl delay", + }, + { + name: "title", + type: "text", + required: true, + defaultValue: + "The crawl delay directive specifies the minimum time between requests to your server from a bot.", + }, + ], + }, + { + name: "cacheDelay", + type: "group", + fields: [ + { + name: "label", + type: "text", + required: true, + defaultValue: "Cache delay", + }, + { + name: "title", + type: "text", + required: true, + defaultValue: + "The cache delay directive specifies the time that a cached copy of a page should be considered fresh.", + }, + ], + }, + { + name: "visitTime", + type: "group", + fields: [ + { + name: "label", + type: "text", + required: true, + defaultValue: "Visit time", + }, + { + name: "title", + type: "text", + required: true, + defaultValue: + "The visit time directive specifies the time of day when a bot should visit your site.", + }, + ], + }, + ], + }, + ], + }, + ], +}; + +const Paths: Field = { + type: "collapsible", + label: "Paths", + fields: [ + { + name: "paths", + label: "Paths", + type: "group", + fields: [ + { + name: "title", + type: "text", + required: true, + defaultValue: "Paths", + }, + richText({ + name: "description", + defaultValue: [ + { + text: "You can set disallowed and allowed paths for the robots you want to generate. All paths should be relative to the root of your site and end with a /", + children: null, + }, + ], + }) as unknown as Field, + { + name: "labels", + label: "Labels", + type: "group", + fields: [ + { + name: "selectPlatform", + type: "group", + fields: [ + { + name: "label", + type: "text", + required: true, + defaultValue: "Select platform", + }, + { + name: "title", + type: "text", + required: true, + defaultValue: + "Select the platform your website is built on to generate the correct robots.txt file.", + }, + ], + }, + { + name: "disallowedPaths", + type: "group", + fields: [ + { + name: "label", + type: "text", + required: true, + defaultValue: "Disallowed paths", + }, + { + name: "title", + type: "text", + required: true, + defaultValue: + "The disallowed paths directive specifies the paths that a bot should not visit.", + }, + ], + }, + { + name: "allowedPaths", + type: "group", + fields: [ + { + name: "label", + type: "text", + required: true, + defaultValue: "Allowed Paths", + }, + { + name: "title", + type: "text", + required: true, + defaultValue: + "The allowed paths directive specifies the paths that a bot should visit.", + }, + ], + }, + ], + }, + ], + }, + ], +}; + +const BlockBots: Field = { + type: "collapsible", + label: "Block Bots", + fields: [ + { + name: "blockBots", + label: "Block Bots", + type: "group", + fields: [ + { + name: "title", + type: "text", + required: true, + defaultValue: "Block Bots", + }, + richText({ + name: "description", + defaultValue: [ + { + text: "Select bots you want to block from crawling your website.", + children: null, + }, + ], + }) as unknown as Field, + { + name: "labels", + label: "Labels", + type: "group", + fields: [ + { + name: "aiWebCrawlers", + type: "group", + fields: [ + { + name: "label", + type: "text", + required: true, + defaultValue: "AI Web Crawlers", + }, + { + name: "title", + type: "text", + required: true, + defaultValue: + "AI Web Crawlers are automated programs, that systematically browse the internet, indexing content for search engines and retrieving data from web pages. The information they gather can be used to train different models. You might want to block them if you're concerned about attribution or how your creative work could be used in the resulting AI model", + }, + ], + }, + { + name: "searchEngineCrawlers", + type: "group", + fields: [ + { + name: "label", + type: "text", + required: true, + defaultValue: "Search Engine Crawlers", + }, + { + name: "title", + type: "text", + required: true, + defaultValue: + "Search engine crawlers are used to index web content for search engines. Blocking them could prevent your website from being discovered by users.", + }, + ], + }, + ], + }, + ], + }, + ], +}; +const SiteMaps: Field = { + type: "collapsible", + label: "Site Maps", + fields: [ + { + name: "siteMaps", + label: "Site Maps", + type: "group", + fields: [ + { + name: "title", + type: "text", + required: true, + defaultValue: "Site Maps", + }, + richText({ + name: "description", + defaultValue: [ + { + text: "You can add sitemap URLs to your robots.txt file.", + children: null, + }, + ], + }) as unknown as Field, + { + name: "placeholder", + type: "text", + required: true, + defaultValue: "Enter sitemap URLs each URL on a new line", + }, + ], + }, + ], +}; + +const Finish: Field = { + type: "collapsible", + label: "Finish", + fields: [ + { + name: "finish", + label: "Finish", + type: "group", + fields: [ + { + name: "title", + type: "text", + required: true, + defaultValue: "Finish", + }, + richText({ + name: "description", + defaultValue: [ + { + children: null, + text: "Your robots.txt file has been generated successfully. You can now copy the code or download the file.", + }, + ], + }) as unknown as Field, + { + name: "placeholder", + type: "text", + required: true, + defaultValue: + "# Disallow specifies the paths that are not allowed to be crawled by the robot.", + }, + ], + }, + ], +}; + +const Labels: Field = { + type: "collapsible", + label: "Labels", + fields: [ + { + name: "fetch", + type: "text", + required: true, + defaultValue: "Fetch", + }, + { + name: "continue", + type: "text", + required: true, + defaultValue: "Continue", + }, + { + name: "back", + type: "text", + required: true, + defaultValue: "Back", + }, + { + name: "reset", + type: "text", + required: true, + defaultValue: "Reset", + }, + { + name: "download", + type: "text", + required: true, + defaultValue: "Download", + }, + { + name: "copyToClipboard", + type: "text", + required: true, + defaultValue: "Back", + }, + ], +}; +const RoboForm = { + slug: "robo-form", + labels: { singular: "Robo Form", plural: "Robo Form" }, + fields: [ExistingRobots, Delays, Paths, BlockBots, SiteMaps, Finish, Labels], +}; + +export default RoboForm; diff --git a/apps/roboshield/src/payload/collections/Pages.ts b/apps/roboshield/src/payload/collections/Pages.ts index e9c31e747..6cc4c5e99 100644 --- a/apps/roboshield/src/payload/collections/Pages.ts +++ b/apps/roboshield/src/payload/collections/Pages.ts @@ -1,6 +1,7 @@ import { CollectionConfig } from "payload/types"; import fullTitle from "../fields/fullTitle"; import slug from "../fields/slug"; +import RoboForm from "../Blocks/RoboForm"; const Pages: CollectionConfig = { slug: "pages", @@ -25,7 +26,7 @@ const Pages: CollectionConfig = { { name: "blocks", type: "blocks", - blocks: [], + blocks: [RoboForm], localized: true, admin: { initCollapsed: true, diff --git a/apps/roboshield/src/types/stepComponent.ts b/apps/roboshield/src/types/stepComponent.ts index 91944e6a8..db10ca11a 100644 --- a/apps/roboshield/src/types/stepComponent.ts +++ b/apps/roboshield/src/types/stepComponent.ts @@ -1,7 +1,11 @@ +import { ReactNode } from "react"; + export interface StepComponent { handleNext: (data: any) => void; handleSkipToLast: (data: any) => void; handleBack: () => void; - hint: String; + hint: ReactNode; lastStep: boolean; + labels?: { [key: string]: string }; + globalLabels?: { [key: string]: string }; } From 4ef1cac2b9dd91ba870f354d1f98874a3b401a2a Mon Sep 17 00:00:00 2001 From: Kevin Koech Date: Fri, 28 Jun 2024 10:35:19 +0300 Subject: [PATCH 02/12] Added Roboform to payload --- apps/roboshield/src/components/Code/Code.tsx | 10 +- .../src/components/CommonBots/CommonBots.tsx | 2 + .../CommonSettings/CommonSettings.tsx | 15 ++- .../src/components/Delays/Delays.tsx | 15 ++- .../src/components/Finish/Finish.tsx | 5 + .../src/components/RoboForm/RoboForm.tsx | 13 ++- .../src/components/Sitemaps/Sitemaps.tsx | 6 +- .../roboshield/src/payload/Blocks/RoboForm.ts | 104 ++++++++++-------- apps/roboshield/src/types/stepComponent.ts | 4 +- 9 files changed, 109 insertions(+), 65 deletions(-) diff --git a/apps/roboshield/src/components/Code/Code.tsx b/apps/roboshield/src/components/Code/Code.tsx index 13f3d6563..b72adbd2e 100644 --- a/apps/roboshield/src/components/Code/Code.tsx +++ b/apps/roboshield/src/components/Code/Code.tsx @@ -10,6 +10,7 @@ interface CodeProps { onReset: () => void; onBack: () => void; showButtons?: boolean; + labels?: { [key: string]: any }; } export default function Code(props: CodeProps) { @@ -21,6 +22,7 @@ export default function Code(props: CodeProps) { onCodeChange, onBack, showButtons = false, + labels, } = props; const handleCodeChange = (newCode: string) => { @@ -49,7 +51,7 @@ export default function Code(props: CodeProps) { onClick={onCopy} disabled={!showButtons} > - Copy to Clipboard + {labels?.copyToClipboard} @@ -104,7 +106,7 @@ export default function Code(props: CodeProps) { onClick={onReset} disabled={!showButtons} > - Reset + {labels?.reset} diff --git a/apps/roboshield/src/components/CommonBots/CommonBots.tsx b/apps/roboshield/src/components/CommonBots/CommonBots.tsx index 0f17e0933..ae7dc5564 100644 --- a/apps/roboshield/src/components/CommonBots/CommonBots.tsx +++ b/apps/roboshield/src/components/CommonBots/CommonBots.tsx @@ -36,6 +36,7 @@ export default function CommonBots({ handleSkipToLast, hint, lastStep, + globalLabels, }: StepComponent) { const { state } = useGlobalState(); @@ -217,6 +218,7 @@ export default function CommonBots({ isValid={true} lastStep={lastStep} back={false} + labels={globalLabels} /> ); diff --git a/apps/roboshield/src/components/CommonSettings/CommonSettings.tsx b/apps/roboshield/src/components/CommonSettings/CommonSettings.tsx index 0ef0caf47..d9ee4a737 100644 --- a/apps/roboshield/src/components/CommonSettings/CommonSettings.tsx +++ b/apps/roboshield/src/components/CommonSettings/CommonSettings.tsx @@ -25,6 +25,8 @@ export default function CommonSettings({ handleSkipToLast, hint, lastStep, + labels, + globalLabels, }: StepComponent) { const { state } = useGlobalState(); @@ -95,8 +97,8 @@ export default function CommonSettings({ width: "100%", }} > - Select platform - + {labels?.selectPlatform?.label} + @@ -132,8 +134,8 @@ export default function CommonSettings({ width: "100%", }} > - Disallowed paths - + {labels?.disallowedPaths?.label} + @@ -167,8 +169,8 @@ export default function CommonSettings({ width: "100%", }} > - Allowed paths - + {labels?.allowedPaths?.label} + @@ -201,6 +203,7 @@ export default function CommonSettings({ isValid={true} lastStep={lastStep} back={false} + labels={globalLabels} /> ); diff --git a/apps/roboshield/src/components/Delays/Delays.tsx b/apps/roboshield/src/components/Delays/Delays.tsx index bc4606bf3..af1fb2718 100644 --- a/apps/roboshield/src/components/Delays/Delays.tsx +++ b/apps/roboshield/src/components/Delays/Delays.tsx @@ -17,6 +17,8 @@ export default function Delays({ handleSkipToLast, hint, lastStep, + labels, + globalLabels, }: StepComponent) { const { state } = useGlobalState(); @@ -93,8 +95,8 @@ export default function Delays({ width: "100%", }} > - Crawl delay - + {labels?.crawlDelay?.label} + @@ -114,8 +116,8 @@ export default function Delays({ width: "100%", }} > - Cache delay - + {labels?.cacheDelay?.label} + @@ -136,8 +138,8 @@ export default function Delays({ width: "100%", }} > - Visit time - + {labels?.visitTime?.label} + @@ -172,6 +174,7 @@ export default function Delays({ isValid={true} lastStep={lastStep} back={false} + labels={globalLabels} /> ); diff --git a/apps/roboshield/src/components/Finish/Finish.tsx b/apps/roboshield/src/components/Finish/Finish.tsx index 96e6fc5e7..3148bbd39 100644 --- a/apps/roboshield/src/components/Finish/Finish.tsx +++ b/apps/roboshield/src/components/Finish/Finish.tsx @@ -16,7 +16,10 @@ export default function Finish({ handleBack, hint, lastStep, + labels, + globalLabels, }: StepComponent & { handleReset: () => void }) { + console.log({ labels, globalLabels }); const { state } = useGlobalState(); const [code, setCode] = useState(state.robots || ""); const [showSnackbar, setShowSnackbar] = useState(false); @@ -88,6 +91,7 @@ export default function Finish({ onBack={handleBack} showButtons={true} onCodeChange={handleCodeChange} + labels={globalLabels} />
= React.forwardRef(function RoboForm(props, ref) { - const { steps } = props; + const { steps, labels } = props; const [activeStep, setActiveStep] = useState(0); const { state, setState } = useGlobalState(); const [code, setCode] = useState(state.robots || ""); @@ -36,7 +44,6 @@ const RoboForm: FC = React.forwardRef(function RoboForm(props, ref) { CommonSettings, CommonBots, Sitemaps, - CommonSettings, Finish, ]; @@ -177,7 +184,7 @@ const RoboForm: FC = React.forwardRef(function RoboForm(props, ref) { handleSkipToLast={handleSkipToLast} lastStep={activeStep === steps.length - 1} handleReset={handleReset} - globalLabels={props} + globalLabels={labels} {...activeComponentProps} /> diff --git a/apps/roboshield/src/components/Sitemaps/Sitemaps.tsx b/apps/roboshield/src/components/Sitemaps/Sitemaps.tsx index 83dca5e70..97d819541 100644 --- a/apps/roboshield/src/components/Sitemaps/Sitemaps.tsx +++ b/apps/roboshield/src/components/Sitemaps/Sitemaps.tsx @@ -14,9 +14,12 @@ export default function Sitemaps({ handleSkipToLast, hint, lastStep, + labels, + globalLabels, }: StepComponent) { const { state } = useGlobalState(); const [sitemaps, setSitemaps] = useState(state.sitemaps); + console.log(labels); const handleSitemapChange = (value: ChangeEvent) => { const data = value.target.value; @@ -46,7 +49,7 @@ export default function Sitemaps({ }} > ); diff --git a/apps/roboshield/src/payload/Blocks/RoboForm.ts b/apps/roboshield/src/payload/Blocks/RoboForm.ts index dd1de27bb..ba8a9cc6b 100644 --- a/apps/roboshield/src/payload/Blocks/RoboForm.ts +++ b/apps/roboshield/src/payload/Blocks/RoboForm.ts @@ -333,10 +333,16 @@ const SiteMaps: Field = { ], }) as unknown as Field, { - name: "placeholder", - type: "text", - required: true, - defaultValue: "Enter sitemap URLs each URL on a new line", + type: "group", + name: "labels", + fields: [ + { + name: "placeholder", + type: "text", + required: true, + defaultValue: "Enter sitemap URLs each URL on a new line", + }, + ], }, ], }, @@ -368,11 +374,17 @@ const Finish: Field = { ], }) as unknown as Field, { - name: "placeholder", - type: "text", - required: true, - defaultValue: - "# Disallow specifies the paths that are not allowed to be crawled by the robot.", + type: "group", + name: "labels", + fields: [ + { + name: "placeholder", + type: "text", + required: true, + defaultValue: + "# Disallow specifies the paths that are not allowed to be crawled by the robot.", + }, + ], }, ], }, @@ -384,40 +396,46 @@ const Labels: Field = { label: "Labels", fields: [ { - name: "fetch", - type: "text", - required: true, - defaultValue: "Fetch", - }, - { - name: "continue", - type: "text", - required: true, - defaultValue: "Continue", - }, - { - name: "back", - type: "text", - required: true, - defaultValue: "Back", - }, - { - name: "reset", - type: "text", - required: true, - defaultValue: "Reset", - }, - { - name: "download", - type: "text", - required: true, - defaultValue: "Download", - }, - { - name: "copyToClipboard", - type: "text", - required: true, - defaultValue: "Back", + type: "group", + name: "labels", + fields: [ + { + name: "fetch", + type: "text", + required: true, + defaultValue: "Fetch", + }, + { + name: "continue", + type: "text", + required: true, + defaultValue: "Continue", + }, + { + name: "back", + type: "text", + required: true, + defaultValue: "Back", + }, + { + name: "reset", + type: "text", + required: true, + defaultValue: "Reset", + }, + { + name: "download", + type: "text", + required: true, + defaultValue: "Download", + }, + { + name: "copyToClipboard", + type: "text", + required: true, + defaultValue: "Copy to Clipboard", + }, + ], }, ], }; diff --git a/apps/roboshield/src/types/stepComponent.ts b/apps/roboshield/src/types/stepComponent.ts index db10ca11a..88dc54ae1 100644 --- a/apps/roboshield/src/types/stepComponent.ts +++ b/apps/roboshield/src/types/stepComponent.ts @@ -6,6 +6,6 @@ export interface StepComponent { handleBack: () => void; hint: ReactNode; lastStep: boolean; - labels?: { [key: string]: string }; - globalLabels?: { [key: string]: string }; + labels?: { [key: string]: any }; + globalLabels?: { [key: string]: any }; } From 1bf81e7dc549804961e3a6e50cff3abc55bb6a60 Mon Sep 17 00:00:00 2001 From: Kevin Koech Date: Fri, 28 Jun 2024 10:56:02 +0300 Subject: [PATCH 03/12] Remove changes to next config --- apps/roboshield/next.config.mjs | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/apps/roboshield/next.config.mjs b/apps/roboshield/next.config.mjs index f54331b2f..38c5c24cd 100644 --- a/apps/roboshield/next.config.mjs +++ b/apps/roboshield/next.config.mjs @@ -31,16 +31,6 @@ const nextConfig = { config.experiments = { ...config.experiments, topLevelAwait: true }; // eslint-disable-line no-param-reassign return config; }, - images: { - remotePatterns: [ - { - protocol: "http", - hostname: "**", - port: "3000", - pathname: "**", - }, - ], - }, }; export default withSentryConfig(nextConfig, { From af6813ea89f0975ad0368f87108b555100a8478d Mon Sep 17 00:00:00 2001 From: Kevin Koech Date: Fri, 28 Jun 2024 16:37:56 +0300 Subject: [PATCH 04/12] Update Roboform --- .../CommonSettings/CommonSettings.tsx | 32 +- .../src/components/Delays/Delays.tsx | 31 +- .../ExistingRobots/ExistingRobots.tsx | 35 +- .../src/components/Finish/Finish.tsx | 15 +- .../src/components/RoboForm/RoboForm.tsx | 17 +- .../src/components/Sitemaps/Sitemaps.tsx | 17 +- .../SkipToLastStep/SkipToLastStep.tsx | 4 +- .../roboshield/src/lib/data/blockify/index.ts | 30 + .../lib/data/blockify/processBlockRoboForm.ts | 27 + apps/roboshield/src/lib/data/common/index.ts | 7 +- .../src/lib/data/common/processPageIndex.ts | 31 - apps/roboshield/src/lib/data/payload.types.ts | 12 +- .../roboshield/src/payload/Blocks/RoboForm.ts | 626 ++++++++---------- apps/roboshield/src/types/stepComponent.ts | 1 + 14 files changed, 459 insertions(+), 426 deletions(-) create mode 100644 apps/roboshield/src/lib/data/blockify/index.ts create mode 100644 apps/roboshield/src/lib/data/blockify/processBlockRoboForm.ts delete mode 100644 apps/roboshield/src/lib/data/common/processPageIndex.ts diff --git a/apps/roboshield/src/components/CommonSettings/CommonSettings.tsx b/apps/roboshield/src/components/CommonSettings/CommonSettings.tsx index d9ee4a737..03071d22d 100644 --- a/apps/roboshield/src/components/CommonSettings/CommonSettings.tsx +++ b/apps/roboshield/src/components/CommonSettings/CommonSettings.tsx @@ -18,6 +18,13 @@ import { platforms } from "@/roboshield/lib/config"; import { StepComponent } from "@/roboshield/types/stepComponent"; import SkipToLastStep from "@/roboshield/components/SkipToLastStep"; import StepHint from "@/roboshield/components/StepHint"; +import { LabelNode } from "@/roboshield/lib/data/payload.types"; + +interface Props extends StepComponent { + selectPlatform?: LabelNode; + allowedPaths?: LabelNode; + disallowedPaths?: LabelNode; +} export default function CommonSettings({ handleNext, @@ -25,9 +32,12 @@ export default function CommonSettings({ handleSkipToLast, hint, lastStep, - labels, globalLabels, -}: StepComponent) { + selectPlatform, + allowedPaths: allowedPathsLabel, + disallowedPaths: disallowedPathsLabel, + toolTipText, +}: Props) { const { state } = useGlobalState(); const [disallowedPaths, setDisallowedPaths] = useState( @@ -80,7 +90,11 @@ export default function CommonSettings({ return ( <> - + - {labels?.selectPlatform?.label} - + {selectPlatform?.label} + @@ -134,8 +148,8 @@ export default function CommonSettings({ width: "100%", }} > - {labels?.disallowedPaths?.label} - + {disallowedPathsLabel?.label} + @@ -169,8 +183,8 @@ export default function CommonSettings({ width: "100%", }} > - {labels?.allowedPaths?.label} - + {allowedPathsLabel?.label} + diff --git a/apps/roboshield/src/components/Delays/Delays.tsx b/apps/roboshield/src/components/Delays/Delays.tsx index af1fb2718..e11d4f26b 100644 --- a/apps/roboshield/src/components/Delays/Delays.tsx +++ b/apps/roboshield/src/components/Delays/Delays.tsx @@ -10,16 +10,25 @@ import { useGlobalState } from "@/roboshield/context/GlobalContext"; import { StepComponent } from "@/roboshield/types/stepComponent"; import SkipToLastStep from "@/roboshield/components/SkipToLastStep"; import StepHint from "@/roboshield/components/StepHint"; +import { LabelNode } from "@/roboshield/lib/data/payload.types"; +interface Props extends StepComponent { + crawlDelay?: LabelNode; + cacheDelay?: LabelNode; + visitTime?: LabelNode; +} export default function Delays({ handleNext, handleBack, handleSkipToLast, hint, lastStep, - labels, globalLabels, -}: StepComponent) { + cacheDelay: cachedDelayLabel, + crawlDelay: crawlDelayLabel, + visitTime: visitTimeLabel, + toolTipText, +}: Props) { const { state } = useGlobalState(); const [crawlDelay, setCrawlDelay] = useState(state.crawlDelay); @@ -69,7 +78,11 @@ export default function Delays({ return ( <> - + - {labels?.crawlDelay?.label} - + {crawlDelayLabel?.label} + @@ -116,8 +129,8 @@ export default function Delays({ width: "100%", }} > - {labels?.cacheDelay?.label} - + {cachedDelayLabel?.label} + @@ -138,8 +151,8 @@ export default function Delays({ width: "100%", }} > - {labels?.visitTime?.label} - + {visitTimeLabel?.label} + diff --git a/apps/roboshield/src/components/ExistingRobots/ExistingRobots.tsx b/apps/roboshield/src/components/ExistingRobots/ExistingRobots.tsx index 9516bbaf9..b842fcc6c 100644 --- a/apps/roboshield/src/components/ExistingRobots/ExistingRobots.tsx +++ b/apps/roboshield/src/components/ExistingRobots/ExistingRobots.tsx @@ -13,20 +13,32 @@ import { validateUrl } from "@/roboshield/utils/urls"; import SkipToLastStep from "@/roboshield/components/SkipToLastStep"; import StepHint from "@/roboshield/components/StepHint"; +interface Props extends StepComponent { + existingRobotsTxt?: string; + placeholder?: string; + fetch?: string; + urlValidationError?: string; + defaultFetchExistingRobots?: boolean; +} export default function ExistingRobots({ + existingRobotsTxt, + fetch: fetchLabel, + globalLabels, handleNext, handleBack, handleSkipToLast, hint, lastStep, - labels, - globalLabels, -}: StepComponent) { + placeholder, + urlValidationError, + defaultFetchExistingRobots, + toolTipText, +}: Props) { const { state } = useGlobalState(); const [url, setUrl] = useState(state.url); const [isValid, setIsValid] = useState(false); const [showURLError, setShowURLError] = useState(false); - const [shouldFetch, setShouldFetch] = useState(state.shouldFetch); + const [shouldFetch, setShouldFetch] = useState(defaultFetchExistingRobots); const [robots, setRobots] = useState(state.robots); const [allowNextStep, setAllowNextStep] = useState(false); const [robotsError, setRobotsError] = useState(false); @@ -87,7 +99,11 @@ export default function ExistingRobots({ return ( <> - + } - label={{labels?.existingRobotsTxt}} + label={{existingRobotsTxt}} /> - {globalLabels?.fetch} + {fetchLabel} {showURLError && ( @@ -144,8 +160,7 @@ export default function ExistingRobots({ }, }} > - Please enter a valid URL. A valid URL should start with http:// or - https:// + {urlValidationError} )} diff --git a/apps/roboshield/src/components/Finish/Finish.tsx b/apps/roboshield/src/components/Finish/Finish.tsx index 3148bbd39..3512e0b67 100644 --- a/apps/roboshield/src/components/Finish/Finish.tsx +++ b/apps/roboshield/src/components/Finish/Finish.tsx @@ -11,15 +11,18 @@ import { downloadFile } from "@/roboshield/utils/file"; import SkipToLastStep from "@/roboshield/components/SkipToLastStep"; import StepHint from "@/roboshield/components/StepHint"; +interface Props extends StepComponent { + handleReset: () => void; + placeholder?: string; +} export default function Finish({ handleReset, handleBack, hint, lastStep, - labels, globalLabels, -}: StepComponent & { handleReset: () => void }) { - console.log({ labels, globalLabels }); + toolTipText, +}: Props) { const { state } = useGlobalState(); const [code, setCode] = useState(state.robots || ""); const [showSnackbar, setShowSnackbar] = useState(false); @@ -74,7 +77,11 @@ export default function Finish({ return ( <> - {}} lastStep={lastStep} /> + {}} + lastStep={lastStep} + toolTipText={toolTipText} + /> = React.forwardRef(function RoboForm(props, ref) { - const { steps, labels } = props; + const { steps, labels, toolTipText } = props; const [activeStep, setActiveStep] = useState(0); const { state, setState } = useGlobalState(); const [code, setCode] = useState(state.robots || ""); @@ -86,8 +87,7 @@ const RoboForm: FC = React.forwardRef(function RoboForm(props, ref) { }, [state]); const ActiveComponent = stepTitleComponentMap[activeStep] ?? null; - const activeComponentProps = steps[activeStep]; - + const { hint, ...activeComponentProps } = steps[activeStep] ?? {}; return ( <>
= React.forwardRef(function RoboForm(props, ref) { > - {props.steps.map((step, index) => ( + {steps?.map((step, index) => ( = React.forwardRef(function RoboForm(props, ref) { fontWeight: { xs: 500, md: 600 }, }} > - {step.title} + {step?.title} ))} @@ -176,15 +176,14 @@ const RoboForm: FC = React.forwardRef(function RoboForm(props, ref) { }} > - } + hint={} handleNext={handleNextStep} handleBack={handleBack} handleSkipToLast={handleSkipToLast} lastStep={activeStep === steps.length - 1} handleReset={handleReset} globalLabels={labels} + toolTipText={toolTipText} {...activeComponentProps} /> diff --git a/apps/roboshield/src/components/Sitemaps/Sitemaps.tsx b/apps/roboshield/src/components/Sitemaps/Sitemaps.tsx index 97d819541..cf0022e2a 100644 --- a/apps/roboshield/src/components/Sitemaps/Sitemaps.tsx +++ b/apps/roboshield/src/components/Sitemaps/Sitemaps.tsx @@ -8,18 +8,21 @@ import { StepComponent } from "@/roboshield/types/stepComponent"; import SkipToLastStep from "@/roboshield/components/SkipToLastStep"; import StepHint from "@/roboshield/components/StepHint"; +interface Props extends StepComponent { + placeholder?: string; +} export default function Sitemaps({ handleNext, handleBack, handleSkipToLast, hint, lastStep, - labels, globalLabels, -}: StepComponent) { + placeholder, + toolTipText, +}: Props) { const { state } = useGlobalState(); const [sitemaps, setSitemaps] = useState(state.sitemaps); - console.log(labels); const handleSitemapChange = (value: ChangeEvent) => { const data = value.target.value; @@ -40,7 +43,11 @@ export default function Sitemaps({ return ( <> - + void; lastStep: boolean; + toolTipText: string; } const SkipToLastStep = ({ handleSkipToLast, lastStep, + toolTipText, }: SkipToLastStepProps) => { return ( - + Promise; + +interface PropsifyBlockBySlug { + [key: string]: PropsifyBlockFunction; +} + +const propsifyBlockBySlug: PropsifyBlockBySlug = { + "robo-form": processBlockRoboForm, +}; +export const blockify = async (blocks: Page["blocks"], api: Api) => { + const promises = blocks?.map(async (block) => { + const slug = block.blockType ?? ""; + const propsifyBlock = propsifyBlockBySlug[slug]; + + if (propsifyBlock) { + return propsifyBlock(block, api); + } + return { + ...block, + slug, + }; + }); + + if (promises) { + return Promise.all(promises); + } + return blocks ?? null; +}; diff --git a/apps/roboshield/src/lib/data/blockify/processBlockRoboForm.ts b/apps/roboshield/src/lib/data/blockify/processBlockRoboForm.ts new file mode 100644 index 000000000..e019e29dd --- /dev/null +++ b/apps/roboshield/src/lib/data/blockify/processBlockRoboForm.ts @@ -0,0 +1,27 @@ +import { Api } from "../payload.types"; + +function sortSteps(steps: any[]) { + const stepOrder: string[] = [ + "existing-robots", + "delays", + "paths", + "block-bots", + "site-maps", + "finish", + ]; + return stepOrder.map((slug) => + steps.find(({ blockType }) => blockType === slug), + ); +} + +async function processBlockRoboForm(block: any, api: Api) { + const steps = sortSteps(block.steps ?? []); + + return { + ...block, + slug: "robo-form", + steps, + }; +} + +export default processBlockRoboForm; diff --git a/apps/roboshield/src/lib/data/common/index.ts b/apps/roboshield/src/lib/data/common/index.ts index 22ad14bbf..c5188a073 100644 --- a/apps/roboshield/src/lib/data/common/index.ts +++ b/apps/roboshield/src/lib/data/common/index.ts @@ -1,6 +1,6 @@ import { Api, MediaData, Settings } from "../payload.types"; import { AppContext } from "next/app"; -import processPageIndex from "@/roboshield/lib/data/common/processPageIndex"; +import { blockify } from "../blockify"; export function imageFromMedia({ alt = null, url = null }: Partial) { return { alt, src: url }; @@ -68,12 +68,11 @@ export async function getPageProps( } const [page] = pages; + const blocks = await blockify(page.blocks, api); const navbar = getNavBar(siteSettings); const footer = getFooter(siteSettings); - const processedPage = await processPageIndex(page, api, context); - return { - ...processedPage, + blocks, footer, navbar, }; diff --git a/apps/roboshield/src/lib/data/common/processPageIndex.ts b/apps/roboshield/src/lib/data/common/processPageIndex.ts deleted file mode 100644 index 41cba30d4..000000000 --- a/apps/roboshield/src/lib/data/common/processPageIndex.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { AppContext } from "next/app"; -import { Api, Page } from "../payload.types"; - -async function processPageIndex( - page: Page, - api: Api, - context: AppContext["ctx"], -) { - const blockIndex = page.blocks.findIndex( - (block) => block.blockType === "robo-form", - ); - const roboFormBlockIndex = blockIndex > -1 ? blockIndex : page.blocks.length; - const block = page.blocks[roboFormBlockIndex]; - const steps = [ - block.existingRobots, - block.delays, - block.paths, - block.blockBots, - block.siteMaps, - block.finish, - ]; - page.blocks[roboFormBlockIndex] = { - ...block, - slug: "robo-form", - steps, - }; - - return page; -} - -export default processPageIndex; diff --git a/apps/roboshield/src/lib/data/payload.types.ts b/apps/roboshield/src/lib/data/payload.types.ts index 76361f114..7f2ce4d00 100644 --- a/apps/roboshield/src/lib/data/payload.types.ts +++ b/apps/roboshield/src/lib/data/payload.types.ts @@ -1,6 +1,8 @@ -interface TextNode { - children: TextNode | null; - text?: string; +import { Node } from "slate"; + +export interface LabelNode { + title: Node; + label: string; } interface BreadCrumbs { @@ -64,7 +66,7 @@ export interface Partner { } export interface Settings { title: string; - description: TextNode; + description: Node; connect: StayInTouchData; primaryLogo: MediaData; secondaryLogo: MediaData; @@ -82,7 +84,7 @@ export interface Settings { initiative: { partners: Partner[]; title: string; - description: TextNode; + description: Node; }; } diff --git a/apps/roboshield/src/payload/Blocks/RoboForm.ts b/apps/roboshield/src/payload/Blocks/RoboForm.ts index ba8a9cc6b..e9ef92b5b 100644 --- a/apps/roboshield/src/payload/Blocks/RoboForm.ts +++ b/apps/roboshield/src/payload/Blocks/RoboForm.ts @@ -1,448 +1,396 @@ -import { Field } from "payload/types"; +import { Block, Field } from "payload/types"; import richText from "../fields/richText"; -const ExistingRobots: Field = { - type: "collapsible", - label: "Existing Robots", +const ExistingRobots: Block = { + slug: "existing-robots", + labels: { singular: "Existing Robots", plural: "Existing Robots" }, fields: [ { - name: "existingRobots", - label: "Existing Robots", + name: "title", + type: "text", + required: true, + defaultValue: "Existing Robots", + }, + richText({ + name: "hint", + label: "Hint", + defaultValue: [ + { + children: null, + text: "Start by fetching the robots.txt file of the website you want to generate robots for.", + }, + ], + }) as unknown as Field, + { + name: "defaultFetchExistingRobots", + type: "checkbox", + label: "Fetch Existing Robots", + defaultValue: false, + }, + { + name: "existingRobotsTxt", + type: "text", + required: true, + defaultValue: "Fetch existing robots.txt", + }, + { + name: "placeholder", + type: "text", + required: true, + defaultValue: "Enter site URL e.g https://example.com", + }, + { + name: "urlValidationError", + type: "text", + required: true, + defaultValue: + "Please enter a valid URL. A valid URL should start with http:// or \nhttps://", + }, + { + name: "fetch", + type: "text", + required: true, + defaultValue: "Fetch", + }, + ], +}; + +const Delays: Block = { + slug: "delays", + labels: { singular: "Delays", plural: "Delays" }, + fields: [ + { + name: "title", + type: "text", + required: true, + defaultValue: "Delays", + }, + richText({ + name: "hint", + label: "Hint", + defaultValue: [ + { + children: null, + text: "You can set bot delays for the robots you want to generate.", + }, + ], + }) as unknown as Field, + { + name: "crawlDelay", type: "group", fields: [ { - name: "title", + name: "label", type: "text", required: true, - defaultValue: "Existing Robots", + defaultValue: "Crawl delay", }, - richText({ - name: "description", - defaultValue: [ - { - children: null, - text: "Start by fetching the robots.txt file of the website you want to generate robots for.", - }, - ], - }) as unknown as Field, { - name: "labels", - label: "Labels", - type: "group", - fields: [ - { - name: "existingRobotsTxt", - type: "text", - required: true, - defaultValue: "Fetch existing robots.txt", - }, - { - name: "placeholder", - type: "text", - required: true, - defaultValue: "Enter site URL e.g https://example.com", - }, - ], + name: "title", + type: "text", + required: true, + defaultValue: + "The crawl delay directive specifies the minimum time between requests to your server from a bot.", }, ], }, - ], -}; - -const Delays: Field = { - type: "collapsible", - label: "Delays", - fields: [ { - name: "delays", - label: "Delays", + name: "cacheDelay", type: "group", fields: [ { - name: "title", + name: "label", type: "text", required: true, - defaultValue: "Delays", + defaultValue: "Cache delay", }, - richText({ - name: "description", - defaultValue: [ - { - children: null, - text: "You can set bot delays for the robots you want to generate.", - }, - ], - }) as unknown as Field, { - name: "labels", - label: "Labels", - type: "group", - fields: [ - { - name: "crawlDelay", - type: "group", - fields: [ - { - name: "label", - type: "text", - required: true, - defaultValue: "Crawl delay", - }, - { - name: "title", - type: "text", - required: true, - defaultValue: - "The crawl delay directive specifies the minimum time between requests to your server from a bot.", - }, - ], - }, - { - name: "cacheDelay", - type: "group", - fields: [ - { - name: "label", - type: "text", - required: true, - defaultValue: "Cache delay", - }, - { - name: "title", - type: "text", - required: true, - defaultValue: - "The cache delay directive specifies the time that a cached copy of a page should be considered fresh.", - }, - ], - }, - { - name: "visitTime", - type: "group", - fields: [ - { - name: "label", - type: "text", - required: true, - defaultValue: "Visit time", - }, - { - name: "title", - type: "text", - required: true, - defaultValue: - "The visit time directive specifies the time of day when a bot should visit your site.", - }, - ], - }, - ], + name: "title", + type: "text", + required: true, + defaultValue: + "The cache delay directive specifies the time that a cached copy of a page should be considered fresh.", }, ], }, - ], -}; - -const Paths: Field = { - type: "collapsible", - label: "Paths", - fields: [ { - name: "paths", - label: "Paths", + name: "visitTime", type: "group", fields: [ { - name: "title", + name: "label", type: "text", required: true, - defaultValue: "Paths", + defaultValue: "Visit time", }, - richText({ - name: "description", - defaultValue: [ - { - text: "You can set disallowed and allowed paths for the robots you want to generate. All paths should be relative to the root of your site and end with a /", - children: null, - }, - ], - }) as unknown as Field, { - name: "labels", - label: "Labels", - type: "group", - fields: [ - { - name: "selectPlatform", - type: "group", - fields: [ - { - name: "label", - type: "text", - required: true, - defaultValue: "Select platform", - }, - { - name: "title", - type: "text", - required: true, - defaultValue: - "Select the platform your website is built on to generate the correct robots.txt file.", - }, - ], - }, - { - name: "disallowedPaths", - type: "group", - fields: [ - { - name: "label", - type: "text", - required: true, - defaultValue: "Disallowed paths", - }, - { - name: "title", - type: "text", - required: true, - defaultValue: - "The disallowed paths directive specifies the paths that a bot should not visit.", - }, - ], - }, - { - name: "allowedPaths", - type: "group", - fields: [ - { - name: "label", - type: "text", - required: true, - defaultValue: "Allowed Paths", - }, - { - name: "title", - type: "text", - required: true, - defaultValue: - "The allowed paths directive specifies the paths that a bot should visit.", - }, - ], - }, - ], + name: "title", + type: "text", + required: true, + defaultValue: + "The visit time directive specifies the time of day when a bot should visit your site.", }, ], }, ], }; -const BlockBots: Field = { - type: "collapsible", - label: "Block Bots", +const Paths: Block = { + slug: "paths", + labels: { singular: "Paths", plural: "Paths" }, fields: [ { - name: "blockBots", - label: "Block Bots", + name: "title", + type: "text", + required: true, + defaultValue: "Paths", + }, + richText({ + name: "hint", + label: "hint", + defaultValue: [ + { + text: "You can set disallowed and allowed paths for the robots you want to generate. All paths should be relative to the root of your site and end with a /", + children: null, + }, + ], + }) as unknown as Field, + { + name: "selectPlatform", + label: "Select Platform", type: "group", fields: [ { - name: "title", + name: "label", type: "text", required: true, - defaultValue: "Block Bots", + defaultValue: "Select platform", }, - richText({ - name: "description", - defaultValue: [ - { - text: "Select bots you want to block from crawling your website.", - children: null, - }, - ], - }) as unknown as Field, { - name: "labels", - label: "Labels", - type: "group", - fields: [ - { - name: "aiWebCrawlers", - type: "group", - fields: [ - { - name: "label", - type: "text", - required: true, - defaultValue: "AI Web Crawlers", - }, - { - name: "title", - type: "text", - required: true, - defaultValue: - "AI Web Crawlers are automated programs, that systematically browse the internet, indexing content for search engines and retrieving data from web pages. The information they gather can be used to train different models. You might want to block them if you're concerned about attribution or how your creative work could be used in the resulting AI model", - }, - ], - }, - { - name: "searchEngineCrawlers", - type: "group", - fields: [ - { - name: "label", - type: "text", - required: true, - defaultValue: "Search Engine Crawlers", - }, - { - name: "title", - type: "text", - required: true, - defaultValue: - "Search engine crawlers are used to index web content for search engines. Blocking them could prevent your website from being discovered by users.", - }, - ], - }, - ], + name: "title", + type: "text", + required: true, + defaultValue: + "Select the platform your website is built on to generate the correct robots.txt file.", }, ], }, - ], -}; -const SiteMaps: Field = { - type: "collapsible", - label: "Site Maps", - fields: [ { - name: "siteMaps", - label: "Site Maps", + name: "disallowedPaths", type: "group", fields: [ { - name: "title", + name: "label", type: "text", required: true, - defaultValue: "Site Maps", + defaultValue: "Disallowed paths", }, - richText({ - name: "description", - defaultValue: [ - { - text: "You can add sitemap URLs to your robots.txt file.", - children: null, - }, - ], - }) as unknown as Field, { - type: "group", - name: "labels", - fields: [ - { - name: "placeholder", - type: "text", - required: true, - defaultValue: "Enter sitemap URLs each URL on a new line", - }, - ], + name: "title", + type: "text", + required: true, + defaultValue: + "The disallowed paths directive specifies the paths that a bot should not visit.", }, ], }, - ], -}; - -const Finish: Field = { - type: "collapsible", - label: "Finish", - fields: [ { - name: "finish", - label: "Finish", + name: "allowedPaths", type: "group", fields: [ { - name: "title", + name: "label", type: "text", required: true, - defaultValue: "Finish", + defaultValue: "Allowed Paths", }, - richText({ - name: "description", - defaultValue: [ - { - children: null, - text: "Your robots.txt file has been generated successfully. You can now copy the code or download the file.", - }, - ], - }) as unknown as Field, { - type: "group", - name: "labels", - fields: [ - { - name: "placeholder", - type: "text", - required: true, - defaultValue: - "# Disallow specifies the paths that are not allowed to be crawled by the robot.", - }, - ], + name: "title", + type: "text", + required: true, + defaultValue: + "The allowed paths directive specifies the paths that a bot should visit.", }, ], }, ], }; -const Labels: Field = { - type: "collapsible", - label: "Labels", +const BlockBots: Block = { + slug: "block-bots", + labels: { singular: "Block Bots", plural: "Block Bots" }, fields: [ { + name: "title", + type: "text", + required: true, + defaultValue: "Block Bots", + }, + richText({ + name: "hint", + defaultValue: [ + { + text: "Select bots you want to block from crawling your website.", + children: null, + }, + ], + }) as unknown as Field, + + { + name: "aiWebCrawlers", type: "group", - name: "labels", fields: [ { - name: "fetch", + name: "label", type: "text", required: true, - defaultValue: "Fetch", + defaultValue: "AI Web Crawlers", }, { - name: "continue", + name: "title", type: "text", required: true, - defaultValue: "Continue", + defaultValue: + "AI Web Crawlers are automated programs, that systematically browse the internet, indexing content for search engines and retrieving data from web pages. The information they gather can be used to train different models. You might want to block them if you're concerned about attribution or how your creative work could be used in the resulting AI model", }, + ], + }, + { + name: "searchEngineCrawlers", + type: "group", + fields: [ { - name: "back", + name: "label", type: "text", required: true, - defaultValue: "Back", + defaultValue: "Search Engine Crawlers", }, { - name: "reset", + name: "title", type: "text", required: true, - defaultValue: "Reset", + defaultValue: + "Search engine crawlers are used to index web content for search engines. Blocking them could prevent your website from being discovered by users.", }, + ], + }, + ], +}; + +const SiteMaps: Block = { + slug: "site-maps", + labels: { singular: "Site Maps", plural: "Site Maps" }, + fields: [ + { + name: "title", + type: "text", + required: true, + defaultValue: "Site Maps", + }, + richText({ + name: "hint", + defaultValue: [ { - name: "download", - type: "text", - required: true, - defaultValue: "Download", + text: "You can add sitemap URLs to your robots.txt file.", + children: null, }, + ], + }) as unknown as Field, + { + name: "placeholder", + type: "text", + required: true, + defaultValue: "Enter sitemap URLs each URL on a new line", + }, + ], +}; + +const Finish: Block = { + slug: "finish", + labels: { singular: "Finish", plural: "Finish" }, + fields: [ + { + name: "title", + type: "text", + required: true, + defaultValue: "Finish", + }, + richText({ + name: "hint", + defaultValue: [ { - name: "copyToClipboard", - type: "text", - required: true, - defaultValue: "Copy to Clipboard", + children: null, + text: "Your robots.txt file has been generated successfully. You can now copy the code or download the file.", }, ], + }) as unknown as Field, + { + name: "placeholder", + type: "text", + required: true, + defaultValue: + "# Disallow specifies the paths that are not allowed to be crawled by the robot.", }, ], }; -const RoboForm = { + +const Labels: Field = { + name: "labels", + label: "Labels", + type: "group", + fields: [ + { + name: "continue", + type: "text", + required: true, + defaultValue: "Continue", + }, + { + name: "back", + type: "text", + required: true, + defaultValue: "Back", + }, + { + name: "reset", + type: "text", + required: true, + defaultValue: "Reset", + }, + { + name: "download", + type: "text", + required: true, + defaultValue: "Download", + }, + { + name: "copyToClipboard", + type: "text", + required: true, + defaultValue: "Copy to Clipboard", + }, + ], +}; +const RoboForm: Block = { slug: "robo-form", labels: { singular: "Robo Form", plural: "Robo Form" }, - fields: [ExistingRobots, Delays, Paths, BlockBots, SiteMaps, Finish, Labels], + fields: [ + { + name: "toolTipText", + type: "text", + required: true, + defaultValue: "View current robots.txt file", + }, + { + type: "blocks", + name: "steps", + blocks: [ExistingRobots, Delays, Paths, BlockBots, SiteMaps, Finish], + admin: { + initCollapsed: true, + }, + }, + Labels, + ], }; export default RoboForm; diff --git a/apps/roboshield/src/types/stepComponent.ts b/apps/roboshield/src/types/stepComponent.ts index 88dc54ae1..bc76f71ab 100644 --- a/apps/roboshield/src/types/stepComponent.ts +++ b/apps/roboshield/src/types/stepComponent.ts @@ -8,4 +8,5 @@ export interface StepComponent { lastStep: boolean; labels?: { [key: string]: any }; globalLabels?: { [key: string]: any }; + toolTipText: string; } From 920c4138f880e04bb66ad20e8cd8592ea45db43d Mon Sep 17 00:00:00 2001 From: Kevin Koech Date: Fri, 28 Jun 2024 17:12:16 +0300 Subject: [PATCH 05/12] Fix failing build next --- apps/roboshield/src/components/CommonBots/CommonBots.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/roboshield/src/components/CommonBots/CommonBots.tsx b/apps/roboshield/src/components/CommonBots/CommonBots.tsx index ae7dc5564..fa2720c42 100644 --- a/apps/roboshield/src/components/CommonBots/CommonBots.tsx +++ b/apps/roboshield/src/components/CommonBots/CommonBots.tsx @@ -37,6 +37,7 @@ export default function CommonBots({ hint, lastStep, globalLabels, + toolTipText, }: StepComponent) { const { state } = useGlobalState(); @@ -84,7 +85,11 @@ export default function CommonBots({ return ( <> - + { From 5df1b3a6a6feaa57b66d46fe4d0882fe0413603c Mon Sep 17 00:00:00 2001 From: Clemence Kyara Date: Thu, 27 Jun 2024 12:56:04 +0300 Subject: [PATCH 06/12] Fix types --- .../src/components/Footer/Footer.tsx | 22 +++---- .../components/Footer/FooterDescription.tsx | 5 +- .../src/components/RichText/RichText.tsx | 57 +++++++++++++------ .../src/components/RichText/index.ts | 2 + 4 files changed, 58 insertions(+), 28 deletions(-) diff --git a/apps/roboshield/src/components/Footer/Footer.tsx b/apps/roboshield/src/components/Footer/Footer.tsx index 16409b546..b5ee76b4f 100644 --- a/apps/roboshield/src/components/Footer/Footer.tsx +++ b/apps/roboshield/src/components/Footer/Footer.tsx @@ -6,6 +6,7 @@ import { Theme, styled } from "@mui/material/styles"; import NewsletterSubscription from "@/roboshield/components/NewsletterSubscription"; import StayInTouch from "@/roboshield/components/StayInTouch"; import RichText from "@/roboshield/components/RichText"; +import type { Children } from "@/roboshield/components/RichText"; import FooterDescription from "./FooterDescription"; import { Partner } from "@/roboshield/lib/data/payload.types"; @@ -14,7 +15,7 @@ export interface FooterProps { links: { url: string; platform: string }[]; title: string; }; - description: string; + description: Children; logo: any; newsletter: { children: React.ReactNode; @@ -24,8 +25,8 @@ export interface FooterProps { }; initiative: { partners: Partner[]; - title: string; - description: string; + title: Children; + description: Children; }; } @@ -92,12 +93,13 @@ export default function Footer({ sx={{ height: "113px", mt: { xs: "52px", md: 0 } }} > {initiative?.title} - {initiative?.partners?.map((partner: any) => ( ({ a: { diff --git a/apps/roboshield/src/components/Footer/FooterDescription.tsx b/apps/roboshield/src/components/Footer/FooterDescription.tsx index 7b6752037..f2cc7a723 100644 --- a/apps/roboshield/src/components/Footer/FooterDescription.tsx +++ b/apps/roboshield/src/components/Footer/FooterDescription.tsx @@ -2,9 +2,10 @@ import { Figure, Link } from "@commons-ui/next"; import { Stack, Theme } from "@mui/material"; import React from "react"; import RichText from "@/roboshield/components/RichText"; +import type { Children } from "@/roboshield/components/RichText"; interface FooterDescriptionProps { - description: any; + description: Children; logo: any; sx?: any; } @@ -34,12 +35,12 @@ function FooterDescription({ description, logo, sx }: FooterDescriptionProps) { /> ({ a: { diff --git a/apps/roboshield/src/components/RichText/RichText.tsx b/apps/roboshield/src/components/RichText/RichText.tsx index 73f1907a5..5b9a792ca 100644 --- a/apps/roboshield/src/components/RichText/RichText.tsx +++ b/apps/roboshield/src/components/RichText/RichText.tsx @@ -1,21 +1,28 @@ /* eslint-disable react/no-array-index-key */ import { Link, RichTypography } from "@commons-ui/next"; import { Box } from "@mui/material"; +import type { BoxProps, TypographyProps } from "@mui/material"; import React, { Fragment, ReactNode, forwardRef } from "react"; -import { Node, Text } from "slate"; +import { Text } from "slate"; const DEFAULT_PROPS = { html: false, }; -interface NodeProps { - children?: Node[]; +// eslint-disable-next-line no-use-before-define +type Children = Leaf[]; + +interface Leaf { + children?: Children; type?: string; - href?: string; bold?: boolean; code?: boolean; + href?: string; italic?: boolean; + strikethrough?: boolean; text?: ReactNode; + underline?: boolean; + [key: string]: unknown; } interface SerializeProps { @@ -23,13 +30,17 @@ interface SerializeProps { [key: string]: any; } -const serialize = ( - children: NodeProps[] | undefined, +function serialize( + children: Children | undefined, props?: SerializeProps, -): ReactNode[] | null => - children?.map((node, i) => { +): ReactNode | null { + if (!children) { + return null; + } + return children.map((node, i) => { if (Text.isText(node)) { - let { text } = node; + let text = ; + // let { text } = node; if (node.bold) { text = {text}; } @@ -39,6 +50,20 @@ const serialize = ( if (node.italic) { text = {text}; } + if (node.underline) { + text = ( + + {text} + + ); + } + if (node.strikethrough) { + text = ( + + {text} + + ); + } return {text}; } @@ -105,18 +130,17 @@ const serialize = ( ); } - }) || null; + }); +} -interface RichTextProps { - elements: NodeProps[]; - variant?: string; +interface RichTextProps extends BoxProps { + elements?: Children; typographyProps?: SerializeProps; - [key: string]: any; } -const RichText = forwardRef( +const RichText = forwardRef( function RichText(props, ref) { - const { elements, variant, typographyProps, ...other } = props; + const { elements, typographyProps, ...other } = props; if (!elements?.length) { return null; @@ -129,4 +153,5 @@ const RichText = forwardRef( }, ); +export type { Children }; export default RichText; diff --git a/apps/roboshield/src/components/RichText/index.ts b/apps/roboshield/src/components/RichText/index.ts index 49b1d7e02..3455c3637 100644 --- a/apps/roboshield/src/components/RichText/index.ts +++ b/apps/roboshield/src/components/RichText/index.ts @@ -1,3 +1,5 @@ import RichText from "./RichText"; +import type { Children } from "./RichText"; +export type { Children }; export default RichText; From 63a999966609bcb9b4c63233fe012e616eafef74 Mon Sep 17 00:00:00 2001 From: Clemence Kyara Date: Thu, 27 Jun 2024 12:56:41 +0300 Subject: [PATCH 07/12] Update backward-compatible deps --- apps/charterafrica/package.json | 2 +- apps/codeforafrica/package.json | 2 +- apps/commons-ui-docs/package.json | 18 +- apps/pesayetu/package.json | 22 +- pnpm-lock.yaml | 1040 +++++++++++++---------------- 5 files changed, 488 insertions(+), 596 deletions(-) diff --git a/apps/charterafrica/package.json b/apps/charterafrica/package.json index 4c24d1111..c2fafcf80 100644 --- a/apps/charterafrica/package.json +++ b/apps/charterafrica/package.json @@ -69,7 +69,7 @@ "next": "^14.2.4", "next-seo": "^6.5.0", "nodemailer-sendgrid": "^1.0.3", - "payload": "^2.22.1", + "payload": "^2.22.2", "prop-types": "^15.8.1", "qs": "^6.12.1", "react": "^18.3.1", diff --git a/apps/codeforafrica/package.json b/apps/codeforafrica/package.json index bd19f3dde..5fe9ef343 100644 --- a/apps/codeforafrica/package.json +++ b/apps/codeforafrica/package.json @@ -63,7 +63,7 @@ "next": "^14.2.4", "next-seo": "^6.5.0", "nodemailer-sendgrid": "^1.0.3", - "payload": "^2.22.1", + "payload": "^2.22.2", "prop-types": "^15.8.1", "qs": "^6.12.1", "react": "^18.3.1", diff --git a/apps/commons-ui-docs/package.json b/apps/commons-ui-docs/package.json index 8c8378226..aa569cb72 100644 --- a/apps/commons-ui-docs/package.json +++ b/apps/commons-ui-docs/package.json @@ -46,14 +46,14 @@ "devDependencies": { "@babel/core": "^7.24.7", "@babel/preset-react": "^7.24.7", - "@storybook/addon-essentials": "^8.1.10", - "@storybook/addon-interactions": "^8.1.10", - "@storybook/addon-links": "^8.1.10", - "@storybook/blocks": "^8.1.10", - "@storybook/cli": "^8.1.10", - "@storybook/nextjs": "^8.1.10", - "@storybook/react": "^8.1.10", - "@storybook/test": "^8.1.10", + "@storybook/addon-essentials": "^8.1.11", + "@storybook/addon-interactions": "^8.1.11", + "@storybook/addon-links": "^8.1.11", + "@storybook/blocks": "^8.1.11", + "@storybook/cli": "^8.1.11", + "@storybook/nextjs": "^8.1.11", + "@storybook/react": "^8.1.11", + "@storybook/test": "^8.1.11", "@types/node": "^20.14.9", "@types/react": "^18.3.3", "eslint": "^8.57.0", @@ -61,7 +61,7 @@ "eslint-import-resolver-webpack": "^0.13.8", "eslint-plugin-import": "^2.29.1", "prettier": "^3.3.2", - "storybook": "^8.1.10", + "storybook": "^8.1.11", "typescript": "^5.5.2", "webpack": "^5.92.1" }, diff --git a/apps/pesayetu/package.json b/apps/pesayetu/package.json index c613474ef..db6b41b69 100644 --- a/apps/pesayetu/package.json +++ b/apps/pesayetu/package.json @@ -32,7 +32,7 @@ "clean": "rm -rf .next .turbo node_modules" }, "dependencies": { - "@apollo/client": "^3.10.6", + "@apollo/client": "^3.10.7", "@commons-ui/core": "^0.1.0", "@commons-ui/next": "workspace:*", "@emotion/react": "^11.11.4", @@ -42,7 +42,7 @@ "@mui/styles": "^5.15.20", "@mui/utils": "^5.15.20", "@reactour/tour": "^3.7.0", - "aws-sdk": "^2.1648.0", + "aws-sdk": "^2.1649.0", "clsx": "^2.1.1", "d3-format": "^3.1.0", "deepmerge": "^4.3.1", @@ -81,14 +81,14 @@ "@commons-ui/testing-library": "workspace:*", "@material-ui/codemod": "^4.5.1", "@playwright/test": "^1.45.0", - "@storybook/addon-essentials": "^8.1.10", - "@storybook/addon-interactions": "^8.1.10", - "@storybook/addon-links": "^8.1.10", - "@storybook/blocks": "^8.1.10", - "@storybook/cli": "^8.1.10", - "@storybook/nextjs": "^8.1.10", - "@storybook/react": "^8.1.10", - "@storybook/test": "^8.1.10", + "@storybook/addon-essentials": "^8.1.11", + "@storybook/addon-interactions": "^8.1.11", + "@storybook/addon-links": "^8.1.11", + "@storybook/blocks": "^8.1.11", + "@storybook/cli": "^8.1.11", + "@storybook/nextjs": "^8.1.11", + "@storybook/react": "^8.1.11", + "@storybook/test": "^8.1.11", "@svgr/webpack": "^8.1.0", "@types/node": "^20.14.9", "@types/react": "^18.3.3", @@ -114,7 +114,7 @@ "playwright-config-commons-ui": "workspace:*", "prettier": "^3.3.2", "react-test-renderer": "^18.3.1", - "storybook": "^8.1.10", + "storybook": "^8.1.11", "svg-url-loader": "^8.0.0", "typescript": "^5.5.2" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index df5efe65f..e6d590e74 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -94,25 +94,25 @@ importers: version: 0.84.0(prop-types@15.8.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@payloadcms/bundler-webpack': specifier: ^1.0.7 - version: 1.0.7(@swc/core@1.6.5(@swc/helpers@0.5.5))(ajv@8.16.0)(payload@2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)))(sass@1.69.4) + version: 1.0.7(@swc/core@1.6.5(@swc/helpers@0.5.5))(ajv@8.16.0)(payload@2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)))(sass@1.69.4) '@payloadcms/db-mongodb': specifier: ^1.5.2 - version: 1.5.2(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))(payload@2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0))) + version: 1.5.2(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))(payload@2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0))) '@payloadcms/plugin-cloud-storage': specifier: ^1.1.3 - version: 1.1.3(@aws-sdk/client-s3@3.600.0)(@aws-sdk/lib-storage@3.600.0(@aws-sdk/client-s3@3.600.0))(payload@2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0))) + version: 1.1.3(@aws-sdk/client-s3@3.600.0)(@aws-sdk/lib-storage@3.600.0(@aws-sdk/client-s3@3.600.0))(payload@2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0))) '@payloadcms/plugin-nested-docs': specifier: ^1.0.12 - version: 1.0.12(payload@2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0))) + version: 1.0.12(payload@2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0))) '@payloadcms/plugin-sentry': specifier: ^0.0.6 - version: 0.0.6(payload@2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)))(react@18.3.1) + version: 0.0.6(payload@2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)))(react@18.3.1) '@payloadcms/plugin-seo': specifier: ^2.3.2 - version: 2.3.2(payload@2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)))(react@18.3.1) + version: 2.3.2(payload@2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)))(react@18.3.1) '@payloadcms/richtext-slate': specifier: ^1.5.2 - version: 1.5.2(payload@2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.5.2(payload@2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-spring/web': specifier: ^9.7.3 version: 9.7.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -147,8 +147,8 @@ importers: specifier: ^1.0.3 version: 1.0.3 payload: - specifier: ^2.22.1 - version: 2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)) + specifier: ^2.22.2 + version: 2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)) prop-types: specifier: ^15.8.1 version: 15.8.1 @@ -305,25 +305,25 @@ importers: version: 14.2.4 '@payloadcms/bundler-webpack': specifier: ^1.0.7 - version: 1.0.7(@swc/core@1.6.5(@swc/helpers@0.5.5))(ajv@8.16.0)(payload@2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))))(sass@1.69.4) + version: 1.0.7(@swc/core@1.6.5(@swc/helpers@0.5.5))(ajv@8.16.0)(payload@2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))))(sass@1.69.4) '@payloadcms/db-mongodb': specifier: ^1.5.2 - version: 1.5.2(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))(payload@2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5)))) + version: 1.5.2(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))(payload@2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5)))) '@payloadcms/plugin-cloud-storage': specifier: ^1.1.3 - version: 1.1.3(@aws-sdk/client-s3@3.600.0)(@aws-sdk/lib-storage@3.600.0(@aws-sdk/client-s3@3.600.0))(payload@2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5)))) + version: 1.1.3(@aws-sdk/client-s3@3.600.0)(@aws-sdk/lib-storage@3.600.0(@aws-sdk/client-s3@3.600.0))(payload@2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5)))) '@payloadcms/plugin-nested-docs': specifier: ^1.0.12 - version: 1.0.12(payload@2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5)))) + version: 1.0.12(payload@2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5)))) '@payloadcms/plugin-sentry': specifier: ^0.0.6 - version: 0.0.6(payload@2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))))(react@18.3.1) + version: 0.0.6(payload@2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))))(react@18.3.1) '@payloadcms/plugin-seo': specifier: ^2.3.2 - version: 2.3.2(payload@2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))))(react@18.3.1) + version: 2.3.2(payload@2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))))(react@18.3.1) '@payloadcms/richtext-slate': specifier: ^1.5.2 - version: 1.5.2(payload@2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.5.2(payload@2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@sentry/nextjs': specifier: ^8.12.0 version: 8.12.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.25.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.25.1)(encoding@0.1.13)(next@14.2.4(@babel/core@7.24.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.45.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.69.4))(react@18.3.1)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))) @@ -358,8 +358,8 @@ importers: specifier: ^1.0.3 version: 1.0.3 payload: - specifier: ^2.22.1 - version: 2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))) + specifier: ^2.22.2 + version: 2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))) prop-types: specifier: ^15.8.1 version: 15.8.1 @@ -507,29 +507,29 @@ importers: specifier: ^7.24.7 version: 7.24.7(@babel/core@7.24.7) '@storybook/addon-essentials': - specifier: ^8.1.10 - version: 8.1.10(@types/react-dom@18.3.0)(@types/react@18.3.3)(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^8.1.11 + version: 8.1.11(@types/react-dom@18.3.0)(@types/react@18.3.3)(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/addon-interactions': - specifier: ^8.1.10 - version: 8.1.10(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9)) + specifier: ^8.1.11 + version: 8.1.11(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9)) '@storybook/addon-links': - specifier: ^8.1.10 - version: 8.1.10(react@18.3.1) + specifier: ^8.1.11 + version: 8.1.11(react@18.3.1) '@storybook/blocks': - specifier: ^8.1.10 - version: 8.1.10(@types/react-dom@18.3.0)(@types/react@18.3.3)(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^8.1.11 + version: 8.1.11(@types/react-dom@18.3.0)(@types/react@18.3.3)(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/cli': - specifier: ^8.1.10 - version: 8.1.10(@babel/preset-env@7.24.7(@babel/core@7.24.7))(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^8.1.11 + version: 8.1.11(@babel/preset-env@7.24.7(@babel/core@7.24.7))(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/nextjs': - specifier: ^8.1.10 - version: 8.1.10(@jest/globals@29.7.0)(@types/jest@29.5.12)(encoding@0.1.13)(esbuild@0.20.2)(jest@29.7.0(@types/node@20.14.9))(next@14.2.4(@babel/core@7.24.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.45.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.69.4))(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.69.4)(type-fest@4.20.1)(typescript@5.5.2)(webpack-hot-middleware@2.26.1)(webpack@5.92.1(esbuild@0.20.2)) + specifier: ^8.1.11 + version: 8.1.11(@jest/globals@29.7.0)(@types/jest@29.5.12)(encoding@0.1.13)(esbuild@0.20.2)(jest@29.7.0(@types/node@20.14.9))(next@14.2.4(@babel/core@7.24.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.45.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.69.4))(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.69.4)(type-fest@4.20.1)(typescript@5.5.2)(webpack-hot-middleware@2.26.1)(webpack@5.92.1(esbuild@0.20.2)) '@storybook/react': - specifier: ^8.1.10 - version: 8.1.10(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.2) + specifier: ^8.1.11 + version: 8.1.11(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.2) '@storybook/test': - specifier: ^8.1.10 - version: 8.1.10(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9)) + specifier: ^8.1.11 + version: 8.1.11(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9)) '@types/node': specifier: ^20.14.9 version: 20.14.9 @@ -552,8 +552,8 @@ importers: specifier: ^3.3.2 version: 3.3.2 storybook: - specifier: ^8.1.10 - version: 8.1.10(@babel/preset-env@7.24.7(@babel/core@7.24.7))(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^8.1.11 + version: 8.1.11(@babel/preset-env@7.24.7(@babel/core@7.24.7))(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) typescript: specifier: ^5.5.2 version: 5.5.2 @@ -564,8 +564,8 @@ importers: apps/pesayetu: dependencies: '@apollo/client': - specifier: ^3.10.6 - version: 3.10.6(@types/react@18.3.3)(graphql@15.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^3.10.7 + version: 3.10.7(@types/react@18.3.3)(graphql@15.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@commons-ui/core': specifier: ^0.1.0 version: 0.1.0(@mui/material@5.15.20(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/styles@5.15.20(@types/react@18.3.3)(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(simplebar-react@3.2.6(react@18.3.1)) @@ -594,8 +594,8 @@ importers: specifier: ^3.7.0 version: 3.7.0(react@18.3.1) aws-sdk: - specifier: ^2.1648.0 - version: 2.1648.0 + specifier: ^2.1649.0 + version: 2.1649.0 clsx: specifier: ^2.1.1 version: 2.1.1 @@ -706,29 +706,29 @@ importers: specifier: ^1.45.0 version: 1.45.0 '@storybook/addon-essentials': - specifier: ^8.1.10 - version: 8.1.10(@types/react-dom@18.3.0)(@types/react@18.3.3)(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^8.1.11 + version: 8.1.11(@types/react-dom@18.3.0)(@types/react@18.3.3)(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/addon-interactions': - specifier: ^8.1.10 - version: 8.1.10(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)) + specifier: ^8.1.11 + version: 8.1.11(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)) '@storybook/addon-links': - specifier: ^8.1.10 - version: 8.1.10(react@18.3.1) + specifier: ^8.1.11 + version: 8.1.11(react@18.3.1) '@storybook/blocks': - specifier: ^8.1.10 - version: 8.1.10(@types/react-dom@18.3.0)(@types/react@18.3.3)(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^8.1.11 + version: 8.1.11(@types/react-dom@18.3.0)(@types/react@18.3.3)(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/cli': - specifier: ^8.1.10 - version: 8.1.10(@babel/preset-env@7.24.7(@babel/core@7.24.7))(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^8.1.11 + version: 8.1.11(@babel/preset-env@7.24.7(@babel/core@7.24.7))(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/nextjs': - specifier: ^8.1.10 - version: 8.1.10(@jest/globals@29.7.0)(@types/jest@29.5.12)(babel-plugin-macros@3.1.0)(encoding@0.1.13)(jest@29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0))(next@14.2.4(@babel/core@7.24.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.45.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.69.4))(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.69.4)(type-fest@4.20.1)(typescript@5.5.2)(webpack-hot-middleware@2.26.1)(webpack@5.92.1) + specifier: ^8.1.11 + version: 8.1.11(@jest/globals@29.7.0)(@types/jest@29.5.12)(babel-plugin-macros@3.1.0)(encoding@0.1.13)(jest@29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0))(next@14.2.4(@babel/core@7.24.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.45.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.69.4))(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.69.4)(type-fest@4.20.1)(typescript@5.5.2)(webpack-hot-middleware@2.26.1)(webpack@5.92.1) '@storybook/react': - specifier: ^8.1.10 - version: 8.1.10(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.2) + specifier: ^8.1.11 + version: 8.1.11(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.2) '@storybook/test': - specifier: ^8.1.10 - version: 8.1.10(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)) + specifier: ^8.1.11 + version: 8.1.11(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)) '@svgr/webpack': specifier: ^8.1.0 version: 8.1.0(typescript@5.5.2) @@ -740,7 +740,7 @@ importers: version: 18.3.3 apollo-link-rest: specifier: ^0.9.0 - version: 0.9.0(@apollo/client@3.10.6(@types/react@18.3.3)(graphql@15.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(graphql@15.9.0)(qs@6.12.1) + version: 0.9.0(@apollo/client@3.10.7(@types/react@18.3.3)(graphql@15.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(graphql@15.9.0)(qs@6.12.1) babel-jest: specifier: ^29.7.0 version: 29.7.0(@babel/core@7.24.7) @@ -805,8 +805,8 @@ importers: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) storybook: - specifier: ^8.1.10 - version: 8.1.10(@babel/preset-env@7.24.7(@babel/core@7.24.7))(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^8.1.11 + version: 8.1.11(@babel/preset-env@7.24.7(@babel/core@7.24.7))(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) svg-url-loader: specifier: ^8.0.0 version: 8.0.0(webpack@5.92.1) @@ -1017,7 +1017,7 @@ importers: version: 1.0.7(@swc/core@1.6.1(@swc/helpers@0.5.5))(ajv@8.16.0)(payload@2.22.0(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.1(@swc/helpers@0.5.5))))(sass@1.69.4) '@payloadcms/db-mongodb': specifier: ^1.5.2 - version: 1.5.2(@aws-sdk/client-sso-oidc@3.600.0)(payload@2.22.0(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.1(@swc/helpers@0.5.5)))) + version: 1.5.2(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))(payload@2.22.0(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.1(@swc/helpers@0.5.5)))) '@payloadcms/plugin-cloud-storage': specifier: ^1.1.3 version: 1.1.3(@aws-sdk/client-s3@3.600.0)(@aws-sdk/lib-storage@3.600.0(@aws-sdk/client-s3@3.600.0))(payload@2.22.0(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.1(@swc/helpers@0.5.5)))) @@ -1466,7 +1466,7 @@ importers: version: 27.9.0(eslint@8.57.0)(jest@29.7.0)(typescript@5.5.2) eslint-plugin-jest-dom: specifier: ^5.4.0 - version: 5.4.0(@testing-library/dom@9.3.4)(eslint@8.57.0) + version: 5.4.0(@testing-library/dom@10.1.0)(eslint@8.57.0) eslint-plugin-json: specifier: ^3.1.0 version: 3.1.0 @@ -1590,8 +1590,8 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@apollo/client@3.10.6': - resolution: {integrity: sha512-3lLFGJtzC1/mEnK11BRf+Bf8536kBQUSB1G9yMtcRsxmY+tCKdTPzsP3fMUKy10BPIE0sDUY1pux3iMPIn2vow==} + '@apollo/client@3.10.7': + resolution: {integrity: sha512-IkJcmq5C2rwU94xaJ0N+wM9WgTATXspzVMh5C8dlfv9dzgK8/g3zye+DQn5E+mkRhwWZktaGwDPaPZMbDJvjrg==} peerDependencies: graphql: ^15.0.0 || ^16.0.0 graphql-ws: ^5.5.5 @@ -4598,49 +4598,49 @@ packages: resolution: {integrity: sha512-xT+Bbpe5sSrC7cCWSElOreDdWzqovR1V+7xrp+fmwGAA+TPYBb78iasaXjO1pa+65sY6JjW5GtGeIoJwCK9B1g==} engines: {node: '>=16.0.0'} - '@storybook/addon-actions@8.1.10': - resolution: {integrity: sha512-1MjncuynvkT3rJtrkWPHLo92Pfno+LUWtaHiNDt9nXYowclTN2cT4a4gNDh6eKkB9dITHxkD7/4mxjHpFUvyrA==} + '@storybook/addon-actions@8.1.11': + resolution: {integrity: sha512-jqYXgBgOVInStOCk//AA+dGkrfN8R7rDXA4lyu82zM59kvICtG9iqgmkSRDn0Z3zUkM+lIHZGoz0aLVQ8pxsgw==} - '@storybook/addon-backgrounds@8.1.10': - resolution: {integrity: sha512-nX9Hmcq5U/13S2ETcjGaLqfDcaSKTNPD3RBzWUoNQuZB/bB1q4qLLncQnQfaa6uruP9k6GIFZvtXeJAs9r0POw==} + '@storybook/addon-backgrounds@8.1.11': + resolution: {integrity: sha512-naGf1ovmsU2pSWb270yRO1IidnO+0YCZ5Tcb8I4rPhZ0vsdXNURYKS1LPSk1OZkvaUXdeB4Im9HhHfUBJOW9oQ==} - '@storybook/addon-controls@8.1.10': - resolution: {integrity: sha512-98uLezKv6W/1byJL+Zri5kA1Cfi+DUBsbdjz7fFJl8xMtAGwuv9cnOueQl0ouDhqqwnZ4LWHYQsSsPPMz1Lmkg==} + '@storybook/addon-controls@8.1.11': + resolution: {integrity: sha512-q/Vt4meNVlFlBWIMCJhx6r+bqiiYocCta2RoUK5nyIZUiLzHncKHX6JnCU36EmJzRyah9zkwjfCb2G1r9cjnoQ==} - '@storybook/addon-docs@8.1.10': - resolution: {integrity: sha512-jzmIeCoykiHg/KLPrYEDtXO/+dcQaEOqyJHS77eTzAO2iSXJlE+yva5Uwc8apG7UxDVa4Ycc1lPwMzB5GaHsGQ==} + '@storybook/addon-docs@8.1.11': + resolution: {integrity: sha512-69dv+CE4R5wFU7xnJmhuyEbLN2PEVDV3N/BbgJqeucIYPmm6zDV83Q66teCHKYtRln3BFUqPH5mxsjiHobxfJQ==} - '@storybook/addon-essentials@8.1.10': - resolution: {integrity: sha512-xgAXdl/MaKWmwqJJpw4z1YaD1V/r74VHHLqY3Z4YaU9DmlApkCa+FmZSS9QVAf7g6JNUcD1Dbtw5j62uNn+YyA==} + '@storybook/addon-essentials@8.1.11': + resolution: {integrity: sha512-uRTpcIZQnflML8H+2onicUNIIssKfuviW8Lyrs/KFwSZ1rMcYzhwzCNbGlIbAv04tgHe5NqEyNhb+DVQcZQBzg==} - '@storybook/addon-highlight@8.1.10': - resolution: {integrity: sha512-s9QKGtU6WGB/+CggNWg940NIi+u0tcxpPxqg/ltg3EOHr8J0NAZur6mibs3Z4Q5CXkAuNdWrvopLu+/27i1rQQ==} + '@storybook/addon-highlight@8.1.11': + resolution: {integrity: sha512-Iu8FCAd4ETsB6QF4xDE/OLLZY3HOFopuLM5KE0f58jnccF5zAVGr1Rj/54p6TeK0PEou0tLRPFuZs+LPlEzrSw==} - '@storybook/addon-interactions@8.1.10': - resolution: {integrity: sha512-GGU66TxYv6Bis10mmlgMhLOyai1am1amKVvX7ML8XYfsi6lA9zCnfQSVXulYLfjfzyIR6Ld8Kxe5awvjucPxSw==} + '@storybook/addon-interactions@8.1.11': + resolution: {integrity: sha512-nkc01z61mYM1kxf0ncBQLlFnnwW4RAVPfRSxK9BdbFN3AAvFiHCwVZdn71mi+C3L8oTqYR6o32e0RlXk+AjhHA==} - '@storybook/addon-links@8.1.10': - resolution: {integrity: sha512-SxCuK7k7A0/qIPzV68u25qfye3Fb0PkC1izlRbt7u64wIUIxGzgfjM3dFRWK2VaJzCsEQWSmIdv7YHi7Wv5y3w==} + '@storybook/addon-links@8.1.11': + resolution: {integrity: sha512-HlV2RQSrZyi+55W1B1a9eWNuJdNpWx0g3j7s2arNlNmbd6/kfWAp84axBstI1tL0nW4svut7bWlCsMSOIden+A==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta peerDependenciesMeta: react: optional: true - '@storybook/addon-measure@8.1.10': - resolution: {integrity: sha512-akhdg3WBOBvDsolzSSvW4TIdZLMVlL9DS6rpZvhydXeX8pG0sjb+sON6VUL4h8Gs7qa8QumauXCr+Y4q1FhZhw==} + '@storybook/addon-measure@8.1.11': + resolution: {integrity: sha512-LkQD3SiLWaWt53aLB3EnmhD9Im8EOO+HKSUE+XGnIJRUcHHRqHfvDkN9KX7T1DCWbfRE5WzMHF5o23b3UiAANw==} - '@storybook/addon-outline@8.1.10': - resolution: {integrity: sha512-Edn5TWpV1DcumOjx0qG9bBKja6vz210ip7O47JbRDu7IDR8lguaM2X9xbmhXhBQq4fmqvobZmfRnrSeCtSYeyQ==} + '@storybook/addon-outline@8.1.11': + resolution: {integrity: sha512-vco3RLVjkcS25dNtj1lxmjq4fC0Nq08KNLMS5cbNPVJWNTuSUi/2EthSTQQCdpfMV/p6u+D5uF20A9Pl0xJFXw==} - '@storybook/addon-toolbars@8.1.10': - resolution: {integrity: sha512-5bRcCWrhaTX5Y91EWmHilPZ7kZaneaY414Gn5a6gsaNgaVPkSx9KD9j8M9DyXJ4yQNs265TiPWQqWrPB3Q2VgA==} + '@storybook/addon-toolbars@8.1.11': + resolution: {integrity: sha512-reIKB0+JTiP+GNzynlDcRf4xmv9+j/DQ94qiXl2ZG5+ufKilH8DiRZpVA/i0x+4+TxdGdOJr1/pOf8tAmhNEoQ==} - '@storybook/addon-viewport@8.1.10': - resolution: {integrity: sha512-rJpyAwTVQa+6yqjdMDeqNKoW5aPoSzBAtMywtNMP5lHwF6NpJUvm67c/ox0//d5dPPPjlJDz2QC2COWqjviQyw==} + '@storybook/addon-viewport@8.1.11': + resolution: {integrity: sha512-qk4IcGnAgiAUQxt8l5PIQ293Za+w6wxlJQIpxr7+QM8OVkADPzXY0MmQfYWU9EQplrxAC2MSx3/C1gZeq+MDOQ==} - '@storybook/blocks@8.1.10': - resolution: {integrity: sha512-8ZGgLIUBdSafcyaKR5Zs0CFisFCPoxZBVt3GMUCZtN+G17YhEg4+OnZs5aMZknfnh28BUnZS2STjWTGStAE5Rw==} + '@storybook/blocks@8.1.11': + resolution: {integrity: sha512-eMed7PpL/hAVM6tBS7h70bEAyzbiSU9I/kye4jZ7DkCbAsrX6OKmC7pcHSDn712WTcf3vVqxy5jOKUmOXpc0eg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta @@ -4650,58 +4650,58 @@ packages: react-dom: optional: true - '@storybook/builder-manager@8.1.10': - resolution: {integrity: sha512-dhg54zpaglR9XKNAiwMqm5/IONMCEG/hO/iTfNHJI1rAGeWhvM71cmhF+VlKUcjpTlIfHe7J19+TL+sWQJNgtg==} + '@storybook/builder-manager@8.1.11': + resolution: {integrity: sha512-U7bmed4Ayg+OlJ8HPmLeGxLTHzDY7rxmxM4aAs4YL01fufYfBcjkIP9kFhJm+GJOvGm+YJEUAPe5mbM1P/bn0Q==} - '@storybook/builder-webpack5@8.1.10': - resolution: {integrity: sha512-Ume7NN9s7JYAKkVsbw1rDE/T40E4TnUpVvE0wPtSlAwcVh3IJ62MdbLyOmULhVTliKtKlQpxTTAedXtFCLUxiw==} + '@storybook/builder-webpack5@8.1.11': + resolution: {integrity: sha512-3/aKmnZu+mHj5LB4VyvzrlHzn2iVjH5y8EUPtFYOkjc2KBkPpF39jBHecfDVCWeO/6kgvAI41t7LLnYB6DZqhw==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true - '@storybook/channels@8.1.10': - resolution: {integrity: sha512-CxZE4XrQoe+F+S2mo8Z9HTvFZKfKHIIiwYfoXKCryVp2U/z7ZKrely2PbfxWsrQvF3H0+oegfYYhYRHRiM21Zw==} + '@storybook/channels@8.1.11': + resolution: {integrity: sha512-fu5FTqo6duOqtJFa6gFzKbiSLJoia+8Tibn3xFfB6BeifWrH81hc+AZq0lTmHo5qax2G5t8ZN8JooHjMw6k2RA==} - '@storybook/cli@8.1.10': - resolution: {integrity: sha512-7Fm2Qgk33sHayZ0QABqwe1Jto4yyVRVW6kTrSeP5IuLh+mn244RgxBvWtGCyL1EcWDFI7PYUFa0HxgTCq7C+OA==} + '@storybook/cli@8.1.11': + resolution: {integrity: sha512-4U48w9C7mVEKrykcPcfHwJkRyCqJ28XipbElACbjIIkQEqaHaOVtP3GeKIrgkoOXe/HK3O4zKWRP2SqlVS0r4A==} hasBin: true - '@storybook/client-logger@8.1.10': - resolution: {integrity: sha512-sVXCOo7jnlCgRPOcMlQGODAEt6ipPj+8xGkRUws0kie77qiDld1drLSB6R380dWc9lUrbv9E1GpxCd/Y4ZzSJQ==} + '@storybook/client-logger@8.1.11': + resolution: {integrity: sha512-DVMh2usz3yYmlqCLCiCKy5fT8/UR9aTh+gSqwyNFkGZrIM4otC5A8eMXajXifzotQLT5SaOEnM3WzHwmpvMIEA==} - '@storybook/codemod@8.1.10': - resolution: {integrity: sha512-HZ/vrseP/sHfbO2RZpImP5eeqOakJ0X31BIiD4uxDBIKGltMXhlPKHTI93O2YGR+vbB33otoTVRjE+ZpPmC6SA==} + '@storybook/codemod@8.1.11': + resolution: {integrity: sha512-/LCozjH1IQ1TOs9UQV59BE0X6UZ9q+C0NEUz7qmJZPrwAii3FkW4l7D/fwxblpMExaoxv0oE8NQfUz49U/5Ymg==} - '@storybook/components@8.1.10': - resolution: {integrity: sha512-fL2odC3Ct3NiFJEiGLmMNB3Tw3CdUDA/+va3Ka/JEhjaRhbsND2JgriHYmED8SnX9CCqwXoxl5QA8qwl+Oyolw==} + '@storybook/components@8.1.11': + resolution: {integrity: sha512-iXKsNu7VmrLBtjMfPj7S4yJ6T13GU6joKcVcrcw8wfrQJGlPFp4YaURPBUEDxvCt1XWi5JkaqJBvb48kIrROEQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - '@storybook/core-common@8.1.10': - resolution: {integrity: sha512-+0GhgDRQwUlXu1lY77NdLnVBVycCEW0DG7eu7rvLYYkTyNRxbdl2RWsQpjr/j4sxqT6u82l9/b+RWpmsl4MgMQ==} + '@storybook/core-common@8.1.11': + resolution: {integrity: sha512-Ix0nplD4I4DrV2t9B+62jaw1baKES9UbR/Jz9LVKFF9nsua3ON0aVe73dOjMxFWBngpzBYWe+zYBTZ7aQtDH4Q==} peerDependencies: prettier: ^2 || ^3 peerDependenciesMeta: prettier: optional: true - '@storybook/core-events@8.1.10': - resolution: {integrity: sha512-aS4zsBVyJds74+rAW0IfTEjULDCQwXecVpQfv11B8/89/07s3bOPssGGoTtCTaN4pHbduywE6MxbmFvTmXOFCA==} + '@storybook/core-events@8.1.11': + resolution: {integrity: sha512-vXaNe2KEW9BGlLrg0lzmf5cJ0xt+suPjWmEODH5JqBbrdZ67X6ApA2nb6WcxDQhykesWCuFN5gp1l+JuDOBi7A==} - '@storybook/core-server@8.1.10': - resolution: {integrity: sha512-jNL5/daNyo7Rcu+y/bOmSB1P65pmcaLwvpr31EUEIISaAqvgruaneS3GKHg2TR0wcxEoHaM4abqhW6iwkI/XYQ==} + '@storybook/core-server@8.1.11': + resolution: {integrity: sha512-L6dzQTmR0np/kagNONvvlm6lSvF1FNc9js3vxsEEPnEypLbhx8bDZaHmuhmBpYUzKyUMpRVQTE/WgjHLuBBuxA==} - '@storybook/core-webpack@8.1.10': - resolution: {integrity: sha512-5CPiGtOyomHYFlH7nhjZtWLQ+EVMf2dG8vsqBfjSVddfspgEA8wKj4Oqal1Juj8Uop2ZdyzlcrFwOgXuwqxgCA==} + '@storybook/core-webpack@8.1.11': + resolution: {integrity: sha512-UQY+t0BDb408OuxW6jQN1ghXcejZlFNgprgvuKlhY3MSv1XwmjrxBDwnLDat4QfBJHFbjdn4eR7pSBzrfE6tKA==} - '@storybook/csf-plugin@8.1.10': - resolution: {integrity: sha512-EwW9Olw85nKamUH/2YrkD+bxDvDP4TJ2MqS1qR3UU+lBP/HMQA2zFAgiW1TUmmdHmhAeiDOXbDhijxMa30sppQ==} + '@storybook/csf-plugin@8.1.11': + resolution: {integrity: sha512-hkA8gjFtSN/tabG0cuvmEqanMXtxPr3qTkp4UNSt1R6jBEgFHRG2y/KYLl367kDwOSFTT987ZgRfJJruU66Fvw==} - '@storybook/csf-tools@8.1.10': - resolution: {integrity: sha512-bm/J1jAJf1YaKhcXgOlsNN02sf8XvILXuVAvr9cFC3aFkxVoGbC2AKCss4cgXAd8EQxUNtyETkOcheB5mJ5IlA==} + '@storybook/csf-tools@8.1.11': + resolution: {integrity: sha512-6qMWAg/dBwCVIHzANM9lSHoirwqSS+wWmv+NwAs0t9S94M75IttHYxD3IyzwaSYCC5llp0EQFvtXXAuSfFbibg==} '@storybook/csf@0.1.9': resolution: {integrity: sha512-JlZ6v/iFn+iKohKGpYXnMeNeTiiAMeFoDhYnPLIC8GnyyIWqEI9wJYrOK9i9rxlJ8NZAH/ojGC/u/xVC41qSgQ==} @@ -4709,8 +4709,8 @@ packages: '@storybook/docs-mdx@3.1.0-next.0': resolution: {integrity: sha512-t4syFIeSyufieNovZbLruPt2DmRKpbwL4fERCZ1MifWDRIORCKLc4NCEHy+IqvIqd71/SJV2k4B51nF7vlJfmQ==} - '@storybook/docs-tools@8.1.10': - resolution: {integrity: sha512-FsO/+L9CrUfAIbm9cdH9UpjTusT7L5RZxN4WCXkiF5SpAVyBoY8kar3RzTZVoh4aQxt1yGWYC+SZGjgf++xa4g==} + '@storybook/docs-tools@8.1.11': + resolution: {integrity: sha512-mEXtR9rS7Y+OdKtT/QG6JBGYR1L41mcDhIqhnk7RmYl9qJstVAegrCKWR53sPKFdTVOHU7dmu6k+BD+TqHpyyw==} '@storybook/global@5.0.0': resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} @@ -4722,17 +4722,17 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - '@storybook/instrumenter@8.1.10': - resolution: {integrity: sha512-/TZ3JpTCorbhThCfaR5k4Vs0Svp6xz6t+FVaim/v7N9VErEfmtn+d76CqYLfvmo68DzkEzvArOFBdh2MXtscsw==} + '@storybook/instrumenter@8.1.11': + resolution: {integrity: sha512-r/U9hcqnodNMHuzRt1g56mWrVsDazR85Djz64M3KOwBhrTj5d46DF4/EE80w/5zR5JOrT7p8WmjJRowiVteOCQ==} - '@storybook/manager-api@8.1.10': - resolution: {integrity: sha512-9aZ+zoNrTo1BJskVmCKE/yqlBXmWaKVZh1W/+/xu3WL9wdm/tBlozRvQwegIZlRVvUOxtjOg28Vd2hySYL58zg==} + '@storybook/manager-api@8.1.11': + resolution: {integrity: sha512-QSgwKfAw01K9YvvZj30iGBMgQ4YaCT3vojmttuqdH5ukyXkiO7pENLJj4Y+alwUeSi0g+SJeadCI3PXySBHOGg==} - '@storybook/manager@8.1.10': - resolution: {integrity: sha512-dQmRBfT4CABIPhv0kL25qKcQk2SiU5mIZ1DuVzckIbZW+iYEOAusyJ/0HExM9leCrymaW3BgZGlHbIXL7EvZtw==} + '@storybook/manager@8.1.11': + resolution: {integrity: sha512-e02y9dmxowo7cTKYm9am7UO6NOHoHy6Xi7xZf/UA932qLwFZUtk5pnwIEFaZWI3OQsRUCGhP+FL5zizU7uVZeg==} - '@storybook/nextjs@8.1.10': - resolution: {integrity: sha512-0crOEEXjicj5QRAknH1k3mrnmx+2yUVNmXHwMKb8Jkh4bBb9W+dYsMpTUmiTcL2p5zA0y8UMmM8lb5xF34eqdw==} + '@storybook/nextjs@8.1.11': + resolution: {integrity: sha512-pY83TdMn/TdIPFBV9k6H3Gn1wMQW9rJ3flWVBJcgAt346bJB8fEgHIGJ8XHMlQe2Zyg5B+Is0TsSrIs9VT/bCg==} engines: {node: '>=18.0.0'} peerDependencies: next: ^13.5.0 || ^14.0.0 @@ -4746,11 +4746,11 @@ packages: webpack: optional: true - '@storybook/node-logger@8.1.10': - resolution: {integrity: sha512-djgbAROgGAvz/gr49egBxCHn1+rui57e76qa9aOMPzEBcxsGrnnKKp0uNdiNt4M7Xv6S2QHbJ2SfOlHhWmMeaA==} + '@storybook/node-logger@8.1.11': + resolution: {integrity: sha512-wdzFo7B2naGhS52L3n1qBkt5BfvQjs8uax6B741yKRpiGgeAN8nz8+qelkD25MbSukxvbPgDot7WJvsMU/iCzg==} - '@storybook/preset-react-webpack@8.1.10': - resolution: {integrity: sha512-nnTU9UuFL7zfrNnsXrxiArxU3ZoVfYfHrRzmfPBgM9lDSZI7k0RCxoU3zlhWuQRGnYpXPtakDNBBT88FU/l5+g==} + '@storybook/preset-react-webpack@8.1.11': + resolution: {integrity: sha512-2a+1TyztCOlwZAcfBUinzjTpaqsWNrco9Vfq5ueJTmNl/EwtN33sxoAu2bBaUkka8MvPZl5a1VP1b5e2GXHFEQ==} engines: {node: '>=18.0.0'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta @@ -4760,11 +4760,11 @@ packages: typescript: optional: true - '@storybook/preview-api@8.1.10': - resolution: {integrity: sha512-0Gl8WHDtp/srrA5uBYXl7YbC8kFQA7IxVmwWN7dIS7HAXu63JZ6JfxaFcfy+kCBfZSBD7spFG4J0f5JXRDYbpg==} + '@storybook/preview-api@8.1.11': + resolution: {integrity: sha512-8ZChmFV56GKppCJ0hnBd/kNTfGn2gWVq1242kuet13pbJtBpvOhyq4W01e/Yo14tAPXvgz8dSnMvWLbJx4QfhQ==} - '@storybook/preview@8.1.10': - resolution: {integrity: sha512-Ch7SJQ8/vm4o7ZPwPeL3nGOCKx1Aul7VcvOVkDs+K2lZusJjUROHVTBYlbs71DTTmCo2gS7WhSq+HOpD59BPDg==} + '@storybook/preview@8.1.11': + resolution: {integrity: sha512-K/9NZmjnL0D1BROkTNWNoPqgL2UaocALRSqCARmkBLgU2Rn/FuZgEclHkWlYo6pUrmLNK+bZ+XzpNMu12iTbpg==} '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0': resolution: {integrity: sha512-KUqXC3oa9JuQ0kZJLBhVdS4lOneKTOopnNBK4tUAgoxWQ3u/IjzdueZjFr7gyBrXMoU6duutk3RQR9u8ZpYJ4Q==} @@ -4772,14 +4772,14 @@ packages: typescript: '>= 4.x' webpack: '>= 4' - '@storybook/react-dom-shim@8.1.10': - resolution: {integrity: sha512-+HS75Pq8jb3xkVq0hK33D84aGfbJCURRB+GN2vfTMmmjguQt7z2+MnGqRgrUCt6h2rxU3VdPg9OBnYi/UC0Zrg==} + '@storybook/react-dom-shim@8.1.11': + resolution: {integrity: sha512-KVDSuipqkFjpGfldoRM5xR/N1/RNmbr+sVXqMmelr0zV2jGnexEZnoa7wRHk7IuXuivLWe8BxMxzvQWqjIa4GA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - '@storybook/react@8.1.10': - resolution: {integrity: sha512-y0ycq19tTLLk+4rB+nfCPCtoFBWC0QvmMaJY32dbAjWPk+UNFGhWdqjg0oP1NwXYL18WnhRzlyz1Rojw0aXk1w==} + '@storybook/react@8.1.11': + resolution: {integrity: sha512-t+EYXOkgwg3ropLGS9y8gGvX5/Okffu/6JYL3YWksrBGAZSqVV4NkxCnVJZepS717SyhR0tN741gv/SxxFPJMg==} engines: {node: '>=18.0.0'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta @@ -4789,17 +4789,17 @@ packages: typescript: optional: true - '@storybook/router@8.1.10': - resolution: {integrity: sha512-JDEgZ0vVDx0GLz+dKD+R1xqWwjqsCdA2F+s3/si7upHqkFRWU5ocextZ63oKsRnCoaeUh6OavAU4EdkrKiQtQw==} + '@storybook/router@8.1.11': + resolution: {integrity: sha512-nU5lsBvy0L8wBYOkjagh29ztZicDATpZNYrHuavlhQ2jznmmHdJvXKYk+VrMAbthjQ6ZBqfeeMNPR1UlnqR5Rw==} - '@storybook/telemetry@8.1.10': - resolution: {integrity: sha512-pwiMWrq85D0AnaAgYNfB2w2BDgqnetQ+tXwsUAw4fUEFwA4oPU6r0uqekRbNNE6wmSSYjiiFP3JgknBFqjd2hg==} + '@storybook/telemetry@8.1.11': + resolution: {integrity: sha512-Jqvm7HcZismKzPuebhyLECO6KjGiSk4ycbca1WUM/TUvifxCXqgoUPlHHQEEfaRdHS63/MSqtMNjLsQRLC/vNQ==} - '@storybook/test@8.1.10': - resolution: {integrity: sha512-uskw/xb/GkGLRTEKPao/5xUKxjP1X3DnDpE52xDF46ZmTvM+gPQbkex97qdG6Mfv37/0lhVhufAsV3g5+CrYKQ==} + '@storybook/test@8.1.11': + resolution: {integrity: sha512-k+V3HemF2/I8fkRxRqM8uH8ULrpBSAAdBOtWSHWLvHguVcb2YA4g4kKo6tXBB9256QfyDW4ZiaAj0/9TMxmJPQ==} - '@storybook/theming@8.1.10': - resolution: {integrity: sha512-W7mth4hwdTqWLneqYCyUnIEiDg4vSokoad8HEodPz6JC9XUPUX3Yi2W4W3xFvqrW4Z5RXfuJ53iG2HN+0AgaQw==} + '@storybook/theming@8.1.11': + resolution: {integrity: sha512-Chn/opjO6Rl1isNobutYqAH2PjKNkj09YBw/8noomk6gElSa3JbUTyaG/+JCHA6OG/9kUsqoKDb5cZmAKNq/jA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta @@ -4809,8 +4809,8 @@ packages: react-dom: optional: true - '@storybook/types@8.1.10': - resolution: {integrity: sha512-UJ97iqI+0Mk13I6ayd3TaBfSFBkWnEauwTnFMQe1dN/L3wTh8laOBaLa0Vr3utRSnt2b5hpcw/nq7azB/Gx4Yw==} + '@storybook/types@8.1.11': + resolution: {integrity: sha512-k9N5iRuY2+t7lVRL6xeu6diNsxO3YI3lS4Juv3RZ2K4QsE/b3yG5ElfJB8DjHDSHwRH4ORyrU71KkOCUVfvtnw==} '@svgr/babel-plugin-add-jsx-attribute@8.0.0': resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} @@ -5043,10 +5043,35 @@ packages: '@swc/types@0.1.9': resolution: {integrity: sha512-qKnCno++jzcJ4lM4NTfYifm1EFSCeIfKiAHAfkENZAV5Kl9PjJIyd2yeeVv6c/2CckuLyv2NmRC5pv6pm2WQBg==} + '@testing-library/dom@10.1.0': + resolution: {integrity: sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA==} + engines: {node: '>=18'} + '@testing-library/dom@9.3.4': resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} engines: {node: '>=14'} + '@testing-library/jest-dom@6.4.5': + resolution: {integrity: sha512-AguB9yvTXmCnySBP1lWjfNNUwpbElsaQ567lt2VdGqAdHtpieLgjmcVyv1q7PMIvLbgpDdkWV5Ydv3FEejyp2A==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + peerDependencies: + '@jest/globals': '>= 28' + '@types/bun': latest + '@types/jest': '>= 28' + jest: '>= 28' + vitest: '>= 0.32' + peerDependenciesMeta: + '@jest/globals': + optional: true + '@types/bun': + optional: true + '@types/jest': + optional: true + jest: + optional: true + vitest: + optional: true + '@testing-library/jest-dom@6.4.6': resolution: {integrity: sha512-8qpnGVincVDLEcQXWaHOf6zmlbwTKc6Us6PPu4CRnPXCzo2OGBS5cwgMMOWdxDpEz1mkbvXHpEy99M5Yvt682w==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} @@ -5492,18 +5517,12 @@ packages: '@videojs/xhr@2.6.0': resolution: {integrity: sha512-7J361GiN1tXpm+gd0xz2QWr3xNWBE+rytvo8J3KuggFaLg+U37gZQ2BuPLcnkfGffy2e+ozY70RHC8jt7zjA6Q==} - '@vitest/expect@1.3.1': - resolution: {integrity: sha512-xofQFwIzfdmLLlHa6ag0dPV8YsnKOCP1KdAeVVh34vSjN2dcUiXYCD9htu/9eM7t8Xln4v03U9HLxLpPlsXdZw==} - - '@vitest/spy@1.3.1': - resolution: {integrity: sha512-xAcW+S099ylC9VLU7eZfdT9myV67Nor9w9zhf0mGCYJSO+zM2839tOeROTdikOi/8Qeusffvxb/MyBSOja1Uig==} + '@vitest/expect@1.6.0': + resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} '@vitest/spy@1.6.0': resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} - '@vitest/utils@1.3.1': - resolution: {integrity: sha512-d3Waie/299qqRyHTm2DjADeTaNdNSVsnwHPWrs20JMpjh6eiVq7ggggweO8rc4arhf6rRkWuHKwvxGvejUXZZQ==} - '@vitest/utils@1.6.0': resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} @@ -5924,8 +5943,8 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - aws-sdk@2.1648.0: - resolution: {integrity: sha512-E2QmoQVUBuKDCIZwn3u4DNrZHScKuEaJ8dUYquov1lhQtKVZDBgaQmcJ9/58sUbgupPpc6Q1F/eYLOgVyNSjRQ==} + aws-sdk@2.1649.0: + resolution: {integrity: sha512-iKwUomvBwzlrcX83PU60SW8KgLP+zNSQtl+lVnJkxRdbehS/p/wTdofby88TgMGDBHrWppreiaYC1fToB8Wznw==} engines: {node: '>= 10.0.0'} aws-sign2@0.7.0: @@ -6206,8 +6225,8 @@ packages: resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} engines: {node: '>=16'} - caniuse-lite@1.0.30001637: - resolution: {integrity: sha512-1x0qRI1mD1o9e+7mBI7XtzFAP4XszbHaVWsMiGbSPLYekKTJF7K+FNk6AsXH4sUpc+qrsI3pVgf1Jdl/uGkuSQ==} + caniuse-lite@1.0.30001638: + resolution: {integrity: sha512-5SuJUJ7cZnhPpeLHaH0c/HPAnAHZvS6ElWyHK9GSIbVOQABLzowiI2pjmpvZ1WEbkyz46iFd4UXlOHR5SqgfMQ==} case-sensitive-paths-webpack-plugin@2.4.0: resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} @@ -10101,8 +10120,8 @@ packages: engines: {node: '>=14'} hasBin: true - payload@2.22.1: - resolution: {integrity: sha512-8H9H7MGKpYxcQ+o/E2ne8hfPQHn6CRxvF/96USLHrTyv3vk+cDb0ly3hrj4ucRbNLbsyBp+ApXu3Sl0AF9UjGg==} + payload@2.22.2: + resolution: {integrity: sha512-0HD3WFGmEveFitU7IuspuTuSJEbSW5LdFVWfn/eObMhRUzUvF0o7wCYBGPfAM1TkFx1/V2HRwlsYhGVlXnvD+w==} engines: {node: '>=14'} hasBin: true @@ -11526,8 +11545,8 @@ packages: store2@2.14.3: resolution: {integrity: sha512-4QcZ+yx7nzEFiV4BMLnr/pRa5HYzNITX2ri0Zh6sT9EyQHbBHacC6YigllUPU9X3D0f/22QCgfokpKs52YRrUg==} - storybook@8.1.10: - resolution: {integrity: sha512-HHlZibyc/QkcQj8aEnYnYwEl+ItNZ/uRbCdkvJzu/vIWYon5jUg30mHFIGZprgLSt27CxOs30Et8yT9z4VhwjA==} + storybook@8.1.11: + resolution: {integrity: sha512-3KjIhF8lczXhKKHyHbOqV30dvuRYJSxc0d1as/C8kybuwE7cLaydhWGma7VBv5bTSPv0rDzucx7KcO+achArPg==} hasBin: true stream-browserify@3.0.0: @@ -12960,7 +12979,7 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@apollo/client@3.10.6(@types/react@18.3.3)(graphql@15.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@apollo/client@3.10.7(@types/react@18.3.3)(graphql@15.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@15.9.0) '@wry/caches': 1.0.1 @@ -13047,7 +13066,7 @@ snapshots: '@aws-sdk/client-sso-oidc': 3.600.0(@aws-sdk/client-sts@3.600.0) '@aws-sdk/client-sts': 3.600.0 '@aws-sdk/core': 3.598.0 - '@aws-sdk/credential-provider-node': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))(@aws-sdk/client-sts@3.600.0) + '@aws-sdk/credential-provider-node': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0)(@aws-sdk/client-sts@3.600.0) '@aws-sdk/middleware-host-header': 3.598.0 '@aws-sdk/middleware-logger': 3.598.0 '@aws-sdk/middleware-recursion-detection': 3.598.0 @@ -13095,7 +13114,7 @@ snapshots: '@aws-sdk/client-sso-oidc': 3.600.0(@aws-sdk/client-sts@3.600.0) '@aws-sdk/client-sts': 3.600.0 '@aws-sdk/core': 3.598.0 - '@aws-sdk/credential-provider-node': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))(@aws-sdk/client-sts@3.600.0) + '@aws-sdk/credential-provider-node': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0)(@aws-sdk/client-sts@3.600.0) '@aws-sdk/middleware-bucket-endpoint': 3.598.0 '@aws-sdk/middleware-expect-continue': 3.598.0 '@aws-sdk/middleware-flexible-checksums': 3.598.0 @@ -13156,7 +13175,7 @@ snapshots: '@aws-crypto/sha256-js': 5.2.0 '@aws-sdk/client-sts': 3.600.0 '@aws-sdk/core': 3.598.0 - '@aws-sdk/credential-provider-node': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))(@aws-sdk/client-sts@3.600.0) + '@aws-sdk/credential-provider-node': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0)(@aws-sdk/client-sts@3.600.0) '@aws-sdk/middleware-host-header': 3.598.0 '@aws-sdk/middleware-logger': 3.598.0 '@aws-sdk/middleware-recursion-detection': 3.598.0 @@ -13245,7 +13264,7 @@ snapshots: '@aws-crypto/sha256-js': 5.2.0 '@aws-sdk/client-sso-oidc': 3.600.0(@aws-sdk/client-sts@3.600.0) '@aws-sdk/core': 3.598.0 - '@aws-sdk/credential-provider-node': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))(@aws-sdk/client-sts@3.600.0) + '@aws-sdk/credential-provider-node': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0)(@aws-sdk/client-sts@3.600.0) '@aws-sdk/middleware-host-header': 3.598.0 '@aws-sdk/middleware-logger': 3.598.0 '@aws-sdk/middleware-recursion-detection': 3.598.0 @@ -13324,24 +13343,6 @@ snapshots: '@smithy/util-stream': 3.0.4 tslib: 2.6.3 - '@aws-sdk/credential-provider-ini@3.598.0(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))(@aws-sdk/client-sts@3.600.0)': - dependencies: - '@aws-sdk/client-sts': 3.600.0 - '@aws-sdk/credential-provider-env': 3.598.0 - '@aws-sdk/credential-provider-http': 3.598.0 - '@aws-sdk/credential-provider-process': 3.598.0 - '@aws-sdk/credential-provider-sso': 3.598.0(@aws-sdk/client-sso-oidc@3.600.0) - '@aws-sdk/credential-provider-web-identity': 3.598.0(@aws-sdk/client-sts@3.600.0) - '@aws-sdk/types': 3.598.0 - '@smithy/credential-provider-imds': 3.1.2 - '@smithy/property-provider': 3.1.2 - '@smithy/shared-ini-file-loader': 3.1.2 - '@smithy/types': 3.2.0 - tslib: 2.6.3 - transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - - aws-crt - '@aws-sdk/credential-provider-ini@3.598.0(@aws-sdk/client-sso-oidc@3.600.0)(@aws-sdk/client-sts@3.600.0)': dependencies: '@aws-sdk/client-sts': 3.600.0 @@ -13359,26 +13360,6 @@ snapshots: transitivePeerDependencies: - '@aws-sdk/client-sso-oidc' - aws-crt - optional: true - - '@aws-sdk/credential-provider-node@3.600.0(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))(@aws-sdk/client-sts@3.600.0)': - dependencies: - '@aws-sdk/credential-provider-env': 3.598.0 - '@aws-sdk/credential-provider-http': 3.598.0 - '@aws-sdk/credential-provider-ini': 3.598.0(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))(@aws-sdk/client-sts@3.600.0) - '@aws-sdk/credential-provider-process': 3.598.0 - '@aws-sdk/credential-provider-sso': 3.598.0(@aws-sdk/client-sso-oidc@3.600.0) - '@aws-sdk/credential-provider-web-identity': 3.598.0(@aws-sdk/client-sts@3.600.0) - '@aws-sdk/types': 3.598.0 - '@smithy/credential-provider-imds': 3.1.2 - '@smithy/property-provider': 3.1.2 - '@smithy/shared-ini-file-loader': 3.1.2 - '@smithy/types': 3.2.0 - tslib: 2.6.3 - transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - - '@aws-sdk/client-sts' - - aws-crt '@aws-sdk/credential-provider-node@3.600.0(@aws-sdk/client-sso-oidc@3.600.0)(@aws-sdk/client-sts@3.600.0)': dependencies: @@ -13398,7 +13379,6 @@ snapshots: - '@aws-sdk/client-sso-oidc' - '@aws-sdk/client-sts' - aws-crt - optional: true '@aws-sdk/credential-provider-process@3.598.0': dependencies: @@ -13430,29 +13410,6 @@ snapshots: tslib: 2.6.3 '@aws-sdk/credential-providers@3.600.0(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))': - dependencies: - '@aws-sdk/client-cognito-identity': 3.600.0 - '@aws-sdk/client-sso': 3.598.0 - '@aws-sdk/client-sts': 3.600.0 - '@aws-sdk/credential-provider-cognito-identity': 3.600.0 - '@aws-sdk/credential-provider-env': 3.598.0 - '@aws-sdk/credential-provider-http': 3.598.0 - '@aws-sdk/credential-provider-ini': 3.598.0(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))(@aws-sdk/client-sts@3.600.0) - '@aws-sdk/credential-provider-node': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))(@aws-sdk/client-sts@3.600.0) - '@aws-sdk/credential-provider-process': 3.598.0 - '@aws-sdk/credential-provider-sso': 3.598.0(@aws-sdk/client-sso-oidc@3.600.0) - '@aws-sdk/credential-provider-web-identity': 3.598.0(@aws-sdk/client-sts@3.600.0) - '@aws-sdk/types': 3.598.0 - '@smithy/credential-provider-imds': 3.1.2 - '@smithy/property-provider': 3.1.2 - '@smithy/types': 3.2.0 - tslib: 2.6.3 - transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - - aws-crt - optional: true - - '@aws-sdk/credential-providers@3.600.0(@aws-sdk/client-sso-oidc@3.600.0)': dependencies: '@aws-sdk/client-cognito-identity': 3.600.0 '@aws-sdk/client-sso': 3.598.0 @@ -16299,7 +16256,7 @@ snapshots: - utf-8-validate - webpack-dev-server - '@payloadcms/bundler-webpack@1.0.7(@swc/core@1.6.5(@swc/helpers@0.5.5))(ajv@8.16.0)(payload@2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)))(sass@1.69.4)': + '@payloadcms/bundler-webpack@1.0.7(@swc/core@1.6.5(@swc/helpers@0.5.5))(ajv@8.16.0)(payload@2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)))(sass@1.69.4)': dependencies: ajv: 8.16.0 compression: 1.7.4 @@ -16311,7 +16268,7 @@ snapshots: md5: 2.3.0 mini-css-extract-plugin: 1.6.2(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)) path-browserify: 1.0.1 - payload: 2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)) + payload: 2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)) postcss: 8.4.31 postcss-loader: 6.2.1(postcss@8.4.31)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)) postcss-preset-env: 9.0.0(postcss@8.4.31) @@ -16343,7 +16300,7 @@ snapshots: - utf-8-validate - webpack-dev-server - '@payloadcms/bundler-webpack@1.0.7(@swc/core@1.6.5(@swc/helpers@0.5.5))(ajv@8.16.0)(payload@2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))))(sass@1.69.4)': + '@payloadcms/bundler-webpack@1.0.7(@swc/core@1.6.5(@swc/helpers@0.5.5))(ajv@8.16.0)(payload@2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))))(sass@1.69.4)': dependencies: ajv: 8.16.0 compression: 1.7.4 @@ -16355,7 +16312,7 @@ snapshots: md5: 2.3.0 mini-css-extract-plugin: 1.6.2(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)) path-browserify: 1.0.1 - payload: 2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))) + payload: 2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))) postcss: 8.4.31 postcss-loader: 6.2.1(postcss@8.4.31)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)) postcss-preset-env: 9.0.0(postcss@8.4.31) @@ -16387,7 +16344,7 @@ snapshots: - utf-8-validate - webpack-dev-server - '@payloadcms/db-mongodb@1.5.2(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))(payload@2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)))': + '@payloadcms/db-mongodb@1.5.2(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))(payload@2.22.0(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.1(@swc/helpers@0.5.5))))': dependencies: bson-objectid: 2.0.4 deepmerge: 4.3.1 @@ -16396,7 +16353,7 @@ snapshots: mongoose: 6.12.3(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0)) mongoose-aggregate-paginate-v2: 1.0.6 mongoose-paginate-v2: 1.7.22 - payload: 2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)) + payload: 2.22.0(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.1(@swc/helpers@0.5.5))) prompts: 2.4.2 uuid: 9.0.0 transitivePeerDependencies: @@ -16404,7 +16361,7 @@ snapshots: - aws-crt - supports-color - '@payloadcms/db-mongodb@1.5.2(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))(payload@2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))))': + '@payloadcms/db-mongodb@1.5.2(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))(payload@2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)))': dependencies: bson-objectid: 2.0.4 deepmerge: 4.3.1 @@ -16413,7 +16370,7 @@ snapshots: mongoose: 6.12.3(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0)) mongoose-aggregate-paginate-v2: 1.0.6 mongoose-paginate-v2: 1.7.22 - payload: 2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))) + payload: 2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)) prompts: 2.4.2 uuid: 9.0.0 transitivePeerDependencies: @@ -16421,16 +16378,16 @@ snapshots: - aws-crt - supports-color - '@payloadcms/db-mongodb@1.5.2(@aws-sdk/client-sso-oidc@3.600.0)(payload@2.22.0(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.1(@swc/helpers@0.5.5))))': + '@payloadcms/db-mongodb@1.5.2(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0))(payload@2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))))': dependencies: bson-objectid: 2.0.4 deepmerge: 4.3.1 get-port: 5.1.1 http-status: 1.6.2 - mongoose: 6.12.3(@aws-sdk/client-sso-oidc@3.600.0) + mongoose: 6.12.3(@aws-sdk/client-sso-oidc@3.600.0(@aws-sdk/client-sts@3.600.0)) mongoose-aggregate-paginate-v2: 1.0.6 mongoose-paginate-v2: 1.7.22 - payload: 2.22.0(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.1(@swc/helpers@0.5.5))) + payload: 2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))) prompts: 2.4.2 uuid: 9.0.0 transitivePeerDependencies: @@ -16447,19 +16404,19 @@ snapshots: '@aws-sdk/client-s3': 3.600.0 '@aws-sdk/lib-storage': 3.600.0(@aws-sdk/client-s3@3.600.0) - '@payloadcms/plugin-cloud-storage@1.1.3(@aws-sdk/client-s3@3.600.0)(@aws-sdk/lib-storage@3.600.0(@aws-sdk/client-s3@3.600.0))(payload@2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)))': + '@payloadcms/plugin-cloud-storage@1.1.3(@aws-sdk/client-s3@3.600.0)(@aws-sdk/lib-storage@3.600.0(@aws-sdk/client-s3@3.600.0))(payload@2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)))': dependencies: find-node-modules: 2.1.3 - payload: 2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)) + payload: 2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)) range-parser: 1.2.1 optionalDependencies: '@aws-sdk/client-s3': 3.600.0 '@aws-sdk/lib-storage': 3.600.0(@aws-sdk/client-s3@3.600.0) - '@payloadcms/plugin-cloud-storage@1.1.3(@aws-sdk/client-s3@3.600.0)(@aws-sdk/lib-storage@3.600.0(@aws-sdk/client-s3@3.600.0))(payload@2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))))': + '@payloadcms/plugin-cloud-storage@1.1.3(@aws-sdk/client-s3@3.600.0)(@aws-sdk/lib-storage@3.600.0(@aws-sdk/client-s3@3.600.0))(payload@2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))))': dependencies: find-node-modules: 2.1.3 - payload: 2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))) + payload: 2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))) range-parser: 1.2.1 optionalDependencies: '@aws-sdk/client-s3': 3.600.0 @@ -16469,13 +16426,13 @@ snapshots: dependencies: payload: 2.22.0(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.1(@swc/helpers@0.5.5))) - '@payloadcms/plugin-nested-docs@1.0.12(payload@2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)))': + '@payloadcms/plugin-nested-docs@1.0.12(payload@2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)))': dependencies: - payload: 2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)) + payload: 2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)) - '@payloadcms/plugin-nested-docs@1.0.12(payload@2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))))': + '@payloadcms/plugin-nested-docs@1.0.12(payload@2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))))': dependencies: - payload: 2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))) + payload: 2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))) '@payloadcms/plugin-sentry@0.0.6(payload@2.22.0(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.1(@swc/helpers@0.5.5))))(react@18.3.1)': dependencies: @@ -16487,22 +16444,22 @@ snapshots: transitivePeerDependencies: - supports-color - '@payloadcms/plugin-sentry@0.0.6(payload@2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)))(react@18.3.1)': + '@payloadcms/plugin-sentry@0.0.6(payload@2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)))(react@18.3.1)': dependencies: '@sentry/node': 7.118.0 '@sentry/types': 7.118.0 express: 4.19.2 - payload: 2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)) + payload: 2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)) react: 18.3.1 transitivePeerDependencies: - supports-color - '@payloadcms/plugin-sentry@0.0.6(payload@2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))))(react@18.3.1)': + '@payloadcms/plugin-sentry@0.0.6(payload@2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))))(react@18.3.1)': dependencies: '@sentry/node': 7.118.0 '@sentry/types': 7.118.0 express: 4.19.2 - payload: 2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))) + payload: 2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))) react: 18.3.1 transitivePeerDependencies: - supports-color @@ -16512,14 +16469,14 @@ snapshots: payload: 2.22.0(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.1(@swc/helpers@0.5.5))) react: 18.3.1 - '@payloadcms/plugin-seo@2.3.2(payload@2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)))(react@18.3.1)': + '@payloadcms/plugin-seo@2.3.2(payload@2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)))(react@18.3.1)': dependencies: - payload: 2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)) + payload: 2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)) react: 18.3.1 - '@payloadcms/plugin-seo@2.3.2(payload@2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))))(react@18.3.1)': + '@payloadcms/plugin-seo@2.3.2(payload@2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))))(react@18.3.1)': dependencies: - payload: 2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))) + payload: 2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))) react: 18.3.1 '@payloadcms/richtext-slate@1.5.2(payload@2.22.0(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.1(@swc/helpers@0.5.5))))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': @@ -16538,12 +16495,12 @@ snapshots: - react-dom - react-native - '@payloadcms/richtext-slate@1.5.2(payload@2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@payloadcms/richtext-slate@1.5.2(payload@2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@faceless-ui/modal': 2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) i18next: 22.5.1 is-hotkey: 0.2.0 - payload: 2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)) + payload: 2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)) react: 18.3.1 react-i18next: 11.18.6(i18next@22.5.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) slate: 0.91.4 @@ -16554,12 +16511,12 @@ snapshots: - react-dom - react-native - '@payloadcms/richtext-slate@1.5.2(payload@2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@payloadcms/richtext-slate@1.5.2(payload@2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@faceless-ui/modal': 2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) i18next: 22.5.1 is-hotkey: 0.2.0 - payload: 2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))) + payload: 2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))) react: 18.3.1 react-i18next: 11.18.6(i18next@22.5.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) slate: 0.91.4 @@ -17572,24 +17529,24 @@ snapshots: '@smithy/types': 3.2.0 tslib: 2.6.3 - '@storybook/addon-actions@8.1.10': + '@storybook/addon-actions@8.1.11': dependencies: - '@storybook/core-events': 8.1.10 + '@storybook/core-events': 8.1.11 '@storybook/global': 5.0.0 '@types/uuid': 9.0.8 dequal: 2.0.3 polished: 4.3.1 uuid: 9.0.1 - '@storybook/addon-backgrounds@8.1.10': + '@storybook/addon-backgrounds@8.1.11': dependencies: '@storybook/global': 5.0.0 memoizerific: 1.11.3 ts-dedent: 2.2.0 - '@storybook/addon-controls@8.1.10(@types/react-dom@18.3.0)(@types/react@18.3.3)(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@storybook/addon-controls@8.1.11(@types/react-dom@18.3.0)(@types/react@18.3.3)(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@storybook/blocks': 8.1.10(@types/react-dom@18.3.0)(@types/react@18.3.3)(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/blocks': 8.1.11(@types/react-dom@18.3.0)(@types/react@18.3.3)(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) dequal: 2.0.3 lodash: 4.17.21 ts-dedent: 2.2.0 @@ -17602,21 +17559,21 @@ snapshots: - react-dom - supports-color - '@storybook/addon-docs@8.1.10(@types/react-dom@18.3.0)(encoding@0.1.13)(prettier@3.3.2)': + '@storybook/addon-docs@8.1.11(@types/react-dom@18.3.0)(encoding@0.1.13)(prettier@3.3.2)': dependencies: '@babel/core': 7.24.7 '@mdx-js/react': 3.0.1(@types/react@18.3.3)(react@18.3.1) - '@storybook/blocks': 8.1.10(@types/react-dom@18.3.0)(@types/react@18.3.3)(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/client-logger': 8.1.10 - '@storybook/components': 8.1.10(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/csf-plugin': 8.1.10 - '@storybook/csf-tools': 8.1.10 + '@storybook/blocks': 8.1.11(@types/react-dom@18.3.0)(@types/react@18.3.3)(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/client-logger': 8.1.11 + '@storybook/components': 8.1.11(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/csf-plugin': 8.1.11 + '@storybook/csf-tools': 8.1.11 '@storybook/global': 5.0.0 - '@storybook/node-logger': 8.1.10 - '@storybook/preview-api': 8.1.10 - '@storybook/react-dom-shim': 8.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/theming': 8.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/types': 8.1.10 + '@storybook/node-logger': 8.1.11 + '@storybook/preview-api': 8.1.11 + '@storybook/react-dom-shim': 8.1.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/theming': 8.1.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/types': 8.1.11 '@types/react': 18.3.3 fs-extra: 11.2.0 react: 18.3.1 @@ -17630,21 +17587,21 @@ snapshots: - prettier - supports-color - '@storybook/addon-essentials@8.1.10(@types/react-dom@18.3.0)(@types/react@18.3.3)(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@storybook/addon-actions': 8.1.10 - '@storybook/addon-backgrounds': 8.1.10 - '@storybook/addon-controls': 8.1.10(@types/react-dom@18.3.0)(@types/react@18.3.3)(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/addon-docs': 8.1.10(@types/react-dom@18.3.0)(encoding@0.1.13)(prettier@3.3.2) - '@storybook/addon-highlight': 8.1.10 - '@storybook/addon-measure': 8.1.10 - '@storybook/addon-outline': 8.1.10 - '@storybook/addon-toolbars': 8.1.10 - '@storybook/addon-viewport': 8.1.10 - '@storybook/core-common': 8.1.10(encoding@0.1.13)(prettier@3.3.2) - '@storybook/manager-api': 8.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/node-logger': 8.1.10 - '@storybook/preview-api': 8.1.10 + '@storybook/addon-essentials@8.1.11(@types/react-dom@18.3.0)(@types/react@18.3.3)(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@storybook/addon-actions': 8.1.11 + '@storybook/addon-backgrounds': 8.1.11 + '@storybook/addon-controls': 8.1.11(@types/react-dom@18.3.0)(@types/react@18.3.3)(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/addon-docs': 8.1.11(@types/react-dom@18.3.0)(encoding@0.1.13)(prettier@3.3.2) + '@storybook/addon-highlight': 8.1.11 + '@storybook/addon-measure': 8.1.11 + '@storybook/addon-outline': 8.1.11 + '@storybook/addon-toolbars': 8.1.11 + '@storybook/addon-viewport': 8.1.11 + '@storybook/core-common': 8.1.11(encoding@0.1.13)(prettier@3.3.2) + '@storybook/manager-api': 8.1.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/node-logger': 8.1.11 + '@storybook/preview-api': 8.1.11 ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' @@ -17655,16 +17612,16 @@ snapshots: - react-dom - supports-color - '@storybook/addon-highlight@8.1.10': + '@storybook/addon-highlight@8.1.11': dependencies: '@storybook/global': 5.0.0 - '@storybook/addon-interactions@8.1.10(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0))': + '@storybook/addon-interactions@8.1.11(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0))': dependencies: '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.1.10 - '@storybook/test': 8.1.10(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)) - '@storybook/types': 8.1.10 + '@storybook/instrumenter': 8.1.11 + '@storybook/test': 8.1.11(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)) + '@storybook/types': 8.1.11 polished: 4.3.1 ts-dedent: 2.2.0 transitivePeerDependencies: @@ -17674,12 +17631,12 @@ snapshots: - jest - vitest - '@storybook/addon-interactions@8.1.10(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9))': + '@storybook/addon-interactions@8.1.11(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9))': dependencies: '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.1.10 - '@storybook/test': 8.1.10(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9)) - '@storybook/types': 8.1.10 + '@storybook/instrumenter': 8.1.11 + '@storybook/test': 8.1.11(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9)) + '@storybook/types': 8.1.11 polished: 4.3.1 ts-dedent: 2.2.0 transitivePeerDependencies: @@ -17689,7 +17646,7 @@ snapshots: - jest - vitest - '@storybook/addon-links@8.1.10(react@18.3.1)': + '@storybook/addon-links@8.1.11(react@18.3.1)': dependencies: '@storybook/csf': 0.1.9 '@storybook/global': 5.0.0 @@ -17697,36 +17654,36 @@ snapshots: optionalDependencies: react: 18.3.1 - '@storybook/addon-measure@8.1.10': + '@storybook/addon-measure@8.1.11': dependencies: '@storybook/global': 5.0.0 tiny-invariant: 1.3.3 - '@storybook/addon-outline@8.1.10': + '@storybook/addon-outline@8.1.11': dependencies: '@storybook/global': 5.0.0 ts-dedent: 2.2.0 - '@storybook/addon-toolbars@8.1.10': {} + '@storybook/addon-toolbars@8.1.11': {} - '@storybook/addon-viewport@8.1.10': + '@storybook/addon-viewport@8.1.11': dependencies: memoizerific: 1.11.3 - '@storybook/blocks@8.1.10(@types/react-dom@18.3.0)(@types/react@18.3.3)(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@storybook/blocks@8.1.11(@types/react-dom@18.3.0)(@types/react@18.3.3)(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@storybook/channels': 8.1.10 - '@storybook/client-logger': 8.1.10 - '@storybook/components': 8.1.10(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/core-events': 8.1.10 + '@storybook/channels': 8.1.11 + '@storybook/client-logger': 8.1.11 + '@storybook/components': 8.1.11(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/core-events': 8.1.11 '@storybook/csf': 0.1.9 - '@storybook/docs-tools': 8.1.10(encoding@0.1.13)(prettier@3.3.2) + '@storybook/docs-tools': 8.1.11(encoding@0.1.13)(prettier@3.3.2) '@storybook/global': 5.0.0 '@storybook/icons': 1.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/manager-api': 8.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/preview-api': 8.1.10 - '@storybook/theming': 8.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/types': 8.1.10 + '@storybook/manager-api': 8.1.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/preview-api': 8.1.11 + '@storybook/theming': 8.1.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/types': 8.1.11 '@types/lodash': 4.17.5 color-convert: 2.0.1 dequal: 2.0.3 @@ -17749,12 +17706,12 @@ snapshots: - prettier - supports-color - '@storybook/builder-manager@8.1.10(encoding@0.1.13)(prettier@3.3.2)': + '@storybook/builder-manager@8.1.11(encoding@0.1.13)(prettier@3.3.2)': dependencies: '@fal-works/esbuild-plugin-global-externals': 2.1.2 - '@storybook/core-common': 8.1.10(encoding@0.1.13)(prettier@3.3.2) - '@storybook/manager': 8.1.10 - '@storybook/node-logger': 8.1.10 + '@storybook/core-common': 8.1.11(encoding@0.1.13)(prettier@3.3.2) + '@storybook/manager': 8.1.11 + '@storybook/node-logger': 8.1.11 '@types/ejs': 3.1.5 '@yarnpkg/esbuild-plugin-pnp': 3.0.0-rc.15(esbuild@0.20.2) browser-assert: 1.2.1 @@ -17770,16 +17727,16 @@ snapshots: - prettier - supports-color - '@storybook/builder-webpack5@8.1.10(encoding@0.1.13)(esbuild@0.20.2)(prettier@3.3.2)(typescript@5.5.2)': + '@storybook/builder-webpack5@8.1.11(encoding@0.1.13)(esbuild@0.20.2)(prettier@3.3.2)(typescript@5.5.2)': dependencies: - '@storybook/channels': 8.1.10 - '@storybook/client-logger': 8.1.10 - '@storybook/core-common': 8.1.10(encoding@0.1.13)(prettier@3.3.2) - '@storybook/core-events': 8.1.10 - '@storybook/core-webpack': 8.1.10(encoding@0.1.13)(prettier@3.3.2) - '@storybook/node-logger': 8.1.10 - '@storybook/preview': 8.1.10 - '@storybook/preview-api': 8.1.10 + '@storybook/channels': 8.1.11 + '@storybook/client-logger': 8.1.11 + '@storybook/core-common': 8.1.11(encoding@0.1.13)(prettier@3.3.2) + '@storybook/core-events': 8.1.11 + '@storybook/core-webpack': 8.1.11(encoding@0.1.13)(prettier@3.3.2) + '@storybook/node-logger': 8.1.11 + '@storybook/preview': 8.1.11 + '@storybook/preview-api': 8.1.11 '@types/node': 18.19.39 '@types/semver': 7.5.8 browser-assert: 1.2.1 @@ -17818,16 +17775,16 @@ snapshots: - uglify-js - webpack-cli - '@storybook/builder-webpack5@8.1.10(encoding@0.1.13)(prettier@3.3.2)(typescript@5.5.2)': + '@storybook/builder-webpack5@8.1.11(encoding@0.1.13)(prettier@3.3.2)(typescript@5.5.2)': dependencies: - '@storybook/channels': 8.1.10 - '@storybook/client-logger': 8.1.10 - '@storybook/core-common': 8.1.10(encoding@0.1.13)(prettier@3.3.2) - '@storybook/core-events': 8.1.10 - '@storybook/core-webpack': 8.1.10(encoding@0.1.13)(prettier@3.3.2) - '@storybook/node-logger': 8.1.10 - '@storybook/preview': 8.1.10 - '@storybook/preview-api': 8.1.10 + '@storybook/channels': 8.1.11 + '@storybook/client-logger': 8.1.11 + '@storybook/core-common': 8.1.11(encoding@0.1.13)(prettier@3.3.2) + '@storybook/core-events': 8.1.11 + '@storybook/core-webpack': 8.1.11(encoding@0.1.13)(prettier@3.3.2) + '@storybook/node-logger': 8.1.11 + '@storybook/preview': 8.1.11 + '@storybook/preview-api': 8.1.11 '@types/node': 18.19.39 '@types/semver': 7.5.8 browser-assert: 1.2.1 @@ -17866,27 +17823,27 @@ snapshots: - uglify-js - webpack-cli - '@storybook/channels@8.1.10': + '@storybook/channels@8.1.11': dependencies: - '@storybook/client-logger': 8.1.10 - '@storybook/core-events': 8.1.10 + '@storybook/client-logger': 8.1.11 + '@storybook/core-events': 8.1.11 '@storybook/global': 5.0.0 telejson: 7.2.0 tiny-invariant: 1.3.3 - '@storybook/cli@8.1.10(@babel/preset-env@7.24.7(@babel/core@7.24.7))(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@storybook/cli@8.1.11(@babel/preset-env@7.24.7(@babel/core@7.24.7))(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/core': 7.24.7 '@babel/types': 7.24.7 '@ndelangen/get-tarball': 3.0.9 - '@storybook/codemod': 8.1.10 - '@storybook/core-common': 8.1.10(encoding@0.1.13)(prettier@3.3.2) - '@storybook/core-events': 8.1.10 - '@storybook/core-server': 8.1.10(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/csf-tools': 8.1.10 - '@storybook/node-logger': 8.1.10 - '@storybook/telemetry': 8.1.10(encoding@0.1.13)(prettier@3.3.2) - '@storybook/types': 8.1.10 + '@storybook/codemod': 8.1.11 + '@storybook/core-common': 8.1.11(encoding@0.1.13)(prettier@3.3.2) + '@storybook/core-events': 8.1.11 + '@storybook/core-server': 8.1.11(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/csf-tools': 8.1.11 + '@storybook/node-logger': 8.1.11 + '@storybook/telemetry': 8.1.11(encoding@0.1.13)(prettier@3.3.2) + '@storybook/types': 8.1.11 '@types/semver': 7.5.8 '@yarnpkg/fslib': 2.10.3 '@yarnpkg/libzip': 2.3.0 @@ -17921,19 +17878,19 @@ snapshots: - supports-color - utf-8-validate - '@storybook/client-logger@8.1.10': + '@storybook/client-logger@8.1.11': dependencies: '@storybook/global': 5.0.0 - '@storybook/codemod@8.1.10': + '@storybook/codemod@8.1.11': dependencies: '@babel/core': 7.24.7 '@babel/preset-env': 7.24.7(@babel/core@7.24.7) '@babel/types': 7.24.7 '@storybook/csf': 0.1.9 - '@storybook/csf-tools': 8.1.10 - '@storybook/node-logger': 8.1.10 - '@storybook/types': 8.1.10 + '@storybook/csf-tools': 8.1.11 + '@storybook/node-logger': 8.1.11 + '@storybook/types': 8.1.11 '@types/cross-spawn': 6.0.6 cross-spawn: 7.0.3 globby: 14.0.1 @@ -17945,16 +17902,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@storybook/components@8.1.10(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@storybook/components@8.1.11(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/react-dialog': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@storybook/client-logger': 8.1.10 + '@storybook/client-logger': 8.1.11 '@storybook/csf': 0.1.9 '@storybook/global': 5.0.0 '@storybook/icons': 1.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/theming': 8.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/types': 8.1.10 + '@storybook/theming': 8.1.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/types': 8.1.11 memoizerific: 1.11.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -17963,12 +17920,12 @@ snapshots: - '@types/react' - '@types/react-dom' - '@storybook/core-common@8.1.10(encoding@0.1.13)(prettier@3.3.2)': + '@storybook/core-common@8.1.11(encoding@0.1.13)(prettier@3.3.2)': dependencies: - '@storybook/core-events': 8.1.10 - '@storybook/csf-tools': 8.1.10 - '@storybook/node-logger': 8.1.10 - '@storybook/types': 8.1.10 + '@storybook/core-events': 8.1.11 + '@storybook/csf-tools': 8.1.11 + '@storybook/node-logger': 8.1.11 + '@storybook/types': 8.1.11 '@yarnpkg/fslib': 2.10.3 '@yarnpkg/libzip': 2.3.0 chalk: 4.1.2 @@ -18000,31 +17957,31 @@ snapshots: - encoding - supports-color - '@storybook/core-events@8.1.10': + '@storybook/core-events@8.1.11': dependencies: '@storybook/csf': 0.1.9 ts-dedent: 2.2.0 - '@storybook/core-server@8.1.10(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@storybook/core-server@8.1.11(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@aw-web-design/x-default-browser': 1.4.126 '@babel/core': 7.24.7 '@babel/parser': 7.24.7 '@discoveryjs/json-ext': 0.5.7 - '@storybook/builder-manager': 8.1.10(encoding@0.1.13)(prettier@3.3.2) - '@storybook/channels': 8.1.10 - '@storybook/core-common': 8.1.10(encoding@0.1.13)(prettier@3.3.2) - '@storybook/core-events': 8.1.10 + '@storybook/builder-manager': 8.1.11(encoding@0.1.13)(prettier@3.3.2) + '@storybook/channels': 8.1.11 + '@storybook/core-common': 8.1.11(encoding@0.1.13)(prettier@3.3.2) + '@storybook/core-events': 8.1.11 '@storybook/csf': 0.1.9 - '@storybook/csf-tools': 8.1.10 + '@storybook/csf-tools': 8.1.11 '@storybook/docs-mdx': 3.1.0-next.0 '@storybook/global': 5.0.0 - '@storybook/manager': 8.1.10 - '@storybook/manager-api': 8.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/node-logger': 8.1.10 - '@storybook/preview-api': 8.1.10 - '@storybook/telemetry': 8.1.10(encoding@0.1.13)(prettier@3.3.2) - '@storybook/types': 8.1.10 + '@storybook/manager': 8.1.11 + '@storybook/manager-api': 8.1.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/node-logger': 8.1.11 + '@storybook/preview-api': 8.1.11 + '@storybook/telemetry': 8.1.11(encoding@0.1.13)(prettier@3.3.2) + '@storybook/types': 8.1.11 '@types/detect-port': 1.3.5 '@types/diff': 5.2.1 '@types/node': 18.19.39 @@ -18061,11 +18018,11 @@ snapshots: - supports-color - utf-8-validate - '@storybook/core-webpack@8.1.10(encoding@0.1.13)(prettier@3.3.2)': + '@storybook/core-webpack@8.1.11(encoding@0.1.13)(prettier@3.3.2)': dependencies: - '@storybook/core-common': 8.1.10(encoding@0.1.13)(prettier@3.3.2) - '@storybook/node-logger': 8.1.10 - '@storybook/types': 8.1.10 + '@storybook/core-common': 8.1.11(encoding@0.1.13)(prettier@3.3.2) + '@storybook/node-logger': 8.1.11 + '@storybook/types': 8.1.11 '@types/node': 18.19.39 ts-dedent: 2.2.0 transitivePeerDependencies: @@ -18073,21 +18030,21 @@ snapshots: - prettier - supports-color - '@storybook/csf-plugin@8.1.10': + '@storybook/csf-plugin@8.1.11': dependencies: - '@storybook/csf-tools': 8.1.10 + '@storybook/csf-tools': 8.1.11 unplugin: 1.10.1 transitivePeerDependencies: - supports-color - '@storybook/csf-tools@8.1.10': + '@storybook/csf-tools@8.1.11': dependencies: '@babel/generator': 7.24.7 '@babel/parser': 7.24.7 '@babel/traverse': 7.24.7 '@babel/types': 7.24.7 '@storybook/csf': 0.1.9 - '@storybook/types': 8.1.10 + '@storybook/types': 8.1.11 fs-extra: 11.2.0 recast: 0.23.9 ts-dedent: 2.2.0 @@ -18100,12 +18057,12 @@ snapshots: '@storybook/docs-mdx@3.1.0-next.0': {} - '@storybook/docs-tools@8.1.10(encoding@0.1.13)(prettier@3.3.2)': + '@storybook/docs-tools@8.1.11(encoding@0.1.13)(prettier@3.3.2)': dependencies: - '@storybook/core-common': 8.1.10(encoding@0.1.13)(prettier@3.3.2) - '@storybook/core-events': 8.1.10 - '@storybook/preview-api': 8.1.10 - '@storybook/types': 8.1.10 + '@storybook/core-common': 8.1.11(encoding@0.1.13)(prettier@3.3.2) + '@storybook/core-events': 8.1.11 + '@storybook/preview-api': 8.1.11 + '@storybook/types': 8.1.11 '@types/doctrine': 0.0.3 assert: 2.1.0 doctrine: 3.0.0 @@ -18122,27 +18079,27 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/instrumenter@8.1.10': + '@storybook/instrumenter@8.1.11': dependencies: - '@storybook/channels': 8.1.10 - '@storybook/client-logger': 8.1.10 - '@storybook/core-events': 8.1.10 + '@storybook/channels': 8.1.11 + '@storybook/client-logger': 8.1.11 + '@storybook/core-events': 8.1.11 '@storybook/global': 5.0.0 - '@storybook/preview-api': 8.1.10 + '@storybook/preview-api': 8.1.11 '@vitest/utils': 1.6.0 util: 0.12.5 - '@storybook/manager-api@8.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@storybook/manager-api@8.1.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@storybook/channels': 8.1.10 - '@storybook/client-logger': 8.1.10 - '@storybook/core-events': 8.1.10 + '@storybook/channels': 8.1.11 + '@storybook/client-logger': 8.1.11 + '@storybook/core-events': 8.1.11 '@storybook/csf': 0.1.9 '@storybook/global': 5.0.0 '@storybook/icons': 1.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/router': 8.1.10 - '@storybook/theming': 8.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/types': 8.1.10 + '@storybook/router': 8.1.11 + '@storybook/theming': 8.1.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/types': 8.1.11 dequal: 2.0.3 lodash: 4.17.21 memoizerific: 1.11.3 @@ -18153,9 +18110,9 @@ snapshots: - react - react-dom - '@storybook/manager@8.1.10': {} + '@storybook/manager@8.1.11': {} - '@storybook/nextjs@8.1.10(@jest/globals@29.7.0)(@types/jest@29.5.12)(babel-plugin-macros@3.1.0)(encoding@0.1.13)(jest@29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0))(next@14.2.4(@babel/core@7.24.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.45.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.69.4))(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.69.4)(type-fest@4.20.1)(typescript@5.5.2)(webpack-hot-middleware@2.26.1)(webpack@5.92.1)': + '@storybook/nextjs@8.1.11(@jest/globals@29.7.0)(@types/jest@29.5.12)(babel-plugin-macros@3.1.0)(encoding@0.1.13)(jest@29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0))(next@14.2.4(@babel/core@7.24.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.45.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.69.4))(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.69.4)(type-fest@4.20.1)(typescript@5.5.2)(webpack-hot-middleware@2.26.1)(webpack@5.92.1)': dependencies: '@babel/core': 7.24.7 '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.7) @@ -18171,15 +18128,15 @@ snapshots: '@babel/preset-typescript': 7.24.7(@babel/core@7.24.7) '@babel/runtime': 7.24.7 '@pmmmwh/react-refresh-webpack-plugin': 0.5.15(react-refresh@0.14.2)(type-fest@4.20.1)(webpack-hot-middleware@2.26.1)(webpack@5.92.1) - '@storybook/builder-webpack5': 8.1.10(encoding@0.1.13)(prettier@3.3.2)(typescript@5.5.2) - '@storybook/core-common': 8.1.10(encoding@0.1.13)(prettier@3.3.2) - '@storybook/core-events': 8.1.10 - '@storybook/node-logger': 8.1.10 - '@storybook/preset-react-webpack': 8.1.10(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.2) - '@storybook/preview-api': 8.1.10 - '@storybook/react': 8.1.10(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.2) - '@storybook/test': 8.1.10(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)) - '@storybook/types': 8.1.10 + '@storybook/builder-webpack5': 8.1.11(encoding@0.1.13)(prettier@3.3.2)(typescript@5.5.2) + '@storybook/core-common': 8.1.11(encoding@0.1.13)(prettier@3.3.2) + '@storybook/core-events': 8.1.11 + '@storybook/node-logger': 8.1.11 + '@storybook/preset-react-webpack': 8.1.11(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.2) + '@storybook/preview-api': 8.1.11 + '@storybook/react': 8.1.11(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.2) + '@storybook/test': 8.1.11(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)) + '@storybook/types': 8.1.11 '@types/node': 18.19.39 '@types/semver': 7.5.8 babel-loader: 9.1.3(@babel/core@7.24.7)(webpack@5.92.1) @@ -18234,7 +18191,7 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/nextjs@8.1.10(@jest/globals@29.7.0)(@types/jest@29.5.12)(encoding@0.1.13)(esbuild@0.20.2)(jest@29.7.0(@types/node@20.14.9))(next@14.2.4(@babel/core@7.24.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.45.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.69.4))(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.69.4)(type-fest@4.20.1)(typescript@5.5.2)(webpack-hot-middleware@2.26.1)(webpack@5.92.1(esbuild@0.20.2))': + '@storybook/nextjs@8.1.11(@jest/globals@29.7.0)(@types/jest@29.5.12)(encoding@0.1.13)(esbuild@0.20.2)(jest@29.7.0(@types/node@20.14.9))(next@14.2.4(@babel/core@7.24.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.45.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.69.4))(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.69.4)(type-fest@4.20.1)(typescript@5.5.2)(webpack-hot-middleware@2.26.1)(webpack@5.92.1(esbuild@0.20.2))': dependencies: '@babel/core': 7.24.7 '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.7) @@ -18250,15 +18207,15 @@ snapshots: '@babel/preset-typescript': 7.24.7(@babel/core@7.24.7) '@babel/runtime': 7.24.7 '@pmmmwh/react-refresh-webpack-plugin': 0.5.15(react-refresh@0.14.2)(type-fest@4.20.1)(webpack-hot-middleware@2.26.1)(webpack@5.92.1(esbuild@0.20.2)) - '@storybook/builder-webpack5': 8.1.10(encoding@0.1.13)(esbuild@0.20.2)(prettier@3.3.2)(typescript@5.5.2) - '@storybook/core-common': 8.1.10(encoding@0.1.13)(prettier@3.3.2) - '@storybook/core-events': 8.1.10 - '@storybook/node-logger': 8.1.10 - '@storybook/preset-react-webpack': 8.1.10(encoding@0.1.13)(esbuild@0.20.2)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.2) - '@storybook/preview-api': 8.1.10 - '@storybook/react': 8.1.10(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.2) - '@storybook/test': 8.1.10(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9)) - '@storybook/types': 8.1.10 + '@storybook/builder-webpack5': 8.1.11(encoding@0.1.13)(esbuild@0.20.2)(prettier@3.3.2)(typescript@5.5.2) + '@storybook/core-common': 8.1.11(encoding@0.1.13)(prettier@3.3.2) + '@storybook/core-events': 8.1.11 + '@storybook/node-logger': 8.1.11 + '@storybook/preset-react-webpack': 8.1.11(encoding@0.1.13)(esbuild@0.20.2)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.2) + '@storybook/preview-api': 8.1.11 + '@storybook/react': 8.1.11(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.2) + '@storybook/test': 8.1.11(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9)) + '@storybook/types': 8.1.11 '@types/node': 18.19.39 '@types/semver': 7.5.8 babel-loader: 9.1.3(@babel/core@7.24.7)(webpack@5.92.1(esbuild@0.20.2)) @@ -18313,14 +18270,14 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/node-logger@8.1.10': {} + '@storybook/node-logger@8.1.11': {} - '@storybook/preset-react-webpack@8.1.10(encoding@0.1.13)(esbuild@0.20.2)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.2)': + '@storybook/preset-react-webpack@8.1.11(encoding@0.1.13)(esbuild@0.20.2)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.2)': dependencies: - '@storybook/core-webpack': 8.1.10(encoding@0.1.13)(prettier@3.3.2) - '@storybook/docs-tools': 8.1.10(encoding@0.1.13)(prettier@3.3.2) - '@storybook/node-logger': 8.1.10 - '@storybook/react': 8.1.10(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.2) + '@storybook/core-webpack': 8.1.11(encoding@0.1.13)(prettier@3.3.2) + '@storybook/docs-tools': 8.1.11(encoding@0.1.13)(prettier@3.3.2) + '@storybook/node-logger': 8.1.11 + '@storybook/react': 8.1.11(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.2) '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.5.2)(webpack@5.92.1(esbuild@0.20.2)) '@types/node': 18.19.39 '@types/semver': 7.5.8 @@ -18345,12 +18302,12 @@ snapshots: - uglify-js - webpack-cli - '@storybook/preset-react-webpack@8.1.10(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.2)': + '@storybook/preset-react-webpack@8.1.11(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.2)': dependencies: - '@storybook/core-webpack': 8.1.10(encoding@0.1.13)(prettier@3.3.2) - '@storybook/docs-tools': 8.1.10(encoding@0.1.13)(prettier@3.3.2) - '@storybook/node-logger': 8.1.10 - '@storybook/react': 8.1.10(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.2) + '@storybook/core-webpack': 8.1.11(encoding@0.1.13)(prettier@3.3.2) + '@storybook/docs-tools': 8.1.11(encoding@0.1.13)(prettier@3.3.2) + '@storybook/node-logger': 8.1.11 + '@storybook/react': 8.1.11(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.2) '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.5.2)(webpack@5.92.1) '@types/node': 18.19.39 '@types/semver': 7.5.8 @@ -18375,14 +18332,14 @@ snapshots: - uglify-js - webpack-cli - '@storybook/preview-api@8.1.10': + '@storybook/preview-api@8.1.11': dependencies: - '@storybook/channels': 8.1.10 - '@storybook/client-logger': 8.1.10 - '@storybook/core-events': 8.1.10 + '@storybook/channels': 8.1.11 + '@storybook/client-logger': 8.1.11 + '@storybook/core-events': 8.1.11 '@storybook/csf': 0.1.9 '@storybook/global': 5.0.0 - '@storybook/types': 8.1.10 + '@storybook/types': 8.1.11 '@types/qs': 6.9.15 dequal: 2.0.3 lodash: 4.17.21 @@ -18392,7 +18349,7 @@ snapshots: ts-dedent: 2.2.0 util-deprecate: 1.0.2 - '@storybook/preview@8.1.10': {} + '@storybook/preview@8.1.11': {} '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.5.2)(webpack@5.92.1(esbuild@0.20.2))': dependencies: @@ -18422,19 +18379,19 @@ snapshots: transitivePeerDependencies: - supports-color - '@storybook/react-dom-shim@8.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@storybook/react-dom-shim@8.1.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/react@8.1.10(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.2)': + '@storybook/react@8.1.11(encoding@0.1.13)(prettier@3.3.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.2)': dependencies: - '@storybook/client-logger': 8.1.10 - '@storybook/docs-tools': 8.1.10(encoding@0.1.13)(prettier@3.3.2) + '@storybook/client-logger': 8.1.11 + '@storybook/docs-tools': 8.1.11(encoding@0.1.13)(prettier@3.3.2) '@storybook/global': 5.0.0 - '@storybook/preview-api': 8.1.10 - '@storybook/react-dom-shim': 8.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/types': 8.1.10 + '@storybook/preview-api': 8.1.11 + '@storybook/react-dom-shim': 8.1.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/types': 8.1.11 '@types/escodegen': 0.0.6 '@types/estree': 0.0.51 '@types/node': 18.19.39 @@ -18459,17 +18416,17 @@ snapshots: - prettier - supports-color - '@storybook/router@8.1.10': + '@storybook/router@8.1.11': dependencies: - '@storybook/client-logger': 8.1.10 + '@storybook/client-logger': 8.1.11 memoizerific: 1.11.3 qs: 6.12.1 - '@storybook/telemetry@8.1.10(encoding@0.1.13)(prettier@3.3.2)': + '@storybook/telemetry@8.1.11(encoding@0.1.13)(prettier@3.3.2)': dependencies: - '@storybook/client-logger': 8.1.10 - '@storybook/core-common': 8.1.10(encoding@0.1.13)(prettier@3.3.2) - '@storybook/csf-tools': 8.1.10 + '@storybook/client-logger': 8.1.11 + '@storybook/core-common': 8.1.11(encoding@0.1.13)(prettier@3.3.2) + '@storybook/csf-tools': 8.1.11 chalk: 4.1.2 detect-package-manager: 2.0.1 fetch-retry: 5.0.6 @@ -18480,16 +18437,16 @@ snapshots: - prettier - supports-color - '@storybook/test@8.1.10(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0))': + '@storybook/test@8.1.11(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0))': dependencies: - '@storybook/client-logger': 8.1.10 - '@storybook/core-events': 8.1.10 - '@storybook/instrumenter': 8.1.10 - '@storybook/preview-api': 8.1.10 - '@testing-library/dom': 9.3.4 - '@testing-library/jest-dom': 6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)) - '@testing-library/user-event': 14.5.2(@testing-library/dom@9.3.4) - '@vitest/expect': 1.3.1 + '@storybook/client-logger': 8.1.11 + '@storybook/core-events': 8.1.11 + '@storybook/instrumenter': 8.1.11 + '@storybook/preview-api': 8.1.11 + '@testing-library/dom': 10.1.0 + '@testing-library/jest-dom': 6.4.5(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)) + '@testing-library/user-event': 14.5.2(@testing-library/dom@10.1.0) + '@vitest/expect': 1.6.0 '@vitest/spy': 1.6.0 util: 0.12.5 transitivePeerDependencies: @@ -18499,16 +18456,16 @@ snapshots: - jest - vitest - '@storybook/test@8.1.10(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9))': + '@storybook/test@8.1.11(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9))': dependencies: - '@storybook/client-logger': 8.1.10 - '@storybook/core-events': 8.1.10 - '@storybook/instrumenter': 8.1.10 - '@storybook/preview-api': 8.1.10 - '@testing-library/dom': 9.3.4 - '@testing-library/jest-dom': 6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9)) - '@testing-library/user-event': 14.5.2(@testing-library/dom@9.3.4) - '@vitest/expect': 1.3.1 + '@storybook/client-logger': 8.1.11 + '@storybook/core-events': 8.1.11 + '@storybook/instrumenter': 8.1.11 + '@storybook/preview-api': 8.1.11 + '@testing-library/dom': 10.1.0 + '@testing-library/jest-dom': 6.4.5(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9)) + '@testing-library/user-event': 14.5.2(@testing-library/dom@10.1.0) + '@vitest/expect': 1.6.0 '@vitest/spy': 1.6.0 util: 0.12.5 transitivePeerDependencies: @@ -18518,19 +18475,19 @@ snapshots: - jest - vitest - '@storybook/theming@8.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@storybook/theming@8.1.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.3.1) - '@storybook/client-logger': 8.1.10 + '@storybook/client-logger': 8.1.11 '@storybook/global': 5.0.0 memoizerific: 1.11.3 optionalDependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/types@8.1.10': + '@storybook/types@8.1.11': dependencies: - '@storybook/channels': 8.1.10 + '@storybook/channels': 8.1.11 '@types/express': 4.17.21 file-system-cache: 2.3.0 @@ -18739,6 +18696,17 @@ snapshots: dependencies: '@swc/counter': 0.1.3 + '@testing-library/dom@10.1.0': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/runtime': 7.24.7 + '@types/aria-query': 5.0.4 + aria-query: 5.3.0 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + '@testing-library/dom@9.3.4': dependencies: '@babel/code-frame': 7.24.7 @@ -18750,7 +18718,7 @@ snapshots: lz-string: 1.5.0 pretty-format: 27.5.1 - '@testing-library/jest-dom@6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0))': + '@testing-library/jest-dom@6.4.5(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0))': dependencies: '@adobe/css-tools': 4.4.0 '@babel/runtime': 7.24.7 @@ -18763,9 +18731,9 @@ snapshots: optionalDependencies: '@jest/globals': 29.7.0 '@types/jest': 29.5.12 - jest: 29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0) + jest: 29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.6.1(@swc/helpers@0.5.5))(@types/node@20.14.9)(typescript@5.5.2)) - '@testing-library/jest-dom@6.4.6(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9))': + '@testing-library/jest-dom@6.4.5(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.14.9))': dependencies: '@adobe/css-tools': 4.4.0 '@babel/runtime': 7.24.7 @@ -18793,7 +18761,7 @@ snapshots: optionalDependencies: '@jest/globals': 29.7.0 '@types/jest': 29.5.12 - jest: 29.7.0(babel-plugin-macros@3.1.0) + jest: 29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.6.1(@swc/helpers@0.5.5))(@types/node@20.14.9)(typescript@5.5.2)) '@testing-library/react@14.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: @@ -18803,9 +18771,9 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@testing-library/user-event@14.5.2(@testing-library/dom@9.3.4)': + '@testing-library/user-event@14.5.2(@testing-library/dom@10.1.0)': dependencies: - '@testing-library/dom': 9.3.4 + '@testing-library/dom': 10.1.0 '@tokenizer/token@0.3.0': {} @@ -19275,27 +19243,16 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitest/expect@1.3.1': + '@vitest/expect@1.6.0': dependencies: - '@vitest/spy': 1.3.1 - '@vitest/utils': 1.3.1 + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 chai: 4.4.1 - '@vitest/spy@1.3.1': - dependencies: - tinyspy: 2.2.1 - '@vitest/spy@1.6.0': dependencies: tinyspy: 2.2.1 - '@vitest/utils@1.3.1': - dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 - '@vitest/utils@1.6.0': dependencies: diff-sequences: 29.6.3 @@ -19599,9 +19556,9 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 - apollo-link-rest@0.9.0(@apollo/client@3.10.6(@types/react@18.3.3)(graphql@15.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(graphql@15.9.0)(qs@6.12.1): + apollo-link-rest@0.9.0(@apollo/client@3.10.7(@types/react@18.3.3)(graphql@15.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(graphql@15.9.0)(qs@6.12.1): dependencies: - '@apollo/client': 3.10.6(@types/react@18.3.3)(graphql@15.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@apollo/client': 3.10.7(@types/react@18.3.3)(graphql@15.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) graphql: 15.9.0 qs: 6.12.1 @@ -19767,7 +19724,7 @@ snapshots: autoprefixer@10.4.19(postcss@8.4.31): dependencies: browserslist: 4.23.1 - caniuse-lite: 1.0.30001637 + caniuse-lite: 1.0.30001638 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.1 @@ -19778,7 +19735,7 @@ snapshots: dependencies: possible-typed-array-names: 1.0.0 - aws-sdk@2.1648.0: + aws-sdk@2.1649.0: dependencies: buffer: 4.9.2 events: 1.1.1 @@ -20079,7 +20036,7 @@ snapshots: browserslist@4.23.1: dependencies: - caniuse-lite: 1.0.30001637 + caniuse-lite: 1.0.30001638 electron-to-chromium: 1.4.812 node-releases: 2.0.14 update-browserslist-db: 1.0.16(browserslist@4.23.1) @@ -20187,7 +20144,7 @@ snapshots: camelcase@8.0.0: {} - caniuse-lite@1.0.30001637: {} + caniuse-lite@1.0.30001638: {} case-sensitive-paths-webpack-plugin@2.4.0: {} @@ -21777,20 +21734,20 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-jest-dom@5.4.0(@testing-library/dom@9.3.4)(eslint@8.57.0): + eslint-plugin-jest-dom@5.4.0(@testing-library/dom@10.1.0)(eslint@8.57.0): dependencies: '@babel/runtime': 7.24.7 eslint: 8.57.0 requireindex: 1.2.0 optionalDependencies: - '@testing-library/dom': 9.3.4 + '@testing-library/dom': 10.1.0 eslint-plugin-jest@27.9.0(eslint@8.57.0)(jest@29.7.0)(typescript@5.5.2): dependencies: '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.5.2) eslint: 8.57.0 optionalDependencies: - jest: 29.7.0 + jest: 29.7.0(@types/node@20.14.9) transitivePeerDependencies: - supports-color - typescript @@ -23917,19 +23874,6 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0: - dependencies: - '@jest/core': 29.7.0 - '@jest/types': 29.6.3 - import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.14.9) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - optional: true - jest@29.7.0(@types/node@20.14.9): dependencies: '@jest/core': 29.7.0 @@ -23943,19 +23887,6 @@ snapshots: - ts-node optional: true - jest@29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0): - dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.6.1(@swc/helpers@0.5.5))(@types/node@20.14.9)(typescript@5.5.2)) - '@jest/types': 29.6.3 - import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.6.1(@swc/helpers@0.5.5))(@types/node@20.14.9)(typescript@5.5.2)) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - optional: true - jest@29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.6.1(@swc/helpers@0.5.5))(@types/node@20.14.9)(typescript@5.5.2)): dependencies: '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.6.1(@swc/helpers@0.5.5))(@types/node@20.14.9)(typescript@5.5.2)) @@ -23980,19 +23911,6 @@ snapshots: - supports-color - ts-node - jest@29.7.0(babel-plugin-macros@3.1.0): - dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.6.1(@swc/helpers@0.5.5))(@types/node@20.14.9)(typescript@5.5.2)) - '@jest/types': 29.6.3 - import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.14.9)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.6.1(@swc/helpers@0.5.5))(@types/node@20.14.9)(typescript@5.5.2)) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - optional: true - jiti@1.21.6: {} jmespath@0.16.0: {} @@ -24755,18 +24673,6 @@ snapshots: - '@aws-sdk/client-sso-oidc' - aws-crt - mongodb@4.17.1(@aws-sdk/client-sso-oidc@3.600.0): - dependencies: - bson: 4.7.2 - mongodb-connection-string-url: 2.6.0 - socks: 2.8.3 - optionalDependencies: - '@aws-sdk/credential-providers': 3.600.0(@aws-sdk/client-sso-oidc@3.600.0) - '@mongodb-js/saslprep': 1.1.7 - transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - - aws-crt - mongoose-aggregate-paginate-v2@1.0.6: {} mongoose-paginate-v2@1.7.22: {} @@ -24785,20 +24691,6 @@ snapshots: - aws-crt - supports-color - mongoose@6.12.3(@aws-sdk/client-sso-oidc@3.600.0): - dependencies: - bson: 4.7.2 - kareem: 2.5.1 - mongodb: 4.17.1(@aws-sdk/client-sso-oidc@3.600.0) - mpath: 0.9.0 - mquery: 4.0.3 - ms: 2.1.3 - sift: 16.0.1 - transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - - aws-crt - - supports-color - mpath@0.9.0: {} mpd-parser@1.3.0: @@ -24902,7 +24794,7 @@ snapshots: '@next/env': 14.2.4 '@swc/helpers': 0.5.5 busboy: 1.6.0 - caniuse-lite: 1.0.30001637 + caniuse-lite: 1.0.30001638 graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.3.1 @@ -25496,7 +25388,7 @@ snapshots: - uglify-js - webpack - payload@2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)): + payload@2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))(webpack-cli@4.10.0)): dependencies: '@date-io/date-fns': 2.16.0(date-fns@2.30.0) '@dnd-kit/core': 6.0.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -25597,7 +25489,7 @@ snapshots: - uglify-js - webpack - payload@2.22.1(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))): + payload@2.22.2(@swc/helpers@0.5.5)(@types/react@18.3.3)(encoding@0.1.13)(typescript@5.5.2)(webpack@5.92.1(@swc/core@1.6.5(@swc/helpers@0.5.5))): dependencies: '@date-io/date-fns': 2.16.0(date-fns@2.30.0) '@dnd-kit/core': 6.0.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -27430,9 +27322,9 @@ snapshots: store2@2.14.3: {} - storybook@8.1.10(@babel/preset-env@7.24.7(@babel/core@7.24.7))(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + storybook@8.1.11(@babel/preset-env@7.24.7(@babel/core@7.24.7))(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@storybook/cli': 8.1.10(@babel/preset-env@7.24.7(@babel/core@7.24.7))(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/cli': 8.1.11(@babel/preset-env@7.24.7(@babel/core@7.24.7))(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - '@babel/preset-env' - bufferutil From 8d1179ff5369e0f27ff3c31959ea5d7234b46a7a Mon Sep 17 00:00:00 2001 From: Clemence Kyara Date: Thu, 27 Jun 2024 14:44:42 +0300 Subject: [PATCH 08/12] Remove commented out code Co-authored-by: KEVIN KOECH --- apps/roboshield/src/components/RichText/RichText.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/roboshield/src/components/RichText/RichText.tsx b/apps/roboshield/src/components/RichText/RichText.tsx index 5b9a792ca..e856fce00 100644 --- a/apps/roboshield/src/components/RichText/RichText.tsx +++ b/apps/roboshield/src/components/RichText/RichText.tsx @@ -40,7 +40,6 @@ function serialize( return children.map((node, i) => { if (Text.isText(node)) { let text = ; - // let { text } = node; if (node.bold) { text = {text}; } From 3efbbda4faa0163e713b2dfbeee2192cd2279b61 Mon Sep 17 00:00:00 2001 From: Kevin Koech Date: Fri, 28 Jun 2024 17:31:10 +0300 Subject: [PATCH 09/12] Fix failing build --- apps/roboshield/src/components/RichText/RichText.tsx | 2 +- apps/roboshield/src/components/RoboForm/RoboForm.tsx | 4 ++-- apps/roboshield/src/lib/data/payload.types.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/roboshield/src/components/RichText/RichText.tsx b/apps/roboshield/src/components/RichText/RichText.tsx index e856fce00..70eecd22b 100644 --- a/apps/roboshield/src/components/RichText/RichText.tsx +++ b/apps/roboshield/src/components/RichText/RichText.tsx @@ -1,7 +1,7 @@ /* eslint-disable react/no-array-index-key */ import { Link, RichTypography } from "@commons-ui/next"; import { Box } from "@mui/material"; -import type { BoxProps, TypographyProps } from "@mui/material"; +import type { BoxProps } from "@mui/material"; import React, { Fragment, ReactNode, forwardRef } from "react"; import { Text } from "slate"; diff --git a/apps/roboshield/src/components/RoboForm/RoboForm.tsx b/apps/roboshield/src/components/RoboForm/RoboForm.tsx index 86420d12e..8b0ab0b9d 100644 --- a/apps/roboshield/src/components/RoboForm/RoboForm.tsx +++ b/apps/roboshield/src/components/RoboForm/RoboForm.tsx @@ -16,12 +16,12 @@ import { defaultState, } from "@/roboshield/context/GlobalContext"; import { generateRobots } from "@/roboshield/lib/robots"; -import RichText from "@/roboshield/components/RichText"; +import RichText, { Children } from "@/roboshield/components/RichText"; type Props = { [key: string]: string } & { steps: { title: string; - hint?: ReactNode; + hint?: Children; }[]; labels: { back: string; diff --git a/apps/roboshield/src/lib/data/payload.types.ts b/apps/roboshield/src/lib/data/payload.types.ts index 7f2ce4d00..53bfd739d 100644 --- a/apps/roboshield/src/lib/data/payload.types.ts +++ b/apps/roboshield/src/lib/data/payload.types.ts @@ -1,7 +1,7 @@ import { Node } from "slate"; export interface LabelNode { - title: Node; + title: string; label: string; } From fd376d2199d566bafe4805a6113c84f6f471270f Mon Sep 17 00:00:00 2001 From: Kevin Koech Date: Mon, 1 Jul 2024 16:47:36 +0300 Subject: [PATCH 10/12] Update types --- apps/roboshield/next.config.mjs | 10 + apps/roboshield/payload-types.ts | 179 +++++++++++++++--- .../BlockRenderer/BlockRenderer.tsx | 5 +- .../CommonSettings/CommonSettings.tsx | 6 +- .../src/components/Delays/Delays.tsx | 6 +- .../src/components/PageHeader/PageHeader.tsx | 5 +- .../roboshield/src/lib/data/blockify/index.ts | 10 +- .../lib/data/blockify/processBlockRoboForm.ts | 15 +- apps/roboshield/src/pages/index.tsx | 1 - .../roboshield/src/payload/Blocks/RoboForm.ts | 40 ++-- .../src/payload/collections/Pages.ts | 2 +- 11 files changed, 223 insertions(+), 56 deletions(-) diff --git a/apps/roboshield/next.config.mjs b/apps/roboshield/next.config.mjs index 38c5c24cd..1cb3e068d 100644 --- a/apps/roboshield/next.config.mjs +++ b/apps/roboshield/next.config.mjs @@ -31,6 +31,16 @@ const nextConfig = { config.experiments = { ...config.experiments, topLevelAwait: true }; // eslint-disable-line no-param-reassign return config; }, + images: { + remotePatterns: [ + { + protocol: 'http', + hostname: 'localhost', + port: '3000', + pathname: '**', + }, + ], + }, }; export default withSentryConfig(nextConfig, { diff --git a/apps/roboshield/payload-types.ts b/apps/roboshield/payload-types.ts index 0251bfb07..1322dcbe6 100644 --- a/apps/roboshield/payload-types.ts +++ b/apps/roboshield/payload-types.ts @@ -11,11 +11,11 @@ export interface Config { media: Media; pages: Page; users: User; - "payload-preferences": PayloadPreference; - "payload-migrations": PayloadMigration; + 'payload-preferences': PayloadPreference; + 'payload-migrations': PayloadMigration; }; globals: { - "settings-site": SettingsSite; + 'settings-site': SettingsSite; }; } /** @@ -47,13 +47,137 @@ export interface Page { fullTitle?: string | null; slug?: string | null; blocks?: - | { - title: string; - subtitle: string; - id?: string | null; - blockName?: string | null; - blockType: "page-header"; - }[] + | ( + | { + title: string; + subtitle: string; + id?: string | null; + blockName?: string | null; + blockType: 'page-header'; + } + | { + toolTipText: string; + steps?: + | ( + | { + title: string; + hint?: + | { + [k: string]: unknown; + }[] + | null; + defaultFetchExistingRobots?: boolean | null; + existingRobotsTxt: string; + placeholder: string; + urlValidationError: string; + fetch: string; + id?: string | null; + blockName?: string | null; + blockType: 'existing-robots'; + } + | { + title: string; + hint?: + | { + [k: string]: unknown; + }[] + | null; + crawlDelay: { + label: string; + title: string; + }; + cacheDelay: { + label: string; + title: string; + }; + visitTime: { + label: string; + title: string; + }; + id?: string | null; + blockName?: string | null; + blockType: 'delays'; + } + | { + title: string; + hint?: + | { + [k: string]: unknown; + }[] + | null; + selectPlatform: { + label: string; + title: string; + }; + disallowedPaths: { + label: string; + title: string; + }; + allowedPaths: { + label: string; + title: string; + }; + id?: string | null; + blockName?: string | null; + blockType: 'paths'; + } + | { + title: string; + hint?: + | { + [k: string]: unknown; + }[] + | null; + aiWebCrawlers: { + label: string; + title: string; + }; + searchEngineCrawlers: { + label: string; + title: string; + }; + id?: string | null; + blockName?: string | null; + blockType: 'block-bots'; + } + | { + title: string; + hint?: + | { + [k: string]: unknown; + }[] + | null; + placeholder: string; + id?: string | null; + blockName?: string | null; + blockType: 'site-maps'; + } + | { + title: string; + hint?: + | { + [k: string]: unknown; + }[] + | null; + placeholder: string; + id?: string | null; + blockName?: string | null; + blockType: 'finish'; + } + )[] + | null; + labels: { + continue: string; + back: string; + reset: string; + download: string; + copyToClipboard: string; + }; + id?: string | null; + blockName?: string | null; + blockType: 'robo-form'; + } + )[] | null; meta?: { title?: string | null; @@ -71,7 +195,7 @@ export interface Page { | null; updatedAt: string; createdAt: string; - _status?: ("draft" | "published") | null; + _status?: ('draft' | 'published') | null; } /** * This interface was referenced by `Config`'s JSON-Schema @@ -81,7 +205,7 @@ export interface User { id: string; firstName: string; lastName: string; - roles: ("admin" | "editor")[]; + roles: ('admin' | 'editor')[]; updatedAt: string; createdAt: string; email: string; @@ -102,7 +226,7 @@ export interface User { export interface PayloadPreference { id: string; user: { - relationTo: "users"; + relationTo: 'users'; value: string | User; }; key?: string | null; @@ -145,9 +269,9 @@ export interface SettingsSite { menus?: | { label: string; - linkType?: ("custom" | "internal") | null; + linkType?: ('custom' | 'internal') | null; doc?: { - relationTo: "pages"; + relationTo: 'pages'; value: string | Page; } | null; url?: string | null; @@ -155,17 +279,15 @@ export interface SettingsSite { id?: string | null; }[] | null; - connect?: - | ("Facebook" | "Twitter" | "Instagram" | "Linkedin" | "Github" | "Slack") - | null; + connect?: ('Facebook' | 'Twitter' | 'Instagram' | 'Linkedin' | 'Github' | 'Slack') | null; }; secondaryNavigation?: { menus?: | { label: string; - linkType?: ("custom" | "internal") | null; + linkType?: ('custom' | 'internal') | null; doc?: { - relationTo: "pages"; + relationTo: 'pages'; value: string | Page; } | null; url?: string | null; @@ -178,13 +300,7 @@ export interface SettingsSite { title: string; links?: | { - platform: - | "Facebook" - | "Twitter" - | "Instagram" - | "Linkedin" - | "Github" - | "Slack"; + platform: 'Facebook' | 'Twitter' | 'Instagram' | 'Linkedin' | 'Github' | 'Slack'; url: string; id?: string | null; }[] @@ -204,9 +320,9 @@ export interface SettingsSite { name: string; logo: string | Media; label: string; - linkType?: ("custom" | "internal") | null; + linkType?: ('custom' | 'internal') | null; doc?: { - relationTo: "pages"; + relationTo: 'pages'; value: string | Page; } | null; url?: string | null; @@ -219,6 +335,7 @@ export interface SettingsSite { createdAt?: string | null; } -declare module "payload" { + +declare module 'payload' { export interface GeneratedTypes extends Config {} -} +} \ No newline at end of file diff --git a/apps/roboshield/src/components/BlockRenderer/BlockRenderer.tsx b/apps/roboshield/src/components/BlockRenderer/BlockRenderer.tsx index 759cf72b4..60d6aaff0 100644 --- a/apps/roboshield/src/components/BlockRenderer/BlockRenderer.tsx +++ b/apps/roboshield/src/components/BlockRenderer/BlockRenderer.tsx @@ -1,17 +1,20 @@ import PageHeader from "@/roboshield/components/PageHeader/PageHeader"; import { Page } from "@/root/payload-types"; +import RoboForm from "@/roboshield/components/RoboForm"; +import { FC } from "react"; interface BlockRendererProps extends Pick {} const components = { "page-header": PageHeader, + "robo-form": RoboForm, }; export default function BlockRenderer({ blocks }: BlockRendererProps) { return ( <> {blocks?.map((block, index) => { - const Component = components[block.blockType]; + const Component: FC = components[block.blockType]; if (Component) { return ; diff --git a/apps/roboshield/src/components/CommonSettings/CommonSettings.tsx b/apps/roboshield/src/components/CommonSettings/CommonSettings.tsx index 03071d22d..e282c3e51 100644 --- a/apps/roboshield/src/components/CommonSettings/CommonSettings.tsx +++ b/apps/roboshield/src/components/CommonSettings/CommonSettings.tsx @@ -18,7 +18,11 @@ import { platforms } from "@/roboshield/lib/config"; import { StepComponent } from "@/roboshield/types/stepComponent"; import SkipToLastStep from "@/roboshield/components/SkipToLastStep"; import StepHint from "@/roboshield/components/StepHint"; -import { LabelNode } from "@/roboshield/lib/data/payload.types"; + +interface LabelNode { + title: string; + label: string; +} interface Props extends StepComponent { selectPlatform?: LabelNode; diff --git a/apps/roboshield/src/components/Delays/Delays.tsx b/apps/roboshield/src/components/Delays/Delays.tsx index e11d4f26b..2bd0d7572 100644 --- a/apps/roboshield/src/components/Delays/Delays.tsx +++ b/apps/roboshield/src/components/Delays/Delays.tsx @@ -10,7 +10,11 @@ import { useGlobalState } from "@/roboshield/context/GlobalContext"; import { StepComponent } from "@/roboshield/types/stepComponent"; import SkipToLastStep from "@/roboshield/components/SkipToLastStep"; import StepHint from "@/roboshield/components/StepHint"; -import { LabelNode } from "@/roboshield/lib/data/payload.types"; + +interface LabelNode { + title: string; + label: string; +} interface Props extends StepComponent { crawlDelay?: LabelNode; diff --git a/apps/roboshield/src/components/PageHeader/PageHeader.tsx b/apps/roboshield/src/components/PageHeader/PageHeader.tsx index c856793b0..51425ebce 100644 --- a/apps/roboshield/src/components/PageHeader/PageHeader.tsx +++ b/apps/roboshield/src/components/PageHeader/PageHeader.tsx @@ -9,7 +9,10 @@ type PageHeaderProps = ExtractBlockType< "page-header" >; -export default function PageHeader({ title, subtitle }: PageHeaderProps) { +export default function PageHeader({ + title, + subtitle, +}: PageHeaderProps): JSX.Element { return ( <> diff --git a/apps/roboshield/src/lib/data/blockify/index.ts b/apps/roboshield/src/lib/data/blockify/index.ts index d13774217..96454043e 100644 --- a/apps/roboshield/src/lib/data/blockify/index.ts +++ b/apps/roboshield/src/lib/data/blockify/index.ts @@ -16,9 +16,11 @@ type PropsifyBlockBySlug = { >; }; -const pageHeader: PropsifyBlockFunction< - ExtractBlockType[number], "page-header"> -> = async (block, api) => { +type BlockType = ExtractBlockType< + NonNullable[number], + "page-header" +>; +const pageHeader: PropsifyBlockFunction = async (block, api) => { // some block specific computation, i.e using api return { ...block, @@ -36,7 +38,7 @@ export const blockify = async (blocks: Page["blocks"], api: Api) => { const slug = block.blockType as NonNullable< Page["blocks"] >[number]["blockType"]; - const propsifyBlock = propsifyBlockBySlug[slug]; + const propsifyBlock = propsifyBlockBySlug[slug] as any; if (propsifyBlock) { return propsifyBlock(block, api); diff --git a/apps/roboshield/src/lib/data/blockify/processBlockRoboForm.ts b/apps/roboshield/src/lib/data/blockify/processBlockRoboForm.ts index e019e29dd..9acc1e5d6 100644 --- a/apps/roboshield/src/lib/data/blockify/processBlockRoboForm.ts +++ b/apps/roboshield/src/lib/data/blockify/processBlockRoboForm.ts @@ -1,4 +1,11 @@ -import { Api } from "../payload.types"; +import { Page } from "@/root/payload-types"; +import { Api } from "@/roboshield/lib/payload"; +import { ExtractBlockType } from "@/roboshield/utils/blocks"; + +type PropsifyBlockFunction = ( + block: T, + api: Api, +) => Promise; function sortSteps(steps: any[]) { const stepOrder: string[] = [ @@ -14,7 +21,9 @@ function sortSteps(steps: any[]) { ); } -async function processBlockRoboForm(block: any, api: Api) { +const processBlockRoboForm: PropsifyBlockFunction< + ExtractBlockType[number], "robo-form"> +> = async (block, api) => { const steps = sortSteps(block.steps ?? []); return { @@ -22,6 +31,6 @@ async function processBlockRoboForm(block: any, api: Api) { slug: "robo-form", steps, }; -} +}; export default processBlockRoboForm; diff --git a/apps/roboshield/src/pages/index.tsx b/apps/roboshield/src/pages/index.tsx index e368b0bbe..0f47872e3 100644 --- a/apps/roboshield/src/pages/index.tsx +++ b/apps/roboshield/src/pages/index.tsx @@ -2,7 +2,6 @@ import { getPageServerSideProps } from "@/roboshield/lib/data"; import RoboForm from "@/roboshield/components/RoboForm"; import Hero from "@/roboshield/components/Hero"; import { useRef } from "react"; -import { Block } from "payload/types"; export default function Index(props: any) { const scrolRef = useRef(null); diff --git a/apps/roboshield/src/payload/Blocks/RoboForm.ts b/apps/roboshield/src/payload/Blocks/RoboForm.ts index e9ef92b5b..855307715 100644 --- a/apps/roboshield/src/payload/Blocks/RoboForm.ts +++ b/apps/roboshield/src/payload/Blocks/RoboForm.ts @@ -16,8 +16,11 @@ const ExistingRobots: Block = { label: "Hint", defaultValue: [ { - children: null, - text: "Start by fetching the robots.txt file of the website you want to generate robots for.", + children: [ + { + text: "Start by fetching the robots.txt file of the website you want to generate robots for.", + }, + ], }, ], }) as unknown as Field, @@ -70,8 +73,11 @@ const Delays: Block = { label: "Hint", defaultValue: [ { - children: null, - text: "You can set bot delays for the robots you want to generate.", + children: [ + { + text: "You can set bot delays for the robots you want to generate.", + }, + ], }, ], }) as unknown as Field, @@ -150,8 +156,11 @@ const Paths: Block = { label: "hint", defaultValue: [ { - text: "You can set disallowed and allowed paths for the robots you want to generate. All paths should be relative to the root of your site and end with a /", - children: null, + children: [ + { + text: "You can set disallowed and allowed paths for the robots you want to generate. All paths should be relative to the root of your site and end with a /", + }, + ], }, ], }) as unknown as Field, @@ -230,8 +239,11 @@ const BlockBots: Block = { name: "hint", defaultValue: [ { - text: "Select bots you want to block from crawling your website.", - children: null, + children: [ + { + text: "Select bots you want to block from crawling your website.", + }, + ], }, ], }) as unknown as Field, @@ -291,8 +303,9 @@ const SiteMaps: Block = { name: "hint", defaultValue: [ { - text: "You can add sitemap URLs to your robots.txt file.", - children: null, + children: [ + { text: "You can add sitemap URLs to your robots.txt file." }, + ], }, ], }) as unknown as Field, @@ -319,8 +332,11 @@ const Finish: Block = { name: "hint", defaultValue: [ { - children: null, - text: "Your robots.txt file has been generated successfully. You can now copy the code or download the file.", + children: [ + { + text: "Your robots.txt file has been generated successfully. You can now copy the code or download the file.", + }, + ], }, ], }) as unknown as Field, diff --git a/apps/roboshield/src/payload/collections/Pages.ts b/apps/roboshield/src/payload/collections/Pages.ts index b8a2d00e0..28eab0f2d 100644 --- a/apps/roboshield/src/payload/collections/Pages.ts +++ b/apps/roboshield/src/payload/collections/Pages.ts @@ -1,7 +1,7 @@ import { CollectionConfig } from "payload/types"; import fullTitle from "../fields/fullTitle"; import slug from "../fields/slug"; -import RoboForm from "../Blocks/RoboForm"; +import RoboForm from "../blocks/RoboForm"; import { PageHeader } from "../blocks/PageHeader"; const Pages: CollectionConfig = { From d9aec5726a6299a91333a4f42638ff93d4c2c209 Mon Sep 17 00:00:00 2001 From: Kevin Koech Date: Mon, 1 Jul 2024 16:55:16 +0300 Subject: [PATCH 11/12] Fix failing build --- apps/roboshield/next.config.mjs | 10 ------ apps/roboshield/payload-types.ts | 57 ++++++++++++++++++-------------- 2 files changed, 32 insertions(+), 35 deletions(-) diff --git a/apps/roboshield/next.config.mjs b/apps/roboshield/next.config.mjs index 1cb3e068d..38c5c24cd 100644 --- a/apps/roboshield/next.config.mjs +++ b/apps/roboshield/next.config.mjs @@ -31,16 +31,6 @@ const nextConfig = { config.experiments = { ...config.experiments, topLevelAwait: true }; // eslint-disable-line no-param-reassign return config; }, - images: { - remotePatterns: [ - { - protocol: 'http', - hostname: 'localhost', - port: '3000', - pathname: '**', - }, - ], - }, }; export default withSentryConfig(nextConfig, { diff --git a/apps/roboshield/payload-types.ts b/apps/roboshield/payload-types.ts index 1322dcbe6..f78ea8dbd 100644 --- a/apps/roboshield/payload-types.ts +++ b/apps/roboshield/payload-types.ts @@ -11,11 +11,11 @@ export interface Config { media: Media; pages: Page; users: User; - 'payload-preferences': PayloadPreference; - 'payload-migrations': PayloadMigration; + "payload-preferences": PayloadPreference; + "payload-migrations": PayloadMigration; }; globals: { - 'settings-site': SettingsSite; + "settings-site": SettingsSite; }; } /** @@ -53,7 +53,7 @@ export interface Page { subtitle: string; id?: string | null; blockName?: string | null; - blockType: 'page-header'; + blockType: "page-header"; } | { toolTipText: string; @@ -73,7 +73,7 @@ export interface Page { fetch: string; id?: string | null; blockName?: string | null; - blockType: 'existing-robots'; + blockType: "existing-robots"; } | { title: string; @@ -96,7 +96,7 @@ export interface Page { }; id?: string | null; blockName?: string | null; - blockType: 'delays'; + blockType: "delays"; } | { title: string; @@ -119,7 +119,7 @@ export interface Page { }; id?: string | null; blockName?: string | null; - blockType: 'paths'; + blockType: "paths"; } | { title: string; @@ -138,7 +138,7 @@ export interface Page { }; id?: string | null; blockName?: string | null; - blockType: 'block-bots'; + blockType: "block-bots"; } | { title: string; @@ -150,7 +150,7 @@ export interface Page { placeholder: string; id?: string | null; blockName?: string | null; - blockType: 'site-maps'; + blockType: "site-maps"; } | { title: string; @@ -162,7 +162,7 @@ export interface Page { placeholder: string; id?: string | null; blockName?: string | null; - blockType: 'finish'; + blockType: "finish"; } )[] | null; @@ -175,7 +175,7 @@ export interface Page { }; id?: string | null; blockName?: string | null; - blockType: 'robo-form'; + blockType: "robo-form"; } )[] | null; @@ -195,7 +195,7 @@ export interface Page { | null; updatedAt: string; createdAt: string; - _status?: ('draft' | 'published') | null; + _status?: ("draft" | "published") | null; } /** * This interface was referenced by `Config`'s JSON-Schema @@ -205,7 +205,7 @@ export interface User { id: string; firstName: string; lastName: string; - roles: ('admin' | 'editor')[]; + roles: ("admin" | "editor")[]; updatedAt: string; createdAt: string; email: string; @@ -226,7 +226,7 @@ export interface User { export interface PayloadPreference { id: string; user: { - relationTo: 'users'; + relationTo: "users"; value: string | User; }; key?: string | null; @@ -269,9 +269,9 @@ export interface SettingsSite { menus?: | { label: string; - linkType?: ('custom' | 'internal') | null; + linkType?: ("custom" | "internal") | null; doc?: { - relationTo: 'pages'; + relationTo: "pages"; value: string | Page; } | null; url?: string | null; @@ -279,15 +279,17 @@ export interface SettingsSite { id?: string | null; }[] | null; - connect?: ('Facebook' | 'Twitter' | 'Instagram' | 'Linkedin' | 'Github' | 'Slack') | null; + connect?: + | ("Facebook" | "Twitter" | "Instagram" | "Linkedin" | "Github" | "Slack") + | null; }; secondaryNavigation?: { menus?: | { label: string; - linkType?: ('custom' | 'internal') | null; + linkType?: ("custom" | "internal") | null; doc?: { - relationTo: 'pages'; + relationTo: "pages"; value: string | Page; } | null; url?: string | null; @@ -300,7 +302,13 @@ export interface SettingsSite { title: string; links?: | { - platform: 'Facebook' | 'Twitter' | 'Instagram' | 'Linkedin' | 'Github' | 'Slack'; + platform: + | "Facebook" + | "Twitter" + | "Instagram" + | "Linkedin" + | "Github" + | "Slack"; url: string; id?: string | null; }[] @@ -320,9 +328,9 @@ export interface SettingsSite { name: string; logo: string | Media; label: string; - linkType?: ('custom' | 'internal') | null; + linkType?: ("custom" | "internal") | null; doc?: { - relationTo: 'pages'; + relationTo: "pages"; value: string | Page; } | null; url?: string | null; @@ -335,7 +343,6 @@ export interface SettingsSite { createdAt?: string | null; } - -declare module 'payload' { +declare module "payload" { export interface GeneratedTypes extends Config {} -} \ No newline at end of file +} From b868212444dcded282735386276ec227bfa12ade Mon Sep 17 00:00:00 2001 From: Kevin Koech Date: Tue, 2 Jul 2024 11:48:16 +0300 Subject: [PATCH 12/12] Add block fields validation --- .../roboshield/src/payload/Blocks/RoboForm.ts | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/apps/roboshield/src/payload/Blocks/RoboForm.ts b/apps/roboshield/src/payload/Blocks/RoboForm.ts index 855307715..75d38dbf0 100644 --- a/apps/roboshield/src/payload/Blocks/RoboForm.ts +++ b/apps/roboshield/src/payload/Blocks/RoboForm.ts @@ -1,5 +1,6 @@ import { Block, Field } from "payload/types"; import richText from "../fields/richText"; +import { blocks } from "payload/dist/fields/validations"; const ExistingRobots: Block = { slug: "existing-robots", @@ -404,6 +405,26 @@ const RoboForm: Block = { admin: { initCollapsed: true, }, + validate: (value, args) => { + const requiredSteps: string[] = [ + "existing-robots", + "delays", + "paths", + "block-bots", + "site-maps", + "finish", + ]; + const missingSteps = requiredSteps.filter( + (slug) => + !value?.find( + ({ blockType }: { blockType: string }) => blockType === slug, + ), + ); + if (missingSteps.length) { + return `The following steps are missing: ${missingSteps.join(", ")}`; + } + return blocks(value, args); + }, }, Labels, ],