From 3cf9ce54989e008e86558bb3feaa9914369f5fc6 Mon Sep 17 00:00:00 2001
From: Alexandre Fauquette <45398769+alexfauquette@users.noreply.github.com>
Date: Sat, 23 Nov 2024 23:19:30 +0100
Subject: [PATCH] feat: Add stat cards (#61)
* feat: Add stat cards
* add-charts
* updates
* work
---
.../debat/[compteRenduRef]/DebateSummary.tsx | 4 +-
app/depute/[slug]/InfoPersonelles.tsx | 80 +-
app/depute/[slug]/WeeklyActivity.tsx | 203 +++
.../amendements/AmendementsStatistics.tsx | 3 -
app/depute/[slug]/amendements/page.tsx | 2 +
app/depute/[slug]/getWeekIndex.ts | 37 +
app/depute/[slug]/page.tsx | 192 ++-
app/depute/[slug]/qag/QuestionCard.tsx | 18 +-
app/deputes/DeputesView.tsx | 6 +-
app/dossiers/api/route.ts | 2 +-
app/layout.tsx | 29 +-
{components/ThemeRegistry => app}/theme.tsx | 12 +-
components/FilterContainer.tsx | 4 +-
components/ThemeRegistry/EmotionCache.tsx | 94 --
components/ThemeRegistry/ThemeRegistry.tsx | 18 -
components/folderHomePage/DossierList.tsx | 9 +-
components/folders/DeputeCard.tsx | 14 +-
components/folders/HeroSection.tsx | 8 +-
components/home/FloatingIcons.tsx | 2 +-
components/home/SearchBar.tsx | 2 +-
package-lock.json | 1443 +++++++++++++----
package.json | 8 +-
prisma/models/acteur.prisma | 98 +-
prisma/models/agenda.prisma | 5 +-
prisma/models/document.prisma | 66 +-
prisma/models/dossier.prisma | 42 +-
prisma/models/organe.prisma | 100 +-
prisma/models/question.prisma | 2 +-
prisma/models/scrutin.prisma | 8 -
prisma/models/stats.prisma | 6 +
prisma/models/texte_loi.prisma | 152 --
prisma/swagger/json-schema.json | 550 +++----
32 files changed, 2087 insertions(+), 1132 deletions(-)
create mode 100644 app/depute/[slug]/WeeklyActivity.tsx
create mode 100644 app/depute/[slug]/getWeekIndex.ts
rename {components/ThemeRegistry => app}/theme.tsx (95%)
delete mode 100644 components/ThemeRegistry/EmotionCache.tsx
delete mode 100644 components/ThemeRegistry/ThemeRegistry.tsx
delete mode 100644 prisma/models/texte_loi.prisma
diff --git a/app/[legislature]/dossier/[id]/debat/[compteRenduRef]/DebateSummary.tsx b/app/[legislature]/dossier/[id]/debat/[compteRenduRef]/DebateSummary.tsx
index aab2589..d2a8448 100644
--- a/app/[legislature]/dossier/[id]/debat/[compteRenduRef]/DebateSummary.tsx
+++ b/app/[legislature]/dossier/[id]/debat/[compteRenduRef]/DebateSummary.tsx
@@ -173,7 +173,7 @@ export const DebateSummary = (props: DebateSummaryProps) => {
}}
>
{
diff --git a/app/depute/[slug]/InfoPersonelles.tsx b/app/depute/[slug]/InfoPersonelles.tsx
index 65597f0..ad886c6 100644
--- a/app/depute/[slug]/InfoPersonelles.tsx
+++ b/app/depute/[slug]/InfoPersonelles.tsx
@@ -15,15 +15,15 @@ export default function InfoPersonelles({
// .filter((mandat) => mandat.legislature === "16") Partis politique est `null`
.sort((a, b) => (a.dateDebut < b.dateDebut ? 1 : -1));
- const dernerMandatDepute = sortedMandats.filter(
+ const dernierMandatDepute = sortedMandats.filter(
(mandat) => mandat.typeOrgane === "ASSEMBLEE"
)[0];
- const dernergroupeParlementaire = sortedMandats.filter(
+ const derniergroupeParlementaire = sortedMandats.filter(
(mandat) => mandat.typeOrgane === "GP"
)[0];
- const dernerPartisPolitique = sortedMandats.filter(
+ const dernierPartisPolitique = sortedMandats.filter(
(mandat) => mandat.typeOrgane === "PARPOL"
)[0];
@@ -37,43 +37,57 @@ export default function InfoPersonelles({
return (
- Infomrations personelles
+ Informations personelles
-
-
- Debut de mandat
-
-
- Le{" "}
- {new Date(dernerMandatDepute.dateDebut).toLocaleDateString(
- "fr-FR",
- { day: "numeric", month: "long", year: "numeric" }
- )}
-
-
-
-
-
- Fin de mandat
-
-
- {dernerMandatDepute.dateFin !== null
- ? `Le ${new Date(dernerMandatDepute.dateFin).toLocaleDateString(
+ {dernierMandatDepute === undefined ? (
+
+
+ Debut de mandat
+
+ N'est pas député·e·s
+
+ ) : (
+
+
+
+ Debut de mandat
+
+
+ Le{" "}
+ {new Date(dernierMandatDepute?.dateDebut).toLocaleDateString(
"fr-FR",
{ day: "numeric", month: "long", year: "numeric" }
- )}`
- : "en cours"}
-
-
+ )}
+
+
+
+
+
+ Fin de mandat
+
+
+ {dernierMandatDepute?.dateFin !== null
+ ? `Le ${new Date(
+ dernierMandatDepute?.dateFin
+ ).toLocaleDateString("fr-FR", {
+ day: "numeric",
+ month: "long",
+ year: "numeric",
+ })}`
+ : "en cours"}
+
+
+
+ )}
Group politique
- {dernergroupeParlementaire &&
- dernergroupeParlementaire.dateFin === null
- ? dernergroupeParlementaire.libelle
+ {derniergroupeParlementaire &&
+ derniergroupeParlementaire.dateFin === null
+ ? derniergroupeParlementaire.libelle
: "-"}
@@ -83,8 +97,8 @@ export default function InfoPersonelles({
Partis politique
- {dernerPartisPolitique && dernerPartisPolitique.dateFin === null
- ? dernerPartisPolitique.libelle
+ {dernierPartisPolitique && dernierPartisPolitique.dateFin === null
+ ? dernierPartisPolitique.libelle
: "-"}
diff --git a/app/depute/[slug]/WeeklyActivity.tsx b/app/depute/[slug]/WeeklyActivity.tsx
new file mode 100644
index 0000000..182d359
--- /dev/null
+++ b/app/depute/[slug]/WeeklyActivity.tsx
@@ -0,0 +1,203 @@
+"use client";
+import * as React from "react";
+import { StateHebdoType } from "@prisma/client";
+import { getMondayDate, getWeekIndex } from "./getWeekIndex";
+import {
+ BarPlot,
+ ChartsAxis,
+ ChartsAxisHighlight,
+ ChartsTooltip,
+ LinePlot,
+ ChartContainer,
+ useDrawingArea,
+ useXScale,
+} from "@mui/x-charts";
+
+const POINTS_NUMBER = 50;
+
+export type WeeklyStatsProps = {
+ deputeWeeklyActivity: {
+ semaineIndex: number;
+ valeur: number;
+ type: StateHebdoType;
+ acteurUid: string;
+ }[];
+ statsOnWeeklyActivity: {
+ semaineIndex: number;
+ valeur: number;
+ type: StateHebdoType;
+ acteurUid: string;
+ }[];
+};
+
+type WeekActivity = {
+ [key in StateHebdoType]: {
+ depute?: number;
+ max?: number;
+ median?: number;
+ };
+};
+
+export default function WeeklyStats(props: WeeklyStatsProps) {
+ const groupedPerWeek: Record = {};
+
+ for (const activity of [
+ ...props.deputeWeeklyActivity,
+ ...props.statsOnWeeklyActivity,
+ ]) {
+ if (groupedPerWeek[activity.semaineIndex] === undefined) {
+ groupedPerWeek[activity.semaineIndex] = {} as WeekActivity;
+ }
+
+ if (groupedPerWeek[activity.semaineIndex][activity.type] === undefined) {
+ groupedPerWeek[activity.semaineIndex][activity.type] = {};
+ }
+
+ switch (activity.acteurUid) {
+ case "median":
+ groupedPerWeek[activity.semaineIndex][activity.type].median =
+ activity.valeur;
+ break;
+ case "max":
+ groupedPerWeek[activity.semaineIndex][activity.type].max =
+ activity.valeur;
+ break;
+ default:
+ groupedPerWeek[activity.semaineIndex][activity.type].depute =
+ activity.valeur;
+ break;
+ }
+ }
+
+ const currentWeekIndex = getWeekIndex(17, new Date());
+
+ const displayedWeekIndex = [...Array(POINTS_NUMBER)].map(
+ (_, index) => currentWeekIndex - POINTS_NUMBER + index
+ );
+
+ const presenceDetecteeDataset = displayedWeekIndex.map((semaineIndex) => ({
+ date: getMondayDate(17, semaineIndex),
+ debat: groupedPerWeek[semaineIndex]?.presenceDetectee?.depute ?? 0,
+ debatMedian: groupedPerWeek[semaineIndex]?.presenceDetectee?.median ?? 0,
+ debatMax: groupedPerWeek[semaineIndex]?.presenceDetectee?.max ?? 0,
+
+ presenceCommission:
+ groupedPerWeek[semaineIndex]?.presenceCommision?.depute ?? 0,
+ presenceCommissionMedian:
+ groupedPerWeek[semaineIndex]?.presenceCommision?.median ?? 0,
+ presenceCommissionMax:
+ groupedPerWeek[semaineIndex]?.presenceCommision?.max ?? 0,
+ }));
+
+ const vacances = presenceDetecteeDataset
+ .reduce<{ start: number; end: number }[]>((acc, week, index) => {
+ if (week.debatMax !== 0 || week.presenceCommissionMax !== 0) {
+ return acc;
+ }
+ if (acc.length === 0) {
+ return [{ start: index, end: index + 1 }];
+ }
+ if (index === acc[acc.length - 1].end) {
+ return [
+ ...acc.slice(0, acc.length - 1),
+ { ...acc[acc.length - 1], end: index + 1 },
+ ];
+ }
+
+ return [...acc, { start: index, end: index + 1 }];
+ }, [])
+ .map(({ start, end }) => ({
+ start: presenceDetecteeDataset[start].date,
+ end: presenceDetecteeDataset[end - 1].date,
+ }));
+
+ return (
+ {
+ if (ctx.location === "tick") {
+ return date.toLocaleDateString("fr-FR", {
+ month: "long",
+ year: "2-digit",
+ });
+ }
+ return `Semaine du ${(date as Date).toLocaleDateString("fr-FR", {
+ month: "short",
+ day: "2-digit",
+ })}`;
+ },
+ tickInterval: (_, index) => index % 10 === 5,
+ // @ts-ignore
+ categoryGapRatio: 0,
+ },
+ ]}
+ series={[
+ {
+ dataKey: "presenceCommissionMedian",
+ type: "line",
+ stack: "mediane",
+ color: "red",
+ curve: "step",
+ label: "mediane réunion commissions",
+ },
+ {
+ dataKey: "presenceCommission",
+ type: "bar",
+ stack: "depute",
+ color: "orange",
+ label: "réunion commissions",
+ },
+
+ {
+ dataKey: "debat",
+ type: "bar",
+ stack: "depute",
+ color: "blue",
+
+ label: "présence hémicicle",
+ },
+ {
+ dataKey: "debatMedian",
+ type: "line",
+ stack: "mediane",
+ color: "darkblue",
+ curve: "step",
+ label: "mediane présence hémicicle",
+ },
+ ]}
+ >
+
+
+
+
+
+
+
+ );
+}
+
+type VacanceParlementaireProps = {
+ vacances: { start: Date; end: Date }[];
+};
+
+function VacanceParlementaire({ vacances }: VacanceParlementaireProps) {
+ const scale = useXScale<"band">();
+ const drawingArea = useDrawingArea();
+
+ return vacances.map(({ start, end }) => (
+
+ ));
+}
diff --git a/app/depute/[slug]/amendements/AmendementsStatistics.tsx b/app/depute/[slug]/amendements/AmendementsStatistics.tsx
index 57ea4ea..a122c2a 100644
--- a/app/depute/[slug]/amendements/AmendementsStatistics.tsx
+++ b/app/depute/[slug]/amendements/AmendementsStatistics.tsx
@@ -1,7 +1,4 @@
import React from "react";
-
-import Stack from "@mui/material/Stack";
-
import { prisma } from "@/prisma";
async function getDeputeAmendementStatsUnCached(uid: string) {
diff --git a/app/depute/[slug]/amendements/page.tsx b/app/depute/[slug]/amendements/page.tsx
index 01ee7e8..5afe888 100644
--- a/app/depute/[slug]/amendements/page.tsx
+++ b/app/depute/[slug]/amendements/page.tsx
@@ -37,7 +37,9 @@ export default async function Amendements({
return (
Amendements
+
+
{amendements &&
amendements
.sort((a, b) =>
diff --git a/app/depute/[slug]/getWeekIndex.ts b/app/depute/[slug]/getWeekIndex.ts
new file mode 100644
index 0000000..0ade595
--- /dev/null
+++ b/app/depute/[slug]/getWeekIndex.ts
@@ -0,0 +1,37 @@
+/**
+ * Date du lundi de la premiere sceance de la legislature.
+ */
+export const legistature_begining: Record = {
+ 14: new Date("2012-06-18T00:00:00Z").getTime(),
+ 15: new Date("2017-06-26T00:00:00Z").getTime(),
+ 16: new Date("2022-06-27T00:00:00Z").getTime(),
+ 17: new Date("2024-07-15T00:00:00Z").getTime(),
+ 18: undefined,
+ 0: undefined,
+};
+
+const MILLISECONDS_PER_WEEK = 7 * 24 * 60 * 60 * 1000;
+
+export function getWeekIndex(legislature: number, date: Date) {
+ if (legistature_begining[legislature] === undefined) {
+ throw new Error(
+ `La legislature ${legislature} n'as pas de date de départ.`
+ );
+ }
+
+ return Math.floor(
+ (date.getTime() - legistature_begining[legislature]) / MILLISECONDS_PER_WEEK
+ );
+}
+
+export function getMondayDate(legislature: number, weekIndex: number) {
+ if (legistature_begining[legislature] === undefined) {
+ throw new Error(
+ `La legislature ${legislature} n'as pas de date de départ.`
+ );
+ }
+
+ return new Date(
+ legistature_begining[legislature] + weekIndex * MILLISECONDS_PER_WEEK
+ );
+}
diff --git a/app/depute/[slug]/page.tsx b/app/depute/[slug]/page.tsx
index 2fb3a93..d6060fa 100644
--- a/app/depute/[slug]/page.tsx
+++ b/app/depute/[slug]/page.tsx
@@ -1,5 +1,193 @@
import React from "react";
-export default function Page({ params }: { params: { slug: string } }) {
- return Activités
;
+import Stack from "@mui/material/Stack";
+import Card from "@mui/material/Card";
+import CardContent from "@mui/material/CardContent";
+import CardHeader from "@mui/material/CardHeader";
+
+import { prisma } from "@/prisma";
+import { Box, Typography } from "@mui/material";
+import WeeklyStats from "./WeeklyActivity";
+
+async function getDeputeStatsUnCached(slug: string) {
+ try {
+ return await prisma.acteur.findFirst({
+ where: { slug },
+ select: {
+ uid: true,
+ nombreAmendements: true,
+ nombreInterventions: true,
+ nombreQuestions: true,
+ statistiquesHebdomadaire: true,
+ },
+ });
+ } catch (error) {
+ console.error(`Error fetching stats from depute ${slug}:`, error);
+ throw error;
+ }
+}
+
+async function getStatsOnWeeklyActivityUnCached(slug: string) {
+ try {
+ return await prisma.statistiqueHebdomadaire.findMany({
+ where: { OR: [{ acteurUid: "median" }, { acteurUid: "max" }] },
+ select: {
+ type: true,
+ semaineIndex: true,
+ valeur: true,
+ acteurUid: true,
+ },
+ });
+ } catch (error) {
+ console.error(`Error fetching stats from depute ${slug}:`, error);
+ throw error;
+ }
+}
+
+async function getBaselineStatsUnCached() {
+ try {
+ return await prisma.stats.findMany({
+ select: {
+ type: true,
+ id: true,
+ minimum: true,
+ maximum: true,
+ q20: true,
+ q40: true,
+ q60: true,
+ q80: true,
+ },
+ });
+ } catch (error) {
+ console.error(`Error fetching stat baseline:`, error);
+ throw error;
+ }
+}
+
+const getDeputeStats = React.cache(getDeputeStatsUnCached);
+const getBaselineStats = React.cache(getBaselineStatsUnCached);
+const getStatsOnWeeklyActivity = React.cache(getStatsOnWeeklyActivityUnCached);
+
+const baselineTypeToDeputeKey: Record<
+ string,
+ "nombreAmendements" | "nombreInterventions" | "nombreQuestions"
+> = {
+ questions: "nombreQuestions",
+ interventions: "nombreInterventions",
+ amendements: "nombreAmendements",
+};
+
+const baselineTypeToTitle: Record = {
+ questions: "Nombre de questions",
+ interventions: "Nombre d'interventions",
+ amendements: "Nombre d'amendements",
+};
+
+const quantilesSentences = [
+ "Dans les 20% moins actifs",
+ "Dans les 40% moins actifs",
+ "Dans les 60% moins actifs",
+ "Dans les 40% plus actifs",
+ "Dans les 20% plus actifs",
+];
+
+export default async function Page({ params }: { params: { slug: string } }) {
+ const deputeStatsData = getDeputeStats(params.slug);
+ const statsOnWeeklyActivityData = getStatsOnWeeklyActivity(params.slug);
+ const baselineStatsData = getBaselineStats();
+
+ // Initiate both requests in parallel
+ const [deputeStats, statsOnWeeklyActivity, baselineStats] = await Promise.all(
+ [deputeStatsData, statsOnWeeklyActivityData, baselineStatsData]
+ );
+
+ return (
+
+
+
+ {baselineStats.map(({ q20, q40, q60, q80, maximum, type, id }) => {
+ if (!baselineTypeToDeputeKey[type as string] || !deputeStats) {
+ return null;
+ }
+
+ if (!id.includes("-AN-")) {
+ // Enleve les stats liées au senat
+ return null;
+ }
+
+ const value = deputeStats[baselineTypeToDeputeKey[type]];
+
+ const quantiles = [q20, q40, q60, q80, maximum];
+
+ // On equality we are kind and put then in the next one. Except for the last one because there is no next one.
+ const quantileIndex = quantiles.findLastIndex(
+ (q, index) => index === 0 || value >= q
+ );
+
+ return (
+
+
+
+ {value}
+
+
+ {baselineTypeToTitle[type]}
+
+
+ {quantiles.map((q, index) => {
+ return (
+ div": {
+ bgColor:
+ quantileIndex === index ? "black" : "#A4A4A7",
+ },
+ },
+ position: "relative",
+ flexGrow: 1,
+ }}
+ >
+
+
+ );
+ })}
+
+
+ {quantilesSentences[quantileIndex]}
+
+
+
+ );
+ })}
+
+ );
}
diff --git a/app/depute/[slug]/qag/QuestionCard.tsx b/app/depute/[slug]/qag/QuestionCard.tsx
index 7bddbbf..dcc7692 100644
--- a/app/depute/[slug]/qag/QuestionCard.tsx
+++ b/app/depute/[slug]/qag/QuestionCard.tsx
@@ -23,7 +23,7 @@ export default function QuestionCard(props: QuestionCardProps) {
type,
numero,
dateDepot,
- dateCloture,
+ // dateCloture,
titre,
rubrique,
texteQuestion,
@@ -57,7 +57,7 @@ export default function QuestionCard(props: QuestionCardProps) {
spacing={1}
sx={{ width: "100%", mr: 2 }}
>
- {titre && {titre}}
+ {titre && {titre}}
{rubrique && }
{type && }
@@ -74,9 +74,8 @@ export default function QuestionCard(props: QuestionCardProps) {
flexBasis={0}
component="div"
sx={{ bgcolor: "grey.50", p: 1 }}
- >
- {texteQuestion}
-
+ dangerouslySetInnerHTML={{ __html: texteQuestion }}
+ />
)}
{texteReponse && (
- {texteReponse}
-
+ dangerouslySetInnerHTML={{ __html: texteReponse }}
+ />
)}
{erratumQuestion && (
-
+ {/*
Date de cloture:
{dateCloture && dateCloture.toLocaleDateString("fr-FR")}
-
+ */}
diff --git a/app/deputes/DeputesView.tsx b/app/deputes/DeputesView.tsx
index b80fe43..b042df1 100644
--- a/app/deputes/DeputesView.tsx
+++ b/app/deputes/DeputesView.tsx
@@ -131,11 +131,7 @@ function Deputes({
}
: undefined
}
- component={Link}
- href={`/depute/${slug}`}
- sx={{
- "&:hover": { bgcolor: "grey.50" },
- }}
+ isFullCardLink
/>
);
})}
diff --git a/app/dossiers/api/route.ts b/app/dossiers/api/route.ts
index f872ce6..207142d 100644
--- a/app/dossiers/api/route.ts
+++ b/app/dossiers/api/route.ts
@@ -15,7 +15,7 @@ function parseNumber(value: string | null, defaultValue: number) {
export async function GET(request: NextRequest) {
const searchParams = request.nextUrl.searchParams;
- const legislature = searchParams.get("legislature") ?? "16";
+ const legislature = searchParams.get("legislature") ?? "17";
const theme = searchParams.get("theme");
const page = parseNumber(searchParams.get("page"), 0);
const pageSize = parseNumber(searchParams.get("pageSize"), 20);
diff --git a/app/layout.tsx b/app/layout.tsx
index f63e316..fec9023 100644
--- a/app/layout.tsx
+++ b/app/layout.tsx
@@ -1,10 +1,18 @@
import type { Metadata } from "next";
import { Raleway } from "next/font/google";
import "./globals.css";
-import ThemeRegistry from "@/components/ThemeRegistry/ThemeRegistry";
+import { AppRouterCacheProvider } from "@mui/material-nextjs/v14-appRouter";
import { NavBar, NavigationItem } from "@/components/NavBar";
+import theme from "./theme";
+import { ThemeProvider } from "@mui/material/styles";
+import { CssBaseline } from "@mui/material";
-const inter = Raleway({ subsets: ["latin"] });
+const raleway = Raleway({
+ weight: ["400", "600", "700"],
+ subsets: ["latin"],
+ display: "swap",
+ variable: "--font-raleway",
+});
export const metadata: Metadata = {
metadataBase: new URL("https://www.nosdeputes.fr"),
@@ -50,13 +58,16 @@ export default function RootLayout({
}) {
return (
-
- ;
- /** By default from 'import { CacheProvider } from "@emotion/react"' */
- CacheProvider?: (props: {
- value: EmotionCache;
- children: React.ReactNode;
- }) => React.JSX.Element | null;
- children: React.ReactNode;
-};
-
-// Adapted from https://github.com/garronej/tss-react/blob/main/src/next/appDir.tsx
-export default function NextAppDirEmotionCacheProvider(props: NextAppDirEmotionCacheProviderProps) {
- const { options, CacheProvider = DefaultCacheProvider, children } = props;
-
- const [registry] = React.useState(() => {
- const cache = createCache(options);
- cache.compat = true;
- const prevInsert = cache.insert;
- let inserted: { name: string; isGlobal: boolean }[] = [];
- cache.insert = (...args) => {
- const [selector, serialized] = args;
- if (cache.inserted[serialized.name] === undefined) {
- inserted.push({
- name: serialized.name,
- isGlobal: !selector,
- });
- }
- return prevInsert(...args);
- };
- const flush = () => {
- const prevInserted = inserted;
- inserted = [];
- return prevInserted;
- };
- return { cache, flush };
- });
-
- useServerInsertedHTML(() => {
- const inserted = registry.flush();
- if (inserted.length === 0) {
- return null;
- }
- let styles = '';
- let dataEmotionAttribute = registry.cache.key;
-
- const globals: {
- name: string;
- style: string;
- }[] = [];
-
- inserted.forEach(({ name, isGlobal }) => {
- const style = registry.cache.inserted[name];
-
- if (typeof style !== 'boolean') {
- if (isGlobal) {
- globals.push({ name, style });
- } else {
- styles += style;
- dataEmotionAttribute += ` ${name}`;
- }
- }
- });
-
- return (
-
- {globals.map(({ name, style }) => (
-
- ))}
- {styles && (
-
- )}
-
- );
- });
-
- return {children};
-}
\ No newline at end of file
diff --git a/components/ThemeRegistry/ThemeRegistry.tsx b/components/ThemeRegistry/ThemeRegistry.tsx
deleted file mode 100644
index 1f89d53..0000000
--- a/components/ThemeRegistry/ThemeRegistry.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-'use client';
-import * as React from 'react';
-import { ThemeProvider } from '@mui/material/styles';
-import CssBaseline from '@mui/material/CssBaseline';
-import NextAppDirEmotionCacheProvider from './EmotionCache';
-import theme from './theme';
-
-export default function ThemeRegistry({ children }: { children: React.ReactNode }) {
- return (
-
-
- {/* CssBaseline kickstart an elegant, consistent, and simple baseline to build upon. */}
-
- {children}
-
-
- );
-}
\ No newline at end of file
diff --git a/components/folderHomePage/DossierList.tsx b/components/folderHomePage/DossierList.tsx
index 2e9b32d..5d74d45 100644
--- a/components/folderHomePage/DossierList.tsx
+++ b/components/folderHomePage/DossierList.tsx
@@ -91,14 +91,19 @@ export default function DossierList(props: DossierListProps) {
};
}, [theme]);
- console.log(dossiers);
return (
{dossiers
.filter((dossier) => theme === "" || dossier.theme === theme)
.map((dossier) => (
-
+
= {
} | null;
smallGroupColor?: boolean;
showVote?: boolean;
+ /**
+ * If true, the entire card is a link to the deputy page. Otherwise it's its name.
+ */
+ isFullCardLink?: boolean;
vote?: "pour" | "contre" | "nonVotant" | "abstention" | null;
groupPosition?: "pour" | "contre" | "nonVotant" | "abstention";
} & BoxProps;
@@ -41,6 +45,7 @@ export default function DeputeCard(
groupPosition,
sx,
secondaryText,
+ isFullCardLink,
...other
} = props;
@@ -55,9 +60,16 @@ export default function DeputeCard(
display: "flex",
justifyContent: "space-between",
alignItems: "center",
+ "&:hover": isFullCardLink ? { bgcolor: "grey.50" } : {},
},
...(Array.isArray(sx) ? sx : [sx]),
]}
+ {...(isFullCardLink
+ ? {
+ component: Link,
+ href: `/depute/${slug}`,
+ }
+ : {})}
{...other}
>
@@ -78,7 +90,7 @@ export default function DeputeCard(
minWidth: 0,
}}
>
- {slug ? (
+ {slug && !isFullCardLink ? (
}
separator=">"
aria-label="breadcrumb"
- sx={{ backgroundColor: "white", padding: "12px 16px" }}
+ sx={{ backgroundColor: "#fff", padding: "12px 16px" }}
>
{breadcrumbs}
@@ -91,7 +91,7 @@ export const HeroSection = ({
borderRadius: 1,
backgroundColor: "transparent",
[theme.breakpoints.up("md")]: {
- backgroundColor: "white",
+ backgroundColor: "#fff",
},
}}
>
@@ -119,7 +119,7 @@ export const HeroSection = ({
fontWeight="bold"
variant="body2"
sx={{
- color: "white",
+ color: "#fff",
[theme.breakpoints.up("md")]: {
color: "grey.900",
},
@@ -131,7 +131,7 @@ export const HeroSection = ({
=16.8.0"
}
},
"node_modules/@emotion/utils": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz",
- "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg=="
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.2.tgz",
+ "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==",
+ "license": "MIT"
},
"node_modules/@emotion/weak-memoize": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz",
- "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww=="
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz",
+ "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==",
+ "license": "MIT"
},
"node_modules/@eslint-community/eslint-utils": {
"version": "4.4.0",
@@ -451,28 +482,31 @@
}
},
"node_modules/@floating-ui/core": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz",
- "integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==",
+ "version": "1.6.8",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz",
+ "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==",
+ "license": "MIT",
"dependencies": {
- "@floating-ui/utils": "^0.1.3"
+ "@floating-ui/utils": "^0.2.8"
}
},
"node_modules/@floating-ui/dom": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz",
- "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==",
+ "version": "1.6.12",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.12.tgz",
+ "integrity": "sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==",
+ "license": "MIT",
"dependencies": {
- "@floating-ui/core": "^1.4.2",
- "@floating-ui/utils": "^0.1.3"
+ "@floating-ui/core": "^1.6.0",
+ "@floating-ui/utils": "^0.2.8"
}
},
"node_modules/@floating-ui/react-dom": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.4.tgz",
- "integrity": "sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz",
+ "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==",
+ "license": "MIT",
"dependencies": {
- "@floating-ui/dom": "^1.5.1"
+ "@floating-ui/dom": "^1.0.0"
},
"peerDependencies": {
"react": ">=16.8.0",
@@ -480,9 +514,10 @@
}
},
"node_modules/@floating-ui/utils": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz",
- "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A=="
+ "version": "0.2.8",
+ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz",
+ "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==",
+ "license": "MIT"
},
"node_modules/@humanwhocodes/config-array": {
"version": "0.11.13",
@@ -607,24 +642,25 @@
}
},
"node_modules/@mui/base": {
- "version": "5.0.0-beta.24",
- "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.24.tgz",
- "integrity": "sha512-bKt2pUADHGQtqWDZ8nvL2Lvg2GNJyd/ZUgZAJoYzRgmnxBL9j36MSlS3+exEdYkikcnvVafcBtD904RypFKb0w==",
- "dependencies": {
- "@babel/runtime": "^7.23.2",
- "@floating-ui/react-dom": "^2.0.4",
- "@mui/types": "^7.2.9",
- "@mui/utils": "^5.14.18",
+ "version": "5.0.0-beta.62",
+ "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.62.tgz",
+ "integrity": "sha512-TzJLCNlrMkSU4bTCdTT+TVUiGx4sjZLhH673UV6YN+rNNP8wJpkWfRSvjDB5HcbH2T0lUamnz643ZnV+8IiMjw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.26.0",
+ "@floating-ui/react-dom": "^2.1.1",
+ "@mui/types": "^7.2.19",
+ "@mui/utils": "^6.1.8",
"@popperjs/core": "^2.11.8",
- "clsx": "^2.0.0",
+ "clsx": "^2.1.1",
"prop-types": "^15.8.1"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=14.0.0"
},
"funding": {
"type": "opencollective",
- "url": "https://opencollective.com/mui"
+ "url": "https://opencollective.com/mui-org"
},
"peerDependencies": {
"@types/react": "^17.0.0 || ^18.0.0",
@@ -638,32 +674,34 @@
}
},
"node_modules/@mui/core-downloads-tracker": {
- "version": "5.14.18",
- "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.18.tgz",
- "integrity": "sha512-yFpF35fEVDV81nVktu0BE9qn2dD/chs7PsQhlyaV3EnTeZi9RZBuvoEfRym1/jmhJ2tcfeWXiRuHG942mQXJJQ==",
+ "version": "6.1.8",
+ "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.1.8.tgz",
+ "integrity": "sha512-TGAvzwUg9hybDacwfIGFjI2bXYXrIqky+vMfaeay8rvT56/PNAlvIDUJ54kpT5KRc9AWAihOvtDI7/LJOThOmQ==",
+ "license": "MIT",
"funding": {
"type": "opencollective",
- "url": "https://opencollective.com/mui"
+ "url": "https://opencollective.com/mui-org"
}
},
"node_modules/@mui/icons-material": {
- "version": "5.15.11",
- "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.15.11.tgz",
- "integrity": "sha512-R5ZoQqnKpd+5Ew7mBygTFLxgYsQHPhgR3TDXSgIHYIjGzYuyPLmGLSdcPUoMdi6kxiYqHlpPj4NJxlbaFD0UHA==",
+ "version": "6.1.8",
+ "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.1.8.tgz",
+ "integrity": "sha512-6frsXcf1TcJKWevWwRup6V4L8lzI33cbHcAjT83YLgKw0vYRZKY0kjMI9fhrJZdRWXgFFgKKvEv3GjoxbqFF7A==",
+ "license": "MIT",
"dependencies": {
- "@babel/runtime": "^7.23.9"
+ "@babel/runtime": "^7.26.0"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=14.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/mui-org"
},
"peerDependencies": {
- "@mui/material": "^5.0.0",
- "@types/react": "^17.0.0 || ^18.0.0",
- "react": "^17.0.0 || ^18.0.0"
+ "@mui/material": "^6.1.8",
+ "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
},
"peerDependenciesMeta": {
"@types/react": {
@@ -672,32 +710,34 @@
}
},
"node_modules/@mui/lab": {
- "version": "5.0.0-alpha.153",
- "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.153.tgz",
- "integrity": "sha512-vogVniN5JC7ltqPpPhIGYVImnvu0PnE1UbtFvbzVs3ldt3obWJ5XrhYS/OEV6H2/9dey3nUNU6i36FG1yreFDA==",
- "dependencies": {
- "@babel/runtime": "^7.23.2",
- "@mui/base": "5.0.0-beta.24",
- "@mui/system": "^5.14.18",
- "@mui/types": "^7.2.9",
- "@mui/utils": "^5.14.18",
- "clsx": "^2.0.0",
+ "version": "6.0.0-beta.16",
+ "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-6.0.0-beta.16.tgz",
+ "integrity": "sha512-YFeKREMMCiUhp4dGXd6Y/7N3BLepys9bM6xi4aF0WTZOvfl1ksDXPzuXPGiiiIuMgQFJeyN5iUnS1iPu3wH+kQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.26.0",
+ "@mui/base": "5.0.0-beta.62",
+ "@mui/system": "^6.1.8",
+ "@mui/types": "^7.2.19",
+ "@mui/utils": "^6.1.8",
+ "clsx": "^2.1.1",
"prop-types": "^15.8.1"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=14.0.0"
},
"funding": {
"type": "opencollective",
- "url": "https://opencollective.com/mui"
+ "url": "https://opencollective.com/mui-org"
},
"peerDependencies": {
"@emotion/react": "^11.5.0",
"@emotion/styled": "^11.3.0",
- "@mui/material": ">=5.10.11",
- "@types/react": "^17.0.0 || ^18.0.0",
- "react": "^17.0.0 || ^18.0.0",
- "react-dom": "^17.0.0 || ^18.0.0"
+ "@mui/material": "^6.1.8",
+ "@mui/material-pigment-css": "^6.1.8",
+ "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+ "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0"
},
"peerDependenciesMeta": {
"@emotion/react": {
@@ -706,42 +746,47 @@
"@emotion/styled": {
"optional": true
},
+ "@mui/material-pigment-css": {
+ "optional": true
+ },
"@types/react": {
"optional": true
}
}
},
"node_modules/@mui/material": {
- "version": "5.14.18",
- "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.18.tgz",
- "integrity": "sha512-y3UiR/JqrkF5xZR0sIKj6y7xwuEiweh9peiN3Zfjy1gXWXhz5wjlaLdoxFfKIEBUFfeQALxr/Y8avlHH+B9lpQ==",
- "dependencies": {
- "@babel/runtime": "^7.23.2",
- "@mui/base": "5.0.0-beta.24",
- "@mui/core-downloads-tracker": "^5.14.18",
- "@mui/system": "^5.14.18",
- "@mui/types": "^7.2.9",
- "@mui/utils": "^5.14.18",
- "@types/react-transition-group": "^4.4.8",
- "clsx": "^2.0.0",
- "csstype": "^3.1.2",
+ "version": "6.1.8",
+ "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.1.8.tgz",
+ "integrity": "sha512-QZdQFnXct+7NXIzHgT3qt+sQiO7HYGZU2vymP9Xl9tUMXEOA/S1mZMMb7+WGZrk5TzNlU/kP/85K0da5V1jXoQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.26.0",
+ "@mui/core-downloads-tracker": "^6.1.8",
+ "@mui/system": "^6.1.8",
+ "@mui/types": "^7.2.19",
+ "@mui/utils": "^6.1.8",
+ "@popperjs/core": "^2.11.8",
+ "@types/react-transition-group": "^4.4.11",
+ "clsx": "^2.1.1",
+ "csstype": "^3.1.3",
"prop-types": "^15.8.1",
- "react-is": "^18.2.0",
+ "react-is": "^18.3.1",
"react-transition-group": "^4.4.5"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=14.0.0"
},
"funding": {
"type": "opencollective",
- "url": "https://opencollective.com/mui"
+ "url": "https://opencollective.com/mui-org"
},
"peerDependencies": {
"@emotion/react": "^11.5.0",
"@emotion/styled": "^11.3.0",
- "@types/react": "^17.0.0 || ^18.0.0",
- "react": "^17.0.0 || ^18.0.0",
- "react-dom": "^17.0.0 || ^18.0.0"
+ "@mui/material-pigment-css": "^6.1.8",
+ "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+ "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0"
},
"peerDependenciesMeta": {
"@emotion/react": {
@@ -750,35 +795,75 @@
"@emotion/styled": {
"optional": true
},
+ "@mui/material-pigment-css": {
+ "optional": true
+ },
+ "@types/react": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@mui/material-nextjs": {
+ "version": "6.1.8",
+ "resolved": "https://registry.npmjs.org/@mui/material-nextjs/-/material-nextjs-6.1.8.tgz",
+ "integrity": "sha512-gSNZ+wCq38eX0rcIpsDCwUbWR2+z8/5mVv6+piwJc+ZByLFF8Xuq59vKx3m4IF8+AR8VIYzmfEzKOYxzS7p1aw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.26.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui-org"
+ },
+ "peerDependencies": {
+ "@emotion/cache": "^11.11.0",
+ "@emotion/react": "^11.11.4",
+ "@emotion/server": "^11.11.0",
+ "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+ "next": "^13.0.0 || ^14.0.0 || ^15.0.0",
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@emotion/cache": {
+ "optional": true
+ },
+ "@emotion/server": {
+ "optional": true
+ },
"@types/react": {
"optional": true
}
}
},
"node_modules/@mui/material/node_modules/react-is": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
- "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
+ "license": "MIT"
},
"node_modules/@mui/private-theming": {
- "version": "5.14.18",
- "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.18.tgz",
- "integrity": "sha512-WSgjqRlzfHU+2Rou3HlR2Gqfr4rZRsvFgataYO3qQ0/m6gShJN+lhVEvwEiJ9QYyVzMDvNpXZAcqp8Y2Vl+PAw==",
+ "version": "6.1.8",
+ "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.1.8.tgz",
+ "integrity": "sha512-TuKl7msynCNCVvhX3c0ef1sF0Qb3VHcPs8XOGB/8bdOGBr/ynmIG1yTMjZeiFQXk8yN9fzK/FDEKMFxILNn3wg==",
+ "license": "MIT",
"dependencies": {
- "@babel/runtime": "^7.23.2",
- "@mui/utils": "^5.14.18",
+ "@babel/runtime": "^7.26.0",
+ "@mui/utils": "^6.1.8",
"prop-types": "^15.8.1"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=14.0.0"
},
"funding": {
"type": "opencollective",
- "url": "https://opencollective.com/mui"
+ "url": "https://opencollective.com/mui-org"
},
"peerDependencies": {
- "@types/react": "^17.0.0 || ^18.0.0",
- "react": "^17.0.0 || ^18.0.0"
+ "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
},
"peerDependenciesMeta": {
"@types/react": {
@@ -787,26 +872,29 @@
}
},
"node_modules/@mui/styled-engine": {
- "version": "5.14.18",
- "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.18.tgz",
- "integrity": "sha512-pW8bpmF9uCB5FV2IPk6mfbQCjPI5vGI09NOLhtGXPeph/4xIfC3JdIX0TILU0WcTs3aFQqo6s2+1SFgIB9rCXA==",
- "dependencies": {
- "@babel/runtime": "^7.23.2",
- "@emotion/cache": "^11.11.0",
- "csstype": "^3.1.2",
+ "version": "6.1.8",
+ "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.1.8.tgz",
+ "integrity": "sha512-ZvEoT0U2nPLSLI+B4by4cVjaZnPT2f20f4JUPkyHdwLv65ZzuoHiTlwyhqX1Ch63p8bcJzKTHQVGisEoMK6PGA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.26.0",
+ "@emotion/cache": "^11.13.1",
+ "@emotion/serialize": "^1.3.2",
+ "@emotion/sheet": "^1.4.0",
+ "csstype": "^3.1.3",
"prop-types": "^15.8.1"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=14.0.0"
},
"funding": {
"type": "opencollective",
- "url": "https://opencollective.com/mui"
+ "url": "https://opencollective.com/mui-org"
},
"peerDependencies": {
"@emotion/react": "^11.4.1",
"@emotion/styled": "^11.3.0",
- "react": "^17.0.0 || ^18.0.0"
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
},
"peerDependenciesMeta": {
"@emotion/react": {
@@ -818,31 +906,32 @@
}
},
"node_modules/@mui/system": {
- "version": "5.14.18",
- "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.18.tgz",
- "integrity": "sha512-hSQQdb3KF72X4EN2hMEiv8EYJZSflfdd1TRaGPoR7CIAG347OxCslpBUwWngYobaxgKvq6xTrlIl+diaactVww==",
- "dependencies": {
- "@babel/runtime": "^7.23.2",
- "@mui/private-theming": "^5.14.18",
- "@mui/styled-engine": "^5.14.18",
- "@mui/types": "^7.2.9",
- "@mui/utils": "^5.14.18",
- "clsx": "^2.0.0",
- "csstype": "^3.1.2",
+ "version": "6.1.8",
+ "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.1.8.tgz",
+ "integrity": "sha512-i1kLfQoWxzFpXTBQIuPoA3xKnAnP3en4I2T8xIolovSolGQX5k8vGjw1JaydQS40td++cFsgCdEU458HDNTGUA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.26.0",
+ "@mui/private-theming": "^6.1.8",
+ "@mui/styled-engine": "^6.1.8",
+ "@mui/types": "^7.2.19",
+ "@mui/utils": "^6.1.8",
+ "clsx": "^2.1.1",
+ "csstype": "^3.1.3",
"prop-types": "^15.8.1"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=14.0.0"
},
"funding": {
"type": "opencollective",
- "url": "https://opencollective.com/mui"
+ "url": "https://opencollective.com/mui-org"
},
"peerDependencies": {
"@emotion/react": "^11.5.0",
"@emotion/styled": "^11.3.0",
- "@types/react": "^17.0.0 || ^18.0.0",
- "react": "^17.0.0 || ^18.0.0"
+ "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
},
"peerDependenciesMeta": {
"@emotion/react": {
@@ -857,11 +946,12 @@
}
},
"node_modules/@mui/types": {
- "version": "7.2.9",
- "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.9.tgz",
- "integrity": "sha512-k1lN/PolaRZfNsRdAqXtcR71sTnv3z/VCCGPxU8HfdftDkzi335MdJ6scZxvofMAd/K/9EbzCZTFBmlNpQVdCg==",
+ "version": "7.2.19",
+ "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.19.tgz",
+ "integrity": "sha512-6XpZEM/Q3epK9RN8ENoXuygnqUQxE+siN/6rGRi2iwJPgBUR25mphYQ9ZI87plGh58YoZ5pp40bFvKYOCDJ3tA==",
+ "license": "MIT",
"peerDependencies": {
- "@types/react": "^17.0.0 || ^18.0.0"
+ "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0"
},
"peerDependenciesMeta": {
"@types/react": {
@@ -870,25 +960,28 @@
}
},
"node_modules/@mui/utils": {
- "version": "5.14.18",
- "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.18.tgz",
- "integrity": "sha512-HZDRsJtEZ7WMSnrHV9uwScGze4wM/Y+u6pDVo+grUjt5yXzn+wI8QX/JwTHh9YSw/WpnUL80mJJjgCnWj2VrzQ==",
- "dependencies": {
- "@babel/runtime": "^7.23.2",
- "@types/prop-types": "^15.7.10",
+ "version": "6.1.8",
+ "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.1.8.tgz",
+ "integrity": "sha512-O2DWb1kz8hiANVcR7Z4gOB3SvPPsSQGUmStpyBDzde6dJIfBzgV9PbEQOBZd3EBsd1pB+Uv1z5LAJAbymmawrA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.26.0",
+ "@mui/types": "^7.2.19",
+ "@types/prop-types": "^15.7.13",
+ "clsx": "^2.1.1",
"prop-types": "^15.8.1",
- "react-is": "^18.2.0"
+ "react-is": "^18.3.1"
},
"engines": {
- "node": ">=12.0.0"
+ "node": ">=14.0.0"
},
"funding": {
"type": "opencollective",
- "url": "https://opencollective.com/mui"
+ "url": "https://opencollective.com/mui-org"
},
"peerDependencies": {
- "@types/react": "^17.0.0 || ^18.0.0",
- "react": "^17.0.0 || ^18.0.0"
+ "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
},
"peerDependenciesMeta": {
"@types/react": {
@@ -897,9 +990,90 @@
}
},
"node_modules/@mui/utils/node_modules/react-is": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
- "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
+ "license": "MIT"
+ },
+ "node_modules/@mui/x-charts": {
+ "version": "8.0.0-alpha.1",
+ "resolved": "https://registry.npmjs.org/@mui/x-charts/-/x-charts-8.0.0-alpha.1.tgz",
+ "integrity": "sha512-2T0DsRG+ZL4c7KAAH5LDH4VHVBDiIU9bypSlC18WlGdUL9wA1/95ce5EZGBb8ulAjr8huip6Q4d/quGUyq7muA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.26.0",
+ "@mui/utils": "^5.16.6 || ^6.0.0",
+ "@mui/x-charts-vendor": "8.0.0-alpha.1",
+ "@mui/x-internals": "8.0.0-alpha.1",
+ "@react-spring/rafz": "^9.7.5",
+ "@react-spring/web": "^9.7.5",
+ "clsx": "^2.1.1",
+ "prop-types": "^15.8.1",
+ "reselect": "^5.1.1",
+ "use-sync-external-store": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "@emotion/react": "^11.9.0",
+ "@emotion/styled": "^11.8.1",
+ "@mui/material": "^5.15.14 || ^6.0.0",
+ "@mui/system": "^5.15.14 || ^6.0.0",
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0",
+ "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@emotion/react": {
+ "optional": true
+ },
+ "@emotion/styled": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@mui/x-charts-vendor": {
+ "version": "8.0.0-alpha.1",
+ "resolved": "https://registry.npmjs.org/@mui/x-charts-vendor/-/x-charts-vendor-8.0.0-alpha.1.tgz",
+ "integrity": "sha512-peaO/GThGFz/tyxe67aBs91ayQhDSK/i/3kTu2D8tlATHhpq/RfZqbW9IFAvT+fVuqHucUYhmGK8KEzXYYsryA==",
+ "license": "MIT AND ISC",
+ "dependencies": {
+ "@babel/runtime": "^7.26.0",
+ "@types/d3-color": "^3.1.3",
+ "@types/d3-delaunay": "^6.0.4",
+ "@types/d3-interpolate": "^3.0.4",
+ "@types/d3-scale": "^4.0.8",
+ "@types/d3-shape": "^3.1.6",
+ "@types/d3-time": "^3.0.3",
+ "d3-color": "^3.1.0",
+ "d3-delaunay": "^6.0.4",
+ "d3-interpolate": "^3.0.1",
+ "d3-scale": "^4.0.2",
+ "d3-shape": "^3.2.0",
+ "d3-time": "^3.1.0",
+ "delaunator": "^5.0.1",
+ "robust-predicates": "^3.0.2"
+ }
+ },
+ "node_modules/@mui/x-internals": {
+ "version": "8.0.0-alpha.1",
+ "resolved": "https://registry.npmjs.org/@mui/x-internals/-/x-internals-8.0.0-alpha.1.tgz",
+ "integrity": "sha512-YbBRqymB9P/necx4UoH8dYXvaA63WvPdlCx4EV7UCUTkJohqCgC3gSleBWVT/snhKBa2hjxVr+zmlpEA5gyxLw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.26.0",
+ "@mui/utils": "^5.16.6 || ^6.0.0"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/mui-org"
+ },
+ "peerDependencies": {
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
+ }
},
"node_modules/@next/env": {
"version": "14.0.1",
@@ -1238,6 +1412,78 @@
"integrity": "sha512-UAJANliORe2V/s7yDMx5EKOCj2PIbwX7yusKckxMBDb+ozaQF31c3CBwnZW/ZEdhBoZjrKw8bQlqwZudWXmiKA==",
"dev": true
},
+ "node_modules/@react-spring/animated": {
+ "version": "9.7.5",
+ "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.7.5.tgz",
+ "integrity": "sha512-Tqrwz7pIlsSDITzxoLS3n/v/YCUHQdOIKtOJf4yL6kYVSDTSmVK1LI1Q3M/uu2Sx4X3pIWF3xLUhlsA6SPNTNg==",
+ "license": "MIT",
+ "dependencies": {
+ "@react-spring/shared": "~9.7.5",
+ "@react-spring/types": "~9.7.5"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@react-spring/core": {
+ "version": "9.7.5",
+ "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.7.5.tgz",
+ "integrity": "sha512-rmEqcxRcu7dWh7MnCcMXLvrf6/SDlSokLaLTxiPlAYi11nN3B5oiCUAblO72o+9z/87j2uzxa2Inm8UbLjXA+w==",
+ "license": "MIT",
+ "dependencies": {
+ "@react-spring/animated": "~9.7.5",
+ "@react-spring/shared": "~9.7.5",
+ "@react-spring/types": "~9.7.5"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/react-spring/donate"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@react-spring/rafz": {
+ "version": "9.7.5",
+ "resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.7.5.tgz",
+ "integrity": "sha512-5ZenDQMC48wjUzPAm1EtwQ5Ot3bLIAwwqP2w2owG5KoNdNHpEJV263nGhCeKKmuA3vG2zLLOdu3or6kuDjA6Aw==",
+ "license": "MIT"
+ },
+ "node_modules/@react-spring/shared": {
+ "version": "9.7.5",
+ "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.7.5.tgz",
+ "integrity": "sha512-wdtoJrhUeeyD/PP/zo+np2s1Z820Ohr/BbuVYv+3dVLW7WctoiN7std8rISoYoHpUXtbkpesSKuPIw/6U1w1Pw==",
+ "license": "MIT",
+ "dependencies": {
+ "@react-spring/rafz": "~9.7.5",
+ "@react-spring/types": "~9.7.5"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
+ "node_modules/@react-spring/types": {
+ "version": "9.7.5",
+ "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.7.5.tgz",
+ "integrity": "sha512-HVj7LrZ4ReHWBimBvu2SKND3cDVUPWKLqRTmWe/fNY6o1owGOX0cAHbdPDTMelgBlVbrTKrre6lFkhqGZErK/g==",
+ "license": "MIT"
+ },
+ "node_modules/@react-spring/web": {
+ "version": "9.7.5",
+ "resolved": "https://registry.npmjs.org/@react-spring/web/-/web-9.7.5.tgz",
+ "integrity": "sha512-lmvqGwpe+CSttsWNZVr+Dg62adtKhauGwLyGE/RRyZ8AAMLgb9x3NDMA5RMElXo+IMyTkPp7nxTB8ZQlmhb6JQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@react-spring/animated": "~9.7.5",
+ "@react-spring/core": "~9.7.5",
+ "@react-spring/shared": "~9.7.5",
+ "@react-spring/types": "~9.7.5"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
"node_modules/@rushstack/eslint-patch": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.5.1.tgz",
@@ -1258,6 +1504,57 @@
"tslib": "^2.4.0"
}
},
+ "node_modules/@types/d3-color": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz",
+ "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==",
+ "license": "MIT"
+ },
+ "node_modules/@types/d3-delaunay": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
+ "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==",
+ "license": "MIT"
+ },
+ "node_modules/@types/d3-interpolate": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz",
+ "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/d3-color": "*"
+ }
+ },
+ "node_modules/@types/d3-path": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz",
+ "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==",
+ "license": "MIT"
+ },
+ "node_modules/@types/d3-scale": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz",
+ "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/d3-time": "*"
+ }
+ },
+ "node_modules/@types/d3-shape": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz",
+ "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/d3-path": "*"
+ }
+ },
+ "node_modules/@types/d3-time": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz",
+ "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==",
+ "license": "MIT"
+ },
"node_modules/@types/istanbul-lib-coverage": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
@@ -1318,9 +1615,10 @@
"integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw=="
},
"node_modules/@types/prop-types": {
- "version": "15.7.11",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz",
- "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng=="
+ "version": "15.7.13",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz",
+ "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==",
+ "license": "MIT"
},
"node_modules/@types/react": {
"version": "18.2.43",
@@ -1342,9 +1640,10 @@
}
},
"node_modules/@types/react-transition-group": {
- "version": "4.4.9",
- "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.9.tgz",
- "integrity": "sha512-ZVNmWumUIh5NhH8aMD9CR2hdW0fNuYInlocZHaZ+dgk/1K49j1w/HoAuK1ki+pgscQrOFRTlXeoURtuzEkV3dg==",
+ "version": "4.4.11",
+ "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.11.tgz",
+ "integrity": "sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==",
+ "license": "MIT",
"dependencies": {
"@types/react": "*"
}
@@ -2016,9 +2315,10 @@
"integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
},
"node_modules/clsx": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz",
- "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
+ "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
+ "license": "MIT",
"engines": {
"node": ">=6"
}
@@ -2111,9 +2411,125 @@
}
},
"node_modules/csstype": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
- "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
+ "license": "MIT"
+ },
+ "node_modules/d3-array": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz",
+ "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==",
+ "license": "ISC",
+ "dependencies": {
+ "internmap": "1 - 2"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-color": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz",
+ "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-delaunay": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
+ "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==",
+ "license": "ISC",
+ "dependencies": {
+ "delaunator": "5"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-format": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz",
+ "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-interpolate": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz",
+ "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==",
+ "license": "ISC",
+ "dependencies": {
+ "d3-color": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-path": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz",
+ "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-scale": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz",
+ "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==",
+ "license": "ISC",
+ "dependencies": {
+ "d3-array": "2.10.0 - 3",
+ "d3-format": "1 - 3",
+ "d3-interpolate": "1.2.0 - 3",
+ "d3-time": "2.1.1 - 3",
+ "d3-time-format": "2 - 4"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-shape": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz",
+ "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==",
+ "license": "ISC",
+ "dependencies": {
+ "d3-path": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-time": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz",
+ "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==",
+ "license": "ISC",
+ "dependencies": {
+ "d3-array": "2 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-time-format": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz",
+ "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==",
+ "license": "ISC",
+ "dependencies": {
+ "d3-time": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
},
"node_modules/damerau-levenshtein": {
"version": "1.0.8",
@@ -2175,6 +2591,15 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/delaunator": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz",
+ "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==",
+ "license": "ISC",
+ "dependencies": {
+ "robust-predicates": "^3.0.2"
+ }
+ },
"node_modules/dequal": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
@@ -3344,6 +3769,15 @@
"node": ">= 0.4"
}
},
+ "node_modules/internmap": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz",
+ "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
"node_modules/is-array-buffer": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
@@ -4758,6 +5192,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/reselect": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz",
+ "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==",
+ "license": "MIT"
+ },
"node_modules/resolve": {
"version": "1.22.8",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
@@ -4816,6 +5256,12 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/robust-predicates": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz",
+ "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==",
+ "license": "Unlicense"
+ },
"node_modules/run-parallel": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -5498,6 +5944,15 @@
"punycode": "^2.1.0"
}
},
+ "node_modules/use-sync-external-store": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz",
+ "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+ }
+ },
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -5794,9 +6249,9 @@
}
},
"@babel/runtime": {
- "version": "7.24.0",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.0.tgz",
- "integrity": "sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==",
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz",
+ "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==",
"requires": {
"regenerator-runtime": "^0.14.0"
}
@@ -5812,39 +6267,53 @@
}
},
"@emotion/babel-plugin": {
- "version": "11.11.0",
- "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz",
- "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==",
+ "version": "11.13.5",
+ "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz",
+ "integrity": "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==",
"requires": {
"@babel/helper-module-imports": "^7.16.7",
"@babel/runtime": "^7.18.3",
- "@emotion/hash": "^0.9.1",
- "@emotion/memoize": "^0.8.1",
- "@emotion/serialize": "^1.1.2",
+ "@emotion/hash": "^0.9.2",
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/serialize": "^1.3.3",
"babel-plugin-macros": "^3.1.0",
"convert-source-map": "^1.5.0",
"escape-string-regexp": "^4.0.0",
"find-root": "^1.1.0",
"source-map": "^0.5.7",
"stylis": "4.2.0"
+ },
+ "dependencies": {
+ "@emotion/memoize": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz",
+ "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ=="
+ }
}
},
"@emotion/cache": {
- "version": "11.11.0",
- "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz",
- "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==",
- "requires": {
- "@emotion/memoize": "^0.8.1",
- "@emotion/sheet": "^1.2.2",
- "@emotion/utils": "^1.2.1",
- "@emotion/weak-memoize": "^0.3.1",
+ "version": "11.13.5",
+ "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.5.tgz",
+ "integrity": "sha512-Z3xbtJ+UcK76eWkagZ1onvn/wAVb1GOMuR15s30Fm2wrMgC7jzpnO2JZXr4eujTTqoQFUrZIw/rT0c6Zzjca1g==",
+ "requires": {
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/sheet": "^1.4.0",
+ "@emotion/utils": "^1.4.2",
+ "@emotion/weak-memoize": "^0.4.0",
"stylis": "4.2.0"
+ },
+ "dependencies": {
+ "@emotion/memoize": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz",
+ "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ=="
+ }
}
},
"@emotion/hash": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz",
- "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ=="
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz",
+ "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g=="
},
"@emotion/is-prop-valid": {
"version": "1.2.1",
@@ -5860,36 +6329,43 @@
"integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA=="
},
"@emotion/react": {
- "version": "11.11.1",
- "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz",
- "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==",
+ "version": "11.13.5",
+ "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.5.tgz",
+ "integrity": "sha512-6zeCUxUH+EPF1s+YF/2hPVODeV/7V07YU5x+2tfuRL8MdW6rv5vb2+CBEGTGwBdux0OIERcOS+RzxeK80k2DsQ==",
"requires": {
"@babel/runtime": "^7.18.3",
- "@emotion/babel-plugin": "^11.11.0",
- "@emotion/cache": "^11.11.0",
- "@emotion/serialize": "^1.1.2",
- "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1",
- "@emotion/utils": "^1.2.1",
- "@emotion/weak-memoize": "^0.3.1",
+ "@emotion/babel-plugin": "^11.13.5",
+ "@emotion/cache": "^11.13.5",
+ "@emotion/serialize": "^1.3.3",
+ "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0",
+ "@emotion/utils": "^1.4.2",
+ "@emotion/weak-memoize": "^0.4.0",
"hoist-non-react-statics": "^3.3.1"
}
},
"@emotion/serialize": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz",
- "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==",
- "requires": {
- "@emotion/hash": "^0.9.1",
- "@emotion/memoize": "^0.8.1",
- "@emotion/unitless": "^0.8.1",
- "@emotion/utils": "^1.2.1",
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz",
+ "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==",
+ "requires": {
+ "@emotion/hash": "^0.9.2",
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/unitless": "^0.10.0",
+ "@emotion/utils": "^1.4.2",
"csstype": "^3.0.2"
+ },
+ "dependencies": {
+ "@emotion/memoize": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz",
+ "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ=="
+ }
}
},
"@emotion/sheet": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz",
- "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA=="
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz",
+ "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg=="
},
"@emotion/styled": {
"version": "11.11.0",
@@ -5905,25 +6381,25 @@
}
},
"@emotion/unitless": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz",
- "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ=="
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz",
+ "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg=="
},
"@emotion/use-insertion-effect-with-fallbacks": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz",
- "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz",
+ "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==",
"requires": {}
},
"@emotion/utils": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz",
- "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg=="
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.2.tgz",
+ "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA=="
},
"@emotion/weak-memoize": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz",
- "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww=="
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz",
+ "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg=="
},
"@eslint-community/eslint-utils": {
"version": "4.4.0",
@@ -5964,34 +6440,34 @@
"dev": true
},
"@floating-ui/core": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz",
- "integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==",
+ "version": "1.6.8",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz",
+ "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==",
"requires": {
- "@floating-ui/utils": "^0.1.3"
+ "@floating-ui/utils": "^0.2.8"
}
},
"@floating-ui/dom": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz",
- "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==",
+ "version": "1.6.12",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.12.tgz",
+ "integrity": "sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==",
"requires": {
- "@floating-ui/core": "^1.4.2",
- "@floating-ui/utils": "^0.1.3"
+ "@floating-ui/core": "^1.6.0",
+ "@floating-ui/utils": "^0.2.8"
}
},
"@floating-ui/react-dom": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.4.tgz",
- "integrity": "sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz",
+ "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==",
"requires": {
- "@floating-ui/dom": "^1.5.1"
+ "@floating-ui/dom": "^1.0.0"
}
},
"@floating-ui/utils": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz",
- "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A=="
+ "version": "0.2.8",
+ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz",
+ "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig=="
},
"@humanwhocodes/config-array": {
"version": "0.11.13",
@@ -6088,132 +6564,192 @@
}
},
"@mui/base": {
- "version": "5.0.0-beta.24",
- "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.24.tgz",
- "integrity": "sha512-bKt2pUADHGQtqWDZ8nvL2Lvg2GNJyd/ZUgZAJoYzRgmnxBL9j36MSlS3+exEdYkikcnvVafcBtD904RypFKb0w==",
- "requires": {
- "@babel/runtime": "^7.23.2",
- "@floating-ui/react-dom": "^2.0.4",
- "@mui/types": "^7.2.9",
- "@mui/utils": "^5.14.18",
+ "version": "5.0.0-beta.62",
+ "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.62.tgz",
+ "integrity": "sha512-TzJLCNlrMkSU4bTCdTT+TVUiGx4sjZLhH673UV6YN+rNNP8wJpkWfRSvjDB5HcbH2T0lUamnz643ZnV+8IiMjw==",
+ "requires": {
+ "@babel/runtime": "^7.26.0",
+ "@floating-ui/react-dom": "^2.1.1",
+ "@mui/types": "^7.2.19",
+ "@mui/utils": "^6.1.8",
"@popperjs/core": "^2.11.8",
- "clsx": "^2.0.0",
+ "clsx": "^2.1.1",
"prop-types": "^15.8.1"
}
},
"@mui/core-downloads-tracker": {
- "version": "5.14.18",
- "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.18.tgz",
- "integrity": "sha512-yFpF35fEVDV81nVktu0BE9qn2dD/chs7PsQhlyaV3EnTeZi9RZBuvoEfRym1/jmhJ2tcfeWXiRuHG942mQXJJQ=="
+ "version": "6.1.8",
+ "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.1.8.tgz",
+ "integrity": "sha512-TGAvzwUg9hybDacwfIGFjI2bXYXrIqky+vMfaeay8rvT56/PNAlvIDUJ54kpT5KRc9AWAihOvtDI7/LJOThOmQ=="
},
"@mui/icons-material": {
- "version": "5.15.11",
- "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.15.11.tgz",
- "integrity": "sha512-R5ZoQqnKpd+5Ew7mBygTFLxgYsQHPhgR3TDXSgIHYIjGzYuyPLmGLSdcPUoMdi6kxiYqHlpPj4NJxlbaFD0UHA==",
+ "version": "6.1.8",
+ "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.1.8.tgz",
+ "integrity": "sha512-6frsXcf1TcJKWevWwRup6V4L8lzI33cbHcAjT83YLgKw0vYRZKY0kjMI9fhrJZdRWXgFFgKKvEv3GjoxbqFF7A==",
"requires": {
- "@babel/runtime": "^7.23.9"
+ "@babel/runtime": "^7.26.0"
}
},
"@mui/lab": {
- "version": "5.0.0-alpha.153",
- "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.153.tgz",
- "integrity": "sha512-vogVniN5JC7ltqPpPhIGYVImnvu0PnE1UbtFvbzVs3ldt3obWJ5XrhYS/OEV6H2/9dey3nUNU6i36FG1yreFDA==",
- "requires": {
- "@babel/runtime": "^7.23.2",
- "@mui/base": "5.0.0-beta.24",
- "@mui/system": "^5.14.18",
- "@mui/types": "^7.2.9",
- "@mui/utils": "^5.14.18",
- "clsx": "^2.0.0",
+ "version": "6.0.0-beta.16",
+ "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-6.0.0-beta.16.tgz",
+ "integrity": "sha512-YFeKREMMCiUhp4dGXd6Y/7N3BLepys9bM6xi4aF0WTZOvfl1ksDXPzuXPGiiiIuMgQFJeyN5iUnS1iPu3wH+kQ==",
+ "requires": {
+ "@babel/runtime": "^7.26.0",
+ "@mui/base": "5.0.0-beta.62",
+ "@mui/system": "^6.1.8",
+ "@mui/types": "^7.2.19",
+ "@mui/utils": "^6.1.8",
+ "clsx": "^2.1.1",
"prop-types": "^15.8.1"
}
},
"@mui/material": {
- "version": "5.14.18",
- "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.18.tgz",
- "integrity": "sha512-y3UiR/JqrkF5xZR0sIKj6y7xwuEiweh9peiN3Zfjy1gXWXhz5wjlaLdoxFfKIEBUFfeQALxr/Y8avlHH+B9lpQ==",
- "requires": {
- "@babel/runtime": "^7.23.2",
- "@mui/base": "5.0.0-beta.24",
- "@mui/core-downloads-tracker": "^5.14.18",
- "@mui/system": "^5.14.18",
- "@mui/types": "^7.2.9",
- "@mui/utils": "^5.14.18",
- "@types/react-transition-group": "^4.4.8",
- "clsx": "^2.0.0",
- "csstype": "^3.1.2",
+ "version": "6.1.8",
+ "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.1.8.tgz",
+ "integrity": "sha512-QZdQFnXct+7NXIzHgT3qt+sQiO7HYGZU2vymP9Xl9tUMXEOA/S1mZMMb7+WGZrk5TzNlU/kP/85K0da5V1jXoQ==",
+ "requires": {
+ "@babel/runtime": "^7.26.0",
+ "@mui/core-downloads-tracker": "^6.1.8",
+ "@mui/system": "^6.1.8",
+ "@mui/types": "^7.2.19",
+ "@mui/utils": "^6.1.8",
+ "@popperjs/core": "^2.11.8",
+ "@types/react-transition-group": "^4.4.11",
+ "clsx": "^2.1.1",
+ "csstype": "^3.1.3",
"prop-types": "^15.8.1",
- "react-is": "^18.2.0",
+ "react-is": "^18.3.1",
"react-transition-group": "^4.4.5"
},
"dependencies": {
"react-is": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
- "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="
}
}
},
+ "@mui/material-nextjs": {
+ "version": "6.1.8",
+ "resolved": "https://registry.npmjs.org/@mui/material-nextjs/-/material-nextjs-6.1.8.tgz",
+ "integrity": "sha512-gSNZ+wCq38eX0rcIpsDCwUbWR2+z8/5mVv6+piwJc+ZByLFF8Xuq59vKx3m4IF8+AR8VIYzmfEzKOYxzS7p1aw==",
+ "requires": {
+ "@babel/runtime": "^7.26.0"
+ }
+ },
"@mui/private-theming": {
- "version": "5.14.18",
- "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.18.tgz",
- "integrity": "sha512-WSgjqRlzfHU+2Rou3HlR2Gqfr4rZRsvFgataYO3qQ0/m6gShJN+lhVEvwEiJ9QYyVzMDvNpXZAcqp8Y2Vl+PAw==",
+ "version": "6.1.8",
+ "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.1.8.tgz",
+ "integrity": "sha512-TuKl7msynCNCVvhX3c0ef1sF0Qb3VHcPs8XOGB/8bdOGBr/ynmIG1yTMjZeiFQXk8yN9fzK/FDEKMFxILNn3wg==",
"requires": {
- "@babel/runtime": "^7.23.2",
- "@mui/utils": "^5.14.18",
+ "@babel/runtime": "^7.26.0",
+ "@mui/utils": "^6.1.8",
"prop-types": "^15.8.1"
}
},
"@mui/styled-engine": {
- "version": "5.14.18",
- "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.18.tgz",
- "integrity": "sha512-pW8bpmF9uCB5FV2IPk6mfbQCjPI5vGI09NOLhtGXPeph/4xIfC3JdIX0TILU0WcTs3aFQqo6s2+1SFgIB9rCXA==",
- "requires": {
- "@babel/runtime": "^7.23.2",
- "@emotion/cache": "^11.11.0",
- "csstype": "^3.1.2",
+ "version": "6.1.8",
+ "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.1.8.tgz",
+ "integrity": "sha512-ZvEoT0U2nPLSLI+B4by4cVjaZnPT2f20f4JUPkyHdwLv65ZzuoHiTlwyhqX1Ch63p8bcJzKTHQVGisEoMK6PGA==",
+ "requires": {
+ "@babel/runtime": "^7.26.0",
+ "@emotion/cache": "^11.13.1",
+ "@emotion/serialize": "^1.3.2",
+ "@emotion/sheet": "^1.4.0",
+ "csstype": "^3.1.3",
"prop-types": "^15.8.1"
}
},
"@mui/system": {
- "version": "5.14.18",
- "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.18.tgz",
- "integrity": "sha512-hSQQdb3KF72X4EN2hMEiv8EYJZSflfdd1TRaGPoR7CIAG347OxCslpBUwWngYobaxgKvq6xTrlIl+diaactVww==",
- "requires": {
- "@babel/runtime": "^7.23.2",
- "@mui/private-theming": "^5.14.18",
- "@mui/styled-engine": "^5.14.18",
- "@mui/types": "^7.2.9",
- "@mui/utils": "^5.14.18",
- "clsx": "^2.0.0",
- "csstype": "^3.1.2",
+ "version": "6.1.8",
+ "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.1.8.tgz",
+ "integrity": "sha512-i1kLfQoWxzFpXTBQIuPoA3xKnAnP3en4I2T8xIolovSolGQX5k8vGjw1JaydQS40td++cFsgCdEU458HDNTGUA==",
+ "requires": {
+ "@babel/runtime": "^7.26.0",
+ "@mui/private-theming": "^6.1.8",
+ "@mui/styled-engine": "^6.1.8",
+ "@mui/types": "^7.2.19",
+ "@mui/utils": "^6.1.8",
+ "clsx": "^2.1.1",
+ "csstype": "^3.1.3",
"prop-types": "^15.8.1"
}
},
"@mui/types": {
- "version": "7.2.9",
- "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.9.tgz",
- "integrity": "sha512-k1lN/PolaRZfNsRdAqXtcR71sTnv3z/VCCGPxU8HfdftDkzi335MdJ6scZxvofMAd/K/9EbzCZTFBmlNpQVdCg==",
+ "version": "7.2.19",
+ "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.19.tgz",
+ "integrity": "sha512-6XpZEM/Q3epK9RN8ENoXuygnqUQxE+siN/6rGRi2iwJPgBUR25mphYQ9ZI87plGh58YoZ5pp40bFvKYOCDJ3tA==",
"requires": {}
},
"@mui/utils": {
- "version": "5.14.18",
- "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.18.tgz",
- "integrity": "sha512-HZDRsJtEZ7WMSnrHV9uwScGze4wM/Y+u6pDVo+grUjt5yXzn+wI8QX/JwTHh9YSw/WpnUL80mJJjgCnWj2VrzQ==",
- "requires": {
- "@babel/runtime": "^7.23.2",
- "@types/prop-types": "^15.7.10",
+ "version": "6.1.8",
+ "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.1.8.tgz",
+ "integrity": "sha512-O2DWb1kz8hiANVcR7Z4gOB3SvPPsSQGUmStpyBDzde6dJIfBzgV9PbEQOBZd3EBsd1pB+Uv1z5LAJAbymmawrA==",
+ "requires": {
+ "@babel/runtime": "^7.26.0",
+ "@mui/types": "^7.2.19",
+ "@types/prop-types": "^15.7.13",
+ "clsx": "^2.1.1",
"prop-types": "^15.8.1",
- "react-is": "^18.2.0"
+ "react-is": "^18.3.1"
},
"dependencies": {
"react-is": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
- "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg=="
}
}
},
+ "@mui/x-charts": {
+ "version": "8.0.0-alpha.1",
+ "resolved": "https://registry.npmjs.org/@mui/x-charts/-/x-charts-8.0.0-alpha.1.tgz",
+ "integrity": "sha512-2T0DsRG+ZL4c7KAAH5LDH4VHVBDiIU9bypSlC18WlGdUL9wA1/95ce5EZGBb8ulAjr8huip6Q4d/quGUyq7muA==",
+ "requires": {
+ "@babel/runtime": "^7.26.0",
+ "@mui/utils": "^5.16.6 || ^6.0.0",
+ "@mui/x-charts-vendor": "8.0.0-alpha.1",
+ "@mui/x-internals": "8.0.0-alpha.1",
+ "@react-spring/rafz": "^9.7.5",
+ "@react-spring/web": "^9.7.5",
+ "clsx": "^2.1.1",
+ "prop-types": "^15.8.1",
+ "reselect": "^5.1.1",
+ "use-sync-external-store": "^1.0.0"
+ }
+ },
+ "@mui/x-charts-vendor": {
+ "version": "8.0.0-alpha.1",
+ "resolved": "https://registry.npmjs.org/@mui/x-charts-vendor/-/x-charts-vendor-8.0.0-alpha.1.tgz",
+ "integrity": "sha512-peaO/GThGFz/tyxe67aBs91ayQhDSK/i/3kTu2D8tlATHhpq/RfZqbW9IFAvT+fVuqHucUYhmGK8KEzXYYsryA==",
+ "requires": {
+ "@babel/runtime": "^7.26.0",
+ "@types/d3-color": "^3.1.3",
+ "@types/d3-delaunay": "^6.0.4",
+ "@types/d3-interpolate": "^3.0.4",
+ "@types/d3-scale": "^4.0.8",
+ "@types/d3-shape": "^3.1.6",
+ "@types/d3-time": "^3.0.3",
+ "d3-color": "^3.1.0",
+ "d3-delaunay": "^6.0.4",
+ "d3-interpolate": "^3.0.1",
+ "d3-scale": "^4.0.2",
+ "d3-shape": "^3.2.0",
+ "d3-time": "^3.1.0",
+ "delaunator": "^5.0.1",
+ "robust-predicates": "^3.0.2"
+ }
+ },
+ "@mui/x-internals": {
+ "version": "8.0.0-alpha.1",
+ "resolved": "https://registry.npmjs.org/@mui/x-internals/-/x-internals-8.0.0-alpha.1.tgz",
+ "integrity": "sha512-YbBRqymB9P/necx4UoH8dYXvaA63WvPdlCx4EV7UCUTkJohqCgC3gSleBWVT/snhKBa2hjxVr+zmlpEA5gyxLw==",
+ "requires": {
+ "@babel/runtime": "^7.26.0",
+ "@mui/utils": "^5.16.6 || ^6.0.0"
+ }
+ },
"@next/env": {
"version": "14.0.1",
"resolved": "https://registry.npmjs.org/@next/env/-/env-14.0.1.tgz",
@@ -6448,6 +6984,55 @@
"integrity": "sha512-UAJANliORe2V/s7yDMx5EKOCj2PIbwX7yusKckxMBDb+ozaQF31c3CBwnZW/ZEdhBoZjrKw8bQlqwZudWXmiKA==",
"dev": true
},
+ "@react-spring/animated": {
+ "version": "9.7.5",
+ "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.7.5.tgz",
+ "integrity": "sha512-Tqrwz7pIlsSDITzxoLS3n/v/YCUHQdOIKtOJf4yL6kYVSDTSmVK1LI1Q3M/uu2Sx4X3pIWF3xLUhlsA6SPNTNg==",
+ "requires": {
+ "@react-spring/shared": "~9.7.5",
+ "@react-spring/types": "~9.7.5"
+ }
+ },
+ "@react-spring/core": {
+ "version": "9.7.5",
+ "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.7.5.tgz",
+ "integrity": "sha512-rmEqcxRcu7dWh7MnCcMXLvrf6/SDlSokLaLTxiPlAYi11nN3B5oiCUAblO72o+9z/87j2uzxa2Inm8UbLjXA+w==",
+ "requires": {
+ "@react-spring/animated": "~9.7.5",
+ "@react-spring/shared": "~9.7.5",
+ "@react-spring/types": "~9.7.5"
+ }
+ },
+ "@react-spring/rafz": {
+ "version": "9.7.5",
+ "resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.7.5.tgz",
+ "integrity": "sha512-5ZenDQMC48wjUzPAm1EtwQ5Ot3bLIAwwqP2w2owG5KoNdNHpEJV263nGhCeKKmuA3vG2zLLOdu3or6kuDjA6Aw=="
+ },
+ "@react-spring/shared": {
+ "version": "9.7.5",
+ "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.7.5.tgz",
+ "integrity": "sha512-wdtoJrhUeeyD/PP/zo+np2s1Z820Ohr/BbuVYv+3dVLW7WctoiN7std8rISoYoHpUXtbkpesSKuPIw/6U1w1Pw==",
+ "requires": {
+ "@react-spring/rafz": "~9.7.5",
+ "@react-spring/types": "~9.7.5"
+ }
+ },
+ "@react-spring/types": {
+ "version": "9.7.5",
+ "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.7.5.tgz",
+ "integrity": "sha512-HVj7LrZ4ReHWBimBvu2SKND3cDVUPWKLqRTmWe/fNY6o1owGOX0cAHbdPDTMelgBlVbrTKrre6lFkhqGZErK/g=="
+ },
+ "@react-spring/web": {
+ "version": "9.7.5",
+ "resolved": "https://registry.npmjs.org/@react-spring/web/-/web-9.7.5.tgz",
+ "integrity": "sha512-lmvqGwpe+CSttsWNZVr+Dg62adtKhauGwLyGE/RRyZ8AAMLgb9x3NDMA5RMElXo+IMyTkPp7nxTB8ZQlmhb6JQ==",
+ "requires": {
+ "@react-spring/animated": "~9.7.5",
+ "@react-spring/core": "~9.7.5",
+ "@react-spring/shared": "~9.7.5",
+ "@react-spring/types": "~9.7.5"
+ }
+ },
"@rushstack/eslint-patch": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.5.1.tgz",
@@ -6468,6 +7053,50 @@
"tslib": "^2.4.0"
}
},
+ "@types/d3-color": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz",
+ "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A=="
+ },
+ "@types/d3-delaunay": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
+ "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw=="
+ },
+ "@types/d3-interpolate": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz",
+ "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==",
+ "requires": {
+ "@types/d3-color": "*"
+ }
+ },
+ "@types/d3-path": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz",
+ "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ=="
+ },
+ "@types/d3-scale": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz",
+ "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==",
+ "requires": {
+ "@types/d3-time": "*"
+ }
+ },
+ "@types/d3-shape": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz",
+ "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==",
+ "requires": {
+ "@types/d3-path": "*"
+ }
+ },
+ "@types/d3-time": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz",
+ "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw=="
+ },
"@types/istanbul-lib-coverage": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
@@ -6528,9 +7157,9 @@
"integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw=="
},
"@types/prop-types": {
- "version": "15.7.11",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz",
- "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng=="
+ "version": "15.7.13",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz",
+ "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA=="
},
"@types/react": {
"version": "18.2.43",
@@ -6552,9 +7181,9 @@
}
},
"@types/react-transition-group": {
- "version": "4.4.9",
- "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.9.tgz",
- "integrity": "sha512-ZVNmWumUIh5NhH8aMD9CR2hdW0fNuYInlocZHaZ+dgk/1K49j1w/HoAuK1ki+pgscQrOFRTlXeoURtuzEkV3dg==",
+ "version": "4.4.11",
+ "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.11.tgz",
+ "integrity": "sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==",
"requires": {
"@types/react": "*"
}
@@ -7003,9 +7632,9 @@
"integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
},
"clsx": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz",
- "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q=="
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
+ "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="
},
"color-convert": {
"version": "2.0.1",
@@ -7076,9 +7705,84 @@
"dev": true
},
"csstype": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
- "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
+ },
+ "d3-array": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz",
+ "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==",
+ "requires": {
+ "internmap": "1 - 2"
+ }
+ },
+ "d3-color": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz",
+ "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA=="
+ },
+ "d3-delaunay": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
+ "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==",
+ "requires": {
+ "delaunator": "5"
+ }
+ },
+ "d3-format": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz",
+ "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA=="
+ },
+ "d3-interpolate": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz",
+ "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==",
+ "requires": {
+ "d3-color": "1 - 3"
+ }
+ },
+ "d3-path": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz",
+ "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ=="
+ },
+ "d3-scale": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz",
+ "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==",
+ "requires": {
+ "d3-array": "2.10.0 - 3",
+ "d3-format": "1 - 3",
+ "d3-interpolate": "1.2.0 - 3",
+ "d3-time": "2.1.1 - 3",
+ "d3-time-format": "2 - 4"
+ }
+ },
+ "d3-shape": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz",
+ "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==",
+ "requires": {
+ "d3-path": "^3.1.0"
+ }
+ },
+ "d3-time": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz",
+ "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==",
+ "requires": {
+ "d3-array": "2 - 3"
+ }
+ },
+ "d3-time-format": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz",
+ "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==",
+ "requires": {
+ "d3-time": "1 - 3"
+ }
},
"damerau-levenshtein": {
"version": "1.0.8",
@@ -7123,6 +7827,14 @@
"object-keys": "^1.1.1"
}
},
+ "delaunator": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz",
+ "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==",
+ "requires": {
+ "robust-predicates": "^3.0.2"
+ }
+ },
"dequal": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
@@ -8013,6 +8725,11 @@
"side-channel": "^1.0.4"
}
},
+ "internmap": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz",
+ "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg=="
+ },
"is-array-buffer": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
@@ -8999,6 +9716,11 @@
"set-function-name": "^2.0.0"
}
},
+ "reselect": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz",
+ "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w=="
+ },
"resolve": {
"version": "1.22.8",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
@@ -9035,6 +9757,11 @@
"glob": "^7.1.3"
}
},
+ "robust-predicates": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz",
+ "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg=="
+ },
"run-parallel": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@@ -9515,6 +10242,12 @@
"punycode": "^2.1.0"
}
},
+ "use-sync-external-store": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz",
+ "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==",
+ "requires": {}
+ },
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
diff --git a/package.json b/package.json
index 0f49bee..41f2a14 100644
--- a/package.json
+++ b/package.json
@@ -13,9 +13,11 @@
"dependencies": {
"@emotion/react": "^11.11.1",
"@emotion/styled": "^11.11.0",
- "@mui/icons-material": "^5.14.19",
- "@mui/lab": "^5.0.0-alpha.153",
- "@mui/material": "^5.14.18",
+ "@mui/icons-material": "^6.1.8",
+ "@mui/lab": "^6.0.0-beta.16",
+ "@mui/material": "^6.1.8",
+ "@mui/material-nextjs": "^6.1.8",
+ "@mui/x-charts": "8.0.0-alpha.1",
"@prisma/client": "^5.16.1",
"@types/lodash": "^4.17.4",
"dotenv": "^16.3.1",
diff --git a/prisma/models/acteur.prisma b/prisma/models/acteur.prisma
index 51ea1ae..8be6068 100644
--- a/prisma/models/acteur.prisma
+++ b/prisma/models/acteur.prisma
@@ -1,49 +1,58 @@
/// Personne physique ayant été élue ou nommée dans un organe.
model Acteur {
/// Identifiant unique.
- uid String @id
+ uid String @id
/// Jeu de données de provenance (numéro de législature)
- dataset Int
+ dataset Int
/// Prénom.
- prenom String
+ prenom String
/// Nom.
- nom String
+ nom String
/// Civilité.
- civ String
+ civ String
/// Date de naissance.
- dateNais DateTime?
+ dateNais DateTime?
/// Date de décès.
- dateDeces DateTime?
+ dateDeces DateTime?
/// Ville de naissance.
- villeNais String?
+ villeNais String?
/// Département de naissance.
- depNais String?
+ depNais String?
/// Pays de naissance.
- paysNais String?
+ paysNais String?
/// Profession.
- profession String?
+ profession String?
/// Catégorie socio professionelle de l'INSEE.
- catSocPro String?
+ catSocPro String?
/// Famille socio professionelle de l'INSEE.
- famSocPro String?
- slug String
+ famSocPro String?
+ slug String
/// URL de la déclaration d'intérêt de l'acteur sur le site de la Haute Autorité pour la Transparence dans la Vie Publique.
- uriHatvp String?
+ uriHatvp String?
/// Deputé en poste actuellement.
- actif Boolean? @default(false)
+ actif Boolean? @default(false)
/// Groupe parlementaire du député.
- groupeParlementaireUid String?
+ groupeParlementaireUid String?
/// Mandat principal du député, c'est à dire s'il est actif ou non.
- mandatPrincipalUid String? @unique
+ mandatPrincipalUid String? @unique
/// Organe de circonscription
- circonscriptionUid String?
+ circonscriptionUid String?
+ /// Place dans l'hémicycle de l'acteur
+ placeHemicycle String?
/// Identifiant unique de la commission permanente et active de cet acteur.
- commissionPermanenteRefUid String?
+ commissionPermanenteRefUid String?
/// URL de l'image de l'acteur
- urlImage String?
+ urlImage String?
/// Chambre du parlementaire (assemblée ou sénat)
- chambre String?
- compteTwitter String?
+ chambre String?
+ compteTwitter String?
+ /// Nombre d'amendements pour cet acteur.
+ nombreAmendements Int @default(0)
+ /// Nombre d'interventions pour cet acteur.
+ nombreInterventions Int @default(0)
+ /// Nombre de questions pour cet acteur.
+ nombreQuestions Int @default(0)
+
groupeParlementaire Organe? @relation("Acteur_GroupeParlementaire", fields: [groupeParlementaireUid], references: [uid])
mandatPrincipal Mandat? @relation("Acteur_MandatPrincipal", fields: [mandatPrincipalUid], references: [uid])
circonscription Organe? @relation("Acteur_Circonscription", fields: [circonscriptionUid], references: [uid])
@@ -78,21 +87,8 @@ model Acteur {
dossiers Dossier[]
vecteurRecherche Unsupported("tsvector")? @default(dbgenerated("to_tsvector('french'::regconfig, ((immutable_unaccent((COALESCE(prenom, ''::text))::character varying) || ' '::text) || immutable_unaccent((COALESCE(nom, ''::text))::character varying)))"))
- /// Nombre d'amendements pour cet acteur.
- nombreAmendements Int @default(0)
-
- /// Nombre d'interventions pour cet acteur.
- nombreInterventions Int @default(0)
-
- /// Nombre de questions pour cet acteur.
- nombreQuestions Int @default(0)
-
- /// Lois présentées au nom de cet acteur (e.g. un premier ministre).
- loisPortees TexteLoi[] @relation("loisPortees")
- /// Lois présentées par cet acteur.
- loisPresentees TexteLoi[] @relation("loisPresentees")
- /// Lois signées par cet acteur.
- loisSignees TexteLoi[] @relation("loisSignees")
+ /// Statistiques d'activité agrégé par semaine.
+ statistiquesHebdomadaire StatistiqueHebdomadaire[]
@@index([dataset])
@@index([vecteurRecherche], type: Gin)
@@ -143,3 +139,29 @@ model AdressePostale {
@@index([dataset])
@@index([acteurRefUid])
}
+
+/// Statistiques des deputes par semaine de legislature.
+model StatistiqueHebdomadaire {
+ /// L'index de la semain depuis le debut de la legislature
+ semaineIndex Int
+ /// Jeu de données de provenance (numéro de législature)
+ dataset Int
+ /// L'acteur concerné par la statistique. Ou la statistique utilisée ("mediane" ou "max")
+ acteurUid String
+ /// Nombre d'occurence dans la semaine.
+ valeur Int
+ /// Type d'occurence compté.
+ type StateHebdoType
+
+ acteur Acteur? @relation(fields: [acteurUid], references: [uid], onDelete: Cascade)
+
+ @@id([semaineIndex, dataset, acteurUid, type])
+}
+
+enum StateHebdoType {
+ /// Presence detecté en scéance.
+ presenceDetectee
+
+ /// Présence notée en commission.
+ presenceCommision
+}
diff --git a/prisma/models/agenda.prisma b/prisma/models/agenda.prisma
index ee8eb29..3b10939 100644
--- a/prisma/models/agenda.prisma
+++ b/prisma/models/agenda.prisma
@@ -23,6 +23,8 @@ model Agenda {
visioConference Boolean?
/// Identifiant unique du compte rendu d'une séance publique. Uniquement si xsiType égal à 'seance_type'.
compteRenduRefUid String?
+ /// Vrai si le compte-rendu est disponible.
+ compteRenduDisponible Boolean?
/// Date à laquelle la séance publique a lieu.
dateSeance DateTime?
/// Le contenu de ce champ n'est pas défini.
@@ -60,9 +62,8 @@ model Agenda {
organeReunionRefUid String?
/// Organes à l'initiative de la réunion.
organeDemandeurRefUid String?
-
/// Vrai si la réunion contient (au moins) une audition.
- contientAudition Boolean @default(false)
+ contientAudition Boolean @default(false)
vecteurRecherche Unsupported("tsvector")? @default(dbgenerated("to_tsvector('french'::regconfig, immutable_unaccent((((COALESCE(immutable_array_to_string(\"convocationOdj\", ' '::text), ''::text) || ' '::text) || immutable_unaccent((COALESCE(immutable_array_to_string(\"resumeOdj\", ' '::text), ''::text))::character varying)))::character varying))"))
compteRenduRef Debat? @relation(fields: [compteRenduRefUid], references: [uid])
diff --git a/prisma/models/document.prisma b/prisma/models/document.prisma
index cac7f88..05db649 100644
--- a/prisma/models/document.prisma
+++ b/prisma/models/document.prisma
@@ -3,6 +3,8 @@ model Document {
dataset Int
/// Chambre parente du document (AN, SN, ou CG)
chambre String?
+ /// Numéro de `la législature `__ sous laquelle a été créé le dossier. Nombre entier.
+ legislature String?
/// Titre du document. Dans le cas d'un projet ou d'une proposition de loi, tel qu'il apparait au début du texte de loi.
titrePrincipal String
/// Version abrégée du titre du document. Dans le cas d'un projet ou d'une proposition de loi il peut être ambigu.
@@ -51,8 +53,6 @@ model Document {
nbPage String?
/// Le prix en euros d'un exemplaire papier du document à `la boutique de l'assemblée nationale.
prix String?
- /// Numéro de `la législature `__ sous laquelle a été créé le dossier. Nombre entier.
- legislature String?
/// Un document est dit conforme `lorsqu'il est adopté sans modification par les deux assemblées `.
adoptionConforme Boolean
/// Le contenu de ce champ n'est pas défini.
@@ -61,6 +61,8 @@ model Document {
numNotice String?
/// Le contenu de ce champ n'est pas défini.
provenance String?
+ /// L'exposé des motifs du document (si présent)
+ exposeMotifs String?
/// URL of the PDF of this document.
pdfUrl String?
xsiType String
@@ -84,6 +86,8 @@ model Document {
etudesPlf EtudePlf[]
textesAssocies TexteAssocie[]
interventions Paragraphe[]
+ subdivisions Subdivision[]
+ alineas Alinea[]
@@index([dataset])
@@index([vecteurRecherche], type: Gin)
@@ -166,3 +170,61 @@ model AmendementCommission {
@@index([organeRefUid])
@@index([documentRefUid])
}
+
+model Subdivision {
+ /// Identifiant unique.
+ hash String @id
+ /// Jeu de données de provenance (numéro de législature)
+ dataset Int
+ /// Identifiant unique (uid) du document.
+ documentRefUid String?
+ documentRef Document? @relation(fields: [documentRefUid], references: [uid])
+ /// Type de division.
+ type String?
+ /// Identifiant de la division.
+ identifiant String?
+ /// Titre de la division.
+ titre String?
+ /// Sous-titre de la division.
+ sousTitre String?
+ /// Titre de la division en format HTML.
+ titreHtml String?
+ /// Sous-titre de la division en format HTML.
+ sousTitreHtml String?
+ /// Identifiant de la division parente.
+ parent String?
+ /// Niveau de la subdivision
+ niveau Int?
+ /// Ordre de la division dans le document.
+ sequence Int?
+
+ alineas Alinea[]
+
+ @@index([dataset])
+ @@index([documentRefUid])
+}
+
+/// Alinéa d'un texte de loi.
+model Alinea {
+ /// Id unique d'un alinéa.
+ id Int @id @default(autoincrement())
+ /// Numéro de l'alinéa.
+ numero Int
+ /// Jeu de données de provenance (numéro de législature)
+ dataset Int
+ /// Texte de l'alinéa.
+ texte String?
+ /// Html de l'alinéa.
+ html String?
+ /// Identifiant (string) de référence de l'article parent.
+ articleRefHash String
+ /// Référence de l'article parent.
+ articleRef Subdivision @relation(fields: [articleRefHash], references: [hash])
+ /// Identifiant unique (uid) du document.
+ documentRefUid String?
+ documentRef Document? @relation(fields: [documentRefUid], references: [uid])
+
+ @@index([dataset])
+ @@index([articleRefHash])
+ @@index([documentRefUid])
+}
diff --git a/prisma/models/dossier.prisma b/prisma/models/dossier.prisma
index 4b063f3..9ff4f94 100644
--- a/prisma/models/dossier.prisma
+++ b/prisma/models/dossier.prisma
@@ -1,51 +1,47 @@
/// Un dossier législatif comprend l'ensemble des travaux parlementaires relatifs à un texte depuis son dépôt - par le gouvernement (projet de loi), ou par un parlementaire (proposition de loi) - jusqu'à sa promulgation.
model Dossier {
/// Identifiant unique.
- uid String @id
+ uid String @id
/// Jeu de données de provenance (numéro de législature)
- dataset Int
+ dataset Int
/// Chambre parente du document (AN, SN, ou CG)
- chambre String?
+ chambre String?
/// Numéro du dossier
- numero String?
+ numero String?
/// Type du dossier
- xsiType String?
+ xsiType String?
/// Numéro de la législature.
- legislature String
+ legislature String
/// Date de dépôt du texte
- dateDepot DateTime?
+ dateDepot DateTime?
/// Date du dernier acte législatif lié au texte
- dateDernierActe DateTime?
+ dateDernierActe DateTime?
/// Code du dernier acte législatif
- codeDernierActe String?
+ codeDernierActe String?
/// URL du dossier législatif sur le site du Sénat.
- senatChemin String?
+ senatChemin String?
/// Titre du dossier législatif.
- titre String?
+ titre String?
/// Chemin permettant de construire l'URL du dossier législatif sur le site de l'Assemblée nationale: http://www.assemblee-nationale.fr/dyn/**legislature**/dossiers/**titreChemin**
- titreChemin String?
+ titreChemin String?
/// Mots clés.
- theme String?
+ theme String?
/// Code unique pour traitement automatisé.
- codeProcedure String
+ codeProcedure String
/// Signification du code.
- libelleProcedure String
-
+ libelleProcedure String
/// Dernier statut de ce dossier parlementaire (e.g. Texte déposé à l’Assemblée nationale).
- statut String?
-
+ statut String?
/// Initiative du dossier législatif
/// (e.g. Proposition de loi, Mission d'information, Motion de censure).
- typeInitiative String @default("")
-
+ typeInitiative String @default("")
/// Procédure du dossier législatif
/// (e.g. Finances de l'année, Sans mission).
- typeProcedure String @default("")
-
+ typeProcedure String @default("")
/// Le dossier parlementaire est lié à un autre. Si la cause est un 'Examen commun', les deux dossiers continuent d'évoluer indépendament. Par exemple une mission d'information peut être liée au dossier parlementaire qui représente le rapport produit par cette mission. Si la cause est 'Dossier absorbé', il devient obsolete et le dossier absorbant prend la suite. Par exemple, lorsqu'une loi ordinaire devient une loi organique, un nouveau dossier parlementaire est constitué, l'intégralité du dossier absorbé est copié dans le nouveau dossier.
causeFusionDossier String?
/// Identifiant unique (uid) du dossier parlementaire absorbant.
- dossierAbsorbantRefUid String? @unique
+ dossierAbsorbantRefUid String? @unique
/// Organe à l'initiative du dossier.
organeRefUid String?
/// Identifiant de la commission référente
diff --git a/prisma/models/organe.prisma b/prisma/models/organe.prisma
index 61e88a0..7b8d2c4 100644
--- a/prisma/models/organe.prisma
+++ b/prisma/models/organe.prisma
@@ -5,62 +5,62 @@ model Organe {
/// Jeu de données de provenance (numéro de législature)
dataset Int
- codeType String
+ codeType String
/// Type d'organe (ex: "Commission permanente")
- type String?
- libelle String
- libelleEdition String?
- libelleAbrege String
- libelleAbrev String
+ type String?
+ libelle String
+ libelleEdition String?
+ libelleAbrege String
+ libelleAbrev String
/// Libellé tronquée (e.g. "Gauche Dém. et Rép.")
- libelleTronque String?
- organeParentRefUid String?
- regime String?
+ libelleTronque String?
+ organeParentRefUid String?
+ regime String?
/// Chambre parente de l'organe (Assemblée ou Sénat)
- chambre String?
+ chambre String?
/// Vrai si l'organe est en cours d'agrément.
- actif Boolean? @default(false)
- legislature String?
- secretaire01 String?
- secretaire02 String?
- regimeJuridique String?
- siteInternet String?
- nombreReunionsAnnuelles Int?
- nombreMembres Int? @default(0)
- positionPolitique String?
- preseance String?
- couleurAssociee String?
- dateDebut DateTime?
- dateAgrement DateTime?
- dateFin DateTime?
+ actif Boolean? @default(false)
+ legislature String?
+ secretaire01 String?
+ secretaire02 String?
+ regimeJuridique String?
+ siteInternet String?
+ nombreReunionsAnnuelles Int?
+ nombreMembres Int? @default(0)
+ positionPolitique String?
+ preseance String?
+ couleurAssociee String?
+ dateDebut DateTime?
+ dateAgrement DateTime?
+ dateFin DateTime?
/// URL de l'image de l'organe
- urlImage String?
- xsiType String?
- vecteurRecherche Unsupported("tsvector")? @default(dbgenerated("to_tsvector('french'::regconfig, immutable_unaccent((COALESCE(libelle, ''::text))::character varying))"))
+ urlImage String?
+ xsiType String?
+ vecteurRecherche Unsupported("tsvector")? @default(dbgenerated("to_tsvector('french'::regconfig, immutable_unaccent((COALESCE(libelle, ''::text))::character varying))"))
/// Acteurs faisant parti de cette commission permanente, si cet organe est une commission.
- acteursCommissionPermanente Acteur[]
- reunionsDemandees Agenda[] @relation("OrganeDemandeur")
- reunions Agenda[] @relation("OrganeReunion")
- amendementsOrgane Amendement[] @relation("Amendement_Organe")
- amendementsGouvernementOrgane Amendement[] @relation("Amendement_Gouvernement")
- amendementsGroupePolitique Amendement[] @relation("Amendement_GroupePolitique")
- amendementsCommission AmendementCommission[]
- mandats Mandat[]
- auteurs Auteur[]
- coSignataires CoSignataireDocument[]
- dossiers Dossier[] @relation("OrganeMission")
- dossiersCommissions Dossier[] @relation("OrganeCommission")
- documents Document[]
- etudesPlf EtudePlf[]
- groupesVotants GroupeVotant[]
- organeParentRef Organe? @relation("OrganeParentRef", fields: [organeParentRefUid], references: [uid], onDelete: Restrict, onUpdate: Restrict)
- organeEnfants Organe[] @relation("OrganeParentRef")
- questionsGroupe Question[] @relation("Question_Groupe")
- questionsMinInt Question[] @relation("Question_MinInt")
- scrutins Scrutin[]
- membresGroupeParlementaire Acteur[] @relation("Acteur_GroupeParlementaire")
- parlementairesCirsconscription Acteur[] @relation("Acteur_Circonscription")
- communes Commune[]
+ acteursCommissionPermanente Acteur[]
+ reunionsDemandees Agenda[] @relation("OrganeDemandeur")
+ reunions Agenda[] @relation("OrganeReunion")
+ amendementsOrgane Amendement[] @relation("Amendement_Organe")
+ amendementsGouvernementOrgane Amendement[] @relation("Amendement_Gouvernement")
+ amendementsGroupePolitique Amendement[] @relation("Amendement_GroupePolitique")
+ amendementsCommission AmendementCommission[]
+ mandats Mandat[]
+ auteurs Auteur[]
+ coSignataires CoSignataireDocument[]
+ dossiers Dossier[] @relation("OrganeMission")
+ dossiersCommissions Dossier[] @relation("OrganeCommission")
+ documents Document[]
+ etudesPlf EtudePlf[]
+ groupesVotants GroupeVotant[]
+ organeParentRef Organe? @relation("OrganeParentRef", fields: [organeParentRefUid], references: [uid], onDelete: Restrict, onUpdate: Restrict)
+ organeEnfants Organe[] @relation("OrganeParentRef")
+ questionsGroupe Question[] @relation("Question_Groupe")
+ questionsMinInt Question[] @relation("Question_MinInt")
+ scrutins Scrutin[]
+ membresGroupeParlementaire Acteur[] @relation("Acteur_GroupeParlementaire")
+ parlementairesCirconscription Acteur[] @relation("Acteur_Circonscription")
+ communes Commune[]
@@index([dataset])
@@index([vecteurRecherche], type: Gin)
diff --git a/prisma/models/question.prisma b/prisma/models/question.prisma
index 9d3a534..ccc76b5 100644
--- a/prisma/models/question.prisma
+++ b/prisma/models/question.prisma
@@ -30,7 +30,7 @@ model Question {
texteReponse String?
erratumQuestion String?
erratumReponse String?
- vecteurRecherche Unsupported("tsvector")? @default(dbgenerated("to_tsvector('french'::regconfig, ((immutable_unaccent((COALESCE(\"texteQuestion\", ''::text))::character varying) || ' '::text) || immutable_unaccent((COALESCE(\"texteReponse\", ''::text))::character varying)))"))
+ vecteurRecherche Unsupported("tsvector")? @default(dbgenerated("to_tsvector('french'::regconfig, ((((immutable_unaccent((COALESCE(titre, ''::text))::character varying) || ' '::text) || immutable_unaccent((COALESCE(\"texteQuestion\", ''::text))::character varying)) || ' '::text) || immutable_unaccent((COALESCE(\"texteReponse\", ''::text))::character varying)))"))
/// Titre de la question
titre String?
acteurRef Acteur @relation(fields: [acteurRefUid], references: [uid])
diff --git a/prisma/models/scrutin.prisma b/prisma/models/scrutin.prisma
index 76b2556..a7d675f 100644
--- a/prisma/models/scrutin.prisma
+++ b/prisma/models/scrutin.prisma
@@ -95,28 +95,20 @@ model Scrutin {
enum TypeObjetScrutin {
/// L'objet concerne un amendement.
amendement
-
/// L'objet concerne un article.
article
-
/// L'objet concerne une motion de censure.
motionCensure
-
/// L'objet concerne une motion referendaire.
motionReferendaire
-
/// L'objet concerne une motion de rejet.
motionRejet
-
/// L'objet concerne un projet de loi.
projetLoi
-
/// L'objet concerne une proposition de loi.
propositionLoi
-
/// L'objet concerne une proposition de résolution.
propositionResolution
-
/// L'objet concerne un sous-amendement.
sousAmendement
}
diff --git a/prisma/models/stats.prisma b/prisma/models/stats.prisma
index 0394d83..41b9f3f 100644
--- a/prisma/models/stats.prisma
+++ b/prisma/models/stats.prisma
@@ -1,4 +1,7 @@
model Stats {
+ /// Chambre du parlementaire (e.g.: AN = assemblée, SN = sénat)
+ chambre String
+
/// L'écart entre l'écart minimum et maximum.
ecartMinMax Int @default(0)
@@ -8,6 +11,9 @@ model Stats {
/// L'écart entre la moyenne et la valeur minimum.
ecartMoyenneMin Int @default(0)
+ /// L'écart entre la moyenne minimum et la moyenne maximum.
+ ecartMoyenneMinMax Int @default(0)
+
/// Id de ces statistiques.
id String @id
diff --git a/prisma/models/texte_loi.prisma b/prisma/models/texte_loi.prisma
deleted file mode 100644
index ad8e525..0000000
--- a/prisma/models/texte_loi.prisma
+++ /dev/null
@@ -1,152 +0,0 @@
-/// Texte de loi rédigé par des acteurs.
-model TexteLoi {
- /// Identifiant unique d'un texte de loi.
- uid String @id @unique
- /// Jeu de données de provenance (numéro de législature)
- dataset Int
- /// Titre du texte de loi
- titre String
- /// Chambre du texte (Assemblée ou Sénat)
- chambre String?
- /// Numéro de législature.
- legislature String
- /// Identifiant de la commission associée à ce texte.
- commissionRefUid String
- /// `true` si la procédure est accélérée ; `false` sinon.
- procedureAcceleree Boolean @default(false)
- /// Date de la constitution associée.
- dateConstitution DateTime?
- /// Date de dépôt à l'Assemblée Nationale
- dateDepot DateTime?
- /// Numéro du texte
- numero String
- /// Commission chargée du texte de loi.
- commission String
- // commission Organe @relation(fields: [commissionRefUid], references: [uid])
- /// Texte de loi présenté au nom de... (e.g. nom du Premier ministre)
- presenteeAuNomDe Acteur[] @relation("loisPortees")
- /// Texte de loi présenté par un ensemble de députés.
- presenteePar Acteur[] @relation("loisPresentees")
- /// Signataires de cette loi.
- signataires Acteur[] @relation("loisSignees")
- /// Sommaire du texte de loi.
- sommaire SommaireLoi[]
- /// Citation de l'exposé des motifs, si elle existe.
- exposeMotifsCitation String?
- /// Description des articles de l'exposé des motifs, si elle existe.
- exposeMotifsDescriptionArticles String?
- /// Contenu de l'exposé des motifs comprenant la description des articles.
- exposeMotifsContenu String?
- /// Liste des articles du texte de loi.
- articles Article[]
-
- @@index([dataset])
- @@index([commissionRefUid])
-}
-
-/// Sommaire d'un texte de loi.
-model SommaireLoi {
- /// Id unique d'un sommaire d'un texte de loi.
- id Int @id @default(autoincrement())
-
- /// Jeu de données de provenance (numéro de législature).
- dataset Int
-
- /// Type de division.
- division DivisionType
-
- /// Numéro de la division.
- numeroDivision String
-
- /// Ordre de la division dans le document.
- sequence String
-
- /// Titre de la division.
- titre String
-
- /// Identifiant de la division parente.
- parent String?
-
- /// Identifiant unique de référence du texte de loi associé.
- texteLoiRefUid String
-
- /// Référence du texte de loi associé.
- texteLoiRef TexteLoi @relation(fields: [texteLoiRefUid], references: [uid])
-
- @@index([dataset])
- @@index([texteLoiRefUid])
-}
-
-enum DivisionType {
- Titre
- Chapitre
- Section
- SousSection
-}
-
-/// Article d'un texte de loi.
-model Article {
- /// Id unique d'un article.
- id Int @id @default(autoincrement())
-
- /// Jeu de données de provenance (numéro de législature)
- dataset Int
-
- /// Hachage de l'objet.
- /// Utilisé comme référence aux alinéas.
- hash String @unique
-
- /// Liste des alinéas composant l'article.
- alineas Alinea[]
-
- /// Cardinal de l'article (e.g. er, bis).
- cardinal String?
-
- /// Mention spécifiée pour certains articles.
- nouveau Boolean @default(false)
-
- /// Numéro de l'article.
- numero Int?
-
- /// Numéro des articles (dans de rare cas, il y a un groupement d'articles).
- numeros Int[]
-
- /// Section parente (e.g. Chapitre Ier BIS).
- parent String?
-
- /// Rréférence du texte de loi associé à cet article.
- texteLoiRef TexteLoi @relation(fields: [texteLoiRefUid], references: [uid])
-
- /// Identifiant unique de référence du texte de loi associé à cet article.
- texteLoiRefUid String
-
- /// Titre de l'article
- titre String
-
- @@index([dataset])
- @@index([texteLoiRefUid])
-}
-
-/// Alinéa d'un texte de loi.
-model Alinea {
- /// Id unique d'un alinéa.
- id Int @id @default(autoincrement())
-
- /// Numéro de l'alinéa.
- numero Int
-
- /// Jeu de données de provenance (numéro de législature)
- dataset Int
-
- /// Texte de l'alinéa.
- texte String
-
- /// Identifiant (string) de référence de l'article parent.
- articleRefHash String
-
- /// Référence de l'article parent.
- articleRef Article @relation(fields: [articleRefHash], references: [hash])
-
- @@index([dataset])
- @@index([articleRefHash])
-}
diff --git a/prisma/swagger/json-schema.json b/prisma/swagger/json-schema.json
index 9ca5632..5af6136 100644
--- a/prisma/swagger/json-schema.json
+++ b/prisma/swagger/json-schema.json
@@ -100,6 +100,13 @@
"default": false,
"description": "Deputé en poste actuellement."
},
+ "placeHemicycle": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "Place dans l'hémicycle de l'acteur"
+ },
"urlImage": {
"type": [
"string",
@@ -120,6 +127,21 @@
"null"
]
},
+ "nombreAmendements": {
+ "type": "integer",
+ "default": 0,
+ "description": "Nombre d'amendements pour cet acteur."
+ },
+ "nombreInterventions": {
+ "type": "integer",
+ "default": 0,
+ "description": "Nombre d'interventions pour cet acteur."
+ },
+ "nombreQuestions": {
+ "type": "integer",
+ "default": 0,
+ "description": "Nombre de questions pour cet acteur."
+ },
"groupeParlementaire": {
"anyOf": [
{
@@ -312,41 +334,12 @@
},
"description": "Les dossiers de cet acteur."
},
- "nombreAmendements": {
- "type": "integer",
- "default": 0,
- "description": "Nombre d'amendements pour cet acteur."
- },
- "nombreInterventions": {
- "type": "integer",
- "default": 0,
- "description": "Nombre d'interventions pour cet acteur."
- },
- "nombreQuestions": {
- "type": "integer",
- "default": 0,
- "description": "Nombre de questions pour cet acteur."
- },
- "loisPortees": {
+ "statistiquesHebdomadaire": {
"type": "array",
"items": {
- "$ref": "#/definitions/TexteLoi"
+ "$ref": "#/definitions/StatistiqueHebdomadaire"
},
- "description": "Lois présentées au nom de cet acteur (e.g. un premier ministre)."
- },
- "loisPresentees": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/TexteLoi"
- },
- "description": "Lois présentées par cet acteur."
- },
- "loisSignees": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/TexteLoi"
- },
- "description": "Lois signées par cet acteur."
+ "description": "Statistiques d'activité agrégé par semaine."
}
}
},
@@ -466,6 +459,41 @@
}
}
},
+ "StatistiqueHebdomadaire": {
+ "type": "object",
+ "properties": {
+ "semaineIndex": {
+ "type": "integer",
+ "description": "L'index de la semain depuis le debut de la legislature"
+ },
+ "dataset": {
+ "type": "integer",
+ "description": "Jeu de données de provenance (numéro de législature)"
+ },
+ "valeur": {
+ "type": "integer",
+ "description": "Nombre d'occurence dans la semaine."
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "presenceDetectee",
+ "presenceCommision"
+ ],
+ "description": "Type d'occurence compté."
+ },
+ "acteur": {
+ "anyOf": [
+ {
+ "$ref": "#/definitions/Acteur"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ }
+ },
"Agenda": {
"type": "object",
"properties": {
@@ -543,6 +571,13 @@
"null"
]
},
+ "compteRenduDisponible": {
+ "type": [
+ "boolean",
+ "null"
+ ],
+ "description": "Vrai si le compte-rendu est disponible."
+ },
"dateSeance": {
"type": [
"string",
@@ -2054,6 +2089,13 @@
],
"description": "Chambre parente du document (AN, SN, ou CG)"
},
+ "legislature": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "Numéro de `la législature `__ sous laquelle a été créé le dossier. Nombre entier."
+ },
"titrePrincipal": {
"type": "string",
"description": "Titre du document. Dans le cas d'un projet ou d'une proposition de loi, tel qu'il apparait au début du texte de loi."
@@ -2222,13 +2264,6 @@
],
"description": "Le prix en euros d'un exemplaire papier du document à `la boutique de l'assemblée nationale."
},
- "legislature": {
- "type": [
- "string",
- "null"
- ],
- "description": "Numéro de `la législature `__ sous laquelle a été créé le dossier. Nombre entier."
- },
"adoptionConforme": {
"type": "boolean",
"description": "Un document est dit conforme `lorsqu'il est adopté sans modification par les deux assemblées `."
@@ -2254,6 +2289,13 @@
],
"description": "Le contenu de ce champ n'est pas défini."
},
+ "exposeMotifs": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "L'exposé des motifs du document (si présent)"
+ },
"pdfUrl": {
"type": [
"string",
@@ -2355,6 +2397,18 @@
"items": {
"$ref": "#/definitions/Paragraphe"
}
+ },
+ "subdivisions": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Subdivision"
+ }
+ },
+ "alineas": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Alinea"
+ }
}
}
},
@@ -2518,6 +2572,142 @@
}
}
},
+ "Subdivision": {
+ "type": "object",
+ "properties": {
+ "hash": {
+ "type": "string",
+ "description": "Identifiant unique."
+ },
+ "dataset": {
+ "type": "integer",
+ "description": "Jeu de données de provenance (numéro de législature)"
+ },
+ "documentRef": {
+ "anyOf": [
+ {
+ "$ref": "#/definitions/Document"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "type": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "Type de division."
+ },
+ "identifiant": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "Identifiant de la division."
+ },
+ "titre": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "Titre de la division."
+ },
+ "sousTitre": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "Sous-titre de la division."
+ },
+ "titreHtml": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "Titre de la division en format HTML."
+ },
+ "sousTitreHtml": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "Sous-titre de la division en format HTML."
+ },
+ "parent": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "Identifiant de la division parente."
+ },
+ "niveau": {
+ "type": [
+ "integer",
+ "null"
+ ],
+ "description": "Niveau de la subdivision"
+ },
+ "sequence": {
+ "type": [
+ "integer",
+ "null"
+ ],
+ "description": "Ordre de la division dans le document."
+ },
+ "alineas": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Alinea"
+ }
+ }
+ }
+ },
+ "Alinea": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "integer",
+ "description": "Id unique d'un alinéa."
+ },
+ "numero": {
+ "type": "integer",
+ "description": "Numéro de l'alinéa."
+ },
+ "dataset": {
+ "type": "integer",
+ "description": "Jeu de données de provenance (numéro de législature)"
+ },
+ "texte": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "Texte de l'alinéa."
+ },
+ "html": {
+ "type": [
+ "string",
+ "null"
+ ],
+ "description": "Html de l'alinéa."
+ },
+ "articleRef": {
+ "$ref": "#/definitions/Subdivision"
+ },
+ "documentRef": {
+ "anyOf": [
+ {
+ "$ref": "#/definitions/Document"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ }
+ },
"Dossier": {
"type": "object",
"properties": {
@@ -4180,7 +4370,7 @@
"$ref": "#/definitions/Acteur"
}
},
- "parlementairesCirsconscription": {
+ "parlementairesCirconscription": {
"type": "array",
"items": {
"$ref": "#/definitions/Acteur"
@@ -4877,6 +5067,10 @@
"Stats": {
"type": "object",
"properties": {
+ "chambre": {
+ "type": "string",
+ "description": "Chambre du parlementaire (e.g.: AN = assemblée, SN = sénat)"
+ },
"ecartMinMax": {
"type": "integer",
"default": 0,
@@ -4892,6 +5086,11 @@
"default": 0,
"description": "L'écart entre la moyenne et la valeur minimum."
},
+ "ecartMoyenneMinMax": {
+ "type": "integer",
+ "default": 0,
+ "description": "L'écart entre la moyenne minimum et la moyenne maximum."
+ },
"id": {
"type": "string",
"description": "Id de ces statistiques."
@@ -4952,256 +5151,6 @@
"description": "L'activité mesurée"
}
}
- },
- "TexteLoi": {
- "type": "object",
- "properties": {
- "uid": {
- "type": "string",
- "description": "Identifiant unique d'un texte de loi."
- },
- "dataset": {
- "type": "integer",
- "description": "Jeu de données de provenance (numéro de législature)"
- },
- "titre": {
- "type": "string",
- "description": "Titre du texte de loi"
- },
- "chambre": {
- "type": [
- "string",
- "null"
- ],
- "description": "Chambre du texte (Assemblée ou Sénat)"
- },
- "legislature": {
- "type": "string",
- "description": "Numéro de législature."
- },
- "commissionRefUid": {
- "type": "string",
- "description": "Identifiant de la commission associée à ce texte."
- },
- "procedureAcceleree": {
- "type": "boolean",
- "default": false,
- "description": "`true` si la procédure est accélérée ; `false` sinon."
- },
- "dateConstitution": {
- "type": [
- "string",
- "null"
- ],
- "format": "date-time",
- "description": "Date de la constitution associée."
- },
- "dateDepot": {
- "type": [
- "string",
- "null"
- ],
- "format": "date-time",
- "description": "Date de dépôt à l'Assemblée Nationale"
- },
- "numero": {
- "type": "string",
- "description": "Numéro du texte"
- },
- "commission": {
- "type": "string",
- "description": "Commission chargée du texte de loi."
- },
- "presenteeAuNomDe": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/Acteur"
- },
- "description": "Texte de loi présenté au nom de... (e.g. nom du Premier ministre)"
- },
- "presenteePar": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/Acteur"
- },
- "description": "Texte de loi présenté par un ensemble de députés."
- },
- "signataires": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/Acteur"
- },
- "description": "Signataires de cette loi."
- },
- "sommaire": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/SommaireLoi"
- },
- "description": "Sommaire du texte de loi."
- },
- "exposeMotifsCitation": {
- "type": [
- "string",
- "null"
- ],
- "description": "Citation de l'exposé des motifs, si elle existe."
- },
- "exposeMotifsDescriptionArticles": {
- "type": [
- "string",
- "null"
- ],
- "description": "Description des articles de l'exposé des motifs, si elle existe."
- },
- "exposeMotifsContenu": {
- "type": [
- "string",
- "null"
- ],
- "description": "Contenu de l'exposé des motifs comprenant la description des articles."
- },
- "articles": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/Article"
- },
- "description": "Liste des articles du texte de loi."
- }
- }
- },
- "SommaireLoi": {
- "type": "object",
- "properties": {
- "id": {
- "type": "integer",
- "description": "Id unique d'un sommaire d'un texte de loi."
- },
- "dataset": {
- "type": "integer",
- "description": "Jeu de données de provenance (numéro de législature)."
- },
- "division": {
- "type": "string",
- "enum": [
- "Titre",
- "Chapitre",
- "Section",
- "SousSection"
- ],
- "description": "Type de division."
- },
- "numeroDivision": {
- "type": "string",
- "description": "Numéro de la division."
- },
- "sequence": {
- "type": "string",
- "description": "Ordre de la division dans le document."
- },
- "titre": {
- "type": "string",
- "description": "Titre de la division."
- },
- "parent": {
- "type": [
- "string",
- "null"
- ],
- "description": "Identifiant de la division parente."
- },
- "texteLoiRef": {
- "$ref": "#/definitions/TexteLoi"
- }
- }
- },
- "Article": {
- "type": "object",
- "properties": {
- "id": {
- "type": "integer",
- "description": "Id unique d'un article."
- },
- "dataset": {
- "type": "integer",
- "description": "Jeu de données de provenance (numéro de législature)"
- },
- "hash": {
- "type": "string",
- "description": "Hachage de l'objet.\nUtilisé comme référence aux alinéas."
- },
- "alineas": {
- "type": "array",
- "items": {
- "$ref": "#/definitions/Alinea"
- },
- "description": "Liste des alinéas composant l'article."
- },
- "cardinal": {
- "type": [
- "string",
- "null"
- ],
- "description": "Cardinal de l'article (e.g. er, bis)."
- },
- "nouveau": {
- "type": "boolean",
- "default": false,
- "description": "Mention spécifiée pour certains articles."
- },
- "numero": {
- "type": [
- "integer",
- "null"
- ],
- "description": "Numéro de l'article."
- },
- "numeros": {
- "type": "array",
- "items": {
- "type": "integer"
- },
- "description": "Numéro des articles (dans de rare cas, il y a un groupement d'articles)."
- },
- "parent": {
- "type": [
- "string",
- "null"
- ],
- "description": "Section parente (e.g. Chapitre Ier BIS)."
- },
- "texteLoiRef": {
- "$ref": "#/definitions/TexteLoi"
- },
- "titre": {
- "type": "string",
- "description": "Titre de l'article"
- }
- }
- },
- "Alinea": {
- "type": "object",
- "properties": {
- "id": {
- "type": "integer",
- "description": "Id unique d'un alinéa."
- },
- "numero": {
- "type": "integer",
- "description": "Numéro de l'alinéa."
- },
- "dataset": {
- "type": "integer",
- "description": "Jeu de données de provenance (numéro de législature)"
- },
- "texte": {
- "type": "string",
- "description": "Texte de l'alinéa."
- },
- "articleRef": {
- "$ref": "#/definitions/Article"
- }
- }
}
},
"type": "object",
@@ -5215,6 +5164,9 @@
"adressePostale": {
"$ref": "#/definitions/AdressePostale"
},
+ "statistiqueHebdomadaire": {
+ "$ref": "#/definitions/StatistiqueHebdomadaire"
+ },
"agenda": {
"$ref": "#/definitions/Agenda"
},
@@ -5260,6 +5212,12 @@
"amendementCommission": {
"$ref": "#/definitions/AmendementCommission"
},
+ "subdivision": {
+ "$ref": "#/definitions/Subdivision"
+ },
+ "alinea": {
+ "$ref": "#/definitions/Alinea"
+ },
"dossier": {
"$ref": "#/definitions/Dossier"
},
@@ -5325,18 +5283,6 @@
},
"stats": {
"$ref": "#/definitions/Stats"
- },
- "texteLoi": {
- "$ref": "#/definitions/TexteLoi"
- },
- "sommaireLoi": {
- "$ref": "#/definitions/SommaireLoi"
- },
- "article": {
- "$ref": "#/definitions/Article"
- },
- "alinea": {
- "$ref": "#/definitions/Alinea"
}
}
}
\ No newline at end of file