diff --git a/.changeset/neat-lands-stay.md b/.changeset/neat-lands-stay.md new file mode 100644 index 000000000..1a389d09a --- /dev/null +++ b/.changeset/neat-lands-stay.md @@ -0,0 +1,5 @@ +--- +"@svenvw/fdm-app": minor +--- + +Add page to add a field to a farm diff --git a/.changeset/slick-buses-bow.md b/.changeset/slick-buses-bow.md new file mode 100644 index 000000000..314104c72 --- /dev/null +++ b/.changeset/slick-buses-bow.md @@ -0,0 +1,5 @@ +--- +"@svenvw/fdm-core": patch +--- + +Fix that soil data without sampling date is not excluded diff --git a/fdm-app/app/components/custom/atlas/atlas-sources.tsx b/fdm-app/app/components/custom/atlas/atlas-sources.tsx index 333b6b160..af219897a 100644 --- a/fdm-app/app/components/custom/atlas/atlas-sources.tsx +++ b/fdm-app/app/components/custom/atlas/atlas-sources.tsx @@ -37,7 +37,6 @@ export function FieldsSourceSelected({ useEffect(() => { function clickOnMap(evt) { - console.log("jh") if (!map) return const features = map.queryRenderedFeatures(evt.point, { @@ -128,10 +127,10 @@ export function FieldsSourceAvailable({ if (bounds) { const [[minX, minY], [maxX, maxY]] = bounds.toArray() const bbox = { - minX: 0.9999 * minX, - maxX: 1.0001 * maxX, - minY: 0.9999 * minY, - maxY: 1.0001 * maxY, + minX: 0.9995 * minX, + maxX: 1.0005 * maxX, + minY: 0.9995 * minY, + maxY: 1.0005 * maxY, } try { const iter = deserialize(url, bbox) diff --git a/fdm-app/app/components/custom/atlas/atlas-styles.tsx b/fdm-app/app/components/custom/atlas/atlas-styles.tsx index 57c2811fd..6aa373d75 100644 --- a/fdm-app/app/components/custom/atlas/atlas-styles.tsx +++ b/fdm-app/app/components/custom/atlas/atlas-styles.tsx @@ -1,27 +1,47 @@ -import type { LayerProps } from "react-map-gl" +import type { + FillLayerSpecification, + LayerProps, + SymbolLayerSpecification, +} from "react-map-gl" -export function getFieldsStyle(layerId: string): LayerProps & { - id: string - type: string - paint: { - "fill-color": string - "fill-opacity": number - "fill-outline-color": string - } -} { - const fieldsStyle = { - id: layerId, +export function getFieldsStyle( + layerId: string, +): LayerProps & + ( + | ({ + id: string + type: "fill" + paint: FillLayerSpecification["paint"] + }) + | { + id: string + type: "symbol" + layout: SymbolLayerSpecification["layout"] + paint: SymbolLayerSpecification["paint"] + } + ) { + const baseFieldsStyle: Omit = { type: "fill", paint: { - "fill-color": "#93c5fd", + "fill-color": "#60a5fa", "fill-opacity": 0.5, "fill-outline-color": "#1e3a8a", }, - } + } as FillLayerSpecification // Cast to FillLayerSpecification to allow modification of paint + + const fieldsStyle = { + ...baseFieldsStyle, + id: layerId, + } as LayerProps & FillLayerSpecification // Cast to FillLayerSpecification to allow modification of paint if (layerId === "fieldsSelected") { - fieldsStyle.paint["fill-color"] = "#fca5a5" + fieldsStyle.paint["fill-color"] = "#f43f5e" fieldsStyle.paint["fill-opacity"] = 0.8 } + if (layerId === "fieldsSaved") { + fieldsStyle.paint["fill-color"] = "#10b981" + fieldsStyle.paint["fill-opacity"] = 0.8 + } + return fieldsStyle } diff --git a/fdm-app/app/components/custom/combobox.tsx b/fdm-app/app/components/custom/combobox.tsx index 0f69d5fca..ea742801d 100644 --- a/fdm-app/app/components/custom/combobox.tsx +++ b/fdm-app/app/components/custom/combobox.tsx @@ -12,7 +12,6 @@ import { import { FormControl, FormDescription, - FormField, FormItem, FormLabel, FormMessage, @@ -31,22 +30,25 @@ type optionType = { interface ComboboxProps { options: { value: string; label: string }[] - form: any name: string label: ReactNode defaultValue?: optionType["value"] disabled?: boolean + onChange: (value: string) => void } export function Combobox({ options, - form, name, label, defaultValue, disabled, + onChange }: ComboboxProps) { const [open, setOpen] = useState(false) + const [currentValue, setCurrentValue] = useState( + defaultValue, + ) /** Map of option values to their labels for efficient lookup */ const optionsMap = useMemo( @@ -67,85 +69,85 @@ export function Combobox({ ) return ( - ( - - {label} - - - - - - - + {label} + + + + + + + + + + + Niks gevonden + + {options.map((option: optionType) => ( + { + setCurrentValue(option.value) + onChange(option.value) + setOpen(false) + }} + > +

+ {option.label} +

+ +
+ ))} +
+
+
+
+
+ + + +
) -} +} \ No newline at end of file diff --git a/fdm-app/app/components/custom/field/form.tsx b/fdm-app/app/components/custom/field/form.tsx new file mode 100644 index 000000000..e904f0723 --- /dev/null +++ b/fdm-app/app/components/custom/field/form.tsx @@ -0,0 +1,147 @@ +import { + Dialog, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle, +} from "~/components/ui/dialog" +import { Button } from "~/components/ui/button" +import { RemixFormProvider, useRemixForm } from "remix-hook-form" +import { useEffect, useState } from "react" +import { + FormControl, + FormDescription, + FormField, + FormItem, + FormLabel, + FormMessage, +} from "~/components/ui/form" +import { Input } from "~/components/ui/input" +import type { z } from "zod" +import { zodResolver } from "@hookform/resolvers/zod" +import { FormSchema } from "./schema" +import { Combobox } from "~/components/custom/combobox" +import { LoadingSpinner } from "~/components/custom/loadingspinner" +import type { Feature, Polygon } from "geojson" +import { Form } from "react-router" + +interface FieldDetailsDialogProps { + open: boolean + setOpen: (value: boolean) => void + field: Feature + cultivationOptions: { value: string; label: string }[] + fieldNameDefault: string +} + +export default function FieldDetailsDialog({ + open, + setOpen, + field, + cultivationOptions, + fieldNameDefault, +}: FieldDetailsDialogProps) { + const b_lu_catalogue = `nl_${field.properties?.b_lu_catalogue ?? ""}` + const [selectedCultivation, setSelectedCultivation] = + useState(b_lu_catalogue) + + const form = useRemixForm>({ + mode: "onTouched", + resolver: zodResolver(FormSchema), + defaultValues: { + b_name: fieldNameDefault, + b_lu_catalogue: selectedCultivation, + }, + submitData: { + b_id_source: field.properties?.b_id_source, + b_geometry: JSON.stringify(field.geometry), + }, + }) + + useEffect(() => { + form.setValue("b_lu_catalogue", selectedCultivation) + }, [selectedCultivation, form]) + + useEffect(() => { + if (form.formState.isSubmitSuccessful) { + form.reset() + } + }, [form.formState, form.reset]) + + return ( + + + +
+
+ + Nieuw perceel + + Vul de details van dit perceel in + + +
+ ( + + Naam + + + + + + + )} + /> + + Hoofdgewas + + * + + + } + defaultValue={selectedCultivation} + disabled={form.formState.isSubmitting} + onChange={setSelectedCultivation} + /> +
+ + + +
+
+
+
+
+ ) +} diff --git a/fdm-app/app/components/custom/field/schema.tsx b/fdm-app/app/components/custom/field/schema.tsx new file mode 100644 index 000000000..06ef0abcf --- /dev/null +++ b/fdm-app/app/components/custom/field/schema.tsx @@ -0,0 +1,22 @@ +import { z } from "zod" + +const FormSchema = z.object({ + b_name: z + .string({ + required_error: "Naam van perceel is verplicht", + }) + .min(3, { + message: "Naam van perceel moet minimaal 3 karakters bevatten", + }), + b_lu_catalogue: z.string({ + required_error: "Hoofdgewas is verplicht", + }), + b_id_source: z.string({ + required_error: "ID van bron is verplicht", + }).optional(), + b_geometry: z.string({ + required_error: "Geometrie van perceel is verplicht", + }).optional(), +}) + +export { FormSchema } diff --git a/fdm-app/app/integrations/nmi.ts b/fdm-app/app/integrations/nmi.ts index 28ba80335..d5da6f3e5 100644 --- a/fdm-app/app/integrations/nmi.ts +++ b/fdm-app/app/integrations/nmi.ts @@ -1,5 +1,6 @@ import centroid from "@turf/centroid" -import type { Feature } from "geojson" +import type { Feature, Geometry, Polygon } from "geojson" +import { z } from "zod" import { serverConfig } from "~/lib/config.server" export function getNmiApiKey() { @@ -12,7 +13,7 @@ export function getNmiApiKey() { } export async function getSoilParameterEstimates( - field: Feature, + field: Feature | Polygon, nmiApiKey: string | undefined, ): Promise<{ a_p_al: number @@ -27,7 +28,13 @@ export async function getSoilParameterEstimates( throw new Error("Please provide a NMI API key") } - const fieldCentroid = centroid(field.geometry) + let geometry: Geometry + if ("geometry" in field) { + geometry = field.geometry + } else { + geometry = field + } + const fieldCentroid = centroid(geometry) const a_lon = fieldCentroid.geometry.coordinates[0] const a_lat = fieldCentroid.geometry.coordinates[1] @@ -50,9 +57,30 @@ export async function getSoilParameterEstimates( const result = await responseApi.json() const response = result.data - response.a_source = "NMI" response.a_depth = 0.3 + // Validate the response using the Zod schema + const parsedResponse = soilParameterEstimatesSchema.safeParse(result.data) + if (!parsedResponse.success) { + console.error( + "NMI API response validation failed:", + JSON.stringify(parsedResponse.error.format(), null, 2), + ) + throw new Error( + `Invalid response from NMI API: ${parsedResponse.error.message}`, + ) + } + return response } + +const soilParameterEstimatesSchema = z.object({ + a_p_al: z.number(), + a_p_cc: z.number(), + a_som_loi: z.number(), + b_soiltype_agr: z.string(), + b_gwl_class: z.string(), + a_source: z.string(), + a_depth: z.number(), +}) diff --git a/fdm-app/app/lib/form.ts b/fdm-app/app/lib/form.ts index e18e86df8..ed067eb22 100644 --- a/fdm-app/app/lib/form.ts +++ b/fdm-app/app/lib/form.ts @@ -25,10 +25,10 @@ export async function extractFormValuesFromRequest( // Note: Somewhere additional quotation marks are added, preferably that is not the case, but this workaround removes them for (const key of formData.keys()) { const value = formData.get(key) - if (typeof value === "string") { + if (typeof value === "string" && key !== "b_geometry") { formData.set(key, value.replace(/['"]+/g, "").trim()) - // Daypicker return 01 Jan 1970 if no date is selected. This workaround removes the date if it is 01 Jan 1970 + // Daypicker returns 01 Jan 1970 if no date is selected. This workaround removes the date if it is 01 Jan 1970 if (value === "1970-01-01T00:00:00.000Z") { formData.delete(key) } diff --git a/fdm-app/app/routes/farm.$b_id_farm.$calendar.field.$b_id.cultivation._index.tsx b/fdm-app/app/routes/farm.$b_id_farm.$calendar.field.$b_id.cultivation._index.tsx index 610d42284..dd3af83f1 100644 --- a/fdm-app/app/routes/farm.$b_id_farm.$calendar.field.$b_id.cultivation._index.tsx +++ b/fdm-app/app/routes/farm.$b_id_farm.$calendar.field.$b_id.cultivation._index.tsx @@ -156,7 +156,7 @@ export default function FarmFieldsOverviewBlock() {

-
+
-

- Het aanmaken van een perceel is binnenkort - beschikbaar. -

- + + +
{/*

*/} @@ -243,12 +237,10 @@ export default function FarmFieldIndex() {

Of maak een nieuw perceel aan:

-
- +
+ + +
diff --git a/fdm-app/app/routes/farm.$b_id_farm.$calendar.field.new.tsx b/fdm-app/app/routes/farm.$b_id_farm.$calendar.field.new.tsx new file mode 100644 index 000000000..4bd305de2 --- /dev/null +++ b/fdm-app/app/routes/farm.$b_id_farm.$calendar.field.new.tsx @@ -0,0 +1,441 @@ +import { ZOOM_LEVEL_FIELDS } from "~/components/custom/atlas/atlas" +import { + getMapboxStyle, + getMapboxToken, +} from "~/integrations/mapbox" +import { + FieldsPanelHover, + FieldsPanelZoom, +} from "~/components/custom/atlas/atlas-panels" +import { + FieldsSourceAvailable, + FieldsSourceNotClickable, +} from "~/components/custom/atlas/atlas-sources" +import { getFieldsStyle } from "~/components/custom/atlas/atlas-styles" +import { getViewState } from "~/components/custom/atlas/atlas-viewstate" +import { Separator } from "~/components/ui/separator" +import { SidebarInset } from "~/components/ui/sidebar" +import { Skeleton } from "~/components/ui/skeleton" +import { getSession } from "~/lib/auth.server" +import { getCalendar, getTimeframe } from "~/lib/calendar" +import { handleActionError, handleLoaderError } from "~/lib/error" +import { useCalendarStore } from "~/store/calendar" +import { + addCultivation, + addField, + addSoilAnalysis, + getCultivationsFromCatalogue, + getFarm, + getFarms, + getFields, +} from "@svenvw/fdm-core" +import { centroid } from "@turf/centroid" +import { useState } from "react" +import { + GeolocateControl, + Layer, + Map as MapGL, + NavigationControl, +} from "react-map-gl" +import { + type ActionFunctionArgs, + type LoaderFunctionArgs, + type MetaFunction, + data, + useLoaderData, +} from "react-router" +import { dataWithError, redirectWithSuccess } from "remix-toast" +import { ClientOnly } from "remix-utils/client-only" +import { fdm } from "~/lib/fdm.server" +import FieldDetailsDialog from "~/components/custom/field/form" +import { FarmHeader } from "~/components/custom/farm/farm-header" +import type { Feature, FeatureCollection, Polygon } from "geojson" +import { extractFormValuesFromRequest } from "~/lib/form" +import { FormSchema } from "~/components/custom/field/schema" +import { getNmiApiKey, getSoilParameterEstimates } from "~/integrations/nmi" + +// Meta +export const meta: MetaFunction = () => { + return [ + { title: "FDM App" }, + { name: "description", content: "Welcome to FDM!" }, + ] +} + +/** + * Retrieves farm details and map configurations for rendering the farm map. + * + * This loader function extracts the farm ID from route parameters, validates its presence, and uses the current session to fetch the corresponding farm details. It then retrieves the Mapbox token and style configuration, and returns these along with the farm's display name and a URL for available fields. Any errors encountered during processing are transformed using {@link handleLoaderError}. + * + * @throws {Response} When the farm ID is missing, the specified farm is not found, or another error occurs during data retrieval. + * + * @returns An object containing the farm name, Mapbox token, Mapbox style, and the URL for available fields. + */ +export async function loader({ request, params }: LoaderFunctionArgs) { + try { + // Get the Id and name of the farm + const b_id_farm = params.b_id_farm + if (!b_id_farm) { + throw data("Farm ID is required", { + status: 400, + statusText: "Farm ID is required", + }) + } + + // Get the session + const session = await getSession(request) + + // Get timeframe from calendar store + const timeframe = getTimeframe(params) + + // Get a list of possible farms of the user + const farms = await getFarms(fdm, session.principal_id) + const farmOptions = farms.map((farm) => { + if (!farm?.b_id_farm || !farm?.b_name_farm) { + throw new Error("Invalid farm data structure") + } + return { + b_id_farm: farm.b_id_farm, + b_name_farm: farm.b_name_farm, + } + }) + + const farm = await getFarm(fdm, session.principal_id, b_id_farm) + + if (!farm) { + throw data("Farm not found", { + status: 404, + statusText: "Farm not found", + }) + } + + // Get the fields of the farm + const fields = await getFields( + fdm, + session.principal_id, + b_id_farm, + timeframe, + ) + const features = fields.map((field) => { + const feature: Feature = { + type: "Feature" as const, + properties: { + b_id: field.b_id, + b_name: field.b_name, + b_area: Math.round(field.b_area * 10) / 10, + b_lu_name: field.b_lu_name, + b_id_source: field.b_id_source, + }, + geometry: field.b_geometry, + } + return feature + }) + + const featureCollection: FeatureCollection = { + type: "FeatureCollection", + features: features, + } + + // Get the available cultivations + let cultivationOptions = [] + const cultivationsCatalogue = await getCultivationsFromCatalogue( + fdm, + session.principal_id, + b_id_farm, + ) + cultivationOptions = cultivationsCatalogue + .filter( + (cultivation) => + cultivation?.b_lu_catalogue && cultivation?.b_lu_name, + ) + .map((cultivation) => ({ + value: cultivation.b_lu_catalogue, + label: `${cultivation.b_lu_name} (${cultivation.b_lu_catalogue.split("_")[1]})`, + })) + if (!cultivationOptions.length) { + throw dataWithError( + "No cultivations are available", + "Er zijn nog geen gewassen beschikbaar.", + ) + } + + // Create default field name + const fieldNameDefault = `Perceel ${fields.length + 1}` + + // Get the Mapbox token and style + const mapboxToken = getMapboxToken() + const mapboxStyle = getMapboxStyle() + + return { + farmOptions: farmOptions, + b_id_farm: b_id_farm, + b_name_farm: farm.b_name_farm, + featureCollection: featureCollection, + fieldNameDefault: fieldNameDefault, + cultivationOptions: cultivationOptions, + mapboxToken: mapboxToken, + mapboxStyle: mapboxStyle, + fieldsAvailableUrl: process.env.AVAILABLE_FIELDS_URL, + } + } catch (error) { + throw handleLoaderError(error) + } +} + +// Main +export default function Index() { + const loaderData = useLoaderData() + const calendar = useCalendarStore((state) => state.calendar) + + const fieldsSavedId = "fieldsSaved" + const fieldsSaved = loaderData.featureCollection + const fieldsSavedStyle = getFieldsStyle(fieldsSavedId) + let viewState = getViewState(null) + if (fieldsSaved.features.length > 0) { + viewState = getViewState(fieldsSaved) + } + + const fieldsAvailableId = "fieldsAvailable" + const fieldsAvailableStyle = getFieldsStyle(fieldsAvailableId) + + const [open, setOpen] = useState(false) + + const [selectedField, setSelectedField] = useState | null>( + null, + ) + + const handleSelectField = (feature: Feature) => { + setSelectedField(feature) + setOpen(true) + } + + return ( + + +
+
+
+
+

+ Nieuw perceel +

+

+ Zoom in en voeg een nieuw perceel toe +

+
+
+ +
+
+ + } + > + {() => ( + { + if (!evt.features) return + const polygonFeature = evt.features.find( + (f) => + f.source === fieldsAvailableId && + f.geometry?.type === "Polygon", + ) + if (polygonFeature) { + handleSelectField( + polygonFeature as Feature, + ) + } + }} + > + + + + + + + + + + + +
+ + +
+
+ )} +
+
+
+ {selectedField && ( + } + cultivationOptions={loaderData.cultivationOptions} + fieldNameDefault={loaderData.fieldNameDefault} + /> + )} +
+ ) +} + +export async function action({ request, params }: ActionFunctionArgs) { + // Get the farm id + console.log("Action!") + const b_id_farm = params.b_id_farm + if (!b_id_farm) { + throw data("Farm ID is required", { + status: 400, + statusText: "Farm ID is required", + }) + } + + try { + // Get the session + const session = await getSession(request) + + // Get the timeframe + const timeframe = getTimeframe(params) + const calendar = getCalendar(params) + + const nmiApiKey = getNmiApiKey() + + // Get form values + const formValues = await extractFormValuesFromRequest( + request, + FormSchema, + ) + + // Check if cultivation is available + let cultivationOptions = [] + const cultivationsCatalogue = await getCultivationsFromCatalogue( + fdm, + session.principal_id, + b_id_farm, + ) + cultivationOptions = cultivationsCatalogue + .filter( + (cultivation) => + cultivation?.b_lu_catalogue && cultivation?.b_lu_name, + ) + .map((cultivation) => { + return cultivation.b_lu_catalogue + }) + if (!cultivationOptions.includes(formValues.b_lu_catalogue)) { + return dataWithError( + `Cultivation ${formValues.b_lu_catalogue} is not available`, + "Gewas is onbekend. Kies een gewas uit de lijst", + ) + } + + const b_name = formValues.b_name + const b_id_source = formValues.b_id_source + const b_lu_catalogue = formValues.b_lu_catalogue + // Parse the geometry string twice to get the actual GeoJSON object + const b_geometry = JSON.parse( + JSON.parse(String(formValues.b_geometry)), + ) as Polygon + const currentYear = new Date().getFullYear() + const defaultDate = timeframe.start + ? timeframe.start + : `${currentYear}-01-01` + const b_start = defaultDate + const b_lu_start = defaultDate + const b_lu_end = undefined + const b_end = undefined + const b_acquiring_method = "unknown" + + const b_id = await addField( + fdm, + session.principal_id, + b_id_farm, + b_name, + b_id_source, + b_geometry, + b_start, + b_acquiring_method, + b_end, + ) + await addCultivation( + fdm, + session.principal_id, + b_lu_catalogue, + b_id, + b_lu_start, + b_lu_end, + ) + + if (nmiApiKey) { + const estimates = await getSoilParameterEstimates( + b_geometry, + nmiApiKey, + ) + + await addSoilAnalysis( + fdm, + session.principal_id, + undefined, + estimates.a_source, + b_id, + estimates.a_depth, + undefined, + { + a_p_al: estimates.a_p_al, + a_p_cc: estimates.a_p_cc, + a_som_loi: estimates.a_som_loi, + b_soiltype_agr: estimates.b_soiltype_agr, + b_gwl_class: estimates.b_gwl_class, + }, + ) + } + + return redirectWithSuccess( + `/farm/${b_id_farm}/${calendar}/field/${b_id}/fertilizer`, + { + message: `${b_name} is toegevoegd! 🎉`, + }, + ) + } catch (error) { + throw handleActionError(error) + } +} diff --git a/fdm-app/app/routes/farm.create.$b_id_farm.$calendar.atlas.tsx b/fdm-app/app/routes/farm.create.$b_id_farm.$calendar.atlas.tsx index e7a7bdd28..99337227a 100644 --- a/fdm-app/app/routes/farm.create.$b_id_farm.$calendar.atlas.tsx +++ b/fdm-app/app/routes/farm.create.$b_id_farm.$calendar.atlas.tsx @@ -1,3 +1,32 @@ +import { + getMapboxStyle, + getMapboxToken, +} from "@/components/custom/atlas/atlas-mapbox" +import { + FieldsPanelHover, + FieldsPanelSelection, + FieldsPanelZoom, +} from "@/components/custom/atlas/atlas-panels" +import { + FieldsSourceAvailable, + FieldsSourceSelected, +} from "@/components/custom/atlas/atlas-sources" +import { getFieldsStyle } from "@/components/custom/atlas/atlas-styles" +import { getViewState } from "@/components/custom/atlas/atlas-viewstate" +import { + Breadcrumb, + BreadcrumbItem, + BreadcrumbLink, + BreadcrumbList, + BreadcrumbSeparator, +} from "@/components/ui/breadcrumb" +import { Separator } from "@/components/ui/separator" +import { SidebarInset, SidebarTrigger } from "@/components/ui/sidebar" +import { Skeleton } from "@/components/ui/skeleton" +import { getSession } from "@/lib/auth.server" +import { getCalendar, getTimeframe } from "@/lib/calendar" +import { handleActionError, handleLoaderError } from "@/lib/error" +import { useCalendarStore } from "@/store/calendar" import { addCultivation, addField, diff --git a/fdm-app/package.json b/fdm-app/package.json index 08e359f39..d7a00e0fd 100644 --- a/fdm-app/package.json +++ b/fdm-app/package.json @@ -34,10 +34,10 @@ "@react-email/tailwind": "1.0.4", "@react-router/node": "^7.4.1", "@react-router/serve": "^7.4.1", - "@sentry/node": "^9.10.1", - "@sentry/profiling-node": "^9.10.1", - "@sentry/react": "^9.10.1", - "@sentry/vite-plugin": "^3.2.4", + "@sentry/node": "^9.11.0", + "@sentry/profiling-node": "^9.11.0", + "@sentry/react": "^9.11.0", + "@sentry/vite-plugin": "^3.3.1", "@svenvw/fdm-calculator": "workspace:^", "@svenvw/fdm-core": "workspace:^", "@tanstack/react-table": "^8.21.2", @@ -52,10 +52,10 @@ "isbot": "^5.1.25", "lodash.throttle": "^4.1.1", "lucide-react": "^0.479.0", - "mapbox-gl": "^3.10.0", + "mapbox-gl": "^3.11.0", "next-themes": "^0.4.6", "postgres": "^3.4.5", - "posthog-js": "^1.234.4", + "posthog-js": "^1.234.8", "posthog-node": "^4.11.1", "postmark": "^4.0.5", "react": "^18.3.1", @@ -67,7 +67,7 @@ "react-router": "^7.4.1", "react-router-dom": "^7.4.1", "remark-gfm": "^4.0.1", - "remix-hook-form": "6.1.3", + "remix-hook-form": "6.2.0", "remix-toast": "^2.0.0", "remix-utils": "^8.5.0", "sonner": "^1.7.4", @@ -89,7 +89,7 @@ "@types/mapbox-gl": "^3.4.1", "@types/mapbox__geojson-extent": "^1.0.3", "@types/react": "^18.3.20", - "@types/react-dom": "^18.3.5", + "@types/react-dom": "^18.3.6", "@types/validator": "^13.12.3", "autoprefixer": "^10.4.21", "postcss": "^8.5.3", diff --git a/fdm-core/src/soil.test.ts b/fdm-core/src/soil.test.ts index 0281d12c8..ac8952e2c 100644 --- a/fdm-core/src/soil.test.ts +++ b/fdm-core/src/soil.test.ts @@ -646,6 +646,128 @@ describe("Soil Analysis Functions", () => { const currentData = await getCurrentSoilData(fdm, principal_id, b_id) expect(currentData.length).toEqual(0) }) + + it("should retrieve soil analyses including those with null b_sampling_date and order correctly", async () => { + const a_date = new Date() + const a_source = "test source" + const b_depth = 10 + + // Add analyses with valid b_sampling_date + const b_sampling_date1 = new Date("2024-01-01T00:00:00Z") + await addSoilAnalysis( + fdm, + principal_id, + a_date, + a_source, + b_id, + b_depth, + b_sampling_date1, + ) + + const b_sampling_date2 = new Date("2024-01-05T00:00:00Z") + await addSoilAnalysis( + fdm, + principal_id, + a_date, + a_source, + b_id, + b_depth, + b_sampling_date2, + ) + + // Add an analysis with null b_sampling_date + await addSoilAnalysis( + fdm, + principal_id, + a_date, + a_source, + b_id, + b_depth, + null, + ) + + // Retrieve all analyses + const allAnalyses = await getSoilAnalyses(fdm, principal_id, b_id) + + expect(allAnalyses).toHaveLength(3) + + // Check that the analysis with null date comes last + expect(allAnalyses[0].b_sampling_date).toEqual(b_sampling_date2) + expect(allAnalyses[1].b_sampling_date).toEqual(b_sampling_date1) + expect(allAnalyses[2].b_sampling_date).toBeNull() + }) + + it("should retrieve soil analyses including those with null b_sampling_date and order correctly with timeframe", async () => { + const a_date = new Date() + const a_source = "test source" + const b_depth = 10 + + // Add analyses with valid b_sampling_date + const b_sampling_date1 = new Date("2024-01-01T00:00:00Z") + const properties1 = { a_som_loi: 5 } + await addSoilAnalysis( + fdm, + principal_id, + a_date, + a_source, + b_id, + b_depth, + b_sampling_date1, + properties1, + ) + + const b_sampling_date2 = new Date("2024-01-05T00:00:00Z") + const properties2 = { a_som_loi: 6 } + await addSoilAnalysis( + fdm, + principal_id, + a_date, + a_source, + b_id, + b_depth, + b_sampling_date2, + properties2, + ) + + // Add an analysis with null b_sampling_date + const properties3 = { a_som_loi: 7, a_p_al: 20 } + await addSoilAnalysis( + fdm, + principal_id, + a_date, + a_source, + b_id, + b_depth, + null, + properties3, + ) + + // Retrieve all analyses + const allAnalyses = await getSoilAnalyses(fdm, principal_id, b_id, { + start: new Date("2023-01-01"), + end: new Date("2025-01-01"), + }) + + expect(allAnalyses).toHaveLength(3) + + // Check that the analysis with null date comes last + expect(allAnalyses[0].b_sampling_date).toEqual(b_sampling_date2) + expect(allAnalyses[1].b_sampling_date).toEqual(b_sampling_date1) + expect(allAnalyses[2].b_sampling_date).toBeNull() + + const currentData = await getCurrentSoilData(fdm, principal_id, b_id, { + start: new Date("2023-01-01"), + end: new Date("2025-01-01"), + }) + + const somLoiData = currentData.find( + (item) => item.parameter === "a_som_loi", + ) + expect(somLoiData?.value).toEqual(properties2.a_som_loi) + + const palData = currentData.find((item) => item.parameter === "a_p_al") + expect(palData?.value).toEqual(properties3.a_p_al) + }) }) describe("getSoilParametersDescription", () => { diff --git a/fdm-core/src/soil.ts b/fdm-core/src/soil.ts index 6cdcde409..9dfe0f5c7 100644 --- a/fdm-core/src/soil.ts +++ b/fdm-core/src/soil.ts @@ -1,4 +1,4 @@ -import { type SQL, and, eq, gte, lte, sql } from "drizzle-orm" +import { type SQL, and, eq, gte, isNull, lte, or, sql } from "drizzle-orm" import { checkPermission } from "./authorization" import type { PrincipalId } from "./authorization.d" import * as schema from "./db/schema" @@ -262,18 +262,30 @@ export async function getSoilAnalyses( if (timeframe?.start && timeframe.end) { whereClause = and( eq(schema.soilSampling.b_id, b_id), - gte(schema.soilSampling.b_sampling_date, timeframe.start), - lte(schema.soilSampling.b_sampling_date, timeframe.end), + or( + gte(schema.soilSampling.b_sampling_date, timeframe.start), + isNull(schema.soilSampling.b_sampling_date), + ), + or( + lte(schema.soilSampling.b_sampling_date, timeframe.end), + isNull(schema.soilSampling.b_sampling_date), + ), ) } else if (timeframe?.start) { whereClause = and( eq(schema.soilSampling.b_id, b_id), - gte(schema.soilSampling.b_sampling_date, timeframe.start), + or( + gte(schema.soilSampling.b_sampling_date, timeframe.start), + isNull(schema.soilSampling.b_sampling_date), + ), ) } else if (timeframe?.end) { whereClause = and( eq(schema.soilSampling.b_id, b_id), - lte(schema.soilSampling.b_sampling_date, timeframe.end), + or( + lte(schema.soilSampling.b_sampling_date, timeframe.end), + isNull(schema.soilSampling.b_sampling_date), + ), ) } else { whereClause = eq(schema.soilSampling.b_id, b_id) @@ -349,7 +361,10 @@ export async function getCurrentSoilData( if (timeframe?.end) { whereClause = and( eq(schema.soilSampling.b_id, b_id), - lte(schema.soilSampling.b_sampling_date, timeframe.end), + or( + lte(schema.soilSampling.b_sampling_date, timeframe.end), + isNull(schema.soilSampling.b_sampling_date), + ), ) } else { whereClause = eq(schema.soilSampling.b_id, b_id) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fff2ebefa..729dbe4aa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -60,46 +60,46 @@ importers: version: 1.0.1 '@radix-ui/react-avatar': specifier: ^1.1.3 - version: 1.1.3(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.3(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-checkbox': specifier: ^1.1.4 - version: 1.1.4(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.4(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-collapsible': specifier: ^1.1.3 - version: 1.1.3(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.3(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-dialog': specifier: ^1.1.6 - version: 1.1.6(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.6(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-dropdown-menu': specifier: ^2.1.6 - version: 2.1.6(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.1.6(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-icons': specifier: ^1.3.2 version: 1.3.2(react@18.3.1) '@radix-ui/react-label': specifier: ^2.1.2 - version: 2.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-popover': specifier: ^1.1.6 - version: 1.1.6(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.6(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-select': specifier: ^2.1.6 - version: 2.1.6(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.1.6(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-separator': specifier: ^1.1.2 - version: 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-slot': specifier: ^1.1.2 version: 1.1.2(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-tabs': specifier: ^1.1.3 - version: 1.1.3(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.3(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-toast': specifier: ^1.2.6 - version: 1.2.6(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.2.6(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-tooltip': specifier: ^1.1.8 - version: 1.1.8(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.1.8(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@react-email/components': specifier: ^0.0.36 version: 0.0.36(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -113,17 +113,17 @@ importers: specifier: ^7.4.1 version: 7.4.1(react-router@7.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.7.3) '@sentry/node': - specifier: ^9.10.1 - version: 9.10.1 + specifier: ^9.11.0 + version: 9.11.0 '@sentry/profiling-node': - specifier: ^9.10.1 - version: 9.10.1 + specifier: ^9.11.0 + version: 9.11.0 '@sentry/react': - specifier: ^9.10.1 - version: 9.10.1(react@18.3.1) + specifier: ^9.11.0 + version: 9.11.0(react@18.3.1) '@sentry/vite-plugin': - specifier: ^3.2.4 - version: 3.2.4 + specifier: ^3.3.1 + version: 3.3.1 '@svenvw/fdm-calculator': specifier: workspace:^ version: link:../fdm-calculator @@ -147,7 +147,7 @@ importers: version: 2.1.1 cmdk: specifier: 1.0.4 - version: 1.0.4(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.0.4(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) date-fns: specifier: ^4.1.0 version: 4.1.0 @@ -167,8 +167,8 @@ importers: specifier: ^0.479.0 version: 0.479.0(react@18.3.1) mapbox-gl: - specifier: ^3.10.0 - version: 3.10.0 + specifier: ^3.11.0 + version: 3.11.0 next-themes: specifier: ^0.4.6 version: 0.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -176,8 +176,8 @@ importers: specifier: ^3.4.5 version: 3.4.5 posthog-js: - specifier: ^1.234.4 - version: 1.234.4 + specifier: ^1.234.8 + version: 1.234.8 posthog-node: specifier: ^4.11.1 version: 4.11.1 @@ -198,7 +198,7 @@ importers: version: 7.55.0(react@18.3.1) react-map-gl: specifier: ^7.1.9 - version: 7.1.9(mapbox-gl@3.10.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 7.1.9(mapbox-gl@3.11.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-markdown: specifier: ^10.1.0 version: 10.1.0(@types/react@18.3.20)(react@18.3.1) @@ -212,8 +212,8 @@ importers: specifier: ^4.0.1 version: 4.0.1 remix-hook-form: - specifier: 6.1.3 - version: 6.1.3(react-dom@18.3.1(react@18.3.1))(react-hook-form@7.55.0(react@18.3.1))(react-router@7.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) + specifier: 6.2.0 + version: 6.2.0(react-dom@18.3.1(react@18.3.1))(react-hook-form@7.55.0(react@18.3.1))(react-router@7.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) remix-toast: specifier: ^2.0.0 version: 2.0.0(react-router@7.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) @@ -234,7 +234,7 @@ importers: version: 13.15.0 vite-node: specifier: ^3.1.1 - version: 3.1.1(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1) + version: 3.1.1(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1) zod: specifier: ^3.24.2 version: 3.24.2 @@ -247,10 +247,10 @@ importers: version: 1.39.0 '@react-router/dev': specifier: ^7.4.1 - version: 7.4.1(@react-router/serve@7.4.1(react-router@7.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.7.3))(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(react-router@7.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.39.0)(typescript@5.7.3)(vite@6.2.5(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1))(yaml@2.7.1) + version: 7.4.1(@react-router/serve@7.4.1(react-router@7.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.7.3))(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(react-router@7.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.39.0)(typescript@5.7.3)(vite@6.2.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1))(yaml@2.7.1) '@react-router/fs-routes': specifier: ^7.4.1 - version: 7.4.1(@react-router/dev@7.4.1(@react-router/serve@7.4.1(react-router@7.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.7.3))(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(react-router@7.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.39.0)(typescript@5.7.3)(vite@6.2.5(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1))(yaml@2.7.1))(typescript@5.7.3) + version: 7.4.1(@react-router/dev@7.4.1(@react-router/serve@7.4.1(react-router@7.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.7.3))(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(react-router@7.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.39.0)(typescript@5.7.3)(vite@6.2.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1))(yaml@2.7.1))(typescript@5.7.3) '@types/geojson': specifier: ^7946.0.16 version: 7946.0.16 @@ -267,8 +267,8 @@ importers: specifier: ^18.3.20 version: 18.3.20 '@types/react-dom': - specifier: ^18.3.5 - version: 18.3.5(@types/react@18.3.20) + specifier: ^18.3.6 + version: 18.3.6(@types/react@18.3.20) '@types/validator': specifier: ^13.12.3 version: 13.12.3 @@ -286,10 +286,10 @@ importers: version: 5.7.3 vite: specifier: 'catalog:' - version: 6.2.5(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1) + version: 6.2.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1) vite-tsconfig-paths: specifier: 'catalog:' - version: 5.1.4(typescript@5.7.3)(vite@6.2.5(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1)) + version: 5.1.4(typescript@5.7.3)(vite@6.2.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1)) fdm-calculator: dependencies: @@ -314,7 +314,7 @@ importers: version: 12.1.2(rollup@4.38.0)(tslib@2.8.1)(typescript@5.7.3) '@vitest/coverage-v8': specifier: 'catalog:' - version: 3.1.1(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1)) + version: 3.1.1(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1)) postgres: specifier: ^3.4.5 version: 3.4.5 @@ -329,7 +329,7 @@ importers: version: 5.7.3 vitest: specifier: 'catalog:' - version: 3.1.1(@types/debug@4.1.12)(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1) + version: 3.1.1(@types/debug@4.1.12)(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1) fdm-core: dependencies: @@ -430,7 +430,7 @@ importers: version: 12.1.2(rollup@4.38.0)(tslib@2.8.1)(typescript@5.7.3) '@vitest/coverage-v8': specifier: 'catalog:' - version: 3.1.1(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1)) + version: 3.1.1(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1)) rollup: specifier: ^4.38.0 version: 4.38.0 @@ -442,7 +442,7 @@ importers: version: 5.7.3 vitest: specifier: 'catalog:' - version: 3.1.1(@types/debug@4.1.12)(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1) + version: 3.1.1(@types/debug@4.1.12)(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1) fdm-docs: dependencies: @@ -3418,36 +3418,36 @@ packages: '@selderee/plugin-htmlparser2@0.11.0': resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} - '@sentry-internal/browser-utils@9.10.1': - resolution: {integrity: sha512-O/ibpHbKfpG+xtZuEzbLNtLcbanRcDYGxT+QbslVItmcS9GjMSwvMpp1jnD9Y7/LIFtv7O1gJZ9Hrz///lLprw==} + '@sentry-internal/browser-utils@9.11.0': + resolution: {integrity: sha512-XS71kRf7lw5St/Jc9G2Viy1cKgqGoPHqUAykXEtFt38JVXdf1TY/dSbKv/PAgNqMvC1xvdTsN0HF/81o7DNUEA==} engines: {node: '>=18'} - '@sentry-internal/feedback@9.10.1': - resolution: {integrity: sha512-DM32eAzRvXk36iGBWtlLZA88QzOFBODd+kbz55X4Py+1bDNdRc3Vl6214uuAr7iweHcOQy1rIvmAeO8Xusp7tQ==} + '@sentry-internal/feedback@9.11.0': + resolution: {integrity: sha512-50KiRmrF1Ldr+KoRawqcCYVk7TAVP8K/I81Jk9YWwlp1+Pu1ArpYDmTNCLXTgoyiyO38aHefKGZJX6AKFuSsUQ==} engines: {node: '>=18'} '@sentry-internal/node-cpu-profiler@2.1.0': resolution: {integrity: sha512-/gPj8ARZ8Jw8gCQWToCiUyLoOxBDP8wuFNx07mAXegYiDa4NcIvo37ZzDWaTG+wjwa/LvCpHxHff6pejt4KOKg==} engines: {node: '>=18'} - '@sentry-internal/replay-canvas@9.10.1': - resolution: {integrity: sha512-fxrpqElqdsAQrzVly0V/XaljhAlwwMk+iGyf+wZeK6RwEPVxtoxXVfx7fEEtPn+gortqQR09N/zH179hefjuaw==} + '@sentry-internal/replay-canvas@9.11.0': + resolution: {integrity: sha512-ZcRg8TWfF0ucjK2i+4TY/blRNJ7YKrgMpx19pFj6eCOJ1K8geSkAFPIfDHcQEwIU1ZTN+HiCwx0JvTI9YZxjfg==} engines: {node: '>=18'} - '@sentry-internal/replay@9.10.1': - resolution: {integrity: sha512-nqG33NwojtteL8e3Qg/SOu0BsTJ9R7AjpmQIlOpFGL007nzKgcJHOngewd7FEHyB+F3iOI0MoI9iEWhRFEGRLw==} + '@sentry-internal/replay@9.11.0': + resolution: {integrity: sha512-0k24h58O/2VQw1dwT/zQiWvUzLNQxpxbrVN/MYPT7czSEhI+1bX8fxMHXZORl2JqhetImMXzxH3XkuHQPEqQMg==} engines: {node: '>=18'} - '@sentry/babel-plugin-component-annotate@3.2.4': - resolution: {integrity: sha512-yBzRn3GEUSv1RPtE4xB4LnuH74ZxtdoRJ5cmQ9i6mzlmGDxlrnKuvem5++AolZTE9oJqAD3Tx2rd1PqmpWnLoA==} + '@sentry/babel-plugin-component-annotate@3.3.1': + resolution: {integrity: sha512-5GOxGT7lZN+I8A7Vp0rWY+726FDKEw8HnFiebe51rQrMbfGfCu2Aw9uSM0nT9OG6xhV6WvGccIcCszTPs4fUZQ==} engines: {node: '>= 14'} - '@sentry/browser@9.10.1': - resolution: {integrity: sha512-9RWjcyskhnDK2Q6LntFR90EqZD5+DXcXNqeTlE+mpVf65y7wz+9SIuVjAMP7qiDBwfxNbmTxiVCXeCuQnnATsQ==} + '@sentry/browser@9.11.0': + resolution: {integrity: sha512-DSDj8wQJoiLqqOcntl+7phjd8l8KN9A0vaV7mZNHWbrHU3MVwXqTyLyERRLC6wi0t7F5kqczqa3xLmKjK/fMZg==} engines: {node: '>=18'} - '@sentry/bundler-plugin-core@3.2.4': - resolution: {integrity: sha512-YMj9XW5W2JA89EeweE7CPKLDz245LBsI1JhCmqpt/bjSvmsSIAAPsLYnvIJBS3LQFm0OhtG8NB54PTi96dAcMA==} + '@sentry/bundler-plugin-core@3.3.1': + resolution: {integrity: sha512-Dd6xaWb293j9otEJ1yJqG2Ra6zB49OPzMNdIkdP8wdY+S9UFQE5PyKTyredmPY7hqCc005OrUQZolIIo9Zl13A==} engines: {node: '>= 14'} '@sentry/cli-darwin@2.42.2': @@ -3496,16 +3496,16 @@ packages: engines: {node: '>= 10'} hasBin: true - '@sentry/core@9.10.1': - resolution: {integrity: sha512-TE2zZV3Od4131mZNgFo2Mv4aKU8FXxL0s96yqRvmV+8AU57mJoycMXBnmNSYfWuDICbPJTVAp+3bYMXwX7N5YA==} + '@sentry/core@9.11.0': + resolution: {integrity: sha512-qfb4ahGZubbrNh1MnbEqyHFp87rIwQIZapyQLCaYpudXrP1biEpLOV3mMDvDJWCdX460hoOwQ3SkwipV3We/7w==} engines: {node: '>=18'} - '@sentry/node@9.10.1': - resolution: {integrity: sha512-salNc4R0GiZZNNScNpdAB3OI3kz+clmgXL1rl5O2Kh1IW5vftf5I69n+qqZLJ3kaUp0Sm6V+deCHyUOnw9GozA==} + '@sentry/node@9.11.0': + resolution: {integrity: sha512-luDsNDHsHkoXbL2Rf1cEKijh6hBfjzGQe09iP6kdZr+HB0bO+qoLe+nZLzSIQTWgWSt2XYNQyiLAsaMlbJZhJg==} engines: {node: '>=18'} - '@sentry/opentelemetry@9.10.1': - resolution: {integrity: sha512-qqcsbIyoOPI91Tm6w0oFzsx/mlu+lywRGSVbPRFhk4zCXBOhCCp4Mg7nwKK0wGJ7AZRl6qtELrRSGClAthC55g==} + '@sentry/opentelemetry@9.11.0': + resolution: {integrity: sha512-B6RumUFGb1+Q4MymY7IZbdl1Ayz2srqf46itFr1ohE/IpwY7OWKMntop8fxyccUW3ptmPp9cPkBJOaa9UdJhSg==} engines: {node: '>=18'} peerDependencies: '@opentelemetry/api': ^1.9.0 @@ -3515,19 +3515,19 @@ packages: '@opentelemetry/sdk-trace-base': ^1.30.1 '@opentelemetry/semantic-conventions': ^1.28.0 - '@sentry/profiling-node@9.10.1': - resolution: {integrity: sha512-m4FzYscOYuaS6eCpIf2TdLiltFMmA25zvGprQXGAbJAnnkbHjHOf0r2j4YtiKhGwgloscRhDtirOyCG2pXf3pA==} + '@sentry/profiling-node@9.11.0': + resolution: {integrity: sha512-4bHN5LLEAMxPZZLThLn5tG6pHi6DICJiTwRFnO+xszzua/yS2WVw7F1z+782Jzo8D2humZ4iCcy1GA9prm4z2A==} engines: {node: '>=18'} hasBin: true - '@sentry/react@9.10.1': - resolution: {integrity: sha512-DYBs3F+F2elWEhWvp3HmBmORhAlTBbY0KsRj+Lt2mOSEfiz8WWrS3Ibe+9QmErVdjQZy68ic9Yt84MHL/rlmkQ==} + '@sentry/react@9.11.0': + resolution: {integrity: sha512-sH/3KnDsLxBFRoxPyIpab7OewkfStdZQQwgpfv8R0yDKpGg4lU7KdTccryFvWL123UpHC7ydPWjdcfC8YV/EPQ==} engines: {node: '>=18'} peerDependencies: react: ^16.14.0 || 17.x || 18.x || 19.x - '@sentry/vite-plugin@3.2.4': - resolution: {integrity: sha512-ZRn5TLlq5xtwKOqaWP+XqS1PYVfbBCgsbMk7wW2Ly6EgF9wYePvtLqKgYnE3hwPg2LpBnRPR2ti1ohlUkR+wXA==} + '@sentry/vite-plugin@3.3.1': + resolution: {integrity: sha512-eIIIHqVOTO0m7+3aTg//gVi11XNpKi4G0xA45hjz46UmRiToVfqgBH7Dsn1qRrDxa7YPYCdREQkyGEINlElT2A==} engines: {node: '>= 14'} '@shikijs/core@1.29.2': @@ -3955,6 +3955,9 @@ packages: '@types/node@22.13.16': resolution: {integrity: sha512-15tM+qA4Ypml/N7kyRdvfRjBQT2RL461uF1Bldn06K0Nzn1lY3nAPgHlsVrJxdZ9WhZiW0Fmc1lOYMtDsAuB3w==} + '@types/node@22.14.0': + resolution: {integrity: sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==} + '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -3982,8 +3985,8 @@ packages: '@types/rbush@4.0.0': resolution: {integrity: sha512-+N+2H39P8X+Hy1I5mC6awlTX54k3FhiUmvt7HWzGJZvF+syUAAxP/stwppS8JE84YHqFgRMv6fCy31202CMFxQ==} - '@types/react-dom@18.3.5': - resolution: {integrity: sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==} + '@types/react-dom@18.3.6': + resolution: {integrity: sha512-nf22//wEbKXusP6E9pfOCDwFdHAX4u172eaJI4YkDRQEZiorm6KfYnSC2SWLDMVWUOWPERmJnN0ujeAfTBLvrw==} peerDependencies: '@types/react': ^18.0.0 @@ -4476,8 +4479,8 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001707: - resolution: {integrity: sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==} + caniuse-lite@1.0.30001710: + resolution: {integrity: sha512-B5C0I0UmaGqHgo5FuqJ7hBd4L57A4dDD+Xi+XX1nXOoxGeDdY4Ko38qJYOyqznBVJEqON5p8P1x5zRR3+rsnxA==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -5155,8 +5158,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.129: - resolution: {integrity: sha512-JlXUemX4s0+9f8mLqib/bHH8gOHf5elKS6KeWG3sk3xozb/JTq/RLXIv8OKUWiK4Ah00Wm88EFj5PYkFr4RUPA==} + electron-to-chromium@1.5.132: + resolution: {integrity: sha512-QgX9EBvWGmvSRa74zqfnG7+Eno0Ak0vftBll0Pt2/z5b3bEGYL6OUXLgKPtvx73dn3dvwrlyVkjPKRRlhLYTEg==} emoji-regex-xs@1.0.0: resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} @@ -6516,8 +6519,8 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} - mapbox-gl@3.10.0: - resolution: {integrity: sha512-YnQxjlthuv/tidcxGYU2C8nRDVXMlAHa3qFhuOJeX4AfRP72OMRBf9ApL+M+k5VWcAXi2fcNOUVgphknjLumjA==} + mapbox-gl@3.11.0: + resolution: {integrity: sha512-0bJoYMgwn/z0RSJH7j/kYq3xlTX8Vt4dBkWAKJFneB49PAiq+rAAZRAeUhMxCr8PoGLRaDBagF3fTsA/WK6Q4A==} markdown-extensions@2.0.0: resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} @@ -7687,8 +7690,8 @@ packages: resolution: {integrity: sha512-cDWgoah1Gez9rN3H4165peY9qfpEo+SA61oQv65O3cRUE1pOEoJWwddwcqKE8XZYjbblOJlYDlLV4h67HrEVDg==} engines: {node: '>=12'} - posthog-js@1.234.4: - resolution: {integrity: sha512-IH7ISmm7SP+GYeCJ+RjlBnA9AtmbT6W/mZUW/ca/erHNb1EE1K3//IzDGyGYs7dT26b/HH9Z9kdO51h7PVSi6w==} + posthog-js@1.234.8: + resolution: {integrity: sha512-25E1HMPeyqtb+YumT6JeL6ppfoDyh9d1LLEgnFQVotyjn1SpvjrRpqscPyQjAtyFkq+upDyHksFAvZmdHPd7wg==} peerDependencies: '@rrweb/types': 2.0.0-alpha.17 rrweb-snapshot: 2.0.0-alpha.17 @@ -8116,18 +8119,18 @@ packages: remark-parse@11.0.0: resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} - remark-rehype@11.1.1: - resolution: {integrity: sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==} + remark-rehype@11.1.2: + resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} remark-stringify@11.0.0: resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} - remix-hook-form@6.1.3: - resolution: {integrity: sha512-lpEWqdehtF0ok0D8varghH64mm/GFgbilPCMtQz/J1RVu+J/BPgYZgb44yhIYGI09HfNDADSXBTIvX4WLwJmwQ==} + remix-hook-form@6.2.0: + resolution: {integrity: sha512-Rn1PLMnt4DMdmiJQfSuDvmRCnF6+CDBMvDOTdefjzZ5ZZlXnYSZvoXJLWVWbawIOnsT1/AyBgxcV7U0XKqQlng==} peerDependencies: react: ^18.2.0 || ^19.0.0 react-dom: ^18.2.0 || ^19.0.0 - react-hook-form: ^7.51.0 + react-hook-form: ^7.55.0 react-router: '>=7.0.0' remix-toast@2.0.0: @@ -8854,8 +8857,8 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} - type-fest@4.38.0: - resolution: {integrity: sha512-2dBz5D5ycHIoliLYLi0Q2V7KRaDlH0uWIvmk7TYlAg5slqwiPv1ezJdZm1QEM0xgk29oYWMCbIG7E6gHpvChlg==} + type-fest@4.39.1: + resolution: {integrity: sha512-uW9qzd66uyHYxwyVBYiwS4Oi0qZyUqwjU+Oevr6ZogYiXt99EOYtwvzMSLw1c3lYo2HzJsep/NB23iEVEgjG/w==} engines: {node: '>=16'} type-is@1.6.18: @@ -8926,6 +8929,9 @@ packages: undici-types@6.20.0: resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + undici@6.21.2: resolution: {integrity: sha512-uROZWze0R0itiAKVPsYhFov9LxrPMHLMEQFszeI2gCN6bnIIZ8twzBCJcN2LJrBBLfrP0t1FW0g+JmKVl8Vk1g==} engines: {node: '>=18.17'} @@ -9121,46 +9127,6 @@ packages: vite: optional: true - vite@6.2.4: - resolution: {integrity: sha512-veHMSew8CcRzhL5o8ONjy8gkfmFJAd5Ac16oxBUjlwgX3Gq2Wqr+qNC3TjPIpy7TPV/KporLga5GT9HqdrCizw==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - jiti: '>=1.21.0' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - vite@6.2.5: resolution: {integrity: sha512-j023J/hCAa4pRIUH6J9HemwYfjB5llR2Ps0CWeikOtdR8+pAURAk0DoJC5/mm9kd+UgdnIy7d6HE4EAvlYhPhA==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -11422,7 +11388,7 @@ snapshots: '@docusaurus/utils': 3.7.0(@swc/core@1.11.15)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/utils-common': 3.7.0(@swc/core@1.11.15)(acorn@8.14.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/history': 4.7.11 - '@types/react': 19.0.12 + '@types/react': 18.3.20 '@types/react-router-config': 5.0.11 clsx: 2.1.1 parse-numeric-range: 1.3.0 @@ -11866,7 +11832,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.13.16 + '@types/node': 22.14.0 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -11972,7 +11938,7 @@ snapshots: rehype-recma: 1.0.0 remark-mdx: 3.1.0 remark-parse: 11.0.0 - remark-rehype: 11.1.1 + remark-rehype: 11.1.2 source-map: 0.7.4 unified: 11.0.5 unist-util-position-from-estree: 2.0.0 @@ -12377,34 +12343,34 @@ snapshots: '@radix-ui/primitive@1.1.1': {} - '@radix-ui/react-arrow@1.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-arrow@1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.20 - '@types/react-dom': 18.3.5(@types/react@18.3.20) + '@types/react-dom': 18.3.6(@types/react@18.3.20) - '@radix-ui/react-avatar@1.1.3(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-avatar@1.1.3(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/react-context': 1.1.1(@types/react@18.3.20)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.20)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.20 - '@types/react-dom': 18.3.5(@types/react@18.3.20) + '@types/react-dom': 18.3.6(@types/react@18.3.20) - '@radix-ui/react-checkbox@1.1.4(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-checkbox@1.1.4(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.1 '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-context': 1.1.1(@types/react@18.3.20)(react@18.3.1) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.20)(react@18.3.1) @@ -12412,35 +12378,35 @@ snapshots: react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.20 - '@types/react-dom': 18.3.5(@types/react@18.3.20) + '@types/react-dom': 18.3.6(@types/react@18.3.20) - '@radix-ui/react-collapsible@1.1.3(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-collapsible@1.1.3(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.1 '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-context': 1.1.1(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-id': 1.1.0(@types/react@18.3.20)(react@18.3.1) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.20)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.20 - '@types/react-dom': 18.3.5(@types/react@18.3.20) + '@types/react-dom': 18.3.6(@types/react@18.3.20) - '@radix-ui/react-collection@1.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-collection@1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-context': 1.1.1(@types/react@18.3.20)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-slot': 1.1.2(@types/react@18.3.20)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.20 - '@types/react-dom': 18.3.5(@types/react@18.3.20) + '@types/react-dom': 18.3.6(@types/react@18.3.20) '@radix-ui/react-compose-refs@1.1.1(@types/react@18.3.20)(react@18.3.1)': dependencies: @@ -12454,18 +12420,18 @@ snapshots: optionalDependencies: '@types/react': 18.3.20 - '@radix-ui/react-dialog@1.1.6(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-dialog@1.1.6(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.1 '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-context': 1.1.1(@types/react@18.3.20)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.5(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.5(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.20)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-id': 1.1.0(@types/react@18.3.20)(react@18.3.1) - '@radix-ui/react-portal': 1.1.4(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.4(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-slot': 1.1.2(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.20)(react@18.3.1) aria-hidden: 1.2.4 @@ -12474,7 +12440,7 @@ snapshots: react-remove-scroll: 2.6.3(@types/react@18.3.20)(react@18.3.1) optionalDependencies: '@types/react': 18.3.20 - '@types/react-dom': 18.3.5(@types/react@18.3.20) + '@types/react-dom': 18.3.6(@types/react@18.3.20) '@radix-ui/react-direction@1.1.0(@types/react@18.3.20)(react@18.3.1)': dependencies: @@ -12482,33 +12448,33 @@ snapshots: optionalDependencies: '@types/react': 18.3.20 - '@radix-ui/react-dismissable-layer@1.1.5(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-dismissable-layer@1.1.5(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.1 '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.20)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.20)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.20 - '@types/react-dom': 18.3.5(@types/react@18.3.20) + '@types/react-dom': 18.3.6(@types/react@18.3.20) - '@radix-ui/react-dropdown-menu@2.1.6(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-dropdown-menu@2.1.6(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.1 '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-context': 1.1.1(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-id': 1.1.0(@types/react@18.3.20)(react@18.3.1) - '@radix-ui/react-menu': 2.1.6(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-menu': 2.1.6(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.20)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.20 - '@types/react-dom': 18.3.5(@types/react@18.3.20) + '@types/react-dom': 18.3.6(@types/react@18.3.20) '@radix-ui/react-focus-guards@1.1.1(@types/react@18.3.20)(react@18.3.1)': dependencies: @@ -12516,16 +12482,16 @@ snapshots: optionalDependencies: '@types/react': 18.3.20 - '@radix-ui/react-focus-scope@1.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-focus-scope@1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.20)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.20)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.20 - '@types/react-dom': 18.3.5(@types/react@18.3.20) + '@types/react-dom': 18.3.6(@types/react@18.3.20) '@radix-ui/react-icons@1.3.2(react@18.3.1)': dependencies: @@ -12538,31 +12504,31 @@ snapshots: optionalDependencies: '@types/react': 18.3.20 - '@radix-ui/react-label@2.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-label@2.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.20 - '@types/react-dom': 18.3.5(@types/react@18.3.20) + '@types/react-dom': 18.3.6(@types/react@18.3.20) - '@radix-ui/react-menu@2.1.6(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-menu@2.1.6(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-collection': 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-collection': 1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-context': 1.1.1(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-direction': 1.1.0(@types/react@18.3.20)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.5(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.5(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.20)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-id': 1.1.0(@types/react@18.3.20)(react@18.3.1) - '@radix-ui/react-popper': 1.2.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.4(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-popper': 1.2.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.4(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-slot': 1.1.2(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.20)(react@18.3.1) aria-hidden: 1.2.4 @@ -12571,21 +12537,21 @@ snapshots: react-remove-scroll: 2.6.3(@types/react@18.3.20)(react@18.3.1) optionalDependencies: '@types/react': 18.3.20 - '@types/react-dom': 18.3.5(@types/react@18.3.20) + '@types/react-dom': 18.3.6(@types/react@18.3.20) - '@radix-ui/react-popover@1.1.6(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-popover@1.1.6(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.1 '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-context': 1.1.1(@types/react@18.3.20)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.5(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.5(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.20)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-id': 1.1.0(@types/react@18.3.20)(react@18.3.1) - '@radix-ui/react-popper': 1.2.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.4(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-popper': 1.2.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.4(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-slot': 1.1.2(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.20)(react@18.3.1) aria-hidden: 1.2.4 @@ -12594,15 +12560,15 @@ snapshots: react-remove-scroll: 2.6.3(@types/react@18.3.20)(react@18.3.1) optionalDependencies: '@types/react': 18.3.20 - '@types/react-dom': 18.3.5(@types/react@18.3.20) + '@types/react-dom': 18.3.6(@types/react@18.3.20) - '@radix-ui/react-popper@1.2.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-popper@1.2.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-arrow': 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-arrow': 1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-context': 1.1.1(@types/react@18.3.20)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-use-rect': 1.1.0(@types/react@18.3.20)(react@18.3.1) @@ -12612,19 +12578,19 @@ snapshots: react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.20 - '@types/react-dom': 18.3.5(@types/react@18.3.20) + '@types/react-dom': 18.3.6(@types/react@18.3.20) - '@radix-ui/react-portal@1.1.4(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-portal@1.1.4(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.20)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.20 - '@types/react-dom': 18.3.5(@types/react@18.3.20) + '@types/react-dom': 18.3.6(@types/react@18.3.20) - '@radix-ui/react-presence@1.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-presence@1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.20)(react@18.3.1) @@ -12632,71 +12598,71 @@ snapshots: react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.20 - '@types/react-dom': 18.3.5(@types/react@18.3.20) + '@types/react-dom': 18.3.6(@types/react@18.3.20) - '@radix-ui/react-primitive@2.0.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-primitive@2.0.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/react-slot': 1.1.2(@types/react@18.3.20)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.20 - '@types/react-dom': 18.3.5(@types/react@18.3.20) + '@types/react-dom': 18.3.6(@types/react@18.3.20) - '@radix-ui/react-roving-focus@1.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-roving-focus@1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-collection': 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-collection': 1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-context': 1.1.1(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-direction': 1.1.0(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-id': 1.1.0(@types/react@18.3.20)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.20)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.20 - '@types/react-dom': 18.3.5(@types/react@18.3.20) + '@types/react-dom': 18.3.6(@types/react@18.3.20) - '@radix-ui/react-select@2.1.6(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-select@2.1.6(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/number': 1.1.0 '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-collection': 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-collection': 1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-context': 1.1.1(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-direction': 1.1.0(@types/react@18.3.20)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.5(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.5(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-focus-guards': 1.1.1(@types/react@18.3.20)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-id': 1.1.0(@types/react@18.3.20)(react@18.3.1) - '@radix-ui/react-popper': 1.2.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.4(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-popper': 1.2.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.4(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-slot': 1.1.2(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.20)(react@18.3.1) - '@radix-ui/react-visually-hidden': 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) aria-hidden: 1.2.4 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-remove-scroll: 2.6.3(@types/react@18.3.20)(react@18.3.1) optionalDependencies: '@types/react': 18.3.20 - '@types/react-dom': 18.3.5(@types/react@18.3.20) + '@types/react-dom': 18.3.6(@types/react@18.3.20) - '@radix-ui/react-separator@1.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-separator@1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.20 - '@types/react-dom': 18.3.5(@types/react@18.3.20) + '@types/react-dom': 18.3.6(@types/react@18.3.20) '@radix-ui/react-slot@1.1.2(@types/react@18.3.20)(react@18.3.1)': dependencies: @@ -12705,61 +12671,61 @@ snapshots: optionalDependencies: '@types/react': 18.3.20 - '@radix-ui/react-tabs@1.1.3(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-tabs@1.1.3(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.1 '@radix-ui/react-context': 1.1.1(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-direction': 1.1.0(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-id': 1.1.0(@types/react@18.3.20)(react@18.3.1) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-roving-focus': 1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.20)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.20 - '@types/react-dom': 18.3.5(@types/react@18.3.20) + '@types/react-dom': 18.3.6(@types/react@18.3.20) - '@radix-ui/react-toast@1.2.6(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-toast@1.2.6(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-collection': 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-collection': 1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-context': 1.1.1(@types/react@18.3.20)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.5(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.4(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.5(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.4(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.20)(react@18.3.1) - '@radix-ui/react-visually-hidden': 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.20 - '@types/react-dom': 18.3.5(@types/react@18.3.20) + '@types/react-dom': 18.3.6(@types/react@18.3.20) - '@radix-ui/react-tooltip@1.1.8(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-tooltip@1.1.8(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.1 '@radix-ui/react-compose-refs': 1.1.1(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-context': 1.1.1(@types/react@18.3.20)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.5(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.5(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-id': 1.1.0(@types/react@18.3.20)(react@18.3.1) - '@radix-ui/react-popper': 1.2.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.4(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-popper': 1.2.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-portal': 1.1.4(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-slot': 1.1.2(@types/react@18.3.20)(react@18.3.1) '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.20)(react@18.3.1) - '@radix-ui/react-visually-hidden': 1.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-visually-hidden': 1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.20 - '@types/react-dom': 18.3.5(@types/react@18.3.20) + '@types/react-dom': 18.3.6(@types/react@18.3.20) '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.20)(react@18.3.1)': dependencies: @@ -12807,14 +12773,14 @@ snapshots: optionalDependencies: '@types/react': 18.3.20 - '@radix-ui/react-visually-hidden@1.1.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-visually-hidden@1.1.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.20 - '@types/react-dom': 18.3.5(@types/react@18.3.20) + '@types/react-dom': 18.3.6(@types/react@18.3.20) '@radix-ui/rect@1.1.0': {} @@ -12930,7 +12896,7 @@ snapshots: dependencies: react: 18.3.1 - '@react-router/dev@7.4.1(@react-router/serve@7.4.1(react-router@7.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.7.3))(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(react-router@7.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.39.0)(typescript@5.7.3)(vite@6.2.5(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1))(yaml@2.7.1)': + '@react-router/dev@7.4.1(@react-router/serve@7.4.1(react-router@7.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.7.3))(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(react-router@7.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.39.0)(typescript@5.7.3)(vite@6.2.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1))(yaml@2.7.1)': dependencies: '@babel/core': 7.26.10 '@babel/generator': 7.27.0 @@ -12959,8 +12925,8 @@ snapshots: semver: 7.7.1 set-cookie-parser: 2.7.1 valibot: 0.41.0(typescript@5.7.3) - vite: 6.2.5(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1) - vite-node: 3.0.0-beta.2(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1) + vite: 6.2.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1) + vite-node: 3.0.0-beta.2(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1) optionalDependencies: '@react-router/serve': 7.4.1(react-router@7.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.7.3) typescript: 5.7.3 @@ -12988,9 +12954,9 @@ snapshots: optionalDependencies: typescript: 5.7.3 - '@react-router/fs-routes@7.4.1(@react-router/dev@7.4.1(@react-router/serve@7.4.1(react-router@7.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.7.3))(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(react-router@7.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.39.0)(typescript@5.7.3)(vite@6.2.5(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1))(yaml@2.7.1))(typescript@5.7.3)': + '@react-router/fs-routes@7.4.1(@react-router/dev@7.4.1(@react-router/serve@7.4.1(react-router@7.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.7.3))(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(react-router@7.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.39.0)(typescript@5.7.3)(vite@6.2.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1))(yaml@2.7.1))(typescript@5.7.3)': dependencies: - '@react-router/dev': 7.4.1(@react-router/serve@7.4.1(react-router@7.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.7.3))(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(react-router@7.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.39.0)(typescript@5.7.3)(vite@6.2.5(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1))(yaml@2.7.1) + '@react-router/dev': 7.4.1(@react-router/serve@7.4.1(react-router@7.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.7.3))(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(react-router@7.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.39.0)(typescript@5.7.3)(vite@6.2.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1))(yaml@2.7.1) minimatch: 9.0.5 optionalDependencies: typescript: 5.7.3 @@ -13186,7 +13152,7 @@ snapshots: '@module-federation/runtime-tools': 0.8.4 '@rspack/binding': 1.2.0-alpha.0 '@rspack/lite-tapable': 1.0.1 - caniuse-lite: 1.0.30001707 + caniuse-lite: 1.0.30001710 '@rspack/lite-tapable@1.0.1': {} @@ -13195,43 +13161,43 @@ snapshots: domhandler: 5.0.3 selderee: 0.11.0 - '@sentry-internal/browser-utils@9.10.1': + '@sentry-internal/browser-utils@9.11.0': dependencies: - '@sentry/core': 9.10.1 + '@sentry/core': 9.11.0 - '@sentry-internal/feedback@9.10.1': + '@sentry-internal/feedback@9.11.0': dependencies: - '@sentry/core': 9.10.1 + '@sentry/core': 9.11.0 '@sentry-internal/node-cpu-profiler@2.1.0': dependencies: detect-libc: 2.0.3 node-abi: 3.74.0 - '@sentry-internal/replay-canvas@9.10.1': + '@sentry-internal/replay-canvas@9.11.0': dependencies: - '@sentry-internal/replay': 9.10.1 - '@sentry/core': 9.10.1 + '@sentry-internal/replay': 9.11.0 + '@sentry/core': 9.11.0 - '@sentry-internal/replay@9.10.1': + '@sentry-internal/replay@9.11.0': dependencies: - '@sentry-internal/browser-utils': 9.10.1 - '@sentry/core': 9.10.1 + '@sentry-internal/browser-utils': 9.11.0 + '@sentry/core': 9.11.0 - '@sentry/babel-plugin-component-annotate@3.2.4': {} + '@sentry/babel-plugin-component-annotate@3.3.1': {} - '@sentry/browser@9.10.1': + '@sentry/browser@9.11.0': dependencies: - '@sentry-internal/browser-utils': 9.10.1 - '@sentry-internal/feedback': 9.10.1 - '@sentry-internal/replay': 9.10.1 - '@sentry-internal/replay-canvas': 9.10.1 - '@sentry/core': 9.10.1 + '@sentry-internal/browser-utils': 9.11.0 + '@sentry-internal/feedback': 9.11.0 + '@sentry-internal/replay': 9.11.0 + '@sentry-internal/replay-canvas': 9.11.0 + '@sentry/core': 9.11.0 - '@sentry/bundler-plugin-core@3.2.4': + '@sentry/bundler-plugin-core@3.3.1': dependencies: '@babel/core': 7.26.10 - '@sentry/babel-plugin-component-annotate': 3.2.4 + '@sentry/babel-plugin-component-annotate': 3.3.1 '@sentry/cli': 2.42.2 dotenv: 16.4.7 find-up: 5.0.0 @@ -13282,9 +13248,9 @@ snapshots: - encoding - supports-color - '@sentry/core@9.10.1': {} + '@sentry/core@9.11.0': {} - '@sentry/node@9.10.1': + '@sentry/node@9.11.0': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/context-async-hooks': 1.30.1(@opentelemetry/api@1.9.0) @@ -13317,13 +13283,13 @@ snapshots: '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.30.0 '@prisma/instrumentation': 6.5.0(@opentelemetry/api@1.9.0) - '@sentry/core': 9.10.1 - '@sentry/opentelemetry': 9.10.1(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.30.0) + '@sentry/core': 9.11.0 + '@sentry/opentelemetry': 9.11.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.30.0) import-in-the-middle: 1.13.1 transitivePeerDependencies: - supports-color - '@sentry/opentelemetry@9.10.1(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.30.0)': + '@sentry/opentelemetry@9.11.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/core@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.57.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.30.0)': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/context-async-hooks': 1.30.1(@opentelemetry/api@1.9.0) @@ -13331,26 +13297,26 @@ snapshots: '@opentelemetry/instrumentation': 0.57.2(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.30.0 - '@sentry/core': 9.10.1 + '@sentry/core': 9.11.0 - '@sentry/profiling-node@9.10.1': + '@sentry/profiling-node@9.11.0': dependencies: '@sentry-internal/node-cpu-profiler': 2.1.0 - '@sentry/core': 9.10.1 - '@sentry/node': 9.10.1 + '@sentry/core': 9.11.0 + '@sentry/node': 9.11.0 transitivePeerDependencies: - supports-color - '@sentry/react@9.10.1(react@18.3.1)': + '@sentry/react@9.11.0(react@18.3.1)': dependencies: - '@sentry/browser': 9.10.1 - '@sentry/core': 9.10.1 + '@sentry/browser': 9.11.0 + '@sentry/core': 9.11.0 hoist-non-react-statics: 3.3.2 react: 18.3.1 - '@sentry/vite-plugin@3.2.4': + '@sentry/vite-plugin@3.3.1': dependencies: - '@sentry/bundler-plugin-core': 3.2.4 + '@sentry/bundler-plugin-core': 3.3.1 unplugin: 1.0.1 transitivePeerDependencies: - encoding @@ -13657,7 +13623,7 @@ snapshots: '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.13.16 + '@types/node': 22.14.0 '@types/bonjour@3.5.13': dependencies: @@ -13670,7 +13636,7 @@ snapshots: '@types/connect@3.4.38': dependencies: - '@types/node': 22.13.16 + '@types/node': 22.14.0 '@types/cookie@0.6.0': {} @@ -13696,7 +13662,7 @@ snapshots: '@types/express-serve-static-core@4.19.6': dependencies: - '@types/node': 22.13.16 + '@types/node': 22.14.0 '@types/qs': 6.9.18 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -13737,7 +13703,7 @@ snapshots: '@types/http-proxy@1.17.16': dependencies: - '@types/node': 22.13.16 + '@types/node': 22.14.0 '@types/istanbul-lib-coverage@2.0.6': {} @@ -13785,11 +13751,11 @@ snapshots: '@types/mysql@2.15.26': dependencies: - '@types/node': 22.13.16 + '@types/node': 22.14.0 '@types/node-forge@1.3.11': dependencies: - '@types/node': 22.13.16 + '@types/node': 22.14.0 '@types/node@12.20.55': {} @@ -13799,6 +13765,10 @@ snapshots: dependencies: undici-types: 6.20.0 + '@types/node@22.14.0': + dependencies: + undici-types: 6.21.0 + '@types/parse-json@4.0.2': {} '@types/pbf@3.0.5': {} @@ -13809,7 +13779,7 @@ snapshots: '@types/pg@8.6.1': dependencies: - '@types/node': 22.13.16 + '@types/node': 22.14.0 pg-protocol: 1.8.0 pg-types: 2.2.0 @@ -13824,7 +13794,7 @@ snapshots: '@types/rbush@4.0.0': optional: true - '@types/react-dom@18.3.5(@types/react@18.3.20)': + '@types/react-dom@18.3.6(@types/react@18.3.20)': dependencies: '@types/react': 18.3.20 @@ -13889,7 +13859,7 @@ snapshots: '@types/tedious@4.0.14': dependencies: - '@types/node': 22.13.16 + '@types/node': 22.14.0 '@types/unist@2.0.11': {} @@ -13927,6 +13897,24 @@ snapshots: transitivePeerDependencies: - supports-color + '@vitest/coverage-v8@3.1.1(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@bcoe/v8-coverage': 1.0.2 + debug: 4.4.0 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.1.7 + magic-string: 0.30.17 + magicast: 0.3.5 + std-env: 3.8.1 + test-exclude: 7.0.1 + tinyrainbow: 2.0.0 + vitest: 3.1.1(@types/debug@4.1.12)(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1) + transitivePeerDependencies: + - supports-color + '@vitest/expect@3.1.1': dependencies: '@vitest/spy': 3.1.1 @@ -13934,13 +13922,21 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.1.1(vite@6.2.4(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1))': + '@vitest/mocker@3.1.1(vite@6.2.5(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1))': + dependencies: + '@vitest/spy': 3.1.1 + estree-walker: 3.0.3 + magic-string: 0.30.17 + optionalDependencies: + vite: 6.2.5(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1) + + '@vitest/mocker@3.1.1(vite@6.2.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1))': dependencies: '@vitest/spy': 3.1.1 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 6.2.4(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1) + vite: 6.2.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1) '@vitest/pretty-format@3.1.1': dependencies: @@ -14210,7 +14206,7 @@ snapshots: autoprefixer@10.4.21(postcss@8.5.3): dependencies: browserslist: 4.24.4 - caniuse-lite: 1.0.30001707 + caniuse-lite: 1.0.30001710 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -14377,8 +14373,8 @@ snapshots: browserslist@4.24.4: dependencies: - caniuse-lite: 1.0.30001707 - electron-to-chromium: 1.5.129 + caniuse-lite: 1.0.30001710 + electron-to-chromium: 1.5.132 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.24.4) @@ -14444,11 +14440,11 @@ snapshots: caniuse-api@3.0.0: dependencies: browserslist: 4.24.4 - caniuse-lite: 1.0.30001707 + caniuse-lite: 1.0.30001710 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001707: {} + caniuse-lite@1.0.30001710: {} ccount@2.0.1: {} @@ -14550,11 +14546,11 @@ snapshots: clsx@2.1.1: {} - cmdk@1.0.4(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + cmdk@1.0.4(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - '@radix-ui/react-dialog': 1.1.6(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-dialog': 1.1.6(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-id': 1.1.0(@types/react@18.3.20)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.5(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.2(@types/react-dom@18.3.6(@types/react@18.3.20))(@types/react@18.3.20)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) use-sync-external-store: 1.5.0(react@18.3.1) @@ -15056,7 +15052,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.129: {} + electron-to-chromium@1.5.132: {} emoji-regex-xs@1.0.0: {} @@ -16386,7 +16382,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.13.16 + '@types/node': 22.14.0 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -16394,13 +16390,13 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.13.16 + '@types/node': 22.14.0 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@29.7.0: dependencies: - '@types/node': 22.13.16 + '@types/node': 22.14.0 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -16624,7 +16620,7 @@ snapshots: dependencies: semver: 7.7.1 - mapbox-gl@3.10.0: + mapbox-gl@3.11.0: dependencies: '@mapbox/jsonlint-lines-primitives': 2.0.2 '@mapbox/mapbox-gl-supported': 3.0.0 @@ -18097,7 +18093,7 @@ snapshots: postgres@3.4.5: {} - posthog-js@1.234.4: + posthog-js@1.234.8: dependencies: core-js: 3.41.0 fflate: 0.4.8 @@ -18303,14 +18299,14 @@ snapshots: react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.3.1)' webpack: 5.98.0(@swc/core@1.11.15) - react-map-gl@7.1.9(mapbox-gl@3.10.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-map-gl@7.1.9(mapbox-gl@3.11.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@maplibre/maplibre-gl-style-spec': 19.3.3 '@types/mapbox-gl': 3.4.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: - mapbox-gl: 3.10.0 + mapbox-gl: 3.11.0 react-markdown@10.1.0(@types/react@18.3.20)(react@18.3.1): dependencies: @@ -18323,7 +18319,7 @@ snapshots: mdast-util-to-hast: 13.2.0 react: 18.3.1 remark-parse: 11.0.0 - remark-rehype: 11.1.1 + remark-rehype: 11.1.2 unified: 11.0.5 unist-util-visit: 5.0.0 vfile: 6.0.3 @@ -18621,7 +18617,7 @@ snapshots: transitivePeerDependencies: - supports-color - remark-rehype@11.1.1: + remark-rehype@11.1.2: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 @@ -18635,7 +18631,7 @@ snapshots: mdast-util-to-markdown: 2.1.2 unified: 11.0.5 - remix-hook-form@6.1.3(react-dom@18.3.1(react@18.3.1))(react-hook-form@7.55.0(react@18.3.1))(react-router@7.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1): + remix-hook-form@6.2.0(react-dom@18.3.1(react@18.3.1))(react-hook-form@7.55.0(react@18.3.1))(react-router@7.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1): dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -18649,7 +18645,7 @@ snapshots: remix-utils@8.5.0(react-router@7.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)(zod@3.24.2): dependencies: - type-fest: 4.38.0 + type-fest: 4.39.1 optionalDependencies: react: 18.3.1 react-router: 7.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -19409,7 +19405,7 @@ snapshots: type-fest@2.19.0: {} - type-fest@4.38.0: {} + type-fest@4.39.1: {} type-is@1.6.18: dependencies: @@ -19500,6 +19496,8 @@ snapshots: undici-types@6.20.0: {} + undici-types@6.21.0: {} + undici@6.21.2: {} unicode-canonical-property-names-ecmascript@2.0.1: {} @@ -19677,13 +19675,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@3.0.0-beta.2(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1): + vite-node@3.0.0-beta.2(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 1.1.2 - vite: 6.2.5(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1) + vite: 6.2.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1) transitivePeerDependencies: - '@types/node' - jiti @@ -19719,18 +19717,39 @@ snapshots: - tsx - yaml - vite-tsconfig-paths@5.1.4(typescript@5.7.3)(vite@6.2.5(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1)): + vite-node@3.1.1(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1): + dependencies: + cac: 6.7.14 + debug: 4.4.0 + es-module-lexer: 1.6.0 + pathe: 2.0.3 + vite: 6.2.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vite-tsconfig-paths@5.1.4(typescript@5.7.3)(vite@6.2.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1)): dependencies: debug: 4.4.0 globrex: 0.1.2 tsconfck: 3.1.5(typescript@5.7.3) optionalDependencies: - vite: 6.2.5(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1) + vite: 6.2.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1) transitivePeerDependencies: - supports-color - typescript - vite@6.2.4(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1): + vite@6.2.5(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1): dependencies: esbuild: 0.25.2 postcss: 8.5.3 @@ -19743,13 +19762,13 @@ snapshots: terser: 5.39.0 yaml: 2.7.1 - vite@6.2.5(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1): + vite@6.2.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1): dependencies: esbuild: 0.25.2 postcss: 8.5.3 rollup: 4.38.0 optionalDependencies: - '@types/node': 22.13.16 + '@types/node': 22.14.0 fsevents: 2.3.3 jiti: 1.21.7 lightningcss: 1.29.3 @@ -19759,7 +19778,7 @@ snapshots: vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1): dependencies: '@vitest/expect': 3.1.1 - '@vitest/mocker': 3.1.1(vite@6.2.4(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1)) + '@vitest/mocker': 3.1.1(vite@6.2.5(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1)) '@vitest/pretty-format': 3.1.1 '@vitest/runner': 3.1.1 '@vitest/snapshot': 3.1.1 @@ -19775,7 +19794,7 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 6.2.4(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1) + vite: 6.2.5(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1) vite-node: 3.1.1(@types/node@22.13.16)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1) why-is-node-running: 2.3.0 optionalDependencies: @@ -19795,6 +19814,45 @@ snapshots: - tsx - yaml + vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1): + dependencies: + '@vitest/expect': 3.1.1 + '@vitest/mocker': 3.1.1(vite@6.2.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1)) + '@vitest/pretty-format': 3.1.1 + '@vitest/runner': 3.1.1 + '@vitest/snapshot': 3.1.1 + '@vitest/spy': 3.1.1 + '@vitest/utils': 3.1.1 + chai: 5.2.0 + debug: 4.4.0 + expect-type: 1.2.1 + magic-string: 0.30.17 + pathe: 2.0.3 + std-env: 3.8.1 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinypool: 1.0.2 + tinyrainbow: 2.0.0 + vite: 6.2.5(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1) + vite-node: 3.1.1(@types/node@22.14.0)(jiti@1.21.7)(lightningcss@1.29.3)(terser@5.39.0)(yaml@2.7.1) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/debug': 4.1.12 + '@types/node': 22.14.0 + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + vt-pbf@3.1.3: dependencies: '@mapbox/point-geometry': 0.1.0