diff --git a/web/app/components/plugins/card/index.tsx b/web/app/components/plugins/card/index.tsx
index e20aef6220..a820a6cef8 100644
--- a/web/app/components/plugins/card/index.tsx
+++ b/web/app/components/plugins/card/index.tsx
@@ -6,6 +6,8 @@ import { getLanguage } from '@/i18n-config/language'
import cn from '@/utils/classnames'
import { RiAlertFill } from '@remixicon/react'
import React from 'react'
+import useTheme from '@/hooks/use-theme'
+import { Theme } from '@/types/app'
import Partner from '../base/badges/partner'
import Verified from '../base/badges/verified'
import Icon from '../card/base/card-icon'
@@ -50,7 +52,9 @@ const Card = ({
const locale = localeFromProps ? getLanguage(localeFromProps) : defaultLocale
const { t } = useMixedTranslation(localeFromProps)
const { categoriesMap } = useCategories(t, true)
- const { category, type, name, org, label, brief, icon, verified, badges = [] } = payload
+ const { category, type, name, org, label, brief, icon, icon_dark, verified, badges = [] } = payload
+ const { theme } = useTheme()
+ const iconSrc = theme === Theme.dark && icon_dark ? icon_dark : icon
const getLocalizedText = (obj: Record
| undefined) =>
obj ? renderI18nObject(obj, locale) : ''
const isPartner = badges.includes('partner')
@@ -71,7 +75,7 @@ const Card = ({
{!hideCornerMark && }
{/* Header */}
-
+
diff --git a/web/app/components/plugins/install-plugin/install-from-local-package/index.tsx b/web/app/components/plugins/install-plugin/install-from-local-package/index.tsx
index e8e6cf84b1..6cf55ac044 100644
--- a/web/app/components/plugins/install-plugin/install-from-local-package/index.tsx
+++ b/web/app/components/plugins/install-plugin/install-from-local-package/index.tsx
@@ -64,10 +64,12 @@ const InstallFromLocalPackage: React.FC
= ({
uniqueIdentifier,
} = result
const icon = await getIconUrl(manifest!.icon)
+ const iconDark = manifest.icon_dark ? await getIconUrl(manifest.icon_dark) : undefined
setUniqueIdentifier(uniqueIdentifier)
setManifest({
...manifest,
icon,
+ icon_dark: iconDark,
})
setStep(InstallStep.readyToInstall)
}, [getIconUrl])
diff --git a/web/app/components/plugins/install-plugin/utils.ts b/web/app/components/plugins/install-plugin/utils.ts
index 79c6d7b031..afbe0f18af 100644
--- a/web/app/components/plugins/install-plugin/utils.ts
+++ b/web/app/components/plugins/install-plugin/utils.ts
@@ -17,6 +17,7 @@ export const pluginManifestToCardPluginProps = (pluginManifest: PluginDeclaratio
brief: pluginManifest.description,
description: pluginManifest.description,
icon: pluginManifest.icon,
+ icon_dark: pluginManifest.icon_dark,
verified: pluginManifest.verified,
introduction: '',
repository: '',
diff --git a/web/app/components/plugins/marketplace/constants.ts b/web/app/components/plugins/marketplace/constants.ts
index 6bd4e29604..92c3e7278f 100644
--- a/web/app/components/plugins/marketplace/constants.ts
+++ b/web/app/components/plugins/marketplace/constants.ts
@@ -2,3 +2,5 @@ export const DEFAULT_SORT = {
sortBy: 'install_count',
sortOrder: 'DESC',
}
+
+export const SCROLL_BOTTOM_THRESHOLD = 100
diff --git a/web/app/components/plugins/marketplace/context.tsx b/web/app/components/plugins/marketplace/context.tsx
index 248e035c1b..78f452452a 100644
--- a/web/app/components/plugins/marketplace/context.tsx
+++ b/web/app/components/plugins/marketplace/context.tsx
@@ -41,8 +41,6 @@ import { useInstalledPluginList } from '@/service/use-plugins'
import { debounce, noop } from 'lodash-es'
export type MarketplaceContextValue = {
- intersected: boolean
- setIntersected: (intersected: boolean) => void
searchPluginText: string
handleSearchPluginTextChange: (text: string) => void
filterPluginTags: string[]
@@ -50,7 +48,7 @@ export type MarketplaceContextValue = {
activePluginType: string
handleActivePluginTypeChange: (type: string) => void
page: number
- handlePageChange: (page: number) => void
+ handlePageChange: () => void
plugins?: Plugin[]
pluginsTotal?: number
resetPlugins: () => void
@@ -67,8 +65,6 @@ export type MarketplaceContextValue = {
}
export const MarketplaceContext = createContext({
- intersected: true,
- setIntersected: noop,
searchPluginText: '',
handleSearchPluginTextChange: noop,
filterPluginTags: [],
@@ -121,15 +117,12 @@ export const MarketplaceContextProvider = ({
const hasValidTags = !!tagsFromSearchParams.length
const hasValidCategory = getValidCategoryKeys(searchParams?.category)
const categoryFromSearchParams = hasValidCategory || PLUGIN_TYPE_SEARCH_MAP.all
- const [intersected, setIntersected] = useState(true)
const [searchPluginText, setSearchPluginText] = useState(queryFromSearchParams)
const searchPluginTextRef = useRef(searchPluginText)
const [filterPluginTags, setFilterPluginTags] = useState(tagsFromSearchParams)
const filterPluginTagsRef = useRef(filterPluginTags)
const [activePluginType, setActivePluginType] = useState(categoryFromSearchParams)
const activePluginTypeRef = useRef(activePluginType)
- const [page, setPage] = useState(1)
- const pageRef = useRef(page)
const [sort, setSort] = useState(DEFAULT_SORT)
const sortRef = useRef(sort)
const {
@@ -149,7 +142,11 @@ export const MarketplaceContextProvider = ({
queryPluginsWithDebounced,
cancelQueryPluginsWithDebounced,
isLoading: isPluginsLoading,
+ fetchNextPage: fetchNextPluginsPage,
+ hasNextPage: hasNextPluginsPage,
+ page: pluginsPage,
} = useMarketplacePlugins()
+ const page = Math.max(pluginsPage || 0, 1)
useEffect(() => {
if (queryFromSearchParams || hasValidTags || hasValidCategory) {
@@ -160,7 +157,6 @@ export const MarketplaceContextProvider = ({
sortBy: sortRef.current.sortBy,
sortOrder: sortRef.current.sortOrder,
type: getMarketplaceListFilterType(activePluginTypeRef.current),
- page: pageRef.current,
})
const url = new URL(window.location.href)
if (searchParams?.language)
@@ -221,7 +217,6 @@ export const MarketplaceContextProvider = ({
sortOrder: sortRef.current.sortOrder,
exclude,
type: getMarketplaceListFilterType(activePluginTypeRef.current),
- page: pageRef.current,
})
}
else {
@@ -233,7 +228,6 @@ export const MarketplaceContextProvider = ({
sortOrder: sortRef.current.sortOrder,
exclude,
type: getMarketplaceListFilterType(activePluginTypeRef.current),
- page: pageRef.current,
})
}
}, [exclude, queryPluginsWithDebounced, queryPlugins, handleUpdateSearchParams])
@@ -252,8 +246,6 @@ export const MarketplaceContextProvider = ({
const handleSearchPluginTextChange = useCallback((text: string) => {
setSearchPluginText(text)
searchPluginTextRef.current = text
- setPage(1)
- pageRef.current = 1
handleQuery(true)
}, [handleQuery])
@@ -261,8 +253,6 @@ export const MarketplaceContextProvider = ({
const handleFilterPluginTagsChange = useCallback((tags: string[]) => {
setFilterPluginTags(tags)
filterPluginTagsRef.current = tags
- setPage(1)
- pageRef.current = 1
handleQuery()
}, [handleQuery])
@@ -270,8 +260,6 @@ export const MarketplaceContextProvider = ({
const handleActivePluginTypeChange = useCallback((type: string) => {
setActivePluginType(type)
activePluginTypeRef.current = type
- setPage(1)
- pageRef.current = 1
handleQuery()
}, [handleQuery])
@@ -279,20 +267,14 @@ export const MarketplaceContextProvider = ({
const handleSortChange = useCallback((sort: PluginsSort) => {
setSort(sort)
sortRef.current = sort
- setPage(1)
- pageRef.current = 1
handleQueryPlugins()
}, [handleQueryPlugins])
const handlePageChange = useCallback(() => {
- if (pluginsTotal && plugins && pluginsTotal > plugins.length) {
- setPage(pageRef.current + 1)
- pageRef.current++
-
- handleQueryPlugins()
- }
- }, [handleQueryPlugins, plugins, pluginsTotal])
+ if (hasNextPluginsPage)
+ fetchNextPluginsPage()
+ }, [fetchNextPluginsPage, hasNextPluginsPage])
const handleMoreClick = useCallback((searchParams: SearchParamsFromCollection) => {
setSearchPluginText(searchParams?.query || '')
@@ -305,9 +287,6 @@ export const MarketplaceContextProvider = ({
sortBy: searchParams?.sort_by || DEFAULT_SORT.sortBy,
sortOrder: searchParams?.sort_order || DEFAULT_SORT.sortOrder,
}
- setPage(1)
- pageRef.current = 1
-
handleQueryPlugins()
}, [handleQueryPlugins])
@@ -316,8 +295,6 @@ export const MarketplaceContextProvider = ({
return (
{
- const [isLoading, setIsLoading] = useState(false)
- const [isSuccess, setIsSuccess] = useState(false)
- const [marketplaceCollections, setMarketplaceCollections] = useState()
- const [marketplaceCollectionPluginsMap, setMarketplaceCollectionPluginsMap] = useState>()
+ const [queryParams, setQueryParams] = useState()
+ const [marketplaceCollectionsOverride, setMarketplaceCollections] = useState()
+ const [marketplaceCollectionPluginsMapOverride, setMarketplaceCollectionPluginsMap] = useState>()
- const queryMarketplaceCollectionsAndPlugins = useCallback(async (query?: CollectionsAndPluginsSearchParams) => {
- try {
- setIsLoading(true)
- setIsSuccess(false)
- const { marketplaceCollections, marketplaceCollectionPluginsMap } = await getMarketplaceCollectionsAndPlugins(query)
- setIsLoading(false)
- setIsSuccess(true)
- setMarketplaceCollections(marketplaceCollections)
- setMarketplaceCollectionPluginsMap(marketplaceCollectionPluginsMap)
- }
- // eslint-disable-next-line unused-imports/no-unused-vars
- catch (e) {
- setIsLoading(false)
- setIsSuccess(false)
- }
+ const {
+ data,
+ isFetching,
+ isSuccess,
+ isPending,
+ } = useQuery({
+ queryKey: ['marketplaceCollectionsAndPlugins', queryParams],
+ queryFn: ({ signal }) => getMarketplaceCollectionsAndPlugins(queryParams, { signal }),
+ enabled: queryParams !== undefined,
+ staleTime: 1000 * 60 * 5,
+ gcTime: 1000 * 60 * 10,
+ retry: false,
+ })
+
+ const queryMarketplaceCollectionsAndPlugins = useCallback((query?: CollectionsAndPluginsSearchParams) => {
+ setQueryParams(query ? { ...query } : {})
}, [])
+ const isLoading = !!queryParams && (isFetching || isPending)
return {
- marketplaceCollections,
+ marketplaceCollections: marketplaceCollectionsOverride ?? data?.marketplaceCollections,
setMarketplaceCollections,
- marketplaceCollectionPluginsMap,
+ marketplaceCollectionPluginsMap: marketplaceCollectionPluginsMapOverride ?? data?.marketplaceCollectionPluginsMap,
setMarketplaceCollectionPluginsMap,
queryMarketplaceCollectionsAndPlugins,
isLoading,
@@ -56,37 +63,128 @@ export const useMarketplaceCollectionsAndPlugins = () => {
}
}
-export const useMarketplacePlugins = () => {
+export const useMarketplacePluginsByCollectionId = (
+ collectionId?: string,
+ query?: CollectionsAndPluginsSearchParams,
+) => {
const {
data,
- mutateAsync,
- reset,
+ isFetching,
+ isSuccess,
isPending,
- } = useMutationPluginsFromMarketplace()
+ } = useQuery({
+ queryKey: ['marketplaceCollectionPlugins', collectionId, query],
+ queryFn: ({ signal }) => {
+ if (!collectionId)
+ return Promise.resolve([])
+ return getMarketplacePluginsByCollectionId(collectionId, query, { signal })
+ },
+ enabled: !!collectionId,
+ staleTime: 1000 * 60 * 5,
+ gcTime: 1000 * 60 * 10,
+ retry: false,
+ })
- const [prevPlugins, setPrevPlugins] = useState()
+ return {
+ plugins: data || [],
+ isLoading: !!collectionId && (isFetching || isPending),
+ isSuccess,
+ }
+}
+
+export const useMarketplacePlugins = () => {
+ const queryClient = useQueryClient()
+ const [queryParams, setQueryParams] = useState()
+
+ const normalizeParams = useCallback((pluginsSearchParams: PluginsSearchParams) => {
+ const pageSize = pluginsSearchParams.pageSize || 40
+
+ return {
+ ...pluginsSearchParams,
+ pageSize,
+ }
+ }, [])
+
+ const marketplacePluginsQuery = useInfiniteQuery({
+ queryKey: ['marketplacePlugins', queryParams],
+ queryFn: async ({ pageParam = 1, signal }) => {
+ if (!queryParams) {
+ return {
+ plugins: [] as Plugin[],
+ total: 0,
+ page: 1,
+ pageSize: 40,
+ }
+ }
+
+ const params = normalizeParams(queryParams)
+ const {
+ query,
+ sortBy,
+ sortOrder,
+ category,
+ tags,
+ exclude,
+ type,
+ pageSize,
+ } = params
+ const pluginOrBundle = type === 'bundle' ? 'bundles' : 'plugins'
+
+ try {
+ const res = await postMarketplace<{ data: PluginsFromMarketplaceResponse }>(`/${pluginOrBundle}/search/advanced`, {
+ body: {
+ page: pageParam,
+ page_size: pageSize,
+ query,
+ sort_by: sortBy,
+ sort_order: sortOrder,
+ category: category !== 'all' ? category : '',
+ tags,
+ exclude,
+ type,
+ },
+ signal,
+ })
+ const resPlugins = res.data.bundles || res.data.plugins || []
+
+ return {
+ plugins: resPlugins.map(plugin => getFormattedPlugin(plugin)),
+ total: res.data.total,
+ page: pageParam,
+ pageSize,
+ }
+ }
+ catch {
+ return {
+ plugins: [],
+ total: 0,
+ page: pageParam,
+ pageSize,
+ }
+ }
+ },
+ getNextPageParam: (lastPage) => {
+ const nextPage = lastPage.page + 1
+ const loaded = lastPage.page * lastPage.pageSize
+ return loaded < (lastPage.total || 0) ? nextPage : undefined
+ },
+ initialPageParam: 1,
+ enabled: !!queryParams,
+ staleTime: 1000 * 60 * 5,
+ gcTime: 1000 * 60 * 10,
+ retry: false,
+ })
const resetPlugins = useCallback(() => {
- reset()
- setPrevPlugins(undefined)
- }, [reset])
+ setQueryParams(undefined)
+ queryClient.removeQueries({
+ queryKey: ['marketplacePlugins'],
+ })
+ }, [queryClient])
const handleUpdatePlugins = useCallback((pluginsSearchParams: PluginsSearchParams) => {
- mutateAsync(pluginsSearchParams).then((res) => {
- const currentPage = pluginsSearchParams.page || 1
- const resPlugins = res.data.bundles || res.data.plugins
- if (currentPage > 1) {
- setPrevPlugins(prevPlugins => [...(prevPlugins || []), ...resPlugins.map((plugin) => {
- return getFormattedPlugin(plugin)
- })])
- }
- else {
- setPrevPlugins(resPlugins.map((plugin) => {
- return getFormattedPlugin(plugin)
- }))
- }
- })
- }, [mutateAsync])
+ setQueryParams(normalizeParams(pluginsSearchParams))
+ }, [normalizeParams])
const { run: queryPluginsWithDebounced, cancel: cancelQueryPluginsWithDebounced } = useDebounceFn((pluginsSearchParams: PluginsSearchParams) => {
handleUpdatePlugins(pluginsSearchParams)
@@ -94,14 +192,29 @@ export const useMarketplacePlugins = () => {
wait: 500,
})
+ const hasQuery = !!queryParams
+ const hasData = marketplacePluginsQuery.data !== undefined
+ const plugins = hasQuery && hasData
+ ? marketplacePluginsQuery.data.pages.flatMap(page => page.plugins)
+ : undefined
+ const total = hasQuery && hasData ? marketplacePluginsQuery.data.pages?.[0]?.total : undefined
+ const isPluginsLoading = hasQuery && (
+ marketplacePluginsQuery.isPending
+ || (marketplacePluginsQuery.isFetching && !marketplacePluginsQuery.data)
+ )
+
return {
- plugins: prevPlugins,
- total: data?.data?.total,
+ plugins,
+ total,
resetPlugins,
queryPlugins: handleUpdatePlugins,
queryPluginsWithDebounced,
cancelQueryPluginsWithDebounced,
- isLoading: isPending,
+ isLoading: isPluginsLoading,
+ isFetchingNextPage: marketplacePluginsQuery.isFetchingNextPage,
+ hasNextPage: marketplacePluginsQuery.hasNextPage,
+ fetchNextPage: marketplacePluginsQuery.fetchNextPage,
+ page: marketplacePluginsQuery.data?.pages?.length || (marketplacePluginsQuery.isPending && hasQuery ? 1 : 0),
}
}
@@ -131,7 +244,7 @@ export const useMarketplaceContainerScroll = (
scrollHeight,
clientHeight,
} = target
- if (scrollTop + clientHeight >= scrollHeight - 5 && scrollTop > 0)
+ if (scrollTop + clientHeight >= scrollHeight - SCROLL_BOTTOM_THRESHOLD && scrollTop > 0)
callback()
}, [callback])
@@ -146,34 +259,3 @@ export const useMarketplaceContainerScroll = (
}
}, [handleScroll])
}
-
-export const useSearchBoxAutoAnimate = (searchBoxAutoAnimate?: boolean) => {
- const [searchBoxCanAnimate, setSearchBoxCanAnimate] = useState(true)
-
- const handleSearchBoxCanAnimateChange = useCallback(() => {
- if (!searchBoxAutoAnimate) {
- const clientWidth = document.documentElement.clientWidth
-
- if (clientWidth < 1400)
- setSearchBoxCanAnimate(false)
- else
- setSearchBoxCanAnimate(true)
- }
- }, [searchBoxAutoAnimate])
-
- useEffect(() => {
- handleSearchBoxCanAnimateChange()
- }, [handleSearchBoxCanAnimateChange])
-
- useEffect(() => {
- window.addEventListener('resize', handleSearchBoxCanAnimateChange)
-
- return () => {
- window.removeEventListener('resize', handleSearchBoxCanAnimateChange)
- }
- }, [handleSearchBoxCanAnimateChange])
-
- return {
- searchBoxCanAnimate,
- }
-}
diff --git a/web/app/components/plugins/marketplace/index.tsx b/web/app/components/plugins/marketplace/index.tsx
index d6189a92a1..952a9db90f 100644
--- a/web/app/components/plugins/marketplace/index.tsx
+++ b/web/app/components/plugins/marketplace/index.tsx
@@ -1,37 +1,32 @@
import { MarketplaceContextProvider } from './context'
import Description from './description'
-import IntersectionLine from './intersection-line'
-import SearchBoxWrapper from './search-box/search-box-wrapper'
-import PluginTypeSwitch from './plugin-type-switch'
+import StickySearchAndSwitchWrapper from './sticky-search-and-switch-wrapper'
import ListWrapper from './list/list-wrapper'
-import type { SearchParams } from './types'
+import type { MarketplaceCollection, SearchParams } from './types'
+import type { Plugin } from '@/app/components/plugins/types'
import { getMarketplaceCollectionsAndPlugins } from './utils'
import { TanstackQueryInitializer } from '@/context/query-client'
type MarketplaceProps = {
locale: string
- searchBoxAutoAnimate?: boolean
showInstallButton?: boolean
shouldExclude?: boolean
searchParams?: SearchParams
pluginTypeSwitchClassName?: string
- intersectionContainerId?: string
scrollContainerId?: string
showSearchParams?: boolean
}
const Marketplace = async ({
locale,
- searchBoxAutoAnimate = true,
showInstallButton = true,
shouldExclude,
searchParams,
pluginTypeSwitchClassName,
- intersectionContainerId,
scrollContainerId,
showSearchParams = true,
}: MarketplaceProps) => {
- let marketplaceCollections: any = []
- let marketplaceCollectionPluginsMap = {}
+ let marketplaceCollections: MarketplaceCollection[] = []
+ let marketplaceCollectionPluginsMap: Record = {}
if (!shouldExclude) {
const marketplaceCollectionsAndPluginsData = await getMarketplaceCollectionsAndPlugins()
marketplaceCollections = marketplaceCollectionsAndPluginsData.marketplaceCollections
@@ -47,15 +42,9 @@ const Marketplace = async ({
showSearchParams={showSearchParams}
>
-
-
-
,
- intersectionContainerId = 'marketplace-container',
-) => {
- const intersected = useMarketplaceContext(v => v.intersected)
- const setIntersected = useMarketplaceContext(v => v.setIntersected)
-
- useEffect(() => {
- const container = document.getElementById(intersectionContainerId)
- let observer: IntersectionObserver | undefined
- if (container && anchorRef.current) {
- observer = new IntersectionObserver((entries) => {
- const isIntersecting = entries[0].isIntersecting
-
- if (isIntersecting && !intersected)
- setIntersected(true)
-
- if (!isIntersecting && intersected)
- setIntersected(false)
- }, {
- root: container,
- })
- observer.observe(anchorRef.current)
- }
- return () => observer?.disconnect()
- }, [anchorRef, intersected, setIntersected, intersectionContainerId])
-}
diff --git a/web/app/components/plugins/marketplace/intersection-line/index.tsx b/web/app/components/plugins/marketplace/intersection-line/index.tsx
deleted file mode 100644
index c495d7f507..0000000000
--- a/web/app/components/plugins/marketplace/intersection-line/index.tsx
+++ /dev/null
@@ -1,21 +0,0 @@
-'use client'
-
-import { useRef } from 'react'
-import { useScrollIntersection } from './hooks'
-
-type IntersectionLineProps = {
- intersectionContainerId?: string
-}
-const IntersectionLine = ({
- intersectionContainerId,
-}: IntersectionLineProps) => {
- const ref = useRef(null)
-
- useScrollIntersection(ref, intersectionContainerId)
-
- return (
-
- )
-}
-
-export default IntersectionLine
diff --git a/web/app/components/plugins/marketplace/list/list-wrapper.tsx b/web/app/components/plugins/marketplace/list/list-wrapper.tsx
index fa6521bcfd..908c9c4406 100644
--- a/web/app/components/plugins/marketplace/list/list-wrapper.tsx
+++ b/web/app/components/plugins/marketplace/list/list-wrapper.tsx
@@ -28,13 +28,20 @@ const ListWrapper = ({
const isLoading = useMarketplaceContext(v => v.isLoading)
const isSuccessCollections = useMarketplaceContext(v => v.isSuccessCollections)
const handleQueryPlugins = useMarketplaceContext(v => v.handleQueryPlugins)
+ const searchPluginText = useMarketplaceContext(v => v.searchPluginText)
+ const filterPluginTags = useMarketplaceContext(v => v.filterPluginTags)
const page = useMarketplaceContext(v => v.page)
const handleMoreClick = useMarketplaceContext(v => v.handleMoreClick)
useEffect(() => {
- if (!marketplaceCollectionsFromClient?.length && isSuccessCollections)
+ if (
+ !marketplaceCollectionsFromClient?.length
+ && isSuccessCollections
+ && !searchPluginText
+ && !filterPluginTags.length
+ )
handleQueryPlugins()
- }, [handleQueryPlugins, marketplaceCollections, marketplaceCollectionsFromClient, isSuccessCollections])
+ }, [handleQueryPlugins, marketplaceCollections, marketplaceCollectionsFromClient, isSuccessCollections, searchPluginText, filterPluginTags])
return (
{
const { t } = useMixedTranslation(locale)
const activePluginType = useMarketplaceContext(s => s.activePluginType)
const handleActivePluginTypeChange = useMarketplaceContext(s => s.handleActivePluginTypeChange)
- const { searchBoxCanAnimate } = useSearchBoxAutoAnimate(searchBoxAutoAnimate)
const options = [
{
@@ -105,7 +99,6 @@ const PluginTypeSwitch = ({
return (
{
diff --git a/web/app/components/plugins/marketplace/search-box/search-box-wrapper.tsx b/web/app/components/plugins/marketplace/search-box/search-box-wrapper.tsx
index e73a23f6ad..cca72f657a 100644
--- a/web/app/components/plugins/marketplace/search-box/search-box-wrapper.tsx
+++ b/web/app/components/plugins/marketplace/search-box/search-box-wrapper.tsx
@@ -1,36 +1,24 @@
'use client'
import { useMarketplaceContext } from '../context'
-import {
- useMixedTranslation,
- useSearchBoxAutoAnimate,
-} from '../hooks'
+import { useMixedTranslation } from '../hooks'
import SearchBox from './index'
-import cn from '@/utils/classnames'
type SearchBoxWrapperProps = {
locale?: string
- searchBoxAutoAnimate?: boolean
}
const SearchBoxWrapper = ({
locale,
- searchBoxAutoAnimate,
}: SearchBoxWrapperProps) => {
const { t } = useMixedTranslation(locale)
- const intersected = useMarketplaceContext(v => v.intersected)
const searchPluginText = useMarketplaceContext(v => v.searchPluginText)
const handleSearchPluginTextChange = useMarketplaceContext(v => v.handleSearchPluginTextChange)
const filterPluginTags = useMarketplaceContext(v => v.filterPluginTags)
const handleFilterPluginTagsChange = useMarketplaceContext(v => v.handleFilterPluginTagsChange)
- const { searchBoxCanAnimate } = useSearchBoxAutoAnimate(searchBoxAutoAnimate)
return (
{
+ const hasCustomTopClass = pluginTypeSwitchClassName?.includes('top-')
+
+ return (
+
+ )
+}
+
+export default StickySearchAndSwitchWrapper
diff --git a/web/app/components/plugins/marketplace/utils.ts b/web/app/components/plugins/marketplace/utils.ts
index f424811537..e12cadf070 100644
--- a/web/app/components/plugins/marketplace/utils.ts
+++ b/web/app/components/plugins/marketplace/utils.ts
@@ -13,6 +13,14 @@ import {
} from '@/config'
import { getMarketplaceUrl } from '@/utils/var'
+type MarketplaceFetchOptions = {
+ signal?: AbortSignal
+}
+
+const getMarketplaceHeaders = () => new Headers({
+ 'X-Dify-Version': !IS_MARKETPLACE ? APP_VERSION : '999.0.0',
+})
+
export const getPluginIconInMarketplace = (plugin: Plugin) => {
if (plugin.type === 'bundle')
return `${MARKETPLACE_API_PREFIX}/bundles/${plugin.org}/${plugin.name}/icon`
@@ -46,20 +54,23 @@ export const getPluginDetailLinkInMarketplace = (plugin: Plugin) => {
return `/plugins/${plugin.org}/${plugin.name}`
}
-export const getMarketplacePluginsByCollectionId = async (collectionId: string, query?: CollectionsAndPluginsSearchParams) => {
- let plugins: Plugin[]
+export const getMarketplacePluginsByCollectionId = async (
+ collectionId: string,
+ query?: CollectionsAndPluginsSearchParams,
+ options?: MarketplaceFetchOptions,
+) => {
+ let plugins: Plugin[] = []
try {
const url = `${MARKETPLACE_API_PREFIX}/collections/${collectionId}/plugins`
- const headers = new Headers({
- 'X-Dify-Version': !IS_MARKETPLACE ? APP_VERSION : '999.0.0',
- })
+ const headers = getMarketplaceHeaders()
const marketplaceCollectionPluginsData = await globalThis.fetch(
url,
{
cache: 'no-store',
method: 'POST',
headers,
+ signal: options?.signal,
body: JSON.stringify({
category: query?.category,
exclude: query?.exclude,
@@ -68,9 +79,7 @@ export const getMarketplacePluginsByCollectionId = async (collectionId: string,
},
)
const marketplaceCollectionPluginsDataJson = await marketplaceCollectionPluginsData.json()
- plugins = marketplaceCollectionPluginsDataJson.data.plugins.map((plugin: Plugin) => {
- return getFormattedPlugin(plugin)
- })
+ plugins = (marketplaceCollectionPluginsDataJson.data.plugins || []).map((plugin: Plugin) => getFormattedPlugin(plugin))
}
// eslint-disable-next-line unused-imports/no-unused-vars
catch (e) {
@@ -80,23 +89,31 @@ export const getMarketplacePluginsByCollectionId = async (collectionId: string,
return plugins
}
-export const getMarketplaceCollectionsAndPlugins = async (query?: CollectionsAndPluginsSearchParams) => {
- let marketplaceCollections = [] as MarketplaceCollection[]
- let marketplaceCollectionPluginsMap = {} as Record
+export const getMarketplaceCollectionsAndPlugins = async (
+ query?: CollectionsAndPluginsSearchParams,
+ options?: MarketplaceFetchOptions,
+) => {
+ let marketplaceCollections: MarketplaceCollection[] = []
+ let marketplaceCollectionPluginsMap: Record = {}
try {
let marketplaceUrl = `${MARKETPLACE_API_PREFIX}/collections?page=1&page_size=100`
if (query?.condition)
marketplaceUrl += `&condition=${query.condition}`
if (query?.type)
marketplaceUrl += `&type=${query.type}`
- const headers = new Headers({
- 'X-Dify-Version': !IS_MARKETPLACE ? APP_VERSION : '999.0.0',
- })
- const marketplaceCollectionsData = await globalThis.fetch(marketplaceUrl, { headers, cache: 'no-store' })
+ const headers = getMarketplaceHeaders()
+ const marketplaceCollectionsData = await globalThis.fetch(
+ marketplaceUrl,
+ {
+ headers,
+ cache: 'no-store',
+ signal: options?.signal,
+ },
+ )
const marketplaceCollectionsDataJson = await marketplaceCollectionsData.json()
- marketplaceCollections = marketplaceCollectionsDataJson.data.collections
+ marketplaceCollections = marketplaceCollectionsDataJson.data.collections || []
await Promise.all(marketplaceCollections.map(async (collection: MarketplaceCollection) => {
- const plugins = await getMarketplacePluginsByCollectionId(collection.name, query)
+ const plugins = await getMarketplacePluginsByCollectionId(collection.name, query, options)
marketplaceCollectionPluginsMap[collection.name] = plugins
}))
diff --git a/web/app/components/plugins/plugin-detail-panel/detail-header.tsx b/web/app/components/plugins/plugin-detail-panel/detail-header.tsx
index 555280268f..197f2e2a92 100644
--- a/web/app/components/plugins/plugin-detail-panel/detail-header.tsx
+++ b/web/app/components/plugins/plugin-detail-panel/detail-header.tsx
@@ -28,9 +28,9 @@ import {
RiHardDrive3Line,
} from '@remixicon/react'
import { useBoolean } from 'ahooks'
-import { useTheme } from 'next-themes'
import React, { useCallback, useMemo, useState } from 'react'
import { useTranslation } from 'react-i18next'
+import useTheme from '@/hooks/use-theme'
import Verified from '../base/badges/verified'
import { AutoUpdateLine } from '../../base/icons/src/vender/system'
import DeprecationNotice from '../base/deprecation-notice'
@@ -86,7 +86,7 @@ const DetailHeader = ({
alternative_plugin_id,
} = detail
- const { author, category, name, label, description, icon, verified, tool } = detail.declaration || detail
+ const { author, category, name, label, description, icon, icon_dark, verified, tool } = detail.declaration || detail
const isTool = category === PluginCategoryEnum.tool
const providerBriefInfo = tool?.identity
const providerKey = `${plugin_id}/${providerBriefInfo?.name}`
@@ -109,6 +109,11 @@ const DetailHeader = ({
return false
}, [isFromMarketplace, latest_version, version])
+ const iconFileName = theme === 'dark' && icon_dark ? icon_dark : icon
+ const iconSrc = iconFileName
+ ? (iconFileName.startsWith('http') ? iconFileName : `${API_PREFIX}/workspaces/current/plugin/icon?tenant_id=${tenant_id}&filename=${iconFileName}`)
+ : ''
+
const detailUrl = useMemo(() => {
if (isFromGitHub)
return `https://github.com/${meta!.repo}`
@@ -214,7 +219,7 @@ const DetailHeader = ({
-
+
diff --git a/web/app/components/plugins/plugin-item/index.tsx b/web/app/components/plugins/plugin-item/index.tsx
index 92a67b6e22..51a72d1e5a 100644
--- a/web/app/components/plugins/plugin-item/index.tsx
+++ b/web/app/components/plugins/plugin-item/index.tsx
@@ -14,11 +14,11 @@ import {
RiHardDrive3Line,
RiLoginCircleLine,
} from '@remixicon/react'
-import { useTheme } from 'next-themes'
import type { FC } from 'react'
import React, { useCallback, useMemo } from 'react'
import { useTranslation } from 'react-i18next'
import { gte } from 'semver'
+import useTheme from '@/hooks/use-theme'
import Verified from '../base/badges/verified'
import Badge from '../../base/badge'
import { Github } from '../../base/icons/src/public/common'
@@ -58,7 +58,7 @@ const PluginItem: FC
= ({
status,
deprecated_reason,
} = plugin
- const { category, author, name, label, description, icon, verified, meta: declarationMeta } = plugin.declaration
+ const { category, author, name, label, description, icon, icon_dark, verified, meta: declarationMeta } = plugin.declaration
const orgName = useMemo(() => {
return [PluginSource.github, PluginSource.marketplace].includes(source) ? author : ''
@@ -84,6 +84,10 @@ const PluginItem: FC = ({
const title = getValueFromI18nObject(label)
const descriptionText = getValueFromI18nObject(description)
const { enable_marketplace } = useGlobalPublicStore(s => s.systemFeatures)
+ const iconFileName = theme === 'dark' && icon_dark ? icon_dark : icon
+ const iconSrc = iconFileName
+ ? (iconFileName.startsWith('http') ? iconFileName : `${API_PREFIX}/workspaces/current/plugin/icon?tenant_id=${tenant_id}&filename=${iconFileName}`)
+ : ''
return (
= ({
diff --git a/web/app/components/plugins/types.ts b/web/app/components/plugins/types.ts
index d9659df3ad..667e2ed668 100644
--- a/web/app/components/plugins/types.ts
+++ b/web/app/components/plugins/types.ts
@@ -71,6 +71,7 @@ export type PluginDeclaration = {
version: string
author: string
icon: string
+ icon_dark?: string
name: string
category: PluginCategoryEnum
label: Record
@@ -248,7 +249,7 @@ export type PluginInfoFromMarketPlace = {
}
export type Plugin = {
- type: 'plugin' | 'bundle' | 'model' | 'extension' | 'tool' | 'agent_strategy'
+ type: 'plugin' | 'bundle' | 'model' | 'extension' | 'tool' | 'agent_strategy' | 'datasource' | 'trigger'
org: string
author?: string
name: string
@@ -257,6 +258,7 @@ export type Plugin = {
latest_version: string
latest_package_identifier: string
icon: string
+ icon_dark?: string
verified: boolean
label: Record
brief: Record
diff --git a/web/app/components/react-scan.tsx b/web/app/components/react-scan.tsx
new file mode 100644
index 0000000000..03577b7d2b
--- /dev/null
+++ b/web/app/components/react-scan.tsx
@@ -0,0 +1,22 @@
+'use client'
+
+import { scan } from 'react-scan'
+import { useEffect } from 'react'
+import { IS_DEV } from '@/config'
+
+export function ReactScan() {
+ useEffect(() => {
+ if (IS_DEV) {
+ scan({
+ enabled: true,
+ // HACK: react-scan's getIsProduction() incorrectly detects Next.js dev as production
+ // because Next.js devtools overlay uses production React build
+ // Issue: https://github.com/aidenybai/react-scan/issues/402
+ // TODO: remove this option after upstream fix
+ dangerouslyForceRunInProduction: true,
+ })
+ }
+ }, [])
+
+ return null
+}
diff --git a/web/app/components/tools/marketplace/hooks.ts b/web/app/components/tools/marketplace/hooks.ts
index e3fad24710..904eeb95a8 100644
--- a/web/app/components/tools/marketplace/hooks.ts
+++ b/web/app/components/tools/marketplace/hooks.ts
@@ -3,12 +3,12 @@ import {
useEffect,
useMemo,
useRef,
- useState,
} from 'react'
import {
useMarketplaceCollectionsAndPlugins,
useMarketplacePlugins,
} from '@/app/components/plugins/marketplace/hooks'
+import { SCROLL_BOTTOM_THRESHOLD } from '@/app/components/plugins/marketplace/constants'
import { PluginCategoryEnum } from '@/app/components/plugins/types'
import { getMarketplaceListCondition } from '@/app/components/plugins/marketplace/utils'
import { useAllToolProviders } from '@/service/use-tools'
@@ -31,10 +31,10 @@ export const useMarketplace = (searchPluginText: string, filterPluginTags: strin
queryPlugins,
queryPluginsWithDebounced,
isLoading: isPluginsLoading,
- total: pluginsTotal,
+ fetchNextPage,
+ hasNextPage,
+ page: pluginsPage,
} = useMarketplacePlugins()
- const [page, setPage] = useState(1)
- const pageRef = useRef(page)
const searchPluginTextRef = useRef(searchPluginText)
const filterPluginTagsRef = useRef(filterPluginTags)
@@ -44,9 +44,6 @@ export const useMarketplace = (searchPluginText: string, filterPluginTags: strin
}, [searchPluginText, filterPluginTags])
useEffect(() => {
if ((searchPluginText || filterPluginTags.length) && isSuccess) {
- setPage(1)
- pageRef.current = 1
-
if (searchPluginText) {
queryPluginsWithDebounced({
category: PluginCategoryEnum.tool,
@@ -54,7 +51,6 @@ export const useMarketplace = (searchPluginText: string, filterPluginTags: strin
tags: filterPluginTags,
exclude,
type: 'plugin',
- page: pageRef.current,
})
return
}
@@ -64,7 +60,6 @@ export const useMarketplace = (searchPluginText: string, filterPluginTags: strin
tags: filterPluginTags,
exclude,
type: 'plugin',
- page: pageRef.current,
})
}
else {
@@ -87,24 +82,13 @@ export const useMarketplace = (searchPluginText: string, filterPluginTags: strin
scrollHeight,
clientHeight,
} = target
- if (scrollTop + clientHeight >= scrollHeight - 5 && scrollTop > 0) {
+ if (scrollTop + clientHeight >= scrollHeight - SCROLL_BOTTOM_THRESHOLD && scrollTop > 0) {
const searchPluginText = searchPluginTextRef.current
const filterPluginTags = filterPluginTagsRef.current
- if (pluginsTotal && plugins && pluginsTotal > plugins.length && (!!searchPluginText || !!filterPluginTags.length)) {
- setPage(pageRef.current + 1)
- pageRef.current++
-
- queryPlugins({
- category: PluginCategoryEnum.tool,
- query: searchPluginText,
- tags: filterPluginTags,
- exclude,
- type: 'plugin',
- page: pageRef.current,
- })
- }
+ if (hasNextPage && (!!searchPluginText || !!filterPluginTags.length))
+ fetchNextPage()
}
- }, [exclude, plugins, pluginsTotal, queryPlugins])
+ }, [exclude, fetchNextPage, hasNextPage, plugins, queryPlugins])
return {
isLoading: isLoading || isPluginsLoading,
@@ -112,6 +96,6 @@ export const useMarketplace = (searchPluginText: string, filterPluginTags: strin
marketplaceCollectionPluginsMap,
plugins,
handleScroll,
- page,
+ page: Math.max(pluginsPage || 0, 1),
}
}
diff --git a/web/app/components/tools/mcp/mock.ts b/web/app/components/tools/mcp/mock.ts
deleted file mode 100644
index f271f67ed3..0000000000
--- a/web/app/components/tools/mcp/mock.ts
+++ /dev/null
@@ -1,154 +0,0 @@
-const tools = [
- {
- author: 'Novice',
- name: 'NOTION_ADD_PAGE_CONTENT',
- label: {
- en_US: 'NOTION_ADD_PAGE_CONTENT',
- zh_Hans: 'NOTION_ADD_PAGE_CONTENT',
- pt_BR: 'NOTION_ADD_PAGE_CONTENT',
- ja_JP: 'NOTION_ADD_PAGE_CONTENT',
- },
- description: {
- en_US: 'Adds a single content block to a notion page. multiple calls needed for multiple blocks. note: only supports adding to notion pages. blocks that can contain children: - page (any block type) - toggle (any nested content) - to-do (nested to-dos/blocks) - bulleted list (nested lists/blocks) - numbered list (nested lists/blocks) - callout (child blocks) - quote (nested blocks)',
- zh_Hans: 'Adds a single content block to a notion page. multiple calls needed for multiple blocks. note: only supports adding to notion pages. blocks that can contain children: - page (any block type) - toggle (any nested content) - to-do (nested to-dos/blocks) - bulleted list (nested lists/blocks) - numbered list (nested lists/blocks) - callout (child blocks) - quote (nested blocks)',
- pt_BR: 'Adds a single content block to a notion page. multiple calls needed for multiple blocks. note: only supports adding to notion pages. blocks that can contain children: - page (any block type) - toggle (any nested content) - to-do (nested to-dos/blocks) - bulleted list (nested lists/blocks) - numbered list (nested lists/blocks) - callout (child blocks) - quote (nested blocks)',
- ja_JP: 'Adds a single content block to a notion page. multiple calls needed for multiple blocks. note: only supports adding to notion pages. blocks that can contain children: - page (any block type) - toggle (any nested content) - to-do (nested to-dos/blocks) - bulleted list (nested lists/blocks) - numbered list (nested lists/blocks) - callout (child blocks) - quote (nested blocks)',
- },
- parameters: [
- {
- name: 'after',
- label: {
- en_US: 'after',
- zh_Hans: 'after',
- pt_BR: 'after',
- ja_JP: 'after',
- },
- placeholder: null,
- scope: null,
- auto_generate: null,
- template: null,
- required: false,
- default: null,
- min: null,
- max: null,
- precision: null,
- options: [],
- type: 'string',
- human_description: {
- en_US: 'The ID of the existing block that the new block should be appended after. If not provided, content will be appended at the end of the page.',
- zh_Hans: 'The ID of the existing block that the new block should be appended after. If not provided, content will be appended at the end of the page.',
- pt_BR: 'The ID of the existing block that the new block should be appended after. If not provided, content will be appended at the end of the page.',
- ja_JP: 'The ID of the existing block that the new block should be appended after. If not provided, content will be appended at the end of the page.',
- },
- form: 'llm',
- llm_description: 'The ID of the existing block that the new block should be appended after. If not provided, content will be appended at the end of the page.',
- },
- {
- name: 'content_block',
- label: {
- en_US: 'content_block',
- zh_Hans: 'content_block',
- pt_BR: 'content_block',
- ja_JP: 'content_block',
- },
- placeholder: null,
- scope: null,
- auto_generate: null,
- template: null,
- required: false,
- default: null,
- min: null,
- max: null,
- precision: null,
- options: [],
- type: 'string',
- human_description: {
- en_US: 'Child content to append to a page.',
- zh_Hans: 'Child content to append to a page.',
- pt_BR: 'Child content to append to a page.',
- ja_JP: 'Child content to append to a page.',
- },
- form: 'llm',
- llm_description: 'Child content to append to a page.',
- },
- {
- name: 'parent_block_id',
- label: {
- en_US: 'parent_block_id',
- zh_Hans: 'parent_block_id',
- pt_BR: 'parent_block_id',
- ja_JP: 'parent_block_id',
- },
- placeholder: null,
- scope: null,
- auto_generate: null,
- template: null,
- required: false,
- default: null,
- min: null,
- max: null,
- precision: null,
- options: [],
- type: 'string',
- human_description: {
- en_US: 'The ID of the page which the children will be added.',
- zh_Hans: 'The ID of the page which the children will be added.',
- pt_BR: 'The ID of the page which the children will be added.',
- ja_JP: 'The ID of the page which the children will be added.',
- },
- form: 'llm',
- llm_description: 'The ID of the page which the children will be added.',
- },
- ],
- labels: [],
- output_schema: null,
- },
-]
-
-export const listData = [
- {
- id: 'fdjklajfkljadslf111',
- author: 'KVOJJJin',
- name: 'GOGOGO',
- icon: 'https://cloud.dify.dev/console/api/workspaces/694cc430-fa36-4458-86a0-4a98c09c4684/model-providers/langgenius/openai/openai/icon_small/en_US',
- server_url: 'https://mcp.composio.dev/notion/****/abc',
- type: 'mcp',
- is_team_authorization: true,
- tools,
- update_elapsed_time: 1744793369,
- label: {
- en_US: 'GOGOGO',
- zh_Hans: 'GOGOGO',
- },
- },
- {
- id: 'fdjklajfkljadslf222',
- author: 'KVOJJJin',
- name: 'GOGOGO2',
- icon: 'https://cloud.dify.dev/console/api/workspaces/694cc430-fa36-4458-86a0-4a98c09c4684/model-providers/langgenius/openai/openai/icon_small/en_US',
- server_url: 'https://mcp.composio.dev/notion/****/abc',
- type: 'mcp',
- is_team_authorization: false,
- tools: [],
- update_elapsed_time: 1744793369,
- label: {
- en_US: 'GOGOGO2',
- zh_Hans: 'GOGOGO2',
- },
- },
- {
- id: 'fdjklajfkljadslf333',
- author: 'KVOJJJin',
- name: 'GOGOGO3',
- icon: 'https://cloud.dify.dev/console/api/workspaces/694cc430-fa36-4458-86a0-4a98c09c4684/model-providers/langgenius/openai/openai/icon_small/en_US',
- server_url: 'https://mcp.composio.dev/notion/****/abc',
- type: 'mcp',
- is_team_authorization: true,
- tools,
- update_elapsed_time: 1744793369,
- label: {
- en_US: 'GOGOGO3',
- zh_Hans: 'GOGOGO3',
- },
- },
-]
diff --git a/web/app/components/tools/types.ts b/web/app/components/tools/types.ts
index 499a07342d..e20061a899 100644
--- a/web/app/components/tools/types.ts
+++ b/web/app/components/tools/types.ts
@@ -49,6 +49,7 @@ export type Collection = {
author: string
description: TypeWithI18N
icon: string | Emoji
+ icon_dark?: string | Emoji
label: TypeWithI18N
type: CollectionType | string
team_credentials: Record
diff --git a/web/app/components/workflow/block-selector/tool/action-item.tsx b/web/app/components/workflow/block-selector/tool/action-item.tsx
index 01c319327a..1ca61b3039 100644
--- a/web/app/components/workflow/block-selector/tool/action-item.tsx
+++ b/web/app/components/workflow/block-selector/tool/action-item.tsx
@@ -1,6 +1,6 @@
'use client'
import type { FC } from 'react'
-import React from 'react'
+import React, { useMemo } from 'react'
import type { ToolWithProvider } from '../../types'
import { BlockEnum } from '../../types'
import type { ToolDefaultValue } from '../types'
@@ -10,9 +10,13 @@ import { useGetLanguage } from '@/context/i18n'
import BlockIcon from '../../block-icon'
import cn from '@/utils/classnames'
import { useTranslation } from 'react-i18next'
+import useTheme from '@/hooks/use-theme'
+import { Theme } from '@/types/app'
import { basePath } from '@/utils/var'
-const normalizeProviderIcon = (icon: ToolWithProvider['icon']) => {
+const normalizeProviderIcon = (icon?: ToolWithProvider['icon']) => {
+ if (!icon)
+ return icon
if (typeof icon === 'string' && basePath && icon.startsWith('/') && !icon.startsWith(`${basePath}/`))
return `${basePath}${icon}`
return icon
@@ -36,6 +40,20 @@ const ToolItem: FC = ({
const { t } = useTranslation()
const language = useGetLanguage()
+ const { theme } = useTheme()
+ const normalizedIcon = useMemo(() => {
+ return normalizeProviderIcon(provider.icon) ?? provider.icon
+ }, [provider.icon])
+ const normalizedIconDark = useMemo(() => {
+ if (!provider.icon_dark)
+ return undefined
+ return normalizeProviderIcon(provider.icon_dark) ?? provider.icon_dark
+ }, [provider.icon_dark])
+ const providerIcon = useMemo(() => {
+ if (theme === Theme.dark && normalizedIconDark)
+ return normalizedIconDark
+ return normalizedIcon
+ }, [theme, normalizedIcon, normalizedIconDark])
return (
= ({
size='md'
className='mb-2'
type={BlockEnum.Tool}
- toolIcon={provider.icon}
+ toolIcon={providerIcon}
/>
{payload.label[language]}
{payload.description[language]}
@@ -73,7 +91,8 @@ const ToolItem: FC = ({
provider_name: provider.name,
plugin_id: provider.plugin_id,
plugin_unique_identifier: provider.plugin_unique_identifier,
- provider_icon: normalizeProviderIcon(provider.icon),
+ provider_icon: normalizedIcon,
+ provider_icon_dark: normalizedIconDark,
tool_name: payload.name,
tool_label: payload.label[language],
tool_description: payload.description[language],
diff --git a/web/app/components/workflow/block-selector/tool/tool.tsx b/web/app/components/workflow/block-selector/tool/tool.tsx
index 38be8d19d6..2ce8f8130e 100644
--- a/web/app/components/workflow/block-selector/tool/tool.tsx
+++ b/web/app/components/workflow/block-selector/tool/tool.tsx
@@ -14,11 +14,15 @@ import ActionItem from './action-item'
import BlockIcon from '../../block-icon'
import { useTranslation } from 'react-i18next'
import { useHover } from 'ahooks'
+import useTheme from '@/hooks/use-theme'
+import { Theme } from '@/types/app'
import McpToolNotSupportTooltip from '../../nodes/_base/components/mcp-tool-not-support-tooltip'
import { Mcp } from '@/app/components/base/icons/src/vender/other'
import { basePath } from '@/utils/var'
-const normalizeProviderIcon = (icon: ToolWithProvider['icon']) => {
+const normalizeProviderIcon = (icon?: ToolWithProvider['icon']) => {
+ if (!icon)
+ return icon
if (typeof icon === 'string' && basePath && icon.startsWith('/') && !icon.startsWith(`${basePath}/`))
return `${basePath}${icon}`
return icon
@@ -59,6 +63,20 @@ const Tool: FC = ({
const isHovering = useHover(ref)
const isMCPTool = payload.type === CollectionType.mcp
const isShowCanNotChooseMCPTip = !canChooseMCPTool && isMCPTool
+ const { theme } = useTheme()
+ const normalizedIcon = useMemo(() => {
+ return normalizeProviderIcon(payload.icon) ?? payload.icon
+ }, [payload.icon])
+ const normalizedIconDark = useMemo(() => {
+ if (!payload.icon_dark)
+ return undefined
+ return normalizeProviderIcon(payload.icon_dark) ?? payload.icon_dark
+ }, [payload.icon_dark])
+ const providerIcon = useMemo(() => {
+ if (theme === Theme.dark && normalizedIconDark)
+ return normalizedIconDark
+ return normalizedIcon
+ }, [theme, normalizedIcon, normalizedIconDark])
const getIsDisabled = useCallback((tool: ToolType) => {
if (!selectedTools || !selectedTools.length) return false
return selectedTools.some(selectedTool => (selectedTool.provider_name === payload.name || selectedTool.provider_name === payload.id) && selectedTool.tool_name === tool.name)
@@ -95,7 +113,8 @@ const Tool: FC = ({
provider_name: payload.name,
plugin_id: payload.plugin_id,
plugin_unique_identifier: payload.plugin_unique_identifier,
- provider_icon: normalizeProviderIcon(payload.icon),
+ provider_icon: normalizedIcon,
+ provider_icon_dark: normalizedIconDark,
tool_name: tool.name,
tool_label: tool.label[language],
tool_description: tool.description[language],
@@ -177,7 +196,8 @@ const Tool: FC = ({
provider_name: payload.name,
plugin_id: payload.plugin_id,
plugin_unique_identifier: payload.plugin_unique_identifier,
- provider_icon: normalizeProviderIcon(payload.icon),
+ provider_icon: normalizedIcon,
+ provider_icon_dark: normalizedIconDark,
tool_name: tool.name,
tool_label: tool.label[language],
tool_description: tool.description[language],
@@ -192,7 +212,7 @@ const Tool: FC = ({
{notShowProvider ? actions[0]?.label[language] : payload.label[language]}
diff --git a/web/app/components/workflow/block-selector/trigger-plugin/item.tsx b/web/app/components/workflow/block-selector/trigger-plugin/item.tsx
index 702d3603fb..49db8c6c3e 100644
--- a/web/app/components/workflow/block-selector/trigger-plugin/item.tsx
+++ b/web/app/components/workflow/block-selector/trigger-plugin/item.tsx
@@ -10,6 +10,17 @@ import BlockIcon from '@/app/components/workflow/block-icon'
import { BlockEnum } from '@/app/components/workflow/types'
import type { TriggerDefaultValue, TriggerWithProvider } from '@/app/components/workflow/block-selector/types'
import TriggerPluginActionItem from './action-item'
+import { Theme } from '@/types/app'
+import useTheme from '@/hooks/use-theme'
+import { basePath } from '@/utils/var'
+
+const normalizeProviderIcon = (icon?: TriggerWithProvider['icon']) => {
+ if (!icon)
+ return icon
+ if (typeof icon === 'string' && basePath && icon.startsWith('/') && !icon.startsWith(`${basePath}/`))
+ return `${basePath}${icon}`
+ return icon
+}
type Props = {
className?: string
@@ -26,6 +37,7 @@ const TriggerPluginItem: FC
= ({
}) => {
const { t } = useTranslation()
const language = useGetLanguage()
+ const { theme } = useTheme()
const notShowProvider = payload.type === CollectionType.workflow
const actions = payload.events
const hasAction = !notShowProvider
@@ -55,6 +67,23 @@ const TriggerPluginItem: FC = ({
return payload.author || ''
}, [payload.author, payload.type, t])
+ const normalizedIcon = useMemo(() => {
+ return normalizeProviderIcon(payload.icon) ?? payload.icon
+ }, [payload.icon])
+ const normalizedIconDark = useMemo(() => {
+ if (!payload.icon_dark)
+ return undefined
+ return normalizeProviderIcon(payload.icon_dark) ?? payload.icon_dark
+ }, [payload.icon_dark])
+ const providerIcon = useMemo(() => {
+ if (theme === Theme.dark && normalizedIconDark)
+ return normalizedIconDark
+ return normalizedIcon
+ }, [normalizedIcon, normalizedIconDark, theme])
+ const providerWithResolvedIcon = useMemo(() => ({
+ ...payload,
+ icon: providerIcon,
+ }), [payload, providerIcon])
return (
= ({
{notShowProvider ? actions[0]?.label[language] : payload.label[language]}
@@ -118,7 +147,7 @@ const TriggerPluginItem: FC
= ({
actions.map(action => (
data.type === BlockEnum.TriggerPlugin
@@ -22,17 +23,30 @@ const isToolNode = (data: Node['data']): data is ToolNodeType => data.type === B
const isDataSourceNode = (data: Node['data']): data is DataSourceNodeType => data.type === BlockEnum.DataSource
+type IconValue = ToolWithProvider['icon']
+
+const resolveIconByTheme = (
+ currentTheme: string | undefined,
+ icon?: IconValue,
+ iconDark?: IconValue,
+) => {
+ if (currentTheme === 'dark' && iconDark)
+ return iconDark
+ return icon
+}
+
const findTriggerPluginIcon = (
identifiers: (string | undefined)[],
triggers: TriggerWithProvider[] | undefined,
+ currentTheme?: string,
) => {
const targetTriggers = triggers || []
for (const identifier of identifiers) {
if (!identifier)
continue
const matched = targetTriggers.find(trigger => trigger.id === identifier || canFindTool(trigger.id, identifier))
- if (matched?.icon)
- return matched.icon
+ if (matched)
+ return resolveIconByTheme(currentTheme, matched.icon, matched.icon_dark)
}
return undefined
}
@@ -44,6 +58,7 @@ export const useToolIcon = (data?: Node['data']) => {
const { data: mcpTools } = useAllMCPTools()
const dataSourceList = useStore(s => s.dataSourceList)
const { data: triggerPlugins } = useAllTriggerPlugins()
+ const { theme } = useTheme()
const toolIcon = useMemo(() => {
if (!data)
@@ -57,6 +72,7 @@ export const useToolIcon = (data?: Node['data']) => {
data.provider_name,
],
triggerPlugins,
+ theme,
)
if (icon)
return icon
@@ -100,12 +116,16 @@ export const useToolIcon = (data?: Node['data']) => {
return true
return data.provider_name === toolWithProvider.name
})
- if (matched?.icon)
- return matched.icon
+ if (matched) {
+ const icon = resolveIconByTheme(theme, matched.icon, matched.icon_dark)
+ if (icon)
+ return icon
+ }
}
- if (data.provider_icon)
- return data.provider_icon
+ const fallbackIcon = resolveIconByTheme(theme, data.provider_icon, data.provider_icon_dark)
+ if (fallbackIcon)
+ return fallbackIcon
return ''
}
@@ -114,7 +134,7 @@ export const useToolIcon = (data?: Node['data']) => {
return dataSourceList?.find(toolWithProvider => toolWithProvider.plugin_id === data.plugin_id)?.icon || ''
return ''
- }, [data, dataSourceList, buildInTools, customTools, workflowTools, mcpTools, triggerPlugins])
+ }, [data, dataSourceList, buildInTools, customTools, workflowTools, mcpTools, triggerPlugins, theme])
return toolIcon
}
@@ -126,6 +146,7 @@ export const useGetToolIcon = () => {
const { data: mcpTools } = useAllMCPTools()
const { data: triggerPlugins } = useAllTriggerPlugins()
const workflowStore = useWorkflowStore()
+ const { theme } = useTheme()
const getToolIcon = useCallback((data: Node['data']) => {
const {
@@ -144,6 +165,7 @@ export const useGetToolIcon = () => {
data.provider_name,
],
triggerPlugins,
+ theme,
)
}
@@ -182,12 +204,16 @@ export const useGetToolIcon = () => {
return true
return data.provider_name === toolWithProvider.name
})
- if (matched?.icon)
- return matched.icon
+ if (matched) {
+ const icon = resolveIconByTheme(theme, matched.icon, matched.icon_dark)
+ if (icon)
+ return icon
+ }
}
- if (data.provider_icon)
- return data.provider_icon
+ const fallbackIcon = resolveIconByTheme(theme, data.provider_icon, data.provider_icon_dark)
+ if (fallbackIcon)
+ return fallbackIcon
return undefined
}
@@ -196,7 +222,7 @@ export const useGetToolIcon = () => {
return dataSourceList?.find(toolWithProvider => toolWithProvider.plugin_id === data.plugin_id)?.icon
return undefined
- }, [workflowStore, triggerPlugins, buildInTools, customTools, workflowTools, mcpTools])
+ }, [workflowStore, triggerPlugins, buildInTools, customTools, workflowTools, mcpTools, theme])
return getToolIcon
}
diff --git a/web/app/components/workflow/nodes/tool/types.ts b/web/app/components/workflow/nodes/tool/types.ts
index 6e6ef858dc..da3b7f7b31 100644
--- a/web/app/components/workflow/nodes/tool/types.ts
+++ b/web/app/components/workflow/nodes/tool/types.ts
@@ -22,5 +22,6 @@ export type ToolNodeType = CommonNodeType & {
params?: Record
plugin_id?: string
provider_icon?: Collection['icon']
+ provider_icon_dark?: Collection['icon_dark']
plugin_unique_identifier?: string
}
diff --git a/web/app/components/workflow/store/workflow/debug/mock-data.ts b/web/app/components/workflow/store/workflow/debug/mock-data.ts
deleted file mode 100644
index 0bc5555d8c..0000000000
--- a/web/app/components/workflow/store/workflow/debug/mock-data.ts
+++ /dev/null
@@ -1,90 +0,0 @@
-import { VarType } from '../../../types'
-import type { VarInInspect } from '@/types/workflow'
-import { VarInInspectType } from '@/types/workflow'
-
-export const vars: VarInInspect[] = [
- {
- id: 'xxx',
- type: VarInInspectType.node,
- name: 'text00',
- description: '',
- selector: ['1745476079387', 'text'],
- value_type: VarType.string,
- value: 'text value...',
- edited: false,
- visible: true,
- is_truncated: false,
- full_content: { size_bytes: 0, download_url: '' },
- },
- {
- id: 'fdklajljgldjglkagjlk',
- type: VarInInspectType.node,
- name: 'text',
- description: '',
- selector: ['1712386917734', 'text'],
- value_type: VarType.string,
- value: 'made zhizhang',
- edited: false,
- visible: true,
- is_truncated: false,
- full_content: { size_bytes: 0, download_url: '' },
- },
-]
-
-export const conversationVars: VarInInspect[] = [
- {
- id: 'con1',
- type: VarInInspectType.conversation,
- name: 'conversationVar 1',
- description: '',
- selector: ['conversation', 'var1'],
- value_type: VarType.string,
- value: 'conversation var value...',
- edited: false,
- visible: true,
- is_truncated: false,
- full_content: { size_bytes: 0, download_url: '' },
- },
- {
- id: 'con2',
- type: VarInInspectType.conversation,
- name: 'conversationVar 2',
- description: '',
- selector: ['conversation', 'var2'],
- value_type: VarType.number,
- value: 456,
- edited: false,
- visible: true,
- is_truncated: false,
- full_content: { size_bytes: 0, download_url: '' },
- },
-]
-
-export const systemVars: VarInInspect[] = [
- {
- id: 'sys1',
- type: VarInInspectType.system,
- name: 'query',
- description: '',
- selector: ['sys', 'query'],
- value_type: VarType.string,
- value: 'Hello robot!',
- edited: false,
- visible: true,
- is_truncated: false,
- full_content: { size_bytes: 0, download_url: '' },
- },
- {
- id: 'sys2',
- type: VarInInspectType.system,
- name: 'user_id',
- description: '',
- selector: ['sys', 'user_id'],
- value_type: VarType.string,
- value: 'djflakjerlkjdlksfjslakjsdfl',
- edited: false,
- visible: true,
- is_truncated: false,
- full_content: { size_bytes: 0, download_url: '' },
- },
-]
diff --git a/web/app/layout.tsx b/web/app/layout.tsx
index 011defe466..878f335b92 100644
--- a/web/app/layout.tsx
+++ b/web/app/layout.tsx
@@ -1,3 +1,4 @@
+import { ReactScan } from './components/react-scan'
import RoutePrefixHandle from './routePrefixHandle'
import type { Viewport } from 'next'
import I18nServer from './components/i18n-server'
@@ -86,6 +87,7 @@ const LocaleLayout = async ({
className='color-scheme h-full select-auto'
{...datasetMap}
>
+
- fetch(url).then(r => r.json())
-
export const CompletionParams = ['temperature', 'top_p', 'presence_penalty', 'max_token', 'stop', 'frequency_penalty'] as const
export type CompletionParamType = typeof CompletionParams[number]
diff --git a/web/models/user.ts b/web/models/user.ts
deleted file mode 100644
index 5451980902..0000000000
--- a/web/models/user.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-export type User = {
- id: string
- firstName: string
- lastName: string
- name: string
- phone: string
- username: string
- email: string
- avatar: string
-}
-
-export type UserResponse = {
- users: User[]
-}
-
-export const fetchUsers = (url: string) =>
- fetch(url).then(r => r.json())
diff --git a/web/package.json b/web/package.json
index 11b2165ac7..a3af02f230 100644
--- a/web/package.json
+++ b/web/package.json
@@ -104,15 +104,15 @@
"mime": "^4.1.0",
"mitt": "^3.0.1",
"negotiator": "^1.0.0",
- "next": "~15.5.6",
+ "next": "~15.5.7",
"next-pwa": "^5.6.0",
"next-themes": "^0.4.6",
"pinyin-pro": "^3.27.0",
"qrcode.react": "^4.2.0",
"qs": "^6.14.0",
- "react": "19.1.1",
+ "react": "19.2.1",
"react-18-input-autosize": "^3.0.0",
- "react-dom": "19.1.1",
+ "react-dom": "19.2.1",
"react-easy-crop": "^5.5.3",
"react-hook-form": "^7.65.0",
"react-hotkeys-hook": "^4.6.2",
@@ -153,9 +153,9 @@
"@happy-dom/jest-environment": "^20.0.8",
"@mdx-js/loader": "^3.1.1",
"@mdx-js/react": "^3.1.1",
- "@next/bundle-analyzer": "15.5.4",
- "@next/eslint-plugin-next": "15.5.4",
- "@next/mdx": "15.5.4",
+ "@next/bundle-analyzer": "15.5.7",
+ "@next/eslint-plugin-next": "15.5.7",
+ "@next/mdx": "15.5.7",
"@rgrove/parse-xml": "^4.2.0",
"@storybook/addon-docs": "9.1.13",
"@storybook/addon-links": "9.1.13",
@@ -173,8 +173,8 @@
"@types/negotiator": "^0.6.4",
"@types/node": "18.15.0",
"@types/qs": "^6.14.0",
- "@types/react": "~19.1.17",
- "@types/react-dom": "~19.1.11",
+ "@types/react": "~19.2.7",
+ "@types/react-dom": "~19.2.3",
"@types/react-slider": "^1.3.6",
"@types/react-syntax-highlighter": "^15.5.13",
"@types/react-window": "^1.8.8",
@@ -201,6 +201,7 @@
"lodash": "^4.17.21",
"magicast": "^0.3.5",
"postcss": "^8.5.6",
+ "react-scan": "^0.4.3",
"sass": "^1.93.2",
"storybook": "9.1.13",
"tailwindcss": "^3.4.18",
@@ -209,8 +210,8 @@
"uglify-js": "^3.19.3"
},
"resolutions": {
- "@types/react": "~19.1.17",
- "@types/react-dom": "~19.1.11",
+ "@types/react": "~19.2.7",
+ "@types/react-dom": "~19.2.3",
"string-width": "~4.2.3",
"@eslint/plugin-kit": "~0.3",
"canvas": "^3.2.0",
diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml
index 2d528ecdf2..9b6a5eb867 100644
--- a/web/pnpm-lock.yaml
+++ b/web/pnpm-lock.yaml
@@ -5,8 +5,8 @@ settings:
excludeLinksFromLockfile: false
overrides:
- '@types/react': ~19.1.17
- '@types/react-dom': ~19.1.11
+ '@types/react': ~19.2.7
+ '@types/react-dom': ~19.2.3
string-width: ~4.2.3
'@eslint/plugin-kit': ~0.3
canvas: ^3.2.0
@@ -71,19 +71,19 @@ importers:
version: 1.2.1
'@floating-ui/react':
specifier: ^0.26.28
- version: 0.26.28(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ version: 0.26.28(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
'@formatjs/intl-localematcher':
specifier: ^0.5.10
version: 0.5.10
'@headlessui/react':
specifier: 2.2.1
- version: 2.2.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ version: 2.2.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
'@heroicons/react':
specifier: ^2.2.0
- version: 2.2.0(react@19.1.1)
+ version: 2.2.0(react@19.2.1)
'@hookform/resolvers':
specifier: ^3.10.0
- version: 3.10.0(react-hook-form@7.67.0(react@19.1.1))
+ version: 3.10.0(react-hook-form@7.67.0(react@19.2.1))
'@lexical/code':
specifier: ^0.36.2
version: 0.36.2
@@ -95,7 +95,7 @@ importers:
version: 0.38.2
'@lexical/react':
specifier: ^0.36.2
- version: 0.36.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(yjs@13.6.27)
+ version: 0.36.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(yjs@13.6.27)
'@lexical/selection':
specifier: ^0.37.0
version: 0.37.0
@@ -107,7 +107,7 @@ importers:
version: 0.37.0
'@monaco-editor/react':
specifier: ^4.7.0
- version: 4.7.0(monaco-editor@0.55.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ version: 4.7.0(monaco-editor@0.55.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
'@octokit/core':
specifier: ^6.1.6
version: 6.1.6
@@ -116,31 +116,31 @@ importers:
version: 6.1.8
'@remixicon/react':
specifier: ^4.7.0
- version: 4.7.0(react@19.1.1)
+ version: 4.7.0(react@19.2.1)
'@sentry/react':
specifier: ^8.55.0
- version: 8.55.0(react@19.1.1)
+ version: 8.55.0(react@19.2.1)
'@svgdotjs/svg.js':
specifier: ^3.2.5
version: 3.2.5
'@tailwindcss/typography':
specifier: ^0.5.19
- version: 0.5.19(tailwindcss@3.4.18(yaml@2.8.2))
+ version: 0.5.19(tailwindcss@3.4.18(tsx@4.21.0)(yaml@2.8.2))
'@tanstack/react-form':
specifier: ^1.23.7
- version: 1.27.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ version: 1.27.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
'@tanstack/react-query':
specifier: ^5.90.5
- version: 5.90.11(react@19.1.1)
+ version: 5.90.11(react@19.2.1)
'@tanstack/react-query-devtools':
specifier: ^5.90.2
- version: 5.91.1(@tanstack/react-query@5.90.11(react@19.1.1))(react@19.1.1)
+ version: 5.91.1(@tanstack/react-query@5.90.11(react@19.2.1))(react@19.2.1)
abcjs:
specifier: ^6.5.2
version: 6.5.2
ahooks:
specifier: ^3.9.5
- version: 3.9.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ version: 3.9.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
class-variance-authority:
specifier: ^0.7.1
version: 0.7.1
@@ -149,7 +149,7 @@ importers:
version: 2.5.1
cmdk:
specifier: ^1.1.1
- version: 1.1.1(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ version: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
copy-to-clipboard:
specifier: ^3.3.3
version: 3.3.3
@@ -170,7 +170,7 @@ importers:
version: 5.6.0
echarts-for-react:
specifier: ^3.0.5
- version: 3.0.5(echarts@5.6.0)(react@19.1.1)
+ version: 3.0.5(echarts@5.6.0)(react@19.2.1)
elkjs:
specifier: ^0.9.3
version: 0.9.3
@@ -238,74 +238,74 @@ importers:
specifier: ^1.0.0
version: 1.0.0
next:
- specifier: ~15.5.6
- version: 15.5.6(@babel/core@7.28.5)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.94.2)
+ specifier: ~15.5.7
+ version: 15.5.7(@babel/core@7.28.5)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.94.2)
next-pwa:
specifier: ^5.6.0
- version: 5.6.0(@babel/core@7.28.5)(@types/babel__core@7.20.5)(esbuild@0.25.0)(next@15.5.6(@babel/core@7.28.5)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.94.2))(uglify-js@3.19.3)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3))
+ version: 5.6.0(@babel/core@7.28.5)(@types/babel__core@7.20.5)(esbuild@0.25.0)(next@15.5.7(@babel/core@7.28.5)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.94.2))(uglify-js@3.19.3)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3))
next-themes:
specifier: ^0.4.6
- version: 0.4.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ version: 0.4.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
pinyin-pro:
specifier: ^3.27.0
version: 3.27.0
qrcode.react:
specifier: ^4.2.0
- version: 4.2.0(react@19.1.1)
+ version: 4.2.0(react@19.2.1)
qs:
specifier: ^6.14.0
version: 6.14.0
react:
- specifier: 19.1.1
- version: 19.1.1
+ specifier: 19.2.1
+ version: 19.2.1
react-18-input-autosize:
specifier: ^3.0.0
- version: 3.0.0(react@19.1.1)
+ version: 3.0.0(react@19.2.1)
react-dom:
- specifier: 19.1.1
- version: 19.1.1(react@19.1.1)
+ specifier: 19.2.1
+ version: 19.2.1(react@19.2.1)
react-easy-crop:
specifier: ^5.5.3
- version: 5.5.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ version: 5.5.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
react-hook-form:
specifier: ^7.65.0
- version: 7.67.0(react@19.1.1)
+ version: 7.67.0(react@19.2.1)
react-hotkeys-hook:
specifier: ^4.6.2
- version: 4.6.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ version: 4.6.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
react-i18next:
specifier: ^15.7.4
- version: 15.7.4(i18next@23.16.8)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.3)
+ version: 15.7.4(i18next@23.16.8)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3)
react-markdown:
specifier: ^9.1.0
- version: 9.1.0(@types/react@19.1.17)(react@19.1.1)
+ version: 9.1.0(@types/react@19.2.7)(react@19.2.1)
react-multi-email:
specifier: ^1.0.25
- version: 1.0.25(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ version: 1.0.25(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
react-papaparse:
specifier: ^4.4.0
version: 4.4.0
react-pdf-highlighter:
specifier: 8.0.0-rc.0
- version: 8.0.0-rc.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ version: 8.0.0-rc.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
react-slider:
specifier: ^2.0.6
- version: 2.0.6(react@19.1.1)
+ version: 2.0.6(react@19.2.1)
react-sortablejs:
specifier: ^6.1.4
- version: 6.1.4(@types/sortablejs@1.15.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sortablejs@1.15.6)
+ version: 6.1.4(@types/sortablejs@1.15.9)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sortablejs@1.15.6)
react-syntax-highlighter:
specifier: ^15.6.6
- version: 15.6.6(react@19.1.1)
+ version: 15.6.6(react@19.2.1)
react-textarea-autosize:
specifier: ^8.5.9
- version: 8.5.9(@types/react@19.1.17)(react@19.1.1)
+ version: 8.5.9(@types/react@19.2.7)(react@19.2.1)
react-window:
specifier: ^1.8.11
- version: 1.8.11(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ version: 1.8.11(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
reactflow:
specifier: ^11.11.4
- version: 11.11.4(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ version: 11.11.4(@types/react@19.2.7)(immer@10.2.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
rehype-katex:
specifier: ^7.0.1
version: 7.0.1
@@ -335,7 +335,7 @@ importers:
version: 1.15.6
swr:
specifier: ^2.3.6
- version: 2.3.7(react@19.1.1)
+ version: 2.3.7(react@19.2.1)
tailwind-merge:
specifier: ^2.6.0
version: 2.6.0
@@ -344,7 +344,7 @@ importers:
version: 7.0.19
use-context-selector:
specifier: ^2.0.0
- version: 2.0.0(react@19.1.1)(scheduler@0.26.0)
+ version: 2.0.0(react@19.2.1)(scheduler@0.26.0)
uuid:
specifier: ^10.0.0
version: 10.0.0
@@ -353,14 +353,14 @@ importers:
version: 3.25.76
zundo:
specifier: ^2.3.0
- version: 2.3.0(zustand@5.0.9(@types/react@19.1.17)(immer@10.2.0)(react@19.1.1)(use-sync-external-store@1.6.0(react@19.1.1)))
+ version: 2.3.0(zustand@5.0.9(@types/react@19.2.7)(immer@10.2.0)(react@19.2.1)(use-sync-external-store@1.6.0(react@19.2.1)))
zustand:
specifier: ^5.0.9
- version: 5.0.9(@types/react@19.1.17)(immer@10.2.0)(react@19.1.1)(use-sync-external-store@1.6.0(react@19.1.1))
+ version: 5.0.9(@types/react@19.2.7)(immer@10.2.0)(react@19.2.1)(use-sync-external-store@1.6.0(react@19.2.1))
devDependencies:
'@antfu/eslint-config':
specifier: ^5.4.1
- version: 5.4.1(@eslint-react/eslint-plugin@1.53.1(eslint@9.39.1(jiti@1.21.7))(ts-api-utils@2.1.0(typescript@5.9.3))(typescript@5.9.3))(@next/eslint-plugin-next@15.5.4)(@vue/compiler-sfc@3.5.25)(eslint-plugin-react-hooks@5.2.0(eslint@9.39.1(jiti@1.21.7)))(eslint-plugin-react-refresh@0.4.24(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)
+ version: 5.4.1(@eslint-react/eslint-plugin@1.53.1(eslint@9.39.1(jiti@1.21.7))(ts-api-utils@2.1.0(typescript@5.9.3))(typescript@5.9.3))(@next/eslint-plugin-next@15.5.7)(@vue/compiler-sfc@3.5.25)(eslint-plugin-react-hooks@5.2.0(eslint@9.39.1(jiti@1.21.7)))(eslint-plugin-react-refresh@0.4.24(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)
'@babel/core':
specifier: ^7.28.4
version: 7.28.5
@@ -378,25 +378,25 @@ importers:
version: 3.1.1(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3))
'@mdx-js/react':
specifier: ^3.1.1
- version: 3.1.1(@types/react@19.1.17)(react@19.1.1)
+ version: 3.1.1(@types/react@19.2.7)(react@19.2.1)
'@next/bundle-analyzer':
- specifier: 15.5.4
- version: 15.5.4
+ specifier: 15.5.7
+ version: 15.5.7
'@next/eslint-plugin-next':
- specifier: 15.5.4
- version: 15.5.4
+ specifier: 15.5.7
+ version: 15.5.7
'@next/mdx':
- specifier: 15.5.4
- version: 15.5.4(@mdx-js/loader@3.1.1(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)))(@mdx-js/react@3.1.1(@types/react@19.1.17)(react@19.1.1))
+ specifier: 15.5.7
+ version: 15.5.7(@mdx-js/loader@3.1.1(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)))(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.1))
'@rgrove/parse-xml':
specifier: ^4.2.0
version: 4.2.0
'@storybook/addon-docs':
specifier: 9.1.13
- version: 9.1.13(@types/react@19.1.17)(storybook@9.1.13(@testing-library/dom@10.4.1))
+ version: 9.1.13(@types/react@19.2.7)(storybook@9.1.13(@testing-library/dom@10.4.1))
'@storybook/addon-links':
specifier: 9.1.13
- version: 9.1.13(react@19.1.1)(storybook@9.1.13(@testing-library/dom@10.4.1))
+ version: 9.1.13(react@19.2.1)(storybook@9.1.13(@testing-library/dom@10.4.1))
'@storybook/addon-onboarding':
specifier: 9.1.13
version: 9.1.13(storybook@9.1.13(@testing-library/dom@10.4.1))
@@ -405,10 +405,10 @@ importers:
version: 9.1.13(storybook@9.1.13(@testing-library/dom@10.4.1))
'@storybook/nextjs':
specifier: 9.1.13
- version: 9.1.13(esbuild@0.25.0)(next@15.5.6(@babel/core@7.28.5)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.94.2))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.94.2)(storybook@9.1.13(@testing-library/dom@10.4.1))(type-fest@4.2.0)(typescript@5.9.3)(uglify-js@3.19.3)(webpack-hot-middleware@2.26.1)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3))
+ version: 9.1.13(esbuild@0.25.0)(next@15.5.7(@babel/core@7.28.5)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.94.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.94.2)(storybook@9.1.13(@testing-library/dom@10.4.1))(type-fest@4.2.0)(typescript@5.9.3)(uglify-js@3.19.3)(webpack-hot-middleware@2.26.1)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3))
'@storybook/react':
specifier: 9.1.13
- version: 9.1.13(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.13(@testing-library/dom@10.4.1))(typescript@5.9.3)
+ version: 9.1.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(storybook@9.1.13(@testing-library/dom@10.4.1))(typescript@5.9.3)
'@testing-library/dom':
specifier: ^10.4.1
version: 10.4.1
@@ -417,7 +417,7 @@ importers:
version: 6.9.1
'@testing-library/react':
specifier: ^16.3.0
- version: 16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ version: 16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
'@types/jest':
specifier: ^29.5.14
version: 29.5.14
@@ -440,11 +440,11 @@ importers:
specifier: ^6.14.0
version: 6.14.0
'@types/react':
- specifier: ~19.1.17
- version: 19.1.17
+ specifier: ~19.2.7
+ version: 19.2.7
'@types/react-dom':
- specifier: ~19.1.11
- version: 19.1.11(@types/react@19.1.17)
+ specifier: ~19.2.3
+ version: 19.2.3(@types/react@19.2.7)
'@types/react-slider':
specifier: ^1.3.6
version: 1.3.6
@@ -498,7 +498,7 @@ importers:
version: 9.1.16(eslint@9.39.1(jiti@1.21.7))(storybook@9.1.13(@testing-library/dom@10.4.1))(typescript@5.9.3)
eslint-plugin-tailwindcss:
specifier: ^3.18.2
- version: 3.18.2(tailwindcss@3.4.18(yaml@2.8.2))
+ version: 3.18.2(tailwindcss@3.4.18(tsx@4.21.0)(yaml@2.8.2))
globals:
specifier: ^15.15.0
version: 15.15.0
@@ -523,6 +523,9 @@ importers:
postcss:
specifier: ^8.5.6
version: 8.5.6
+ react-scan:
+ specifier: ^0.4.3
+ version: 0.4.3(@types/react@19.2.7)(next@15.5.7(@babel/core@7.28.5)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.94.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(rollup@2.79.2)
sass:
specifier: ^1.93.2
version: 1.94.2
@@ -531,7 +534,7 @@ importers:
version: 9.1.13(@testing-library/dom@10.4.1)
tailwindcss:
specifier: ^3.4.18
- version: 3.4.18(yaml@2.8.2)
+ version: 3.4.18(tsx@4.21.0)(yaml@2.8.2)
ts-node:
specifier: ^10.9.2
version: 10.9.2(@types/node@18.15.0)(typescript@5.9.3)
@@ -1349,12 +1352,18 @@ packages:
peerDependencies:
storybook: ^0.0.0-0 || ^9.0.0 || ^9.1.0-0 || ^9.2.0-0 || ^10.0.0-0 || ^10.1.0-0 || ^10.2.0-0 || ^10.3.0-0
+ '@clack/core@0.3.5':
+ resolution: {integrity: sha512-5cfhQNH+1VQ2xLQlmzXMqUoiaH0lRBq9/CLW9lTyMbuKLC3+xEK01tHVvyut++mLOn5urSHmkm6I0Lg9MaJSTQ==}
+
'@clack/core@0.5.0':
resolution: {integrity: sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow==}
'@clack/prompts@0.11.0':
resolution: {integrity: sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw==}
+ '@clack/prompts@0.8.2':
+ resolution: {integrity: sha512-6b9Ab2UiZwJYA9iMyboYyW9yJvAO9V753ZhS+DHKEjZRKAxPPOb7MXXu84lsPFG+vZt6FRFniZ8rXi+zCIw4yQ==}
+
'@code-inspector/core@1.2.9':
resolution: {integrity: sha512-A1w+G73HlTB6S8X6sA6tT+ziWHTAcTyH+7FZ1Sgd3ZLXF/E/jT+hgRbKposjXMwxcbodRc6hBG6UyiV+VxwE6Q==}
@@ -2215,7 +2224,7 @@ packages:
'@mdx-js/react@3.1.1':
resolution: {integrity: sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==}
peerDependencies:
- '@types/react': ~19.1.17
+ '@types/react': ~19.2.7
react: '>=16'
'@mermaid-js/parser@0.6.3':
@@ -2237,17 +2246,17 @@ packages:
'@neoconfetti/react@1.0.0':
resolution: {integrity: sha512-klcSooChXXOzIm+SE5IISIAn3bYzYfPjbX7D7HoqZL84oAfgREeSg5vSIaSFH+DaGzzvImTyWe1OyrJ67vik4A==}
- '@next/bundle-analyzer@15.5.4':
- resolution: {integrity: sha512-wMtpIjEHi+B/wC34ZbEcacGIPgQTwTFjjp0+F742s9TxC6QwT0MwB/O0QEgalMe8s3SH/K09DO0gmTvUSJrLRA==}
+ '@next/bundle-analyzer@15.5.7':
+ resolution: {integrity: sha512-bKCGI9onUYyLaAQKvJOTeSv1vt3CYtF4Or+CRlCP/1Yu8NR9W4A2kd4qBs2OYFbT+/38fKg8BIPNt7IcMLKZCA==}
- '@next/env@15.5.6':
- resolution: {integrity: sha512-3qBGRW+sCGzgbpc5TS1a0p7eNxnOarGVQhZxfvTdnV0gFI61lX7QNtQ4V1TSREctXzYn5NetbUsLvyqwLFJM6Q==}
+ '@next/env@15.5.7':
+ resolution: {integrity: sha512-4h6Y2NyEkIEN7Z8YxkA27pq6zTkS09bUSYC0xjd0NpwFxjnIKeZEeH591o5WECSmjpUhLn3H2QLJcDye3Uzcvg==}
- '@next/eslint-plugin-next@15.5.4':
- resolution: {integrity: sha512-SR1vhXNNg16T4zffhJ4TS7Xn7eq4NfKfcOsRwea7RIAHrjRpI9ALYbamqIJqkAhowLlERffiwk0FMvTLNdnVtw==}
+ '@next/eslint-plugin-next@15.5.7':
+ resolution: {integrity: sha512-DtRU2N7BkGr8r+pExfuWHwMEPX5SD57FeA6pxdgCHODo+b/UgIgjE+rgWKtJAbEbGhVZ2jtHn4g3wNhWFoNBQQ==}
- '@next/mdx@15.5.4':
- resolution: {integrity: sha512-QUc14KkswCau2/Lul13t13v8QYRiEh3aeyUMUix5mK/Zd8c/J9NQuVvLGhxS7fxGPU+fOcv0GaXqZshkvNaX7A==}
+ '@next/mdx@15.5.7':
+ resolution: {integrity: sha512-ao/NELNlLQkQMkACV0LMimE32DB5z0sqtKL6VbaruVI3LrMw6YMGhNxpSBifxKcgmMBSsIR985mh4CJiqCGcNw==}
peerDependencies:
'@mdx-js/loader': '>=0.15.0'
'@mdx-js/react': '>=0.15.0'
@@ -2257,50 +2266,50 @@ packages:
'@mdx-js/react':
optional: true
- '@next/swc-darwin-arm64@15.5.6':
- resolution: {integrity: sha512-ES3nRz7N+L5Umz4KoGfZ4XX6gwHplwPhioVRc25+QNsDa7RtUF/z8wJcbuQ2Tffm5RZwuN2A063eapoJ1u4nPg==}
+ '@next/swc-darwin-arm64@15.5.7':
+ resolution: {integrity: sha512-IZwtxCEpI91HVU/rAUOOobWSZv4P2DeTtNaCdHqLcTJU4wdNXgAySvKa/qJCgR5m6KI8UsKDXtO2B31jcaw1Yw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
- '@next/swc-darwin-x64@15.5.6':
- resolution: {integrity: sha512-JIGcytAyk9LQp2/nuVZPAtj8uaJ/zZhsKOASTjxDug0SPU9LAM3wy6nPU735M1OqacR4U20LHVF5v5Wnl9ptTA==}
+ '@next/swc-darwin-x64@15.5.7':
+ resolution: {integrity: sha512-UP6CaDBcqaCBuiq/gfCEJw7sPEoX1aIjZHnBWN9v9qYHQdMKvCKcAVs4OX1vIjeE+tC5EIuwDTVIoXpUes29lg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
- '@next/swc-linux-arm64-gnu@15.5.6':
- resolution: {integrity: sha512-qvz4SVKQ0P3/Im9zcS2RmfFL/UCQnsJKJwQSkissbngnB/12c6bZTCB0gHTexz1s6d/mD0+egPKXAIRFVS7hQg==}
+ '@next/swc-linux-arm64-gnu@15.5.7':
+ resolution: {integrity: sha512-NCslw3GrNIw7OgmRBxHtdWFQYhexoUCq+0oS2ccjyYLtcn1SzGzeM54jpTFonIMUjNbHmpKpziXnpxhSWLcmBA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@next/swc-linux-arm64-musl@15.5.6':
- resolution: {integrity: sha512-FsbGVw3SJz1hZlvnWD+T6GFgV9/NYDeLTNQB2MXoPN5u9VA9OEDy6fJEfePfsUKAhJufFbZLgp0cPxMuV6SV0w==}
+ '@next/swc-linux-arm64-musl@15.5.7':
+ resolution: {integrity: sha512-nfymt+SE5cvtTrG9u1wdoxBr9bVB7mtKTcj0ltRn6gkP/2Nu1zM5ei8rwP9qKQP0Y//umK+TtkKgNtfboBxRrw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@next/swc-linux-x64-gnu@15.5.6':
- resolution: {integrity: sha512-3QnHGFWlnvAgyxFxt2Ny8PTpXtQD7kVEeaFat5oPAHHI192WKYB+VIKZijtHLGdBBvc16tiAkPTDmQNOQ0dyrA==}
+ '@next/swc-linux-x64-gnu@15.5.7':
+ resolution: {integrity: sha512-hvXcZvCaaEbCZcVzcY7E1uXN9xWZfFvkNHwbe/n4OkRhFWrs1J1QV+4U1BN06tXLdaS4DazEGXwgqnu/VMcmqw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@next/swc-linux-x64-musl@15.5.6':
- resolution: {integrity: sha512-OsGX148sL+TqMK9YFaPFPoIaJKbFJJxFzkXZljIgA9hjMjdruKht6xDCEv1HLtlLNfkx3c5w2GLKhj7veBQizQ==}
+ '@next/swc-linux-x64-musl@15.5.7':
+ resolution: {integrity: sha512-4IUO539b8FmF0odY6/SqANJdgwn1xs1GkPO5doZugwZ3ETF6JUdckk7RGmsfSf7ws8Qb2YB5It33mvNL/0acqA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@next/swc-win32-arm64-msvc@15.5.6':
- resolution: {integrity: sha512-ONOMrqWxdzXDJNh2n60H6gGyKed42Ieu6UTVPZteXpuKbLZTH4G4eBMsr5qWgOBA+s7F+uB4OJbZnrkEDnZ5Fg==}
+ '@next/swc-win32-arm64-msvc@15.5.7':
+ resolution: {integrity: sha512-CpJVTkYI3ZajQkC5vajM7/ApKJUOlm6uP4BknM3XKvJ7VXAvCqSjSLmM0LKdYzn6nBJVSjdclx8nYJSa3xlTgQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
- '@next/swc-win32-x64-msvc@15.5.6':
- resolution: {integrity: sha512-pxK4VIjFRx1MY92UycLOOw7dTdvccWsNETQ0kDHkBlcFH1GrTLUjSiHU1ohrznnux6TqRHgv5oflhfIWZwVROQ==}
+ '@next/swc-win32-x64-msvc@15.5.7':
+ resolution: {integrity: sha512-gMzgBX164I6DN+9/PGA+9dQiwmTkE4TloBNx8Kv9UiGARsr9Nba7IpcBRA1iTV9vwlYnrE3Uy6I7Aj6qLjQuqw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
@@ -2591,6 +2600,12 @@ packages:
resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==}
engines: {node: '>= 10.0.0'}
+ '@pivanov/utils@0.0.2':
+ resolution: {integrity: sha512-q9CN0bFWxWgMY5hVVYyBgez1jGiLBa6I+LkG37ycylPhFvEGOOeaADGtUSu46CaZasPnlY8fCdVJZmrgKb1EPA==}
+ peerDependencies:
+ react: '>=18'
+ react-dom: '>=18'
+
'@pkgr/core@0.2.9':
resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==}
engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
@@ -2627,13 +2642,18 @@ packages:
'@preact/signals-core@1.12.1':
resolution: {integrity: sha512-BwbTXpj+9QutoZLQvbttRg5x3l5468qaV2kufh+51yha1c53ep5dY4kTuZR35+3pAZxpfQerGJiQqg34ZNZ6uA==}
+ '@preact/signals@1.3.2':
+ resolution: {integrity: sha512-naxcJgUJ6BTOROJ7C3QML7KvwKwCXQJYTc5L/b0eEsdYgPB6SxwoQ1vDGcS0Q7GVjAenVq/tXrybVdFShHYZWg==}
+ peerDependencies:
+ preact: 10.x
+
'@radix-ui/primitive@1.1.3':
resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==}
'@radix-ui/react-compose-refs@1.1.2':
resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==}
peerDependencies:
- '@types/react': ~19.1.17
+ '@types/react': ~19.2.7
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -2642,7 +2662,7 @@ packages:
'@radix-ui/react-context@1.1.2':
resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==}
peerDependencies:
- '@types/react': ~19.1.17
+ '@types/react': ~19.2.7
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -2651,8 +2671,8 @@ packages:
'@radix-ui/react-dialog@1.1.15':
resolution: {integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==}
peerDependencies:
- '@types/react': ~19.1.17
- '@types/react-dom': ~19.1.11
+ '@types/react': ~19.2.7
+ '@types/react-dom': ~19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
@@ -2664,8 +2684,8 @@ packages:
'@radix-ui/react-dismissable-layer@1.1.11':
resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==}
peerDependencies:
- '@types/react': ~19.1.17
- '@types/react-dom': ~19.1.11
+ '@types/react': ~19.2.7
+ '@types/react-dom': ~19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
@@ -2677,7 +2697,7 @@ packages:
'@radix-ui/react-focus-guards@1.1.3':
resolution: {integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==}
peerDependencies:
- '@types/react': ~19.1.17
+ '@types/react': ~19.2.7
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -2686,8 +2706,8 @@ packages:
'@radix-ui/react-focus-scope@1.1.7':
resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==}
peerDependencies:
- '@types/react': ~19.1.17
- '@types/react-dom': ~19.1.11
+ '@types/react': ~19.2.7
+ '@types/react-dom': ~19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
@@ -2699,7 +2719,7 @@ packages:
'@radix-ui/react-id@1.1.1':
resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==}
peerDependencies:
- '@types/react': ~19.1.17
+ '@types/react': ~19.2.7
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -2708,8 +2728,8 @@ packages:
'@radix-ui/react-portal@1.1.9':
resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==}
peerDependencies:
- '@types/react': ~19.1.17
- '@types/react-dom': ~19.1.11
+ '@types/react': ~19.2.7
+ '@types/react-dom': ~19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
@@ -2721,8 +2741,8 @@ packages:
'@radix-ui/react-presence@1.1.5':
resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==}
peerDependencies:
- '@types/react': ~19.1.17
- '@types/react-dom': ~19.1.11
+ '@types/react': ~19.2.7
+ '@types/react-dom': ~19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
@@ -2734,8 +2754,21 @@ packages:
'@radix-ui/react-primitive@2.1.3':
resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==}
peerDependencies:
- '@types/react': ~19.1.17
- '@types/react-dom': ~19.1.11
+ '@types/react': ~19.2.7
+ '@types/react-dom': ~19.2.3
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
+ '@radix-ui/react-primitive@2.1.4':
+ resolution: {integrity: sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==}
+ peerDependencies:
+ '@types/react': ~19.2.7
+ '@types/react-dom': ~19.2.3
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
@@ -2760,7 +2793,16 @@ packages:
'@radix-ui/react-slot@1.2.3':
resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==}
peerDependencies:
- '@types/react': ~19.1.17
+ '@types/react': ~19.2.7
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@radix-ui/react-slot@1.2.4':
+ resolution: {integrity: sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==}
+ peerDependencies:
+ '@types/react': ~19.2.7
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -2778,7 +2820,7 @@ packages:
'@radix-ui/react-use-callback-ref@1.1.1':
resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==}
peerDependencies:
- '@types/react': ~19.1.17
+ '@types/react': ~19.2.7
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -2787,7 +2829,7 @@ packages:
'@radix-ui/react-use-controllable-state@1.2.2':
resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==}
peerDependencies:
- '@types/react': ~19.1.17
+ '@types/react': ~19.2.7
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -2796,7 +2838,7 @@ packages:
'@radix-ui/react-use-effect-event@0.0.2':
resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==}
peerDependencies:
- '@types/react': ~19.1.17
+ '@types/react': ~19.2.7
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -2805,7 +2847,7 @@ packages:
'@radix-ui/react-use-escape-keydown@1.1.1':
resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==}
peerDependencies:
- '@types/react': ~19.1.17
+ '@types/react': ~19.2.7
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -2814,7 +2856,7 @@ packages:
'@radix-ui/react-use-layout-effect@1.1.1':
resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==}
peerDependencies:
- '@types/react': ~19.1.17
+ '@types/react': ~19.2.7
react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -3195,8 +3237,8 @@ packages:
engines: {node: '>=18'}
peerDependencies:
'@testing-library/dom': ^10.0.0
- '@types/react': ~19.1.17
- '@types/react-dom': ~19.1.11
+ '@types/react': ~19.2.7
+ '@types/react-dom': ~19.2.3
react: ^18.0.0 || ^19.0.0
react-dom: ^18.0.0 || ^19.0.0
peerDependenciesMeta:
@@ -3452,10 +3494,15 @@ packages:
'@types/qs@6.14.0':
resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==}
- '@types/react-dom@19.1.11':
- resolution: {integrity: sha512-3BKc/yGdNTYQVVw4idqHtSOcFsgGuBbMveKCOgF8wQ5QtrYOc3jDIlzg3jef04zcXFIHLelyGlj0T+BJ8+KN+w==}
+ '@types/react-dom@19.2.3':
+ resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==}
peerDependencies:
- '@types/react': ~19.1.17
+ '@types/react': ~19.2.7
+
+ '@types/react-reconciler@0.28.9':
+ resolution: {integrity: sha512-HHM3nxyUZ3zAylX8ZEyrDNd2XZOnQ0D5XfunJF5FLQnZbHHYq4UWvW1QfelQNXv1ICNkwYhfxjwfnqivYB6bFg==}
+ peerDependencies:
+ '@types/react': ~19.2.7
'@types/react-slider@1.3.6':
resolution: {integrity: sha512-RS8XN5O159YQ6tu3tGZIQz1/9StMLTg/FCIPxwqh2gwVixJnlfIodtVx+fpXVMZHe7A58lAX1Q4XTgAGOQaCQg==}
@@ -3466,8 +3513,8 @@ packages:
'@types/react-window@1.8.8':
resolution: {integrity: sha512-8Ls660bHR1AUA2kuRvVG9D/4XpRC6wjAaPT9dil7Ckc76eP9TKWZwwmgfq8Q1LANX3QNDnoU4Zp48A3w+zK69Q==}
- '@types/react@19.1.17':
- resolution: {integrity: sha512-Qec1E3mhALmaspIrhWt9jkQMNdw6bReVu64mjvhbhq2NFPftLPVr+l1SZgmw/66WwBNpDh7ao5AT6gF5v41PFA==}
+ '@types/react@19.2.7':
+ resolution: {integrity: sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==}
'@types/resolve@1.17.1':
resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==}
@@ -3951,6 +3998,11 @@ packages:
bing-translate-api@4.2.0:
resolution: {integrity: sha512-7a9yo1NbGcHPS8zXTdz8tCOymHZp2pvCuYOChCaXKjOX8EIwdV3SLd4D7RGIqZt1UhffypYBUcAV2gDcTgK0rA==}
+ bippy@0.3.34:
+ resolution: {integrity: sha512-vmptmU/20UdIWHHhq7qCSHhHzK7Ro3YJ1utU0fBG7ujUc58LEfTtilKxcF0IOgSjT5XLcm7CBzDjbv4lcKApGQ==}
+ peerDependencies:
+ react: '>=17.0.1'
+
birecord@0.1.1:
resolution: {integrity: sha512-VUpsf/qykW0heRlC8LooCq28Kxn3mAqKohhDG/49rrsQ1dT1CXyj/pgXS+5BSRzFTR/3DyIBOqQOrGyZOh71Aw==}
@@ -4065,6 +4117,9 @@ packages:
caniuse-lite@1.0.30001757:
resolution: {integrity: sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==}
+ caniuse-lite@1.0.30001759:
+ resolution: {integrity: sha512-Pzfx9fOKoKvevQf8oCXoyNRQ5QyxJj+3O0Rqx2V5oxT61KGx8+n6hV/IUyJeifUci2clnmmKVpvtiqRzgiWjSw==}
+
canvas@3.2.0:
resolution: {integrity: sha512-jk0GxrLtUEmW/TmFsk2WghvgHe8B0pxGilqCL21y8lHkPUGa6FTsnCNtHPOzT8O3y+N+m3espawV80bbBlgfTA==}
engines: {node: ^18.12.0 || >= 20.9.0}
@@ -5374,6 +5429,11 @@ packages:
fs.realpath@1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+ fsevents@2.3.2:
+ resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
fsevents@2.3.3:
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
@@ -6118,6 +6178,10 @@ packages:
resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
engines: {node: '>=6'}
+ kleur@4.1.5:
+ resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
+ engines: {node: '>=6'}
+
knip@5.71.0:
resolution: {integrity: sha512-hwgdqEJ+7DNJ5jE8BCPu7b57TY7vUwP6MzWYgCgPpg6iPCee/jKPShDNIlFER2koti4oz5xF88VJbKCb4Wl71g==}
engines: {node: '>=18.18.0'}
@@ -6568,6 +6632,10 @@ packages:
monaco-editor@0.55.1:
resolution: {integrity: sha512-jz4x+TJNFHwHtwuV9vA9rMujcZRb0CEilTEwG2rRSpe/A7Jdkuj8xPKttCgOh+v/lkHy7HsZ64oj+q3xoAFl9A==}
+ mri@1.2.0:
+ resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
+ engines: {node: '>=4'}
+
mrmime@2.0.1:
resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==}
engines: {node: '>=10'}
@@ -6611,8 +6679,8 @@ packages:
react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc
react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc
- next@15.5.6:
- resolution: {integrity: sha512-zTxsnI3LQo3c9HSdSf91O1jMNsEzIXDShXd4wVdg9y5shwLqBXi4ZtUUJyB86KGVSJLZx0PFONvO54aheGX8QQ==}
+ next@15.5.7:
+ resolution: {integrity: sha512-+t2/0jIJ48kUpGKkdlhgkv+zPTEOoXyr60qXe68eB/pl3CMJaLeIGjzp5D6Oqt25hCBiBTt8wEeeAzfJvUKnPQ==}
engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
hasBin: true
peerDependencies:
@@ -6920,6 +6988,16 @@ packages:
pkg-types@2.3.0:
resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==}
+ playwright-core@1.57.0:
+ resolution: {integrity: sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==}
+ engines: {node: '>=18'}
+ hasBin: true
+
+ playwright@1.57.0:
+ resolution: {integrity: sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==}
+ engines: {node: '>=18'}
+ hasBin: true
+
pluralize@8.0.0:
resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
engines: {node: '>=4'}
@@ -7033,6 +7111,9 @@ packages:
resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
engines: {node: ^10 || ^12 || >=14}
+ preact@10.28.0:
+ resolution: {integrity: sha512-rytDAoiXr3+t6OIP3WGlDd0ouCUG1iCWzkcY3++Nreuoi17y6T5i/zRhe6uYfoVcxq6YU+sBtJouuRDsq8vvqA==}
+
prebuild-install@7.1.3:
resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==}
engines: {node: '>=10'}
@@ -7157,10 +7238,10 @@ packages:
resolution: {integrity: sha512-hlSJDQ2synMPKFZOsKo9Hi8WWZTC7POR8EmWvTSjow+VDgKzkmjQvFm2fk0tmRw+f0vTOIYKlarR0iL4996pdg==}
engines: {node: '>=16.14.0'}
- react-dom@19.1.1:
- resolution: {integrity: sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw==}
+ react-dom@19.2.1:
+ resolution: {integrity: sha512-ibrK8llX2a4eOskq1mXKu/TGZj9qzomO+sNfO98M6d9zIPOEhlBkMkBUBLd1vgS0gQsLDBzA+8jJBVXDnfHmJg==}
peerDependencies:
- react: ^19.1.1
+ react: ^19.2.1
react-draggable@4.4.6:
resolution: {integrity: sha512-LtY5Xw1zTPqHkVmtM3X8MUOxNDOUhv/khTgBgrUvwaS064bwVvxT+q5El0uUFNx5IEPKXuRejr7UqLwBIg5pdw==}
@@ -7222,7 +7303,7 @@ packages:
react-markdown@9.1.0:
resolution: {integrity: sha512-xaijuJB0kzGiUdG7nc2MOMDUDBWPyGAjZtUrow9XxUeua8IqeP+VlIfAZ3bphpcLTnSZXz6z9jcVC/TCwbfgdw==}
peerDependencies:
- '@types/react': ~19.1.17
+ '@types/react': ~19.2.7
react: '>=18'
react-multi-email@1.0.25:
@@ -7249,7 +7330,7 @@ packages:
resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==}
engines: {node: '>=10'}
peerDependencies:
- '@types/react': ~19.1.17
+ '@types/react': ~19.2.7
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta:
'@types/react':
@@ -7259,7 +7340,7 @@ packages:
resolution: {integrity: sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==}
engines: {node: '>=10'}
peerDependencies:
- '@types/react': ~19.1.17
+ '@types/react': ~19.2.7
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -7271,6 +7352,26 @@ packages:
react: '>=16.3.0'
react-dom: '>=16.3.0'
+ react-scan@0.4.3:
+ resolution: {integrity: sha512-jhAQuQ1nja6HUYrSpbmNFHqZPsRCXk8Yqu0lHoRIw9eb8N96uTfXCpVyQhTTnJ/nWqnwuvxbpKVG/oWZT8+iTQ==}
+ hasBin: true
+ peerDependencies:
+ '@remix-run/react': '>=1.0.0'
+ next: '>=13.0.0'
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-router: ^5.0.0 || ^6.0.0 || ^7.0.0
+ react-router-dom: ^5.0.0 || ^6.0.0 || ^7.0.0
+ peerDependenciesMeta:
+ '@remix-run/react':
+ optional: true
+ next:
+ optional: true
+ react-router:
+ optional: true
+ react-router-dom:
+ optional: true
+
react-slider@2.0.6:
resolution: {integrity: sha512-gJxG1HwmuMTJ+oWIRCmVWvgwotNCbByTwRkFZC6U4MBsHqJBmxwbYRJUmxy4Tke1ef8r9jfXjgkmY/uHOCEvbA==}
peerDependencies:
@@ -7288,7 +7389,7 @@ packages:
resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==}
engines: {node: '>=10'}
peerDependencies:
- '@types/react': ~19.1.17
+ '@types/react': ~19.2.7
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -7312,8 +7413,8 @@ packages:
react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- react@19.1.1:
- resolution: {integrity: sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==}
+ react@19.2.1:
+ resolution: {integrity: sha512-DGrYcCWK7tvYMnWh79yrPHt+vdx9tY+1gPZa7nJQtO/p8bLTDaHp4dzwEhQB7pZ4Xe3ok4XKuEPrVuc+wlpkmw==}
engines: {node: '>=0.10.0'}
reactflow@11.11.4:
@@ -7574,6 +7675,9 @@ packages:
scheduler@0.26.0:
resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==}
+ scheduler@0.27.0:
+ resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==}
+
schema-utils@2.7.1:
resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==}
engines: {node: '>= 8.9.0'}
@@ -8080,6 +8184,11 @@ packages:
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
+ tsx@4.21.0:
+ resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==}
+ engines: {node: '>=18.0.0'}
+ hasBin: true
+
tty-browserify@0.0.1:
resolution: {integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==}
@@ -8188,6 +8297,10 @@ packages:
resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==}
engines: {node: '>=14.0.0'}
+ unplugin@2.1.0:
+ resolution: {integrity: sha512-us4j03/499KhbGP8BU7Hrzrgseo+KdfJYWcbcajCOqsAyb8Gk0Yn2kiUIcZISYCb1JFaZfIuG3b42HmguVOKCQ==}
+ engines: {node: '>=18.12.0'}
+
upath@1.2.0:
resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==}
engines: {node: '>=4'}
@@ -8209,7 +8322,7 @@ packages:
resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==}
engines: {node: '>=10'}
peerDependencies:
- '@types/react': ~19.1.17
+ '@types/react': ~19.2.7
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -8252,7 +8365,7 @@ packages:
resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==}
engines: {node: '>=10'}
peerDependencies:
- '@types/react': ~19.1.17
+ '@types/react': ~19.2.7
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc
peerDependenciesMeta:
'@types/react':
@@ -8577,7 +8690,7 @@ packages:
resolution: {integrity: sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==}
engines: {node: '>=12.7.0'}
peerDependencies:
- '@types/react': ~19.1.17
+ '@types/react': ~19.2.7
immer: '>=9.0.6'
react: '>=16.8'
peerDependenciesMeta:
@@ -8592,7 +8705,7 @@ packages:
resolution: {integrity: sha512-ALBtUj0AfjJt3uNRQoL1tL2tMvj6Gp/6e39dnfT6uzpelGru8v1tPOGBzayOWbPJvujM8JojDk3E1LxeFisBNg==}
engines: {node: '>=12.20.0'}
peerDependencies:
- '@types/react': ~19.1.17
+ '@types/react': ~19.2.7
immer: '>=9.0.6'
react: '>=18.0.0'
use-sync-external-store: '>=1.2.0'
@@ -8753,7 +8866,7 @@ snapshots:
idb: 8.0.0
tslib: 2.8.1
- '@antfu/eslint-config@5.4.1(@eslint-react/eslint-plugin@1.53.1(eslint@9.39.1(jiti@1.21.7))(ts-api-utils@2.1.0(typescript@5.9.3))(typescript@5.9.3))(@next/eslint-plugin-next@15.5.4)(@vue/compiler-sfc@3.5.25)(eslint-plugin-react-hooks@5.2.0(eslint@9.39.1(jiti@1.21.7)))(eslint-plugin-react-refresh@0.4.24(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)':
+ '@antfu/eslint-config@5.4.1(@eslint-react/eslint-plugin@1.53.1(eslint@9.39.1(jiti@1.21.7))(ts-api-utils@2.1.0(typescript@5.9.3))(typescript@5.9.3))(@next/eslint-plugin-next@15.5.7)(@vue/compiler-sfc@3.5.25)(eslint-plugin-react-hooks@5.2.0(eslint@9.39.1(jiti@1.21.7)))(eslint-plugin-react-refresh@0.4.24(eslint@9.39.1(jiti@1.21.7)))(eslint@9.39.1(jiti@1.21.7))(typescript@5.9.3)':
dependencies:
'@antfu/install-pkg': 1.1.0
'@clack/prompts': 0.11.0
@@ -8794,7 +8907,7 @@ snapshots:
yaml-eslint-parser: 1.3.1
optionalDependencies:
'@eslint-react/eslint-plugin': 1.53.1(eslint@9.39.1(jiti@1.21.7))(ts-api-utils@2.1.0(typescript@5.9.3))(typescript@5.9.3)
- '@next/eslint-plugin-next': 15.5.4
+ '@next/eslint-plugin-next': 15.5.7
eslint-plugin-react-hooks: 5.2.0(eslint@9.39.1(jiti@1.21.7))
eslint-plugin-react-refresh: 0.4.24(eslint@9.39.1(jiti@1.21.7))
transitivePeerDependencies:
@@ -9663,6 +9776,11 @@ snapshots:
- '@chromatic-com/cypress'
- '@chromatic-com/playwright'
+ '@clack/core@0.3.5':
+ dependencies:
+ picocolors: 1.1.1
+ sisteransi: 1.0.5
+
'@clack/core@0.5.0':
dependencies:
picocolors: 1.1.1
@@ -9674,6 +9792,12 @@ snapshots:
picocolors: 1.1.1
sisteransi: 1.0.5
+ '@clack/prompts@0.8.2':
+ dependencies:
+ '@clack/core': 0.3.5
+ picocolors: 1.1.1
+ sisteransi: 1.0.5
+
'@code-inspector/core@1.2.9':
dependencies:
'@vue/compiler-dom': 3.5.25
@@ -10017,26 +10141,26 @@ snapshots:
'@floating-ui/core': 1.7.3
'@floating-ui/utils': 0.2.10
- '@floating-ui/react-dom@2.1.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@floating-ui/react-dom@2.1.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
'@floating-ui/dom': 1.7.4
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
- '@floating-ui/react@0.26.28(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@floating-ui/react@0.26.28(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
- '@floating-ui/react-dom': 2.1.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ '@floating-ui/react-dom': 2.1.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
'@floating-ui/utils': 0.2.10
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
tabbable: 6.3.0
- '@floating-ui/react@0.27.16(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@floating-ui/react@0.27.16(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
- '@floating-ui/react-dom': 2.1.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ '@floating-ui/react-dom': 2.1.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
'@floating-ui/utils': 0.2.10
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
tabbable: 6.3.0
'@floating-ui/utils@0.2.10': {}
@@ -10054,22 +10178,22 @@ snapshots:
jest-mock: 29.7.0
jest-util: 29.7.0
- '@headlessui/react@2.2.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@headlessui/react@2.2.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
- '@floating-ui/react': 0.26.28(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- '@react-aria/focus': 3.21.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- '@react-aria/interactions': 3.25.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- '@tanstack/react-virtual': 3.13.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ '@floating-ui/react': 0.26.28(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@react-aria/focus': 3.21.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@tanstack/react-virtual': 3.13.12(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
- '@heroicons/react@2.2.0(react@19.1.1)':
+ '@heroicons/react@2.2.0(react@19.2.1)':
dependencies:
- react: 19.1.1
+ react: 19.2.1
- '@hookform/resolvers@3.10.0(react-hook-form@7.67.0(react@19.1.1))':
+ '@hookform/resolvers@3.10.0(react-hook-form@7.67.0(react@19.2.1))':
dependencies:
- react-hook-form: 7.67.0(react@19.1.1)
+ react-hook-form: 7.67.0(react@19.2.1)
'@humanfs/core@0.19.1': {}
@@ -10499,7 +10623,7 @@ snapshots:
lexical: 0.37.0
prismjs: 1.30.0
- '@lexical/devtools-core@0.36.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@lexical/devtools-core@0.36.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
'@lexical/html': 0.36.2
'@lexical/link': 0.36.2
@@ -10507,8 +10631,8 @@ snapshots:
'@lexical/table': 0.36.2
'@lexical/utils': 0.36.2
lexical: 0.37.0
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
'@lexical/dragon@0.36.2':
dependencies:
@@ -10621,10 +10745,10 @@ snapshots:
'@lexical/utils': 0.36.2
lexical: 0.37.0
- '@lexical/react@0.36.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(yjs@13.6.27)':
+ '@lexical/react@0.36.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(yjs@13.6.27)':
dependencies:
- '@floating-ui/react': 0.27.16(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- '@lexical/devtools-core': 0.36.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ '@floating-ui/react': 0.27.16(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@lexical/devtools-core': 0.36.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
'@lexical/dragon': 0.36.2
'@lexical/extension': 0.36.2
'@lexical/hashtag': 0.36.2
@@ -10641,9 +10765,9 @@ snapshots:
'@lexical/utils': 0.36.2
'@lexical/yjs': 0.36.2(yjs@13.6.27)
lexical: 0.37.0
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
- react-error-boundary: 6.0.0(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
+ react-error-boundary: 6.0.0(react@19.2.1)
transitivePeerDependencies:
- yjs
@@ -10763,11 +10887,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@mdx-js/react@3.1.1(@types/react@19.1.17)(react@19.1.1)':
+ '@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.1)':
dependencies:
'@types/mdx': 2.0.13
- '@types/react': 19.1.17
- react: 19.1.1
+ '@types/react': 19.2.7
+ react: 19.2.1
'@mermaid-js/parser@0.6.3':
dependencies:
@@ -10777,12 +10901,12 @@ snapshots:
dependencies:
state-local: 1.0.7
- '@monaco-editor/react@4.7.0(monaco-editor@0.55.1)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@monaco-editor/react@4.7.0(monaco-editor@0.55.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
'@monaco-editor/loader': 1.5.0
monaco-editor: 0.55.1
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
'@napi-rs/wasm-runtime@1.1.0':
dependencies:
@@ -10793,48 +10917,48 @@ snapshots:
'@neoconfetti/react@1.0.0': {}
- '@next/bundle-analyzer@15.5.4':
+ '@next/bundle-analyzer@15.5.7':
dependencies:
webpack-bundle-analyzer: 4.10.1
transitivePeerDependencies:
- bufferutil
- utf-8-validate
- '@next/env@15.5.6': {}
+ '@next/env@15.5.7': {}
- '@next/eslint-plugin-next@15.5.4':
+ '@next/eslint-plugin-next@15.5.7':
dependencies:
fast-glob: 3.3.1
- '@next/mdx@15.5.4(@mdx-js/loader@3.1.1(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)))(@mdx-js/react@3.1.1(@types/react@19.1.17)(react@19.1.1))':
+ '@next/mdx@15.5.7(@mdx-js/loader@3.1.1(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)))(@mdx-js/react@3.1.1(@types/react@19.2.7)(react@19.2.1))':
dependencies:
source-map: 0.7.6
optionalDependencies:
'@mdx-js/loader': 3.1.1(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3))
- '@mdx-js/react': 3.1.1(@types/react@19.1.17)(react@19.1.1)
+ '@mdx-js/react': 3.1.1(@types/react@19.2.7)(react@19.2.1)
- '@next/swc-darwin-arm64@15.5.6':
+ '@next/swc-darwin-arm64@15.5.7':
optional: true
- '@next/swc-darwin-x64@15.5.6':
+ '@next/swc-darwin-x64@15.5.7':
optional: true
- '@next/swc-linux-arm64-gnu@15.5.6':
+ '@next/swc-linux-arm64-gnu@15.5.7':
optional: true
- '@next/swc-linux-arm64-musl@15.5.6':
+ '@next/swc-linux-arm64-musl@15.5.7':
optional: true
- '@next/swc-linux-x64-gnu@15.5.6':
+ '@next/swc-linux-x64-gnu@15.5.7':
optional: true
- '@next/swc-linux-x64-musl@15.5.6':
+ '@next/swc-linux-x64-musl@15.5.7':
optional: true
- '@next/swc-win32-arm64-msvc@15.5.6':
+ '@next/swc-win32-arm64-msvc@15.5.7':
optional: true
- '@next/swc-win32-x64-msvc@15.5.6':
+ '@next/swc-win32-x64-msvc@15.5.7':
optional: true
'@nodelib/fs.scandir@2.1.5':
@@ -11063,6 +11187,11 @@ snapshots:
'@parcel/watcher-win32-x64': 2.5.1
optional: true
+ '@pivanov/utils@0.0.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
+ dependencies:
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
+
'@pkgr/core@0.2.9': {}
'@pmmmwh/react-refresh-webpack-plugin@0.5.17(react-refresh@0.14.2)(type-fest@4.2.0)(webpack-hot-middleware@2.26.1)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3))':
@@ -11084,237 +11213,242 @@ snapshots:
'@preact/signals-core@1.12.1': {}
+ '@preact/signals@1.3.2(preact@10.28.0)':
+ dependencies:
+ '@preact/signals-core': 1.12.1
+ preact: 10.28.0
+
'@radix-ui/primitive@1.1.3': {}
- '@radix-ui/react-compose-refs@1.1.2(@types/react@19.1.17)(react@19.1.1)':
+ '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.7)(react@19.2.1)':
dependencies:
- react: 19.1.1
+ react: 19.2.1
optionalDependencies:
- '@types/react': 19.1.17
+ '@types/react': 19.2.7
- '@radix-ui/react-context@1.1.2(@types/react@19.1.17)(react@19.1.1)':
+ '@radix-ui/react-context@1.1.2(@types/react@19.2.7)(react@19.2.1)':
dependencies:
- react: 19.1.1
+ react: 19.2.1
optionalDependencies:
- '@types/react': 19.1.17
+ '@types/react': 19.2.7
- '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.17)(react@19.1.1)
- '@radix-ui/react-context': 1.1.2(@types/react@19.1.17)(react@19.1.1)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.1.17)(react@19.1.1)
- '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- '@radix-ui/react-id': 1.1.1(@types/react@19.1.17)(react@19.1.1)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- '@radix-ui/react-slot': 1.2.3(@types/react@19.1.17)(react@19.1.1)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.17)(react@19.1.1)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.1)
+ '@radix-ui/react-context': 1.1.2(@types/react@19.2.7)(react@19.2.1)
+ '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.7)(react@19.2.1)
+ '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.7)(react@19.2.1)
+ '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.7)(react@19.2.1)
+ '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.7)(react@19.2.1)
aria-hidden: 1.2.6
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
- react-remove-scroll: 2.7.2(@types/react@19.1.17)(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
+ react-remove-scroll: 2.7.2(@types/react@19.2.7)(react@19.2.1)
optionalDependencies:
- '@types/react': 19.1.17
- '@types/react-dom': 19.1.11(@types/react@19.1.17)
+ '@types/react': 19.2.7
+ '@types/react-dom': 19.2.3(@types/react@19.2.7)
- '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
'@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.17)(react@19.1.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.17)(react@19.1.1)
- '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.1.17)(react@19.1.1)
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.1)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.7)(react@19.2.1)
+ '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.7)(react@19.2.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
optionalDependencies:
- '@types/react': 19.1.17
- '@types/react-dom': 19.1.11(@types/react@19.1.17)
+ '@types/react': 19.2.7
+ '@types/react-dom': 19.2.3(@types/react@19.2.7)
- '@radix-ui/react-focus-guards@1.1.3(@types/react@19.1.17)(react@19.1.1)':
+ '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.7)(react@19.2.1)':
dependencies:
- react: 19.1.1
+ react: 19.2.1
optionalDependencies:
- '@types/react': 19.1.17
+ '@types/react': 19.2.7
- '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.17)(react@19.1.1)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.17)(react@19.1.1)
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.1)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.7)(react@19.2.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
optionalDependencies:
- '@types/react': 19.1.17
- '@types/react-dom': 19.1.11(@types/react@19.1.17)
+ '@types/react': 19.2.7
+ '@types/react-dom': 19.2.3(@types/react@19.2.7)
- '@radix-ui/react-id@1.1.1(@types/react@19.1.17)(react@19.1.1)':
+ '@radix-ui/react-id@1.1.1(@types/react@19.2.7)(react@19.2.1)':
dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.17)(react@19.1.1)
- react: 19.1.1
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.7)(react@19.2.1)
+ react: 19.2.1
optionalDependencies:
- '@types/react': 19.1.17
+ '@types/react': 19.2.7
- '@radix-ui/react-portal@1.1.9(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.17)(react@19.1.1)
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.7)(react@19.2.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
optionalDependencies:
- '@types/react': 19.1.17
- '@types/react-dom': 19.1.11(@types/react@19.1.17)
+ '@types/react': 19.2.7
+ '@types/react-dom': 19.2.3(@types/react@19.2.7)
- '@radix-ui/react-presence@1.1.5(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.17)(react@19.1.1)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.17)(react@19.1.1)
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.1)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.7)(react@19.2.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
optionalDependencies:
- '@types/react': 19.1.17
- '@types/react-dom': 19.1.11(@types/react@19.1.17)
+ '@types/react': 19.2.7
+ '@types/react-dom': 19.2.3(@types/react@19.2.7)
- '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
- '@radix-ui/react-slot': 1.2.3(@types/react@19.1.17)(react@19.1.1)
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ '@radix-ui/react-slot': 1.2.3(@types/react@19.2.7)(react@19.2.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
optionalDependencies:
- '@types/react': 19.1.17
- '@types/react-dom': 19.1.11(@types/react@19.1.17)
+ '@types/react': 19.2.7
+ '@types/react-dom': 19.2.3(@types/react@19.2.7)
- '@radix-ui/react-primitive@2.1.4(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@radix-ui/react-primitive@2.1.4(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
- '@radix-ui/react-slot': 1.2.4(@types/react@19.1.17)(react@19.1.1)
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ '@radix-ui/react-slot': 1.2.4(@types/react@19.2.7)(react@19.2.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
optionalDependencies:
- '@types/react': 19.1.17
- '@types/react-dom': 19.1.11(@types/react@19.1.17)
+ '@types/react': 19.2.7
+ '@types/react-dom': 19.2.3(@types/react@19.2.7)
- '@radix-ui/react-slot@1.2.3(@types/react@19.1.17)(react@19.1.1)':
+ '@radix-ui/react-slot@1.2.3(@types/react@19.2.7)(react@19.2.1)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.17)(react@19.1.1)
- react: 19.1.1
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.1)
+ react: 19.2.1
optionalDependencies:
- '@types/react': 19.1.17
+ '@types/react': 19.2.7
- '@radix-ui/react-slot@1.2.4(@types/react@19.1.17)(react@19.1.1)':
+ '@radix-ui/react-slot@1.2.4(@types/react@19.2.7)(react@19.2.1)':
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.17)(react@19.1.1)
- react: 19.1.1
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.1)
+ react: 19.2.1
optionalDependencies:
- '@types/react': 19.1.17
+ '@types/react': 19.2.7
- '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.1.17)(react@19.1.1)':
+ '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.7)(react@19.2.1)':
dependencies:
- react: 19.1.1
+ react: 19.2.1
optionalDependencies:
- '@types/react': 19.1.17
+ '@types/react': 19.2.7
- '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.1.17)(react@19.1.1)':
+ '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.7)(react@19.2.1)':
dependencies:
- '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.1.17)(react@19.1.1)
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.17)(react@19.1.1)
- react: 19.1.1
+ '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.7)(react@19.2.1)
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.7)(react@19.2.1)
+ react: 19.2.1
optionalDependencies:
- '@types/react': 19.1.17
+ '@types/react': 19.2.7
- '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.1.17)(react@19.1.1)':
+ '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.7)(react@19.2.1)':
dependencies:
- '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.17)(react@19.1.1)
- react: 19.1.1
+ '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.7)(react@19.2.1)
+ react: 19.2.1
optionalDependencies:
- '@types/react': 19.1.17
+ '@types/react': 19.2.7
- '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.1.17)(react@19.1.1)':
+ '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.7)(react@19.2.1)':
dependencies:
- '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.17)(react@19.1.1)
- react: 19.1.1
+ '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.7)(react@19.2.1)
+ react: 19.2.1
optionalDependencies:
- '@types/react': 19.1.17
+ '@types/react': 19.2.7
- '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.1.17)(react@19.1.1)':
+ '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.7)(react@19.2.1)':
dependencies:
- react: 19.1.1
+ react: 19.2.1
optionalDependencies:
- '@types/react': 19.1.17
+ '@types/react': 19.2.7
- '@react-aria/focus@3.21.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@react-aria/focus@3.21.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
- '@react-aria/interactions': 3.25.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- '@react-aria/utils': 3.31.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- '@react-types/shared': 3.32.1(react@19.1.1)
+ '@react-aria/interactions': 3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@react-types/shared': 3.32.1(react@19.2.1)
'@swc/helpers': 0.5.17
clsx: 2.1.1
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
- '@react-aria/interactions@3.25.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@react-aria/interactions@3.25.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
- '@react-aria/ssr': 3.9.10(react@19.1.1)
- '@react-aria/utils': 3.31.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ '@react-aria/ssr': 3.9.10(react@19.2.1)
+ '@react-aria/utils': 3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
'@react-stately/flags': 3.1.2
- '@react-types/shared': 3.32.1(react@19.1.1)
+ '@react-types/shared': 3.32.1(react@19.2.1)
'@swc/helpers': 0.5.17
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
- '@react-aria/ssr@3.9.10(react@19.1.1)':
+ '@react-aria/ssr@3.9.10(react@19.2.1)':
dependencies:
'@swc/helpers': 0.5.17
- react: 19.1.1
+ react: 19.2.1
- '@react-aria/utils@3.31.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@react-aria/utils@3.31.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
- '@react-aria/ssr': 3.9.10(react@19.1.1)
+ '@react-aria/ssr': 3.9.10(react@19.2.1)
'@react-stately/flags': 3.1.2
- '@react-stately/utils': 3.10.8(react@19.1.1)
- '@react-types/shared': 3.32.1(react@19.1.1)
+ '@react-stately/utils': 3.10.8(react@19.2.1)
+ '@react-types/shared': 3.32.1(react@19.2.1)
'@swc/helpers': 0.5.17
clsx: 2.1.1
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
'@react-stately/flags@3.1.2':
dependencies:
'@swc/helpers': 0.5.17
- '@react-stately/utils@3.10.8(react@19.1.1)':
+ '@react-stately/utils@3.10.8(react@19.2.1)':
dependencies:
'@swc/helpers': 0.5.17
- react: 19.1.1
+ react: 19.2.1
- '@react-types/shared@3.32.1(react@19.1.1)':
+ '@react-types/shared@3.32.1(react@19.2.1)':
dependencies:
- react: 19.1.1
+ react: 19.2.1
- '@reactflow/background@11.3.14(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@reactflow/background@11.3.14(@types/react@19.2.7)(immer@10.2.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
- '@reactflow/core': 11.11.4(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ '@reactflow/core': 11.11.4(@types/react@19.2.7)(immer@10.2.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
classcat: 5.0.5
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
- zustand: 4.5.7(@types/react@19.1.17)(immer@10.2.0)(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
+ zustand: 4.5.7(@types/react@19.2.7)(immer@10.2.0)(react@19.2.1)
transitivePeerDependencies:
- '@types/react'
- immer
- '@reactflow/controls@11.2.14(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@reactflow/controls@11.2.14(@types/react@19.2.7)(immer@10.2.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
- '@reactflow/core': 11.11.4(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ '@reactflow/core': 11.11.4(@types/react@19.2.7)(immer@10.2.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
classcat: 5.0.5
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
- zustand: 4.5.7(@types/react@19.1.17)(immer@10.2.0)(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
+ zustand: 4.5.7(@types/react@19.2.7)(immer@10.2.0)(react@19.2.1)
transitivePeerDependencies:
- '@types/react'
- immer
- '@reactflow/core@11.11.4(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@reactflow/core@11.11.4(@types/react@19.2.7)(immer@10.2.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
'@types/d3': 7.4.3
'@types/d3-drag': 3.0.7
@@ -11324,55 +11458,55 @@ snapshots:
d3-drag: 3.0.0
d3-selection: 3.0.0
d3-zoom: 3.0.0
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
- zustand: 4.5.7(@types/react@19.1.17)(immer@10.2.0)(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
+ zustand: 4.5.7(@types/react@19.2.7)(immer@10.2.0)(react@19.2.1)
transitivePeerDependencies:
- '@types/react'
- immer
- '@reactflow/minimap@11.7.14(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@reactflow/minimap@11.7.14(@types/react@19.2.7)(immer@10.2.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
- '@reactflow/core': 11.11.4(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ '@reactflow/core': 11.11.4(@types/react@19.2.7)(immer@10.2.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
'@types/d3-selection': 3.0.11
'@types/d3-zoom': 3.0.8
classcat: 5.0.5
d3-selection: 3.0.0
d3-zoom: 3.0.0
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
- zustand: 4.5.7(@types/react@19.1.17)(immer@10.2.0)(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
+ zustand: 4.5.7(@types/react@19.2.7)(immer@10.2.0)(react@19.2.1)
transitivePeerDependencies:
- '@types/react'
- immer
- '@reactflow/node-resizer@2.2.14(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@reactflow/node-resizer@2.2.14(@types/react@19.2.7)(immer@10.2.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
- '@reactflow/core': 11.11.4(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ '@reactflow/core': 11.11.4(@types/react@19.2.7)(immer@10.2.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
classcat: 5.0.5
d3-drag: 3.0.0
d3-selection: 3.0.0
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
- zustand: 4.5.7(@types/react@19.1.17)(immer@10.2.0)(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
+ zustand: 4.5.7(@types/react@19.2.7)(immer@10.2.0)(react@19.2.1)
transitivePeerDependencies:
- '@types/react'
- immer
- '@reactflow/node-toolbar@1.3.14(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@reactflow/node-toolbar@1.3.14(@types/react@19.2.7)(immer@10.2.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
- '@reactflow/core': 11.11.4(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ '@reactflow/core': 11.11.4(@types/react@19.2.7)(immer@10.2.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
classcat: 5.0.5
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
- zustand: 4.5.7(@types/react@19.1.17)(immer@10.2.0)(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
+ zustand: 4.5.7(@types/react@19.2.7)(immer@10.2.0)(react@19.2.1)
transitivePeerDependencies:
- '@types/react'
- immer
- '@remixicon/react@4.7.0(react@19.1.1)':
+ '@remixicon/react@4.7.0(react@19.2.1)':
dependencies:
- react: 19.1.1
+ react: 19.2.1
'@rgrove/parse-xml@4.2.0': {}
@@ -11453,12 +11587,12 @@ snapshots:
'@sentry/core@8.55.0': {}
- '@sentry/react@8.55.0(react@19.1.1)':
+ '@sentry/react@8.55.0(react@19.2.1)':
dependencies:
'@sentry/browser': 8.55.0
'@sentry/core': 8.55.0
hoist-non-react-statics: 3.3.2
- react: 19.1.1
+ react: 19.2.1
'@sinclair/typebox@0.27.8': {}
@@ -11472,25 +11606,25 @@ snapshots:
dependencies:
'@sinonjs/commons': 3.0.1
- '@storybook/addon-docs@9.1.13(@types/react@19.1.17)(storybook@9.1.13(@testing-library/dom@10.4.1))':
+ '@storybook/addon-docs@9.1.13(@types/react@19.2.7)(storybook@9.1.13(@testing-library/dom@10.4.1))':
dependencies:
- '@mdx-js/react': 3.1.1(@types/react@19.1.17)(react@19.1.1)
+ '@mdx-js/react': 3.1.1(@types/react@19.2.7)(react@19.2.1)
'@storybook/csf-plugin': 9.1.13(storybook@9.1.13(@testing-library/dom@10.4.1))
- '@storybook/icons': 1.6.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- '@storybook/react-dom-shim': 9.1.13(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.13(@testing-library/dom@10.4.1))
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ '@storybook/icons': 1.6.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@storybook/react-dom-shim': 9.1.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(storybook@9.1.13(@testing-library/dom@10.4.1))
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
storybook: 9.1.13(@testing-library/dom@10.4.1)
ts-dedent: 2.2.0
transitivePeerDependencies:
- '@types/react'
- '@storybook/addon-links@9.1.13(react@19.1.1)(storybook@9.1.13(@testing-library/dom@10.4.1))':
+ '@storybook/addon-links@9.1.13(react@19.2.1)(storybook@9.1.13(@testing-library/dom@10.4.1))':
dependencies:
'@storybook/global': 5.0.0
storybook: 9.1.13(@testing-library/dom@10.4.1)
optionalDependencies:
- react: 19.1.1
+ react: 19.2.1
'@storybook/addon-onboarding@9.1.13(storybook@9.1.13(@testing-library/dom@10.4.1))':
dependencies:
@@ -11540,12 +11674,12 @@ snapshots:
'@storybook/global@5.0.0': {}
- '@storybook/icons@1.6.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@storybook/icons@1.6.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
- '@storybook/nextjs@9.1.13(esbuild@0.25.0)(next@15.5.6(@babel/core@7.28.5)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.94.2))(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.94.2)(storybook@9.1.13(@testing-library/dom@10.4.1))(type-fest@4.2.0)(typescript@5.9.3)(uglify-js@3.19.3)(webpack-hot-middleware@2.26.1)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3))':
+ '@storybook/nextjs@9.1.13(esbuild@0.25.0)(next@15.5.7(@babel/core@7.28.5)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.94.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.94.2)(storybook@9.1.13(@testing-library/dom@10.4.1))(type-fest@4.2.0)(typescript@5.9.3)(uglify-js@3.19.3)(webpack-hot-middleware@2.26.1)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3))':
dependencies:
'@babel/core': 7.28.5
'@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.5)
@@ -11562,26 +11696,26 @@ snapshots:
'@babel/runtime': 7.28.4
'@pmmmwh/react-refresh-webpack-plugin': 0.5.17(react-refresh@0.14.2)(type-fest@4.2.0)(webpack-hot-middleware@2.26.1)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3))
'@storybook/builder-webpack5': 9.1.13(esbuild@0.25.0)(storybook@9.1.13(@testing-library/dom@10.4.1))(typescript@5.9.3)(uglify-js@3.19.3)
- '@storybook/preset-react-webpack': 9.1.13(esbuild@0.25.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.13(@testing-library/dom@10.4.1))(typescript@5.9.3)(uglify-js@3.19.3)
- '@storybook/react': 9.1.13(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.13(@testing-library/dom@10.4.1))(typescript@5.9.3)
+ '@storybook/preset-react-webpack': 9.1.13(esbuild@0.25.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(storybook@9.1.13(@testing-library/dom@10.4.1))(typescript@5.9.3)(uglify-js@3.19.3)
+ '@storybook/react': 9.1.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(storybook@9.1.13(@testing-library/dom@10.4.1))(typescript@5.9.3)
'@types/semver': 7.7.1
babel-loader: 9.2.1(@babel/core@7.28.5)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3))
css-loader: 6.11.0(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3))
image-size: 2.0.2
loader-utils: 3.3.1
- next: 15.5.6(@babel/core@7.28.5)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.94.2)
+ next: 15.5.7(@babel/core@7.28.5)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.94.2)
node-polyfill-webpack-plugin: 2.0.1(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3))
postcss: 8.5.6
postcss-loader: 8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3))
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
react-refresh: 0.14.2
resolve-url-loader: 5.0.0
sass-loader: 16.0.6(sass@1.94.2)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3))
semver: 7.7.3
storybook: 9.1.13(@testing-library/dom@10.4.1)
style-loader: 3.3.4(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3))
- styled-jsx: 5.1.7(@babel/core@7.28.5)(react@19.1.1)
+ styled-jsx: 5.1.7(@babel/core@7.28.5)(react@19.2.1)
tsconfig-paths: 4.2.0
tsconfig-paths-webpack-plugin: 4.2.0
optionalDependencies:
@@ -11605,16 +11739,16 @@ snapshots:
- webpack-hot-middleware
- webpack-plugin-serve
- '@storybook/preset-react-webpack@9.1.13(esbuild@0.25.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.13(@testing-library/dom@10.4.1))(typescript@5.9.3)(uglify-js@3.19.3)':
+ '@storybook/preset-react-webpack@9.1.13(esbuild@0.25.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(storybook@9.1.13(@testing-library/dom@10.4.1))(typescript@5.9.3)(uglify-js@3.19.3)':
dependencies:
'@storybook/core-webpack': 9.1.13(storybook@9.1.13(@testing-library/dom@10.4.1))
'@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.9.3)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3))
'@types/semver': 7.7.1
find-up: 7.0.0
magic-string: 0.30.21
- react: 19.1.1
+ react: 19.2.1
react-docgen: 7.1.1
- react-dom: 19.1.1(react@19.1.1)
+ react-dom: 19.2.1(react@19.2.1)
resolve: 1.22.11
semver: 7.7.3
storybook: 9.1.13(@testing-library/dom@10.4.1)
@@ -11643,18 +11777,18 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@storybook/react-dom-shim@9.1.13(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.13(@testing-library/dom@10.4.1))':
+ '@storybook/react-dom-shim@9.1.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(storybook@9.1.13(@testing-library/dom@10.4.1))':
dependencies:
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
storybook: 9.1.13(@testing-library/dom@10.4.1)
- '@storybook/react@9.1.13(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.13(@testing-library/dom@10.4.1))(typescript@5.9.3)':
+ '@storybook/react@9.1.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(storybook@9.1.13(@testing-library/dom@10.4.1))(typescript@5.9.3)':
dependencies:
'@storybook/global': 5.0.0
- '@storybook/react-dom-shim': 9.1.13(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.13(@testing-library/dom@10.4.1))
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ '@storybook/react-dom-shim': 9.1.13(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(storybook@9.1.13(@testing-library/dom@10.4.1))
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
storybook: 9.1.13(@testing-library/dom@10.4.1)
optionalDependencies:
typescript: 5.9.3
@@ -11690,10 +11824,10 @@ snapshots:
dependencies:
defer-to-connect: 2.0.1
- '@tailwindcss/typography@0.5.19(tailwindcss@3.4.18(yaml@2.8.2))':
+ '@tailwindcss/typography@0.5.19(tailwindcss@3.4.18(tsx@4.21.0)(yaml@2.8.2))':
dependencies:
postcss-selector-parser: 6.0.10
- tailwindcss: 3.4.18(yaml@2.8.2)
+ tailwindcss: 3.4.18(tsx@4.21.0)(yaml@2.8.2)
'@tanstack/devtools-event-client@0.3.5': {}
@@ -11712,37 +11846,37 @@ snapshots:
'@tanstack/query-devtools@5.91.1': {}
- '@tanstack/react-form@1.27.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@tanstack/react-form@1.27.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
'@tanstack/form-core': 1.27.0
- '@tanstack/react-store': 0.8.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- react: 19.1.1
+ '@tanstack/react-store': 0.8.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ react: 19.2.1
transitivePeerDependencies:
- react-dom
- '@tanstack/react-query-devtools@5.91.1(@tanstack/react-query@5.90.11(react@19.1.1))(react@19.1.1)':
+ '@tanstack/react-query-devtools@5.91.1(@tanstack/react-query@5.90.11(react@19.2.1))(react@19.2.1)':
dependencies:
'@tanstack/query-devtools': 5.91.1
- '@tanstack/react-query': 5.90.11(react@19.1.1)
- react: 19.1.1
+ '@tanstack/react-query': 5.90.11(react@19.2.1)
+ react: 19.2.1
- '@tanstack/react-query@5.90.11(react@19.1.1)':
+ '@tanstack/react-query@5.90.11(react@19.2.1)':
dependencies:
'@tanstack/query-core': 5.90.11
- react: 19.1.1
+ react: 19.2.1
- '@tanstack/react-store@0.8.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@tanstack/react-store@0.8.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
'@tanstack/store': 0.8.0
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
- use-sync-external-store: 1.6.0(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
+ use-sync-external-store: 1.6.0(react@19.2.1)
- '@tanstack/react-virtual@3.13.12(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@tanstack/react-virtual@3.13.12(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
'@tanstack/virtual-core': 3.13.12
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
'@tanstack/store@0.7.7': {}
@@ -11770,15 +11904,15 @@ snapshots:
picocolors: 1.1.1
redent: 3.0.0
- '@testing-library/react@16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)':
+ '@testing-library/react@16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
dependencies:
'@babel/runtime': 7.28.4
'@testing-library/dom': 10.4.1
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
optionalDependencies:
- '@types/react': 19.1.17
- '@types/react-dom': 19.1.11(@types/react@19.1.17)
+ '@types/react': 19.2.7
+ '@types/react-dom': 19.2.3(@types/react@19.2.7)
'@testing-library/user-event@14.6.1(@testing-library/dom@10.4.1)':
dependencies:
@@ -12061,23 +12195,27 @@ snapshots:
'@types/qs@6.14.0': {}
- '@types/react-dom@19.1.11(@types/react@19.1.17)':
+ '@types/react-dom@19.2.3(@types/react@19.2.7)':
dependencies:
- '@types/react': 19.1.17
+ '@types/react': 19.2.7
+
+ '@types/react-reconciler@0.28.9(@types/react@19.2.7)':
+ dependencies:
+ '@types/react': 19.2.7
'@types/react-slider@1.3.6':
dependencies:
- '@types/react': 19.1.17
+ '@types/react': 19.2.7
'@types/react-syntax-highlighter@15.5.13':
dependencies:
- '@types/react': 19.1.17
+ '@types/react': 19.2.7
'@types/react-window@1.8.8':
dependencies:
- '@types/react': 19.1.17
+ '@types/react': 19.2.7
- '@types/react@19.1.17':
+ '@types/react@19.2.7':
dependencies:
csstype: 3.2.3
@@ -12386,7 +12524,7 @@ snapshots:
loader-utils: 2.0.4
regex-parser: 2.3.1
- ahooks@3.9.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1):
+ ahooks@3.9.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
dependencies:
'@babel/runtime': 7.28.4
'@types/js-cookie': 3.0.6
@@ -12394,8 +12532,8 @@ snapshots:
intersection-observer: 0.12.2
js-cookie: 3.0.5
lodash: 4.17.21
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
react-fast-compare: 3.2.2
resize-observer-polyfill: 1.5.1
screenfull: 5.2.0
@@ -12644,6 +12782,13 @@ snapshots:
dependencies:
got: 11.8.6
+ bippy@0.3.34(@types/react@19.2.7)(react@19.2.1):
+ dependencies:
+ '@types/react-reconciler': 0.28.9(@types/react@19.2.7)
+ react: 19.2.1
+ transitivePeerDependencies:
+ - '@types/react'
+
birecord@0.1.1: {}
bl@4.1.0:
@@ -12777,6 +12922,8 @@ snapshots:
caniuse-lite@1.0.30001757: {}
+ caniuse-lite@1.0.30001759: {}
+
canvas@3.2.0:
dependencies:
node-addon-api: 7.1.1
@@ -12924,14 +13071,14 @@ snapshots:
clsx@2.1.1: {}
- cmdk@1.1.1(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.1(react@19.1.1))(react@19.1.1):
+ cmdk@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
dependencies:
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.17)(react@19.1.1)
- '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- '@radix-ui/react-id': 1.1.1(@types/react@19.1.17)(react@19.1.1)
- '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.7)(react@19.2.1)
+ '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@radix-ui/react-id': 1.1.1(@types/react@19.2.7)(react@19.2.1)
+ '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
transitivePeerDependencies:
- '@types/react'
- '@types/react-dom'
@@ -13474,11 +13621,11 @@ snapshots:
duplexer@0.1.2: {}
- echarts-for-react@3.0.5(echarts@5.6.0)(react@19.1.1):
+ echarts-for-react@3.0.5(echarts@5.6.0)(react@19.2.1):
dependencies:
echarts: 5.6.0
fast-deep-equal: 3.1.3
- react: 19.1.1
+ react: 19.2.1
size-sensor: 1.0.2
echarts@5.6.0:
@@ -13898,11 +14045,11 @@ snapshots:
- supports-color
- typescript
- eslint-plugin-tailwindcss@3.18.2(tailwindcss@3.4.18(yaml@2.8.2)):
+ eslint-plugin-tailwindcss@3.18.2(tailwindcss@3.4.18(tsx@4.21.0)(yaml@2.8.2)):
dependencies:
fast-glob: 3.3.3
postcss: 8.5.6
- tailwindcss: 3.4.18(yaml@2.8.2)
+ tailwindcss: 3.4.18(tsx@4.21.0)(yaml@2.8.2)
eslint-plugin-toml@0.12.0(eslint@9.39.1(jiti@1.21.7)):
dependencies:
@@ -14307,6 +14454,9 @@ snapshots:
fs.realpath@1.0.0: {}
+ fsevents@2.3.2:
+ optional: true
+
fsevents@2.3.3:
optional: true
@@ -15257,6 +15407,8 @@ snapshots:
kleur@3.0.3: {}
+ kleur@4.1.5: {}
+
knip@5.71.0(@types/node@18.15.0)(typescript@5.9.3):
dependencies:
'@nodelib/fs.walk': 1.2.8
@@ -16029,6 +16181,8 @@ snapshots:
dompurify: 3.2.7
marked: 14.0.0
+ mri@1.2.0: {}
+
mrmime@2.0.1: {}
ms@2.1.3: {}
@@ -16052,12 +16206,12 @@ snapshots:
neo-async@2.6.2: {}
- next-pwa@5.6.0(@babel/core@7.28.5)(@types/babel__core@7.20.5)(esbuild@0.25.0)(next@15.5.6(@babel/core@7.28.5)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.94.2))(uglify-js@3.19.3)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)):
+ next-pwa@5.6.0(@babel/core@7.28.5)(@types/babel__core@7.20.5)(esbuild@0.25.0)(next@15.5.7(@babel/core@7.28.5)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.94.2))(uglify-js@3.19.3)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)):
dependencies:
babel-loader: 8.4.1(@babel/core@7.28.5)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3))
clean-webpack-plugin: 4.0.0(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3))
globby: 11.1.0
- next: 15.5.6(@babel/core@7.28.5)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.94.2)
+ next: 15.5.7(@babel/core@7.28.5)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.94.2)
terser-webpack-plugin: 5.3.14(esbuild@0.25.0)(uglify-js@3.19.3)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3))
workbox-webpack-plugin: 6.6.0(@types/babel__core@7.20.5)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3))
workbox-window: 6.6.0
@@ -16070,29 +16224,29 @@ snapshots:
- uglify-js
- webpack
- next-themes@0.4.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1):
+ next-themes@0.4.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
dependencies:
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
- next@15.5.6(@babel/core@7.28.5)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.94.2):
+ next@15.5.7(@babel/core@7.28.5)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.94.2):
dependencies:
- '@next/env': 15.5.6
+ '@next/env': 15.5.7
'@swc/helpers': 0.5.15
- caniuse-lite: 1.0.30001757
+ caniuse-lite: 1.0.30001759
postcss: 8.4.31
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
- styled-jsx: 5.1.6(@babel/core@7.28.5)(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
+ styled-jsx: 5.1.6(@babel/core@7.28.5)(react@19.2.1)
optionalDependencies:
- '@next/swc-darwin-arm64': 15.5.6
- '@next/swc-darwin-x64': 15.5.6
- '@next/swc-linux-arm64-gnu': 15.5.6
- '@next/swc-linux-arm64-musl': 15.5.6
- '@next/swc-linux-x64-gnu': 15.5.6
- '@next/swc-linux-x64-musl': 15.5.6
- '@next/swc-win32-arm64-msvc': 15.5.6
- '@next/swc-win32-x64-msvc': 15.5.6
+ '@next/swc-darwin-arm64': 15.5.7
+ '@next/swc-darwin-x64': 15.5.7
+ '@next/swc-linux-arm64-gnu': 15.5.7
+ '@next/swc-linux-arm64-musl': 15.5.7
+ '@next/swc-linux-x64-gnu': 15.5.7
+ '@next/swc-linux-x64-musl': 15.5.7
+ '@next/swc-win32-arm64-msvc': 15.5.7
+ '@next/swc-win32-x64-msvc': 15.5.7
sass: 1.94.2
sharp: 0.34.5
transitivePeerDependencies:
@@ -16414,6 +16568,14 @@ snapshots:
exsolve: 1.0.8
pathe: 2.0.3
+ playwright-core@1.57.0: {}
+
+ playwright@1.57.0:
+ dependencies:
+ playwright-core: 1.57.0
+ optionalDependencies:
+ fsevents: 2.3.2
+
pluralize@8.0.0: {}
pnpm-workspace-yaml@1.3.0:
@@ -16446,12 +16608,13 @@ snapshots:
camelcase-css: 2.0.1
postcss: 8.5.6
- postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(yaml@2.8.2):
+ postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.2):
dependencies:
lilconfig: 3.1.3
optionalDependencies:
jiti: 1.21.7
postcss: 8.5.6
+ tsx: 4.21.0
yaml: 2.8.2
postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.103.0(esbuild@0.25.0)(uglify-js@3.19.3)):
@@ -16520,6 +16683,8 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
+ preact@10.28.0: {}
+
prebuild-install@7.1.3:
dependencies:
detect-libc: 2.1.2
@@ -16602,9 +16767,9 @@ snapshots:
pure-rand@6.1.0: {}
- qrcode.react@4.2.0(react@19.1.1):
+ qrcode.react@4.2.0(react@19.2.1):
dependencies:
- react: 19.1.1
+ react: 19.2.1
qs@6.14.0:
dependencies:
@@ -16637,15 +16802,15 @@ snapshots:
strip-json-comments: 2.0.1
optional: true
- re-resizable@6.11.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1):
+ re-resizable@6.11.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
dependencies:
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
- react-18-input-autosize@3.0.0(react@19.1.1):
+ react-18-input-autosize@3.0.0(react@19.2.1):
dependencies:
prop-types: 15.8.1
- react: 19.1.1
+ react: 19.2.1
react-docgen-typescript@2.4.0(typescript@5.9.3):
dependencies:
@@ -16666,49 +16831,49 @@ snapshots:
transitivePeerDependencies:
- supports-color
- react-dom@19.1.1(react@19.1.1):
+ react-dom@19.2.1(react@19.2.1):
dependencies:
- react: 19.1.1
- scheduler: 0.26.0
+ react: 19.2.1
+ scheduler: 0.27.0
- react-draggable@4.4.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1):
+ react-draggable@4.4.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
dependencies:
clsx: 1.2.1
prop-types: 15.8.1
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
- react-easy-crop@5.5.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1):
+ react-easy-crop@5.5.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
dependencies:
normalize-wheel: 1.0.1
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
tslib: 2.8.1
- react-error-boundary@6.0.0(react@19.1.1):
+ react-error-boundary@6.0.0(react@19.2.1):
dependencies:
'@babel/runtime': 7.28.4
- react: 19.1.1
+ react: 19.2.1
react-fast-compare@3.2.2: {}
- react-hook-form@7.67.0(react@19.1.1):
+ react-hook-form@7.67.0(react@19.2.1):
dependencies:
- react: 19.1.1
+ react: 19.2.1
- react-hotkeys-hook@4.6.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1):
+ react-hotkeys-hook@4.6.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
dependencies:
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
- react-i18next@15.7.4(i18next@23.16.8)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.3):
+ react-i18next@15.7.4(i18next@23.16.8)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3):
dependencies:
'@babel/runtime': 7.28.4
html-parse-stringify: 3.0.1
i18next: 23.16.8
- react: 19.1.1
+ react: 19.2.1
optionalDependencies:
- react-dom: 19.1.1(react@19.1.1)
+ react-dom: 19.2.1(react@19.2.1)
typescript: 5.9.3
react-is@16.13.1: {}
@@ -16717,16 +16882,16 @@ snapshots:
react-is@18.3.1: {}
- react-markdown@9.1.0(@types/react@19.1.17)(react@19.1.1):
+ react-markdown@9.1.0(@types/react@19.2.7)(react@19.2.1):
dependencies:
'@types/hast': 3.0.4
'@types/mdast': 4.0.4
- '@types/react': 19.1.17
+ '@types/react': 19.2.7
devlop: 1.1.0
hast-util-to-jsx-runtime: 2.3.6
html-url-attributes: 3.0.1
mdast-util-to-hast: 13.2.1
- react: 19.1.1
+ react: 19.2.1
remark-parse: 11.0.0
remark-rehype: 11.1.2
unified: 11.0.5
@@ -16735,113 +16900,142 @@ snapshots:
transitivePeerDependencies:
- supports-color
- react-multi-email@1.0.25(react-dom@19.1.1(react@19.1.1))(react@19.1.1):
+ react-multi-email@1.0.25(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
dependencies:
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
react-papaparse@4.4.0:
dependencies:
'@types/papaparse': 5.5.1
papaparse: 5.5.3
- react-pdf-highlighter@8.0.0-rc.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1):
+ react-pdf-highlighter@8.0.0-rc.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
dependencies:
pdfjs-dist: 4.4.168
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
- react-rnd: 10.5.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
+ react-rnd: 10.5.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
ts-debounce: 4.0.0
react-refresh@0.14.2: {}
- react-remove-scroll-bar@2.3.8(@types/react@19.1.17)(react@19.1.1):
+ react-remove-scroll-bar@2.3.8(@types/react@19.2.7)(react@19.2.1):
dependencies:
- react: 19.1.1
- react-style-singleton: 2.2.3(@types/react@19.1.17)(react@19.1.1)
+ react: 19.2.1
+ react-style-singleton: 2.2.3(@types/react@19.2.7)(react@19.2.1)
tslib: 2.8.1
optionalDependencies:
- '@types/react': 19.1.17
+ '@types/react': 19.2.7
- react-remove-scroll@2.7.2(@types/react@19.1.17)(react@19.1.1):
+ react-remove-scroll@2.7.2(@types/react@19.2.7)(react@19.2.1):
dependencies:
- react: 19.1.1
- react-remove-scroll-bar: 2.3.8(@types/react@19.1.17)(react@19.1.1)
- react-style-singleton: 2.2.3(@types/react@19.1.17)(react@19.1.1)
+ react: 19.2.1
+ react-remove-scroll-bar: 2.3.8(@types/react@19.2.7)(react@19.2.1)
+ react-style-singleton: 2.2.3(@types/react@19.2.7)(react@19.2.1)
tslib: 2.8.1
- use-callback-ref: 1.3.3(@types/react@19.1.17)(react@19.1.1)
- use-sidecar: 1.1.3(@types/react@19.1.17)(react@19.1.1)
+ use-callback-ref: 1.3.3(@types/react@19.2.7)(react@19.2.1)
+ use-sidecar: 1.1.3(@types/react@19.2.7)(react@19.2.1)
optionalDependencies:
- '@types/react': 19.1.17
+ '@types/react': 19.2.7
- react-rnd@10.5.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1):
+ react-rnd@10.5.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
dependencies:
- re-resizable: 6.11.2(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
- react-draggable: 4.4.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
+ re-resizable: 6.11.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
+ react-draggable: 4.4.6(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
tslib: 2.6.2
- react-slider@2.0.6(react@19.1.1):
+ react-scan@0.4.3(@types/react@19.2.7)(next@15.5.7(@babel/core@7.28.5)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.94.2))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(rollup@2.79.2):
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/generator': 7.28.5
+ '@babel/types': 7.28.5
+ '@clack/core': 0.3.5
+ '@clack/prompts': 0.8.2
+ '@pivanov/utils': 0.0.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@preact/signals': 1.3.2(preact@10.28.0)
+ '@rollup/pluginutils': 5.3.0(rollup@2.79.2)
+ '@types/node': 20.19.25
+ bippy: 0.3.34(@types/react@19.2.7)(react@19.2.1)
+ esbuild: 0.25.0
+ estree-walker: 3.0.3
+ kleur: 4.1.5
+ mri: 1.2.0
+ playwright: 1.57.0
+ preact: 10.28.0
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
+ tsx: 4.21.0
+ optionalDependencies:
+ next: 15.5.7(@babel/core@7.28.5)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sass@1.94.2)
+ unplugin: 2.1.0
+ transitivePeerDependencies:
+ - '@types/react'
+ - rollup
+ - supports-color
+
+ react-slider@2.0.6(react@19.2.1):
dependencies:
prop-types: 15.8.1
- react: 19.1.1
+ react: 19.2.1
- react-sortablejs@6.1.4(@types/sortablejs@1.15.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sortablejs@1.15.6):
+ react-sortablejs@6.1.4(@types/sortablejs@1.15.9)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(sortablejs@1.15.6):
dependencies:
'@types/sortablejs': 1.15.9
classnames: 2.3.1
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
sortablejs: 1.15.6
tiny-invariant: 1.2.0
- react-style-singleton@2.2.3(@types/react@19.1.17)(react@19.1.1):
+ react-style-singleton@2.2.3(@types/react@19.2.7)(react@19.2.1):
dependencies:
get-nonce: 1.0.1
- react: 19.1.1
+ react: 19.2.1
tslib: 2.8.1
optionalDependencies:
- '@types/react': 19.1.17
+ '@types/react': 19.2.7
- react-syntax-highlighter@15.6.6(react@19.1.1):
+ react-syntax-highlighter@15.6.6(react@19.2.1):
dependencies:
'@babel/runtime': 7.28.4
highlight.js: 10.7.3
highlightjs-vue: 1.0.0
lowlight: 1.20.0
prismjs: 1.30.0
- react: 19.1.1
+ react: 19.2.1
refractor: 3.6.0
- react-textarea-autosize@8.5.9(@types/react@19.1.17)(react@19.1.1):
+ react-textarea-autosize@8.5.9(@types/react@19.2.7)(react@19.2.1):
dependencies:
'@babel/runtime': 7.28.4
- react: 19.1.1
- use-composed-ref: 1.4.0(@types/react@19.1.17)(react@19.1.1)
- use-latest: 1.3.0(@types/react@19.1.17)(react@19.1.1)
+ react: 19.2.1
+ use-composed-ref: 1.4.0(@types/react@19.2.7)(react@19.2.1)
+ use-latest: 1.3.0(@types/react@19.2.7)(react@19.2.1)
transitivePeerDependencies:
- '@types/react'
- react-window@1.8.11(react-dom@19.1.1(react@19.1.1))(react@19.1.1):
+ react-window@1.8.11(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
dependencies:
'@babel/runtime': 7.28.4
memoize-one: 5.2.1
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
- react@19.1.1: {}
+ react@19.2.1: {}
- reactflow@11.11.4(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1):
+ reactflow@11.11.4(@types/react@19.2.7)(immer@10.2.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1):
dependencies:
- '@reactflow/background': 11.3.14(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- '@reactflow/controls': 11.2.14(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- '@reactflow/core': 11.11.4(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- '@reactflow/minimap': 11.7.14(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- '@reactflow/node-resizer': 2.2.14(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- '@reactflow/node-toolbar': 1.3.14(@types/react@19.1.17)(immer@10.2.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)
- react: 19.1.1
- react-dom: 19.1.1(react@19.1.1)
+ '@reactflow/background': 11.3.14(@types/react@19.2.7)(immer@10.2.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@reactflow/controls': 11.2.14(@types/react@19.2.7)(immer@10.2.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@reactflow/core': 11.11.4(@types/react@19.2.7)(immer@10.2.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@reactflow/minimap': 11.7.14(@types/react@19.2.7)(immer@10.2.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@reactflow/node-resizer': 2.2.14(@types/react@19.2.7)(immer@10.2.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@reactflow/node-toolbar': 1.3.14(@types/react@19.2.7)(immer@10.2.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
transitivePeerDependencies:
- '@types/react'
- immer
@@ -17171,6 +17365,8 @@ snapshots:
scheduler@0.26.0: {}
+ scheduler@0.27.0: {}
+
schema-utils@2.7.1:
dependencies:
'@types/json-schema': 7.0.15
@@ -17486,17 +17682,17 @@ snapshots:
dependencies:
inline-style-parser: 0.2.7
- styled-jsx@5.1.6(@babel/core@7.28.5)(react@19.1.1):
+ styled-jsx@5.1.6(@babel/core@7.28.5)(react@19.2.1):
dependencies:
client-only: 0.0.1
- react: 19.1.1
+ react: 19.2.1
optionalDependencies:
'@babel/core': 7.28.5
- styled-jsx@5.1.7(@babel/core@7.28.5)(react@19.1.1):
+ styled-jsx@5.1.7(@babel/core@7.28.5)(react@19.2.1):
dependencies:
client-only: 0.0.1
- react: 19.1.1
+ react: 19.2.1
optionalDependencies:
'@babel/core': 7.28.5
@@ -17522,11 +17718,11 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
- swr@2.3.7(react@19.1.1):
+ swr@2.3.7(react@19.2.1):
dependencies:
dequal: 2.0.3
- react: 19.1.1
- use-sync-external-store: 1.6.0(react@19.1.1)
+ react: 19.2.1
+ use-sync-external-store: 1.6.0(react@19.2.1)
synckit@0.11.11:
dependencies:
@@ -17536,7 +17732,7 @@ snapshots:
tailwind-merge@2.6.0: {}
- tailwindcss@3.4.18(yaml@2.8.2):
+ tailwindcss@3.4.18(tsx@4.21.0)(yaml@2.8.2):
dependencies:
'@alloc/quick-lru': 5.2.0
arg: 5.0.2
@@ -17555,7 +17751,7 @@ snapshots:
postcss: 8.5.6
postcss-import: 15.1.0(postcss@8.5.6)
postcss-js: 4.1.0(postcss@8.5.6)
- postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(yaml@2.8.2)
+ postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.2)
postcss-nested: 6.2.0(postcss@8.5.6)
postcss-selector-parser: 6.1.2
resolve: 1.22.11
@@ -17732,6 +17928,13 @@ snapshots:
tslib@2.8.1: {}
+ tsx@4.21.0:
+ dependencies:
+ esbuild: 0.25.0
+ get-tsconfig: 4.13.0
+ optionalDependencies:
+ fsevents: 2.3.3
+
tty-browserify@0.0.1: {}
tunnel-agent@0.6.0:
@@ -17834,6 +18037,12 @@ snapshots:
acorn: 8.15.0
webpack-virtual-modules: 0.6.2
+ unplugin@2.1.0:
+ dependencies:
+ acorn: 8.15.0
+ webpack-virtual-modules: 0.6.2
+ optional: true
+
upath@1.2.0: {}
update-browserslist-db@1.1.4(browserslist@4.28.0):
@@ -17851,50 +18060,50 @@ snapshots:
punycode: 1.4.1
qs: 6.14.0
- use-callback-ref@1.3.3(@types/react@19.1.17)(react@19.1.1):
+ use-callback-ref@1.3.3(@types/react@19.2.7)(react@19.2.1):
dependencies:
- react: 19.1.1
+ react: 19.2.1
tslib: 2.8.1
optionalDependencies:
- '@types/react': 19.1.17
+ '@types/react': 19.2.7
- use-composed-ref@1.4.0(@types/react@19.1.17)(react@19.1.1):
+ use-composed-ref@1.4.0(@types/react@19.2.7)(react@19.2.1):
dependencies:
- react: 19.1.1
+ react: 19.2.1
optionalDependencies:
- '@types/react': 19.1.17
+ '@types/react': 19.2.7
- use-context-selector@2.0.0(react@19.1.1)(scheduler@0.26.0):
+ use-context-selector@2.0.0(react@19.2.1)(scheduler@0.26.0):
dependencies:
- react: 19.1.1
+ react: 19.2.1
scheduler: 0.26.0
- use-isomorphic-layout-effect@1.2.1(@types/react@19.1.17)(react@19.1.1):
+ use-isomorphic-layout-effect@1.2.1(@types/react@19.2.7)(react@19.2.1):
dependencies:
- react: 19.1.1
+ react: 19.2.1
optionalDependencies:
- '@types/react': 19.1.17
+ '@types/react': 19.2.7
- use-latest@1.3.0(@types/react@19.1.17)(react@19.1.1):
+ use-latest@1.3.0(@types/react@19.2.7)(react@19.2.1):
dependencies:
- react: 19.1.1
- use-isomorphic-layout-effect: 1.2.1(@types/react@19.1.17)(react@19.1.1)
+ react: 19.2.1
+ use-isomorphic-layout-effect: 1.2.1(@types/react@19.2.7)(react@19.2.1)
optionalDependencies:
- '@types/react': 19.1.17
+ '@types/react': 19.2.7
- use-sidecar@1.1.3(@types/react@19.1.17)(react@19.1.1):
+ use-sidecar@1.1.3(@types/react@19.2.7)(react@19.2.1):
dependencies:
detect-node-es: 1.1.0
- react: 19.1.1
+ react: 19.2.1
tslib: 2.8.1
optionalDependencies:
- '@types/react': 19.1.17
+ '@types/react': 19.2.7
use-strict@1.0.1: {}
- use-sync-external-store@1.6.0(react@19.1.1):
+ use-sync-external-store@1.6.0(react@19.2.1):
dependencies:
- react: 19.1.1
+ react: 19.2.1
util-deprecate@1.0.2: {}
@@ -18277,23 +18486,23 @@ snapshots:
dependencies:
tslib: 2.3.0
- zundo@2.3.0(zustand@5.0.9(@types/react@19.1.17)(immer@10.2.0)(react@19.1.1)(use-sync-external-store@1.6.0(react@19.1.1))):
+ zundo@2.3.0(zustand@5.0.9(@types/react@19.2.7)(immer@10.2.0)(react@19.2.1)(use-sync-external-store@1.6.0(react@19.2.1))):
dependencies:
- zustand: 5.0.9(@types/react@19.1.17)(immer@10.2.0)(react@19.1.1)(use-sync-external-store@1.6.0(react@19.1.1))
+ zustand: 5.0.9(@types/react@19.2.7)(immer@10.2.0)(react@19.2.1)(use-sync-external-store@1.6.0(react@19.2.1))
- zustand@4.5.7(@types/react@19.1.17)(immer@10.2.0)(react@19.1.1):
+ zustand@4.5.7(@types/react@19.2.7)(immer@10.2.0)(react@19.2.1):
dependencies:
- use-sync-external-store: 1.6.0(react@19.1.1)
+ use-sync-external-store: 1.6.0(react@19.2.1)
optionalDependencies:
- '@types/react': 19.1.17
+ '@types/react': 19.2.7
immer: 10.2.0
- react: 19.1.1
+ react: 19.2.1
- zustand@5.0.9(@types/react@19.1.17)(immer@10.2.0)(react@19.1.1)(use-sync-external-store@1.6.0(react@19.1.1)):
+ zustand@5.0.9(@types/react@19.2.7)(immer@10.2.0)(react@19.2.1)(use-sync-external-store@1.6.0(react@19.2.1)):
optionalDependencies:
- '@types/react': 19.1.17
+ '@types/react': 19.2.7
immer: 10.2.0
- react: 19.1.1
- use-sync-external-store: 1.6.0(react@19.1.1)
+ react: 19.2.1
+ use-sync-external-store: 1.6.0(react@19.2.1)
zwitch@2.0.4: {}
diff --git a/web/service/use-plugins.ts b/web/service/use-plugins.ts
index f6dbecaeba..b5b8779a82 100644
--- a/web/service/use-plugins.ts
+++ b/web/service/use-plugins.ts
@@ -612,12 +612,11 @@ export const usePluginTaskList = (category?: PluginCategoryEnum | string) => {
const taskAllFailed = lastData?.tasks.every(task => task.status === TaskStatus.failed)
if (taskDone && lastData?.tasks.length && !taskAllFailed)
refreshPluginList(category ? { category } as any : undefined, !category)
- }, [initialized, isRefetching, data, category, refreshPluginList])
+ }, [isRefetching])
useEffect(() => {
- if (isFetched && !initialized)
- setInitialized(true)
- }, [isFetched, initialized])
+ setInitialized(true)
+ }, [])
const handleRefetch = useCallback(() => {
refetch()
diff --git a/web/service/use-triggers.ts b/web/service/use-triggers.ts
index cfb786e4a9..67522d2e55 100644
--- a/web/service/use-triggers.ts
+++ b/web/service/use-triggers.ts
@@ -25,6 +25,7 @@ const convertToTriggerWithProvider = (provider: TriggerProviderApiEntity): Trigg
author: provider.author,
description: provider.description,
icon: provider.icon || '',
+ icon_dark: provider.icon_dark || '',
label: provider.label,
type: CollectionType.trigger,
team_credentials: {},
diff --git a/web/service/use-workflow.ts b/web/service/use-workflow.ts
index 901b35994f..5da83be360 100644
--- a/web/service/use-workflow.ts
+++ b/web/service/use-workflow.ts
@@ -123,7 +123,7 @@ export const useInvalidLastRun = (flowType: FlowType, flowId: string, nodeId: st
// Rerun workflow or change the version of workflow
export const useInvalidAllLastRun = (flowType?: FlowType, flowId?: string) => {
- return useInvalid([NAME_SPACE, flowType, 'last-run', flowId])
+ return useInvalid([...useLastRunKey, flowType, flowId])
}
export const useConversationVarValues = (flowType?: FlowType, flowId?: string) => {