diff --git a/README.md b/README.md
index 225ae7d74ddf2b264183e92e15b54286a083afa5..eb625580405d814381aaef21755f4aac6caebba9 100644
--- a/README.md
+++ b/README.md
@@ -122,7 +122,7 @@ export const otherCalculatedVariablesName = [
 ]
 ```
 
-2. Dans le fichier souhaité, Appeler la variable dans la bonne catégorie (Ménage, foyer fiscal, individu, etc), comme fait dans cet exemple avec la variable `niveau_de_vie` dans le fichier `WaterfallView.svelte` :
+2. Dans le fichier souhaité, Appeler la variable dans la bonne catégorie (Ménage, foyer fiscal, individu, etc), comme fait dans cet exemple avec la variable `niveau_de_vie` dans le fichier `PaySlipView.svelte` :
 
 ```js
 {@const niveau_de_vie =
diff --git a/src/lib/components/transverse_pages/Footer.svelte b/src/lib/components/Footer.svelte
similarity index 100%
rename from src/lib/components/transverse_pages/Footer.svelte
rename to src/lib/components/Footer.svelte
diff --git a/src/lib/components/NavBar.svelte b/src/lib/components/NavBar.svelte
index c0c3f427d880d5e9298a153ee31faafcffc89e0c..f82cd91b60ad13ef0be03c1d99ee85e0f04ed211 100644
--- a/src/lib/components/NavBar.svelte
+++ b/src/lib/components/NavBar.svelte
@@ -6,7 +6,7 @@
   import { browser } from "$app/environment"
   import { goto } from "$app/navigation"
   import { page } from "$app/stores"
-  import NavBarSearch from "$lib/components/search/NavBarSearch.svelte"
+  import NavBarSearch from "$lib/components/ui_transverse_components/search/NavBarSearch.svelte"
   import { withLinkedVariableNames } from "$lib/decompositions"
   import type { DisplayMode } from "$lib/displays"
   import { trackSearchVariable } from "$lib/matomo"
@@ -20,43 +20,43 @@
   const dispositifsTypes = [
     {
       title: "Impôt sur le revenu",
-      icon: "picto-impot-sur-le-revenu.png",
+      icon: "pictos/picto-impot-sur-le-revenu.png",
       parametersVariableName: "irpp_economique",
     },
     {
       title: "Revenu de solidarité active",
-      icon: "illustration-rsa.png",
+      icon: "pictos/picto-rsa.png",
       parametersVariableName: "rsa",
     },
     {
       title: "Contribution sociale généralisée (CSG) prélevée sur les salaires",
-      icon: "picto-csg-salaires.png",
+      icon: "pictos/picto-csg-salaires.png",
       parametersVariableName: "csg_salaire",
     },
     {
       title: "Allocations familiales",
-      icon: "picto-allocations-familiales.png",
+      icon: "pictos/picto-allocations-familiales.png",
       parametersVariableName: "af_nettes_crds",
     },
     {
       title:
         "Contribution sociale généralisée (CSG) prélevée sur les retraites",
-      icon: "picto-csg-retraites.png",
+      icon: "pictos/picto-csg-retraites.png",
       parametersVariableName: "csg_retraite",
     },
     {
       title: "Prime de partage de la valeur",
-      icon: "illustration-pepa.png",
+      icon: "pictos/picto-pepa.png",
       parametersVariableName: "prime_partage_valeur_exoneree",
     },
     {
       title: "Taxes sur les carburants",
-      icon: "illustration-ticpe.png",
+      icon: "pictos/picto-ticpe.png",
       parametersVariableName: "taxes_tous_carburants",
     },
     {
       title: "Exonération TO-DE",
-      icon: "illustration-exoneration-tode.png",
+      icon: "pictos/picto-exoneration-tode.png",
       parametersVariableName: "exoneration_cotisations_employeur_tode",
     },
   ]
diff --git a/src/lib/components/transverse_pages/OpenGraph.svelte b/src/lib/components/OpenGraph.svelte
similarity index 100%
rename from src/lib/components/transverse_pages/OpenGraph.svelte
rename to src/lib/components/OpenGraph.svelte
diff --git a/src/lib/components/Spinner.svelte b/src/lib/components/Spinner.svelte
deleted file mode 100644
index eba7239749c59cfca48373b9e3ead057e42f9c73..0000000000000000000000000000000000000000
--- a/src/lib/components/Spinner.svelte
+++ /dev/null
@@ -1,78 +0,0 @@
-<script lang="ts">
-  // Code inspired from: https://github.com/Schum123/svelte-loading-spinners/blob/master/src/Circle2.svelte
-
-  interface Props {
-    // MIT license.
-    size?: string | number
-    unit?: string
-    colorOuter?: string
-    colorCenter?: string
-    colorInner?: string
-    durationMultiplier?: number
-    durationOuter?: any
-    durationInner?: any
-    durationCenter?: any
-  }
-
-  let {
-    size = "60",
-    unit = "px",
-    colorOuter = "#DED500",
-    colorCenter = "#DED500",
-    colorInner = "#DED500",
-    durationMultiplier = 1,
-    durationOuter = `${durationMultiplier * 2}s`,
-    durationInner = `${durationMultiplier * 1.5}s`,
-    durationCenter = `${durationMultiplier * 3}s`,
-  }: Props = $props()
-</script>
-
-<div
-  class="circle mx-auto my-8"
-  style="--size: {size}{unit}; --colorInner: {colorInner}; --colorCenter: {colorCenter}; --colorOuter: {colorOuter}; --durationInner: {durationInner}; --durationCenter: {durationCenter}; --durationOuter: {durationOuter};"
-></div>
-
-<style>
-  .circle {
-    width: var(--size);
-    height: var(--size);
-    box-sizing: border-box;
-    position: relative;
-    border: 3px solid transparent;
-    border-top-color: var(--colorOuter);
-    border-radius: 50%;
-    animation: circleSpin var(--durationOuter) linear infinite;
-  }
-  .circle:before,
-  .circle:after {
-    content: "";
-    box-sizing: border-box;
-    position: absolute;
-    border: 3px solid transparent;
-    border-radius: 50%;
-  }
-  .circle:after {
-    border-top-color: var(--colorInner);
-    top: 9px;
-    left: 9px;
-    right: 9px;
-    bottom: 9px;
-    animation: circleSpin var(--durationInner) linear infinite;
-  }
-  .circle:before {
-    border-top-color: var(--colorCenter);
-    top: 3px;
-    left: 3px;
-    right: 3px;
-    bottom: 3px;
-    animation: circleSpin var(--durationCenter) linear infinite;
-  }
-  @keyframes circleSpin {
-    0% {
-      transform: rotate(0deg);
-    }
-    100% {
-      transform: rotate(360deg);
-    }
-  }
-</style>
diff --git a/src/lib/components/SourcesMethodTooltip.svelte b/src/lib/components/impacts_view/SourcesMethodTooltip.svelte
similarity index 98%
rename from src/lib/components/SourcesMethodTooltip.svelte
rename to src/lib/components/impacts_view/SourcesMethodTooltip.svelte
index 74f4516b11de35b70f7db8cabed1e4141b1d7ead..42eb879b7df513eaaefdf1b9958623eb335b4270 100644
--- a/src/lib/components/SourcesMethodTooltip.svelte
+++ b/src/lib/components/impacts_view/SourcesMethodTooltip.svelte
@@ -1,5 +1,5 @@
 <script lang="ts">
-  import Tooltip from "$lib/components/Tooltip.svelte"
+  import Tooltip from "$lib/components/ui_transverse_components/Tooltip.svelte"
   import type { DisplayMode } from "$lib/displays"
 
   interface Props {
diff --git a/src/lib/components/ValueChange.svelte b/src/lib/components/impacts_view/ValueChange.svelte
similarity index 100%
rename from src/lib/components/ValueChange.svelte
rename to src/lib/components/impacts_view/ValueChange.svelte
diff --git a/src/lib/components/variables/VariableValueChange.svelte b/src/lib/components/impacts_view/VariableValueChange.svelte
similarity index 96%
rename from src/lib/components/variables/VariableValueChange.svelte
rename to src/lib/components/impacts_view/VariableValueChange.svelte
index 312e180d9dd2c1c768828c1c9e91a096ab2709a4..089b5024967d33a6b09324e3c5f4c2d4751bb991 100644
--- a/src/lib/components/variables/VariableValueChange.svelte
+++ b/src/lib/components/impacts_view/VariableValueChange.svelte
@@ -1,5 +1,5 @@
 <script lang="ts">
-  import ValueChange from "$lib/components/ValueChange.svelte"
+  import ValueChange from "$lib/components/impacts_view/ValueChange.svelte"
   import type { EvaluationByName } from "$lib/decompositions"
   import { billName, date, revaluationName, shared } from "$lib/shared.svelte"
   import { getUnitAtDate } from "$lib/units"
diff --git a/src/lib/components/BudgetConnexionModal.svelte b/src/lib/components/impacts_view/budget_view/BudgetConnexionModal.svelte
similarity index 98%
rename from src/lib/components/BudgetConnexionModal.svelte
rename to src/lib/components/impacts_view/budget_view/BudgetConnexionModal.svelte
index 5d1b0c38d0bdf42707d39be14f6ab277f355f004..d24fc06f068bf1fbe5a4f8e16c60331f58000372 100644
--- a/src/lib/components/BudgetConnexionModal.svelte
+++ b/src/lib/components/impacts_view/budget_view/BudgetConnexionModal.svelte
@@ -3,8 +3,8 @@
 
   import { goto } from "$app/navigation"
   import { page } from "$app/stores"
-  import DialogContent from "$lib/components/DialogContent.svelte"
-  import DialogOverlay from "$lib/components/DialogOverlay.svelte"
+  import DialogContent from "$lib/components/ui_transverse_components/DialogContent.svelte"
+  import DialogOverlay from "$lib/components/ui_transverse_components/DialogOverlay.svelte"
   import {
     trackBudgetPublicSimulation,
     trackBudgetSignInButton,
diff --git a/src/lib/components/budget/BudgetDetailView.svelte b/src/lib/components/impacts_view/budget_view/BudgetDetailView.svelte
similarity index 98%
rename from src/lib/components/budget/BudgetDetailView.svelte
rename to src/lib/components/impacts_view/budget_view/BudgetDetailView.svelte
index ee332f98821ed53138a05ca33cbe2c730bd3e8ec..21d5605b9725ca94a171e92d3fbf29bb5a6edc85 100644
--- a/src/lib/components/budget/BudgetDetailView.svelte
+++ b/src/lib/components/impacts_view/budget_view/BudgetDetailView.svelte
@@ -7,14 +7,14 @@
     BudgetQuantileByCalculationName,
     BudgetSimulation,
   } from "$lib/budgets"
-  import AxisY from "$lib/components/layercake/AxisY.svelte"
-  import Column from "$lib/components/layercake/Column.svelte"
-  import PictoBudgetDecileIr from "$lib/components/pictos/PictoBudgetDecileIr.svelte"
-  import PictoBudgetDecileIrFoyer from "$lib/components/pictos/PictoBudgetDecileIrFoyer.svelte"
-  import PictoBudgetEtatIr from "$lib/components/pictos/PictoBudgetEtatIr.svelte"
-  import SourcesMethodTooltip from "$lib/components/SourcesMethodTooltip.svelte"
-  import Tooltip from "$lib/components/Tooltip.svelte"
-  import ValueChange from "$lib/components/ValueChange.svelte"
+  import AxisY from "$lib/components/ui_transverse_components/layercake/AxisY.svelte"
+  import Column from "$lib/components/ui_transverse_components/layercake/Column.svelte"
+  import PictoBudgetDecileIr from "$lib/components/ui_transverse_components/pictos/PictoBudgetDecileIr.svelte"
+  import PictoBudgetDecileIrFoyer from "$lib/components/ui_transverse_components/pictos/PictoBudgetDecileIrFoyer.svelte"
+  import PictoBudgetEtatIr from "$lib/components/ui_transverse_components/pictos/PictoBudgetEtatIr.svelte"
+  import SourcesMethodTooltip from "$lib/components/impacts_view/SourcesMethodTooltip.svelte"
+  import Tooltip from "$lib/components/ui_transverse_components/Tooltip.svelte"
+  import ValueChange from "$lib/components/impacts_view/ValueChange.svelte"
   import type { DisplayMode } from "$lib/displays"
   import { yearPLF } from "$lib/shared.svelte"
   import { removeNegativeZero } from "$lib/values"
diff --git a/src/lib/components/budget/BudgetLayout.svelte b/src/lib/components/impacts_view/budget_view/BudgetLayout.svelte
similarity index 99%
rename from src/lib/components/budget/BudgetLayout.svelte
rename to src/lib/components/impacts_view/budget_view/BudgetLayout.svelte
index 5e7df75d041e416e7b3d6e1b7bf5ee52177f3398..e6b15d4336057b6eea52547e6c9c53b787e36e86 100644
--- a/src/lib/components/budget/BudgetLayout.svelte
+++ b/src/lib/components/impacts_view/budget_view/BudgetLayout.svelte
@@ -1,8 +1,8 @@
 <script lang="ts">
   import type { BudgetSimulation } from "$lib/budgets"
-  import BudgetDetailView from "$lib/components/budget/BudgetDetailView.svelte"
-  import GagnantsPerdantsView from "$lib/components/budget/GagnantsPerdantsView.svelte"
-  import Tooltip from "$lib/components/Tooltip.svelte"
+  import BudgetDetailView from "$lib/components/impacts_view/budget_view/BudgetDetailView.svelte"
+  import GagnantsPerdantsView from "$lib/components/impacts_view/budget_view/GagnantsPerdantsView.svelte"
+  import Tooltip from "$lib/components/ui_transverse_components/Tooltip.svelte"
   import type { DisplayMode } from "$lib/displays"
   import { billActive, shared } from "$lib/shared.svelte"
   import {
diff --git a/src/lib/components/BudgetSimulationSharingModal.svelte b/src/lib/components/impacts_view/budget_view/BudgetSimulationSharingModal.svelte
similarity index 97%
rename from src/lib/components/BudgetSimulationSharingModal.svelte
rename to src/lib/components/impacts_view/budget_view/BudgetSimulationSharingModal.svelte
index 4cd3d90a4d74eb45e3b28c3dd55dec6f4404ebee..ef4768f304fbf1622a6f9d66274335648c9bcfb1 100644
--- a/src/lib/components/BudgetSimulationSharingModal.svelte
+++ b/src/lib/components/impacts_view/budget_view/BudgetSimulationSharingModal.svelte
@@ -2,8 +2,8 @@
   import { Dialog } from "bits-ui"
 
   import { copyToClipboard } from "$lib/clipboard"
-  import DialogContent from "$lib/components/DialogContent.svelte"
-  import DialogOverlay from "$lib/components/DialogOverlay.svelte"
+  import DialogContent from "$lib/components/ui_transverse_components/DialogContent.svelte"
+  import DialogOverlay from "$lib/components/ui_transverse_components/DialogOverlay.svelte"
   import type { DisplayMode } from "$lib/displays"
   import publicConfig from "$lib/public_config"
   import { shared } from "$lib/shared.svelte"
diff --git a/src/lib/components/budget/GagnantsPerdantsView.svelte b/src/lib/components/impacts_view/budget_view/GagnantsPerdantsView.svelte
similarity index 95%
rename from src/lib/components/budget/GagnantsPerdantsView.svelte
rename to src/lib/components/impacts_view/budget_view/GagnantsPerdantsView.svelte
index 2217278e5738f985e1f8f0c49445a71a0d8427f4..462fd05e5407e3206a85c12c4211f8ec6a442884 100644
--- a/src/lib/components/budget/GagnantsPerdantsView.svelte
+++ b/src/lib/components/impacts_view/budget_view/GagnantsPerdantsView.svelte
@@ -1,10 +1,10 @@
 <script lang="ts">
   import type { BudgetSimulation } from "$lib/budgets"
-  import PictoBudgetGagnantsPerdants from "$lib/components/pictos/PictoBudgetGagnantsPerdants.svelte"
-  import SourcesMethodTooltip from "$lib/components/SourcesMethodTooltip.svelte"
-  import Tooltip from "$lib/components/Tooltip.svelte"
-  import ValueChange from "$lib/components/ValueChange.svelte"
-  import ValueChangeGagnantsPerdants from "$lib/components/ValueChangeGagnantsPerdants.svelte"
+  import PictoBudgetGagnantsPerdants from "$lib/components/ui_transverse_components/pictos/PictoBudgetGagnantsPerdants.svelte"
+  import SourcesMethodTooltip from "$lib/components/impacts_view/SourcesMethodTooltip.svelte"
+  import Tooltip from "$lib/components/ui_transverse_components/Tooltip.svelte"
+  import ValueChange from "$lib/components/impacts_view/ValueChange.svelte"
+  import ValueChangeGagnantsPerdants from "$lib/components/impacts_view/budget_view/ValueChangeGagnantsPerdants.svelte"
   import type { DisplayMode } from "$lib/displays"
   import type { BudgetVariable } from "$lib/variables"
 
diff --git a/src/lib/components/budget/SkeletonLoaderBudget.svelte b/src/lib/components/impacts_view/budget_view/SkeletonLoaderBudget.svelte
similarity index 100%
rename from src/lib/components/budget/SkeletonLoaderBudget.svelte
rename to src/lib/components/impacts_view/budget_view/SkeletonLoaderBudget.svelte
diff --git a/src/lib/components/budget/StaticAggregates.svelte b/src/lib/components/impacts_view/budget_view/StaticAggregates.svelte
similarity index 100%
rename from src/lib/components/budget/StaticAggregates.svelte
rename to src/lib/components/impacts_view/budget_view/StaticAggregates.svelte
diff --git a/src/lib/components/ValueChangeGagnantsPerdants.svelte b/src/lib/components/impacts_view/budget_view/ValueChangeGagnantsPerdants.svelte
similarity index 99%
rename from src/lib/components/ValueChangeGagnantsPerdants.svelte
rename to src/lib/components/impacts_view/budget_view/ValueChangeGagnantsPerdants.svelte
index e0f64744d5577df213d5136fee2184cc165f5bd2..c59645ab96b74871d74c3a8045c37073cba3bd6e 100644
--- a/src/lib/components/ValueChangeGagnantsPerdants.svelte
+++ b/src/lib/components/impacts_view/budget_view/ValueChangeGagnantsPerdants.svelte
@@ -1,5 +1,5 @@
 <script lang="ts">
-  import Tooltip from "$lib/components/Tooltip.svelte"
+  import Tooltip from "$lib/components/ui_transverse_components/Tooltip.svelte"
   import { valueFormatter } from "$lib/values"
   import type {
     BudgetVariableType,
diff --git a/src/lib/components/budget/WithoutBudgetCard.svelte b/src/lib/components/impacts_view/budget_view/WithoutBudgetCard.svelte
similarity index 100%
rename from src/lib/components/budget/WithoutBudgetCard.svelte
rename to src/lib/components/impacts_view/budget_view/WithoutBudgetCard.svelte
diff --git a/src/lib/components/test_cases/TestCaseScreenshotLayout.svelte b/src/lib/components/impacts_view/test_cases_view/TestCaseScreenshotLayout.svelte
similarity index 95%
rename from src/lib/components/test_cases/TestCaseScreenshotLayout.svelte
rename to src/lib/components/impacts_view/test_cases_view/TestCaseScreenshotLayout.svelte
index 51dad7546e6db2f5be15cfcaafc74cfc9e26ed31..fd7ef8eacf0353a5380d91bbc907e2fff6939c3f 100644
--- a/src/lib/components/test_cases/TestCaseScreenshotLayout.svelte
+++ b/src/lib/components/impacts_view/test_cases_view/TestCaseScreenshotLayout.svelte
@@ -1,6 +1,6 @@
 <script lang="ts">
-  import TestCaseSummary from "$lib/components/test_cases/TestCaseSummary.svelte"
-  import VariableValueChange from "$lib/components/variables/VariableValueChange.svelte"
+  import TestCaseSummary from "$lib/components/impacts_view/test_cases_view/test_case_selected/TestCaseSummary.svelte"
+  import VariableValueChange from "$lib/components/impacts_view/VariableValueChange.svelte"
   import type { EvaluationByName } from "$lib/decompositions"
   import type { DisplayMode } from "$lib/displays"
   import { shared } from "$lib/shared.svelte"
diff --git a/src/lib/components/TestCaseSimulationSharingModal.svelte b/src/lib/components/impacts_view/test_cases_view/TestCaseSimulationSharingModal.svelte
similarity index 96%
rename from src/lib/components/TestCaseSimulationSharingModal.svelte
rename to src/lib/components/impacts_view/test_cases_view/TestCaseSimulationSharingModal.svelte
index ba132c7e7fe0b320e01dc4b5475a0f001ab8767b..f6c557e9684b7013ae75f319bd6fdcb0af344768 100644
--- a/src/lib/components/TestCaseSimulationSharingModal.svelte
+++ b/src/lib/components/impacts_view/test_cases_view/TestCaseSimulationSharingModal.svelte
@@ -2,8 +2,8 @@
   import { Dialog } from "bits-ui"
 
   import { copyToClipboard } from "$lib/clipboard"
-  import DialogContent from "$lib/components/DialogContent.svelte"
-  import DialogOverlay from "$lib/components/DialogOverlay.svelte"
+  import DialogContent from "$lib/components/ui_transverse_components/DialogContent.svelte"
+  import DialogOverlay from "$lib/components/ui_transverse_components/DialogOverlay.svelte"
   import publicConfig from "$lib/public_config"
 
   interface Props {
diff --git a/src/lib/components/test_cases/OilSpendingBill.svelte b/src/lib/components/impacts_view/test_cases_view/test_case_selected/OilSpendingBill.svelte
similarity index 99%
rename from src/lib/components/test_cases/OilSpendingBill.svelte
rename to src/lib/components/impacts_view/test_cases_view/test_case_selected/OilSpendingBill.svelte
index 0b828bc7068e944a0ce0a4233aa9f8fc8cabb232..7e263a5d144c5f6379aceb4afc050d1b3ea60ff1 100644
--- a/src/lib/components/test_cases/OilSpendingBill.svelte
+++ b/src/lib/components/impacts_view/test_cases_view/test_case_selected/OilSpendingBill.svelte
@@ -7,7 +7,7 @@
     calculationNames,
     type CalculationName,
   } from "$lib/calculations.svelte"
-  import ValueChange from "$lib/components/ValueChange.svelte"
+  import ValueChange from "$lib/components/impacts_view/ValueChange.svelte"
   import { entityByKey } from "$lib/entities"
   import publicConfig from "$lib/public_config"
   import { getSituationVariableValue, type Situation } from "$lib/situations"
diff --git a/src/lib/components/WaterfallView.svelte b/src/lib/components/impacts_view/test_cases_view/test_case_selected/PaySlipView.svelte
similarity index 98%
rename from src/lib/components/WaterfallView.svelte
rename to src/lib/components/impacts_view/test_cases_view/test_case_selected/PaySlipView.svelte
index c8aa83ee952333922d5da229b7c8e8d337373a89..fc44777c8b93861d51810a067bbf9a01f6204a1a 100644
--- a/src/lib/components/WaterfallView.svelte
+++ b/src/lib/components/impacts_view/test_cases_view/test_case_selected/PaySlipView.svelte
@@ -2,11 +2,11 @@
   import type { VariableByName } from "@openfisca/json-model"
 
   import { goto } from "$app/navigation"
-  import OilSpendingBill from "$lib/components/test_cases/OilSpendingBill.svelte"
-  import TestCaseGraph from "$lib/components/test_cases/TestCaseGraph.svelte"
-  import Tooltip from "$lib/components/Tooltip.svelte"
-  import ValueChange from "$lib/components/ValueChange.svelte"
-  import VariableValueChange from "$lib/components/variables/VariableValueChange.svelte"
+  import OilSpendingBill from "$lib/components/impacts_view/test_cases_view/test_case_selected/OilSpendingBill.svelte"
+  import TestCaseGraph from "$lib/components/impacts_view/test_cases_view/test_case_selected/graph/TestCaseGraph.svelte"
+  import Tooltip from "$lib/components/ui_transverse_components/Tooltip.svelte"
+  import ValueChange from "$lib/components/impacts_view/ValueChange.svelte"
+  import VariableValueChange from "$lib/components/impacts_view/VariableValueChange.svelte"
   import {
     isNullVariableValueByCalculationName,
     variableValueByCalculationNameFromEvaluation,
diff --git a/src/lib/components/test_cases/TestCasePictos.svelte b/src/lib/components/impacts_view/test_cases_view/test_case_selected/TestCasePictos.svelte
similarity index 83%
rename from src/lib/components/test_cases/TestCasePictos.svelte
rename to src/lib/components/impacts_view/test_cases_view/test_case_selected/TestCasePictos.svelte
index ed9f1ba8fd6ecee590978372d12ff75d08fbd344..976f63015e4f9f6776732bd8e32fb0fd6afecb5d 100644
--- a/src/lib/components/test_cases/TestCasePictos.svelte
+++ b/src/lib/components/impacts_view/test_cases_view/test_case_selected/TestCasePictos.svelte
@@ -2,12 +2,12 @@
   import { type PopulationWithoutId } from "@openfisca/json-model"
 
   import { page } from "$app/stores"
-  import PictoBigAdulteRetraite from "$lib/components/pictos/PictoBigAdulteRetraite.svelte"
-  import PictoBigEnfant from "$lib/components/pictos/PictoBigEnfant.svelte"
-  import PictoBigParent from "$lib/components/pictos/PictoBigParent.svelte"
-  import PictoBigPersonneACharge from "$lib/components/pictos/PictoBigPersonneACharge.svelte"
-  import PictoGardeAlternee from "$lib/components/pictos/PictoGardeAlternee.svelte"
-  import PictoHandicap from "$lib/components/pictos/PictoHandicap.svelte"
+  import PictoBigAdulteRetraite from "$lib/components/ui_transverse_components/pictos/PictoBigAdulteRetraite.svelte"
+  import PictoBigEnfant from "$lib/components/ui_transverse_components/pictos/PictoBigEnfant.svelte"
+  import PictoBigParent from "$lib/components/ui_transverse_components/pictos/PictoBigParent.svelte"
+  import PictoBigPersonneACharge from "$lib/components/ui_transverse_components/pictos/PictoBigPersonneACharge.svelte"
+  import PictoGardeAlternee from "$lib/components/ui_transverse_components/pictos/PictoGardeAlternee.svelte"
+  import PictoHandicap from "$lib/components/ui_transverse_components/pictos/PictoHandicap.svelte"
   import { entityByKey, personEntityKey } from "$lib/entities"
   import publicConfig from "$lib/public_config"
   import { getSituationVariableValue, type Situation } from "$lib/situations"
diff --git a/src/lib/components/test_cases/TestCaseSummary.svelte b/src/lib/components/impacts_view/test_cases_view/test_case_selected/TestCaseSummary.svelte
similarity index 97%
rename from src/lib/components/test_cases/TestCaseSummary.svelte
rename to src/lib/components/impacts_view/test_cases_view/test_case_selected/TestCaseSummary.svelte
index ad7ce303705bad6f941737e96196ab1821fa8cf6..a245c9b97ebf933dbfea52ad19ad984d8666fdb6 100644
--- a/src/lib/components/test_cases/TestCaseSummary.svelte
+++ b/src/lib/components/impacts_view/test_cases_view/test_case_selected/TestCaseSummary.svelte
@@ -10,18 +10,18 @@
   import { createEventDispatcher } from "svelte"
 
   import { page } from "$app/stores"
-  import PictoBigAdulteRetraite from "$lib/components/pictos/PictoBigAdulteRetraite.svelte"
-  import PictoBigEnfant from "$lib/components/pictos/PictoBigEnfant.svelte"
-  import PictoBigHopital from "$lib/components/pictos/PictoBigHopital.svelte"
-  import PictoBigParent from "$lib/components/pictos/PictoBigParent.svelte"
-  import PictoBigPersonneACharge from "$lib/components/pictos/PictoBigPersonneACharge.svelte"
-  import PictoEntreprise from "$lib/components/pictos/PictoEntreprise.svelte"
-  import PictoFraisGazoil from "$lib/components/pictos/PictoFraisGazoil.svelte"
-  import PictoGardeAlternee from "$lib/components/pictos/PictoGardeAlternee.svelte"
-  import PictoHandicap from "$lib/components/pictos/PictoHandicap.svelte"
-  import PictoMaison from "$lib/components/pictos/PictoMaison.svelte"
-  import PictoRevenusCapital from "$lib/components/pictos/PictoRevenusCapital.svelte"
-  import TestCaseCompareModal from "$lib/components/test_cases/TestCaseCompareModal.svelte"
+  import PictoBigAdulteRetraite from "$lib/components/ui_transverse_components/pictos/PictoBigAdulteRetraite.svelte"
+  import PictoBigEnfant from "$lib/components/ui_transverse_components/pictos/PictoBigEnfant.svelte"
+  import PictoBigHopital from "$lib/components/ui_transverse_components/pictos/PictoBigHopital.svelte"
+  import PictoBigParent from "$lib/components/ui_transverse_components/pictos/PictoBigParent.svelte"
+  import PictoBigPersonneACharge from "$lib/components/ui_transverse_components/pictos/PictoBigPersonneACharge.svelte"
+  import PictoEntreprise from "$lib/components/ui_transverse_components/pictos/PictoEntreprise.svelte"
+  import PictoFraisGazoil from "$lib/components/ui_transverse_components/pictos/PictoFraisGazoil.svelte"
+  import PictoGardeAlternee from "$lib/components/ui_transverse_components/pictos/PictoGardeAlternee.svelte"
+  import PictoHandicap from "$lib/components/ui_transverse_components/pictos/PictoHandicap.svelte"
+  import PictoMaison from "$lib/components/ui_transverse_components/pictos/PictoMaison.svelte"
+  import PictoRevenusCapital from "$lib/components/ui_transverse_components/pictos/PictoRevenusCapital.svelte"
+  import TestCaseCompareModal from "$lib/components/impacts_view/test_cases_view/test_case_selected/compare_mode/TestCaseCompareModal.svelte"
   import type { DisplayMode } from "$lib/displays"
   import { entityByKey, personEntityKey } from "$lib/entities"
   import { getParameter, rootParameter } from "$lib/parameters"
diff --git a/src/lib/components/test_cases/TestCaseView.svelte b/src/lib/components/impacts_view/test_cases_view/test_case_selected/TestCaseView.svelte
similarity index 92%
rename from src/lib/components/test_cases/TestCaseView.svelte
rename to src/lib/components/impacts_view/test_cases_view/test_case_selected/TestCaseView.svelte
index dfbe17f9b864b823dd52b4ac3f539484532d6ee9..01e834480345a7d00e527e8288f3c1167b191e6f 100644
--- a/src/lib/components/test_cases/TestCaseView.svelte
+++ b/src/lib/components/impacts_view/test_cases_view/test_case_selected/TestCaseView.svelte
@@ -1,8 +1,7 @@
 <script lang="ts">
-  import SourcesMethodTooltip from "$lib/components/SourcesMethodTooltip.svelte"
-
-  import TestCaseSummary from "$lib/components/test_cases/TestCaseSummary.svelte"
-  import WaterfallView from "$lib/components/WaterfallView.svelte"
+  import SourcesMethodTooltip from "$lib/components/impacts_view/SourcesMethodTooltip.svelte"
+  import TestCaseSummary from "$lib/components/impacts_view/test_cases_view/test_case_selected/TestCaseSummary.svelte"
+  import PaySlipView from "$lib/components/impacts_view/test_cases_view/test_case_selected/PaySlipView.svelte"
   import { waterfalls } from "$lib/decompositions"
   import type { DisplayMode } from "$lib/displays"
   import type { Situation } from "$lib/situations"
@@ -77,7 +76,7 @@
         class="relative w-10/12 bg-white py-4 md:w-11/12"
         id="situation_{situationIndex}_waterfall"
       >
-        <WaterfallView
+        <PaySlipView
           {displayMode}
           {evaluationByName}
           {highlightDecomposition}
diff --git a/src/lib/components/WaterfallCompareView.svelte b/src/lib/components/impacts_view/test_cases_view/test_case_selected/compare_mode/PaySlipCompareView.svelte
similarity index 99%
rename from src/lib/components/WaterfallCompareView.svelte
rename to src/lib/components/impacts_view/test_cases_view/test_case_selected/compare_mode/PaySlipCompareView.svelte
index 6a93c62920cc49a11bf7cc86e6114633413de1a8..9243424b99151b199b071e9a85e909098d3244df 100644
--- a/src/lib/components/WaterfallCompareView.svelte
+++ b/src/lib/components/impacts_view/test_cases_view/test_case_selected/compare_mode/PaySlipCompareView.svelte
@@ -5,7 +5,7 @@
 
   import { goto } from "$app/navigation"
   import { page } from "$app/stores"
-  import Tooltip from "$lib/components/Tooltip.svelte"
+  import Tooltip from "$lib/components/ui_transverse_components/Tooltip.svelte"
   import type {
     EvaluationByName,
     VisibleDecompositionForComparison,
diff --git a/src/lib/components/test_cases/TestCaseCompareModal.svelte b/src/lib/components/impacts_view/test_cases_view/test_case_selected/compare_mode/TestCaseCompareModal.svelte
similarity index 96%
rename from src/lib/components/test_cases/TestCaseCompareModal.svelte
rename to src/lib/components/impacts_view/test_cases_view/test_case_selected/compare_mode/TestCaseCompareModal.svelte
index e63f015ae39ce6047201d9b33af8fa262d487c66..4491571d1e95d8846916e8f6c2855533dc54a232 100644
--- a/src/lib/components/test_cases/TestCaseCompareModal.svelte
+++ b/src/lib/components/impacts_view/test_cases_view/test_case_selected/compare_mode/TestCaseCompareModal.svelte
@@ -2,8 +2,8 @@
   import { Dialog } from "bits-ui"
   import { createEventDispatcher } from "svelte"
 
-  import DialogContent from "$lib/components/DialogContent.svelte"
-  import DialogOverlay from "$lib/components/DialogOverlay.svelte"
+  import DialogContent from "$lib/components/ui_transverse_components/DialogContent.svelte"
+  import DialogOverlay from "$lib/components/ui_transverse_components/DialogOverlay.svelte"
   import { shared } from "$lib/shared.svelte"
 
   interface Props {
diff --git a/src/lib/components/test_cases/TestCaseCompareView.svelte b/src/lib/components/impacts_view/test_cases_view/test_case_selected/compare_mode/TestCaseCompareView.svelte
similarity index 97%
rename from src/lib/components/test_cases/TestCaseCompareView.svelte
rename to src/lib/components/impacts_view/test_cases_view/test_case_selected/compare_mode/TestCaseCompareView.svelte
index daa5b51863e5ad704aefa749de12edaa688a690d..2f884fbafa95949349fb8af697ab0ccdd54b39d1 100644
--- a/src/lib/components/test_cases/TestCaseCompareView.svelte
+++ b/src/lib/components/impacts_view/test_cases_view/test_case_selected/compare_mode/TestCaseCompareView.svelte
@@ -3,9 +3,9 @@
   import { createEventDispatcher } from "svelte"
 
   import type { CalculationName } from "$lib/calculations.svelte"
-  import TestCaseSummary from "$lib/components/test_cases/TestCaseSummary.svelte"
-  import ValueChangeCompare from "$lib/components/ValueChangeCompare.svelte"
-  import WaterfallCompareView from "$lib/components/WaterfallCompareView.svelte"
+  import TestCaseSummary from "$lib/components/impacts_view/test_cases_view/test_case_selected/TestCaseSummary.svelte"
+  import ValueChangeCompare from "$lib/components/impacts_view/test_cases_view/test_case_selected/compare_mode/ValueChangeCompare.svelte"
+  import PaySlipCompareView from "$lib/components/impacts_view/test_cases_view/test_case_selected/compare_mode/PaySlipCompareView.svelte"
   import { type EvaluationByName, waterfalls } from "$lib/decompositions"
   import type { DisplayMode } from "$lib/displays"
   import { billName, revaluationName, shared } from "$lib/shared.svelte"
@@ -311,7 +311,7 @@
               </div>
             {/if}
           </div>
-          <WaterfallCompareView
+          <PaySlipCompareView
             {displayMode}
             evaluationByNameArray={shared.evaluationByNameArray}
             situations={shared.testCases}
diff --git a/src/lib/components/ValueChangeCompare.svelte b/src/lib/components/impacts_view/test_cases_view/test_case_selected/compare_mode/ValueChangeCompare.svelte
similarity index 100%
rename from src/lib/components/ValueChangeCompare.svelte
rename to src/lib/components/impacts_view/test_cases_view/test_case_selected/compare_mode/ValueChangeCompare.svelte
diff --git a/src/lib/components/Autocomplete.svelte b/src/lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/Autocomplete.svelte
similarity index 100%
rename from src/lib/components/Autocomplete.svelte
rename to src/lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/Autocomplete.svelte
diff --git a/src/lib/components/test_cases/RolePersonsEdit.svelte b/src/lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/RolePersonsEdit.svelte
similarity index 100%
rename from src/lib/components/test_cases/RolePersonsEdit.svelte
rename to src/lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/RolePersonsEdit.svelte
diff --git a/src/lib/components/test_cases/TestCaseEdit.svelte b/src/lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/TestCaseEdit.svelte
similarity index 97%
rename from src/lib/components/test_cases/TestCaseEdit.svelte
rename to src/lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/TestCaseEdit.svelte
index 2bb9b61c93706551ffc56c4c1c132d7f6794953c..b9490c06800bc3ecb387beb764c2c3514632c359 100644
--- a/src/lib/components/test_cases/TestCaseEdit.svelte
+++ b/src/lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/TestCaseEdit.svelte
@@ -14,14 +14,14 @@
   import { createEventDispatcher } from "svelte"
 
   import { requestAllTestCasesCalculations } from "$lib/calculations.svelte"
-  import PictoBigEnfant from "$lib/components/pictos/PictoBigEnfant.svelte"
-  import PictoBigParent from "$lib/components/pictos/PictoBigParent.svelte"
-  import RolePersonsEdit from "$lib/components/test_cases/RolePersonsEdit.svelte"
-  import TestCaseEditVariablesSearch from "$lib/components/test_cases/TestCaseEditVariablesSearch.svelte"
-  import Toggletip from "$lib/components/Toggletip.svelte"
-  import Tooltip from "$lib/components/Tooltip.svelte"
-  import VariableInput from "$lib/components/variables/VariableInput.svelte"
-  import VariableReferredInputsPane from "$lib/components/variables/VariableReferredInputsPane.svelte"
+  import PictoBigEnfant from "$lib/components/ui_transverse_components/pictos/PictoBigEnfant.svelte"
+  import PictoBigParent from "$lib/components/ui_transverse_components/pictos/PictoBigParent.svelte"
+  import RolePersonsEdit from "$lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/RolePersonsEdit.svelte"
+  import TestCaseEditVariablesSearch from "$lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/TestCaseEditVariablesSearch.svelte"
+  import Toggletip from "$lib/components/ui_transverse_components/Toggletip.svelte"
+  import Tooltip from "$lib/components/ui_transverse_components/Tooltip.svelte"
+  import VariableInput from "$lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/VariableInput.svelte"
+  import VariableReferredInputsPane from "$lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/VariableReferredInputsPane.svelte"
   import { decompositionCoreByName } from "$lib/decompositions"
   import { entityByKey, personEntityKey } from "$lib/entities"
   import publicConfig from "$lib/public_config"
diff --git a/src/lib/components/test_cases/TestCaseEditVariablesSearch.svelte b/src/lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/TestCaseEditVariablesSearch.svelte
similarity index 97%
rename from src/lib/components/test_cases/TestCaseEditVariablesSearch.svelte
rename to src/lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/TestCaseEditVariablesSearch.svelte
index a58a002a91e749375fa141ad2bfafa841e24464e..aec6d1c60e383d7ad07ff8543bb6f33431e3c7fa 100644
--- a/src/lib/components/test_cases/TestCaseEditVariablesSearch.svelte
+++ b/src/lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/TestCaseEditVariablesSearch.svelte
@@ -1,7 +1,7 @@
 <script lang="ts">
   import type { Variable } from "@openfisca/json-model"
 
-  import VariableInput from "$lib/components/variables/VariableInput.svelte"
+  import VariableInput from "$lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/VariableInput.svelte"
   import { parseSearch } from "$lib/search/regexp_search"
   import { billName } from "$lib/shared.svelte"
   import type { Situation } from "$lib/situations"
diff --git a/src/lib/components/variables/VariableInput.svelte b/src/lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/VariableInput.svelte
similarity index 98%
rename from src/lib/components/variables/VariableInput.svelte
rename to src/lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/VariableInput.svelte
index 4ee97dc2930cd885f92dcb27bff79e5b7d371673..5f15e4555abf716bfc8efc5adaa656f8fd7f19dd 100644
--- a/src/lib/components/variables/VariableInput.svelte
+++ b/src/lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/VariableInput.svelte
@@ -4,9 +4,9 @@
   import { getVariableLatestFormulaDate } from "@openfisca/json-model"
 
   import { requestAllTestCasesCalculations } from "$lib/calculations.svelte"
-  import Autocomplete from "$lib/components/Autocomplete.svelte"
-  import Tooltip from "$lib/components/Tooltip.svelte"
-  import ValueChange from "$lib/components/ValueChange.svelte"
+  import Autocomplete from "$lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/Autocomplete.svelte"
+  import Tooltip from "$lib/components/ui_transverse_components/Tooltip.svelte"
+  import ValueChange from "$lib/components/impacts_view/ValueChange.svelte"
   import { entityByKey } from "$lib/entities"
   import publicConfig from "$lib/public_config"
   import {
diff --git a/src/lib/components/variables/VariableReferredInputs.svelte b/src/lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/VariableReferredInputs.svelte
similarity index 98%
rename from src/lib/components/variables/VariableReferredInputs.svelte
rename to src/lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/VariableReferredInputs.svelte
index 17e9855c62f652393288db36fbbc11a0505713d6..0bce3efc5b79cc92c7d10ec88d0d086f6d300d41 100644
--- a/src/lib/components/variables/VariableReferredInputs.svelte
+++ b/src/lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/VariableReferredInputs.svelte
@@ -4,7 +4,7 @@
   import type { Variable } from "@openfisca/json-model"
   import { getVariableFormula } from "@openfisca/json-model"
 
-  import VariableInput from "$lib/components/variables/VariableInput.svelte"
+  import VariableInput from "$lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/VariableInput.svelte"
   import { parseSearch } from "$lib/search/regexp_search"
   import type { Situation } from "$lib/situations"
   import type { ValuesByCalculationNameByVariableName } from "$lib/variables"
diff --git a/src/lib/components/variables/VariableReferredInputsPane.svelte b/src/lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/VariableReferredInputsPane.svelte
similarity index 94%
rename from src/lib/components/variables/VariableReferredInputsPane.svelte
rename to src/lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/VariableReferredInputsPane.svelte
index 050db874aa04fae1988ea936413051160fc950a5..5da51f7316052d0fa04c28252d7ae77a05bb8dd1 100644
--- a/src/lib/components/variables/VariableReferredInputsPane.svelte
+++ b/src/lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/VariableReferredInputsPane.svelte
@@ -2,7 +2,7 @@
   import type { Variable } from "@openfisca/json-model"
   import { createEventDispatcher } from "svelte"
 
-  import VariableReferredInputs from "./VariableReferredInputs.svelte"
+  import VariableReferredInputs from "$lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/VariableReferredInputs.svelte"
 
   import {
     decompositionCoreByName,
diff --git a/src/lib/components/test_cases/TestCaseGraph.svelte b/src/lib/components/impacts_view/test_cases_view/test_case_selected/graph/TestCaseGraph.svelte
similarity index 97%
rename from src/lib/components/test_cases/TestCaseGraph.svelte
rename to src/lib/components/impacts_view/test_cases_view/test_case_selected/graph/TestCaseGraph.svelte
index 9eff7ebc23145190f2f363dfc6038f2dfece4038..7dc069f1ee1dd29abb8b4ca5964daf02f527ec12 100644
--- a/src/lib/components/test_cases/TestCaseGraph.svelte
+++ b/src/lib/components/impacts_view/test_cases_view/test_case_selected/graph/TestCaseGraph.svelte
@@ -13,27 +13,27 @@
   import { fade } from "svelte/transition"
 
   import type { CalculationName } from "$lib/calculations.svelte"
-  import PersistentPopover from "$lib/components/PersistentPopover.svelte"
-  import PictoBigAdulteRetraite from "$lib/components/pictos/PictoBigAdulteRetraite.svelte"
-  import PictoBigEnfant from "$lib/components/pictos/PictoBigEnfant.svelte"
-  import PictoBigParent from "$lib/components/pictos/PictoBigParent.svelte"
-  import PictoBigPersonneACharge from "$lib/components/pictos/PictoBigPersonneACharge.svelte"
-  import PictoGardeAlternee from "$lib/components/pictos/PictoGardeAlternee.svelte"
-  import PictoHandicap from "$lib/components/pictos/PictoHandicap.svelte"
-  import Area from "$lib/components/piece_of_cake/Area.svelte"
-  import AxisX from "$lib/components/piece_of_cake/AxisX.svelte"
-  import AxisY from "$lib/components/piece_of_cake/AxisY.svelte"
-  import DragSelect from "$lib/components/piece_of_cake/DragSelect.svelte"
-  import Html from "$lib/components/piece_of_cake/Html.svelte"
-  import { CurveModel } from "$lib/components/piece_of_cake/model"
-  import MultiLine from "$lib/components/piece_of_cake/MultiLine.svelte"
-  import PieceOfCake from "$lib/components/piece_of_cake/PieceOfCake.svelte"
-  import SharedTooltip from "$lib/components/piece_of_cake/SharedTooltip.svelte"
-  import Svg from "$lib/components/piece_of_cake/Svg.svelte"
-  import type { GraphDomain } from "$lib/components/piece_of_cake/types"
-  import TestCaseGraphXlsxExport from "$lib/components/test_cases/TestCaseGraphXlsxExport.svelte"
-  import Tooltip from "$lib/components/Tooltip.svelte"
-  import ValueChange from "$lib/components/ValueChange.svelte"
+  import PersistentPopover from "$lib/components/ui_transverse_components/PersistentPopover.svelte"
+  import PictoBigAdulteRetraite from "$lib/components/ui_transverse_components/pictos/PictoBigAdulteRetraite.svelte"
+  import PictoBigEnfant from "$lib/components/ui_transverse_components/pictos/PictoBigEnfant.svelte"
+  import PictoBigParent from "$lib/components/ui_transverse_components/pictos/PictoBigParent.svelte"
+  import PictoBigPersonneACharge from "$lib/components/ui_transverse_components/pictos/PictoBigPersonneACharge.svelte"
+  import PictoGardeAlternee from "$lib/components/ui_transverse_components/pictos/PictoGardeAlternee.svelte"
+  import PictoHandicap from "$lib/components/ui_transverse_components/pictos/PictoHandicap.svelte"
+  import Area from "$lib/components/ui_transverse_components/piece_of_cake/Area.svelte"
+  import AxisX from "$lib/components/ui_transverse_components/piece_of_cake/AxisX.svelte"
+  import AxisY from "$lib/components/ui_transverse_components/piece_of_cake/AxisY.svelte"
+  import DragSelect from "$lib/components/ui_transverse_components/piece_of_cake/DragSelect.svelte"
+  import Html from "$lib/components/ui_transverse_components/piece_of_cake/Html.svelte"
+  import { CurveModel } from "$lib/components/ui_transverse_components/piece_of_cake/model"
+  import MultiLine from "$lib/components/ui_transverse_components/piece_of_cake/MultiLine.svelte"
+  import PieceOfCake from "$lib/components/ui_transverse_components/piece_of_cake/PieceOfCake.svelte"
+  import SharedTooltip from "$lib/components/ui_transverse_components/piece_of_cake/SharedTooltip.svelte"
+  import Svg from "$lib/components/ui_transverse_components/piece_of_cake/Svg.svelte"
+  import type { GraphDomain } from "$lib/components/ui_transverse_components/piece_of_cake/types"
+  import TestCaseGraphXlsxExport from "$lib/components/impacts_view/test_cases_view/test_case_selected/graph/TestCaseGraphXlsxExport.svelte"
+  import Tooltip from "$lib/components/ui_transverse_components/Tooltip.svelte"
+  import ValueChange from "$lib/components/impacts_view/ValueChange.svelte"
   import {
     buildVisibleDecompositionsForGraph,
     type EvaluationByName,
diff --git a/src/lib/components/test_cases/TestCaseGraphXlsxExport.svelte b/src/lib/components/impacts_view/test_cases_view/test_case_selected/graph/TestCaseGraphXlsxExport.svelte
similarity index 99%
rename from src/lib/components/test_cases/TestCaseGraphXlsxExport.svelte
rename to src/lib/components/impacts_view/test_cases_view/test_case_selected/graph/TestCaseGraphXlsxExport.svelte
index f541e5a079a2c7a02a39237dabf3203ec84084cc..597f79c2ff67ea741f222fdbcb8f9c4400aaa682 100644
--- a/src/lib/components/test_cases/TestCaseGraphXlsxExport.svelte
+++ b/src/lib/components/impacts_view/test_cases_view/test_case_selected/graph/TestCaseGraphXlsxExport.svelte
@@ -12,7 +12,7 @@
   import XLSX from "xlsx-js-style"
 
   import { page } from "$app/stores"
-  import type { GraphDomain } from "$lib/components/piece_of_cake/types"
+  import type { GraphDomain } from "$lib/components/ui_transverse_components/piece_of_cake/types"
   import { decompositionCoreByName } from "$lib/decompositions"
   import type { DisplayMode } from "$lib/displays"
   import { entityByKey } from "$lib/entities"
diff --git a/src/lib/components/test_cases/TestCaseFilters.svelte b/src/lib/components/impacts_view/test_cases_view/test_cases_library/TestCaseFilters.svelte
similarity index 98%
rename from src/lib/components/test_cases/TestCaseFilters.svelte
rename to src/lib/components/impacts_view/test_cases_view/test_cases_library/TestCaseFilters.svelte
index 2f9a5194c004155972ea97264c576dfccefcebef..2570399bd0bf5cbbed56c5bf9e148076ab2d10e4 100644
--- a/src/lib/components/test_cases/TestCaseFilters.svelte
+++ b/src/lib/components/impacts_view/test_cases_view/test_cases_library/TestCaseFilters.svelte
@@ -6,10 +6,10 @@
   import { createEventDispatcher } from "svelte"
 
   import { page } from "$app/stores"
-  import SelectChip from "$lib/components/SelectChip.svelte"
-  import TestCaseSummary from "$lib/components/test_cases/TestCaseSummary.svelte"
-  import Tooltip from "$lib/components/Tooltip.svelte"
-  import VariableValueChange from "$lib/components/variables/VariableValueChange.svelte"
+  import SelectChip from "$lib/components/ui_transverse_components/SelectChip.svelte"
+  import TestCaseSummary from "$lib/components/impacts_view/test_cases_view/test_case_selected/TestCaseSummary.svelte"
+  import Tooltip from "$lib/components/ui_transverse_components/Tooltip.svelte"
+  import VariableValueChange from "$lib/components/impacts_view/VariableValueChange.svelte"
   import {
     decompositionCoreByName,
     decompositionCoreByNameByReformName,
diff --git a/src/lib/components/test_cases/TestCaseSelectModal.svelte b/src/lib/components/impacts_view/test_cases_view/test_cases_library/TestCaseSelectModal.svelte
similarity index 86%
rename from src/lib/components/test_cases/TestCaseSelectModal.svelte
rename to src/lib/components/impacts_view/test_cases_view/test_cases_library/TestCaseSelectModal.svelte
index f338162d021903ec33d5d32c25dc1ab278ef3004..01c0718d501097aefca3899683dbfe0e24730efd 100644
--- a/src/lib/components/test_cases/TestCaseSelectModal.svelte
+++ b/src/lib/components/impacts_view/test_cases_view/test_cases_library/TestCaseSelectModal.svelte
@@ -3,9 +3,9 @@
   import { createEventDispatcher } from "svelte"
 
   import { goto } from "$app/navigation"
-  import DialogContent from "$lib/components/DialogContent.svelte"
-  import DialogOverlay from "$lib/components/DialogOverlay.svelte"
-  import TestCaseFilters from "$lib/components/test_cases/TestCaseFilters.svelte"
+  import DialogContent from "$lib/components/ui_transverse_components/DialogContent.svelte"
+  import DialogOverlay from "$lib/components/ui_transverse_components/DialogOverlay.svelte"
+  import TestCaseFilters from "$lib/components/impacts_view/test_cases_view/test_cases_library/TestCaseFilters.svelte"
   import type { DisplayMode } from "$lib/displays"
   import { shared } from "$lib/shared.svelte"
   import { newSimulationUrl } from "$lib/urls"
diff --git a/src/lib/components/impacts_view/test_cases_view/test_cases_library/TestCasesLibraryButton.svelte b/src/lib/components/impacts_view/test_cases_view/test_cases_library/TestCasesLibraryButton.svelte
new file mode 100644
index 0000000000000000000000000000000000000000..a45c0de290db08bc7059c940302f5e49662a078f
--- /dev/null
+++ b/src/lib/components/impacts_view/test_cases_view/test_cases_library/TestCasesLibraryButton.svelte
@@ -0,0 +1,42 @@
+<script lang="ts">
+  import PictoBigEnfant from "$lib/components/ui_transverse_components/pictos/PictoBigEnfant.svelte"
+  import PictoBigParent from "$lib/components/ui_transverse_components/pictos/PictoBigParent.svelte"
+  import type { DisplayMode } from "$lib/displays"
+  interface Props {
+    displayMode: DisplayMode
+    isTestCaseSelectModalOpen: boolean
+  }
+
+  let { displayMode, isTestCaseSelectModalOpen = $bindable() }: Props = $props()
+</script>
+
+<button
+  class="lx-card flex items-start justify-between gap-5 px-7 py-5"
+  onclick={() => (isTestCaseSelectModalOpen = true)}
+>
+  <div class="flex flex-col">
+    <span class="text-start text-lg font-bold 2xl:text-xl">
+      {#if displayMode.parametersVariableName === undefined}
+        Choisir un cas type
+      {:else}
+        Bibliothèque des cas types
+      {/if}
+    </span>
+    <span class="max-w-48 text-start text-sm">
+      Sélectionner un ménage parmi tous ceux disponibles
+    </span>
+  </div>
+  <div class="flex flex-col items-center">
+    <div class="flex h-[7px] w-[80%] rounded-t border bg-gray-100"></div>
+    <div
+      class="-mt-[1px] flex h-[8px] w-[90%] rounded-t border bg-gray-100"
+    ></div>
+    <div
+      class="-mt-[1px] flex rounded border"
+      style="background: linear-gradient(to bottom, #f5f5f5 50%, white 50%);"
+    >
+      <PictoBigParent />
+      <PictoBigEnfant />
+    </div>
+  </div>
+</button>
diff --git a/src/lib/components/ModificationsPanel.svelte b/src/lib/components/legislation_view/ModificationsPanel.svelte
similarity index 98%
rename from src/lib/components/ModificationsPanel.svelte
rename to src/lib/components/legislation_view/ModificationsPanel.svelte
index 49ea51251959c2ba33ea63e367b32fef66dd9ac6..7d32f4d8abbaa6b82675466be4bdc8adedd1c5cf 100644
--- a/src/lib/components/ModificationsPanel.svelte
+++ b/src/lib/components/legislation_view/ModificationsPanel.svelte
@@ -6,8 +6,8 @@
     requestAllBudgetCalculations,
     requestAllTestCasesCalculations,
   } from "$lib/calculations.svelte"
-  import PersistentPopover from "$lib/components/PersistentPopover.svelte"
-  import ReformsChanges from "$lib/components/ReformsChanges.svelte"
+  import PersistentPopover from "$lib/components/ui_transverse_components/PersistentPopover.svelte"
+  import ReformsChanges from "$lib/components/legislation_view/ReformsChanges.svelte"
   import {
     buildDecompositionByNameFromCore,
     type DecompositionByName,
diff --git a/src/lib/components/ReformsChanges.svelte b/src/lib/components/legislation_view/ReformsChanges.svelte
similarity index 99%
rename from src/lib/components/ReformsChanges.svelte
rename to src/lib/components/legislation_view/ReformsChanges.svelte
index 68ed8d62b84fbfc4dbf627148f46a1026ce3897b..4f640b1079652d6e21929da4206b68a15537102f 100644
--- a/src/lib/components/ReformsChanges.svelte
+++ b/src/lib/components/legislation_view/ReformsChanges.svelte
@@ -11,7 +11,7 @@
     type Variable,
   } from "@openfisca/json-model"
 
-  import Tooltip from "$lib/components/Tooltip.svelte"
+  import Tooltip from "$lib/components/ui_transverse_components/Tooltip.svelte"
   import type { DisplayMode } from "$lib/displays"
   import {
     asValueParameter,
diff --git a/src/lib/components/parameters/ScaleAtInstantEdit.svelte b/src/lib/components/legislation_view/parameters/ScaleAtInstantEdit.svelte
similarity index 100%
rename from src/lib/components/parameters/ScaleAtInstantEdit.svelte
rename to src/lib/components/legislation_view/parameters/ScaleAtInstantEdit.svelte
diff --git a/src/lib/components/parameters/ValueAtInstantEdit.svelte b/src/lib/components/legislation_view/parameters/ValueAtInstantEdit.svelte
similarity index 100%
rename from src/lib/components/parameters/ValueAtInstantEdit.svelte
rename to src/lib/components/legislation_view/parameters/ValueAtInstantEdit.svelte
diff --git a/src/lib/components/variables/VariableReferredNodeParameter.svelte b/src/lib/components/legislation_view/parameters/VariableReferredNodeParameter.svelte
similarity index 89%
rename from src/lib/components/variables/VariableReferredNodeParameter.svelte
rename to src/lib/components/legislation_view/parameters/VariableReferredNodeParameter.svelte
index 1b9f2f293694283f401b2a73fbce668440769bf0..b9ae5c8009f8fe90e90c48d03552d3e74925c3a8 100644
--- a/src/lib/components/variables/VariableReferredNodeParameter.svelte
+++ b/src/lib/components/legislation_view/parameters/VariableReferredNodeParameter.svelte
@@ -1,5 +1,5 @@
 <script lang="ts">
-  import VariableReferredNodeParameter from "./VariableReferredNodeParameter.svelte"
+  import VariableReferredNodeParameter from "$lib/components/legislation_view/parameters/VariableReferredNodeParameter.svelte"
   import {
     ParameterClass,
     type NodeParameter,
@@ -8,9 +8,9 @@
     type ValueParameter,
   } from "@openfisca/json-model"
 
-  import VariableReferredParameterHeader from "./VariableReferredParameterHeader.svelte"
-  import VariableReferredScaleParameter from "./VariableReferredScaleParameter.svelte"
-  import VariableReferredValueParameter from "./VariableReferredValueParameter.svelte"
+  import VariableReferredParameterHeader from "$lib/components/legislation_view/parameters/VariableReferredParameterHeader.svelte"
+  import VariableReferredScaleParameter from "$lib/components/legislation_view/parameters/VariableReferredScaleParameter.svelte"
+  import VariableReferredValueParameter from "$lib/components/legislation_view/parameters/VariableReferredValueParameter.svelte"
 
   import type { DisplayMode } from "$lib/displays"
 
diff --git a/src/lib/components/variables/VariableReferredParameterHeader.svelte b/src/lib/components/legislation_view/parameters/VariableReferredParameterHeader.svelte
similarity index 100%
rename from src/lib/components/variables/VariableReferredParameterHeader.svelte
rename to src/lib/components/legislation_view/parameters/VariableReferredParameterHeader.svelte
diff --git a/src/lib/components/variables/VariableReferredParameters.svelte b/src/lib/components/legislation_view/parameters/VariableReferredParameters.svelte
similarity index 96%
rename from src/lib/components/variables/VariableReferredParameters.svelte
rename to src/lib/components/legislation_view/parameters/VariableReferredParameters.svelte
index d454c249bffe74baba0792624f75bd67234be068..b285f88880d557ee598293519dce424f3dcacbb0 100644
--- a/src/lib/components/variables/VariableReferredParameters.svelte
+++ b/src/lib/components/legislation_view/parameters/VariableReferredParameters.svelte
@@ -11,10 +11,10 @@
     type ValueParameter,
   } from "@openfisca/json-model"
 
-  import VariableHeader from "./VariableHeader.svelte"
-  import VariableReferredNodeParameter from "./VariableReferredNodeParameter.svelte"
-  import VariableReferredScaleParameter from "./VariableReferredScaleParameter.svelte"
-  import VariableReferredValueParameter from "./VariableReferredValueParameter.svelte"
+  import VariableHeader from "$lib/components/legislation_view/variables/VariableHeader.svelte"
+  import VariableReferredNodeParameter from "$lib/components/legislation_view/parameters/VariableReferredNodeParameter.svelte"
+  import VariableReferredScaleParameter from "$lib/components/legislation_view/parameters/VariableReferredScaleParameter.svelte"
+  import VariableReferredValueParameter from "$lib/components/legislation_view/parameters/VariableReferredValueParameter.svelte"
 
   import {
     decompositionCoreByName,
diff --git a/src/lib/components/variables/VariableReferredScaleAtInstant.svelte b/src/lib/components/legislation_view/parameters/VariableReferredScaleAtInstant.svelte
similarity index 98%
rename from src/lib/components/variables/VariableReferredScaleAtInstant.svelte
rename to src/lib/components/legislation_view/parameters/VariableReferredScaleAtInstant.svelte
index bd0e9f69ead2fdbe5d92248aabefdadf8eb371a7..ef7b667dd02c0252ae3f700f60cdb32687c98ae9 100644
--- a/src/lib/components/variables/VariableReferredScaleAtInstant.svelte
+++ b/src/lib/components/legislation_view/parameters/VariableReferredScaleAtInstant.svelte
@@ -24,8 +24,8 @@
   } from "@openfisca/json-model"
   import { createEventDispatcher } from "svelte"
 
-  import VariableReferredValueEdit from "$lib/components/variables/VariableReferredValueEdit.svelte"
-  import VariableReferredValueView from "$lib/components/variables/VariableReferredValueView.svelte"
+  import VariableReferredValueEdit from "$lib/components/legislation_view/parameters/VariableReferredValueEdit.svelte"
+  import VariableReferredValueView from "$lib/components/legislation_view/parameters/VariableReferredValueView.svelte"
   import { errorAsKeyValueDictionary, iterArrayWithErrors } from "$lib/errors"
   import {
     asAmountBracketAtInstant,
diff --git a/src/lib/components/variables/VariableReferredScaleParameter.svelte b/src/lib/components/legislation_view/parameters/VariableReferredScaleParameter.svelte
similarity index 95%
rename from src/lib/components/variables/VariableReferredScaleParameter.svelte
rename to src/lib/components/legislation_view/parameters/VariableReferredScaleParameter.svelte
index 45ed9f7dbd30d046b9c0a3e5c2cad68181de633f..48a760cbd88df441d1a820fa49ba49c81f3eadb5 100644
--- a/src/lib/components/variables/VariableReferredScaleParameter.svelte
+++ b/src/lib/components/legislation_view/parameters/VariableReferredScaleParameter.svelte
@@ -15,11 +15,11 @@
     requestBudgetCalculation,
     requestTestCasesCalculation,
   } from "$lib/calculations.svelte"
-  import ArticleModal from "$lib/components/parameters/ArticleModal.svelte"
-  import InflationLawButton from "$lib/components/variables/InflationLawButton.svelte"
-  import InflationLawInfoModal from "$lib/components/variables/InflationLawInfoModal.svelte"
-  import VariableReferredParameterHeader from "$lib/components/variables/VariableReferredParameterHeader.svelte"
-  import VariableReferredScaleAtInstant from "$lib/components/variables/VariableReferredScaleAtInstant.svelte"
+  import LegislationReferenceModal from "$lib/components/legislation_view/parameters/legislation_reference_view/LegislationReferenceModal.svelte"
+  import InflationLawButton from "$lib/components/legislation_view/parameters/inflation_view/InflationLawButton.svelte"
+  import InflationLawInfoModal from "$lib/components/legislation_view/parameters/inflation_view/InflationLawInfoModal.svelte"
+  import VariableReferredParameterHeader from "$lib/components/legislation_view/parameters/VariableReferredParameterHeader.svelte"
+  import VariableReferredScaleAtInstant from "$lib/components/legislation_view/parameters/VariableReferredScaleAtInstant.svelte"
   import type { DisplayMode } from "$lib/displays"
   import {
     trackLawEditParameterArticles,
@@ -392,7 +392,7 @@
             </li>
           {/each}
         </ul>
-        <ArticleModal
+        <LegislationReferenceModal
           on:close={() => (openReferenceUrl = null)}
           parameter={lawParameter ?? billParameter}
           referenceUrl={openReferenceUrl ?? null}
diff --git a/src/lib/components/variables/VariableReferredValueEdit.svelte b/src/lib/components/legislation_view/parameters/VariableReferredValueEdit.svelte
similarity index 100%
rename from src/lib/components/variables/VariableReferredValueEdit.svelte
rename to src/lib/components/legislation_view/parameters/VariableReferredValueEdit.svelte
diff --git a/src/lib/components/variables/VariableReferredValueParameter.svelte b/src/lib/components/legislation_view/parameters/VariableReferredValueParameter.svelte
similarity index 95%
rename from src/lib/components/variables/VariableReferredValueParameter.svelte
rename to src/lib/components/legislation_view/parameters/VariableReferredValueParameter.svelte
index e01e3e49d7567939f264af009ead3897090e84de..a236340e252f86cfbe4630214380ba1fb11bf74a 100644
--- a/src/lib/components/variables/VariableReferredValueParameter.svelte
+++ b/src/lib/components/legislation_view/parameters/VariableReferredValueParameter.svelte
@@ -23,12 +23,12 @@
     requestBudgetCalculation,
     requestTestCasesCalculation,
   } from "$lib/calculations.svelte"
-  import ArticleModal from "$lib/components/parameters/ArticleModal.svelte"
-  import InflationLawButton from "$lib/components/variables/InflationLawButton.svelte"
-  import InflationLawInfoModal from "$lib/components/variables/InflationLawInfoModal.svelte"
-  import VariableReferredParameterHeader from "$lib/components/variables/VariableReferredParameterHeader.svelte"
-  import VariableReferredValueEdit from "$lib/components/variables/VariableReferredValueEdit.svelte"
-  import VariableReferredValueView from "$lib/components/variables/VariableReferredValueView.svelte"
+  import LegislationReferenceModal from "$lib/components/legislation_view/parameters/legislation_reference_view/LegislationReferenceModal.svelte"
+  import InflationLawButton from "$lib/components/legislation_view/parameters/inflation_view/InflationLawButton.svelte"
+  import InflationLawInfoModal from "$lib/components/legislation_view/parameters/inflation_view/InflationLawInfoModal.svelte"
+  import VariableReferredParameterHeader from "$lib/components/legislation_view/parameters/VariableReferredParameterHeader.svelte"
+  import VariableReferredValueEdit from "$lib/components/legislation_view/parameters/VariableReferredValueEdit.svelte"
+  import VariableReferredValueView from "$lib/components/legislation_view/parameters/VariableReferredValueView.svelte"
   import type { DisplayMode } from "$lib/displays"
   import {
     trackLawEditParameterArticles,
@@ -437,7 +437,7 @@
               </li>
             {/each}
           </ul>
-          <ArticleModal
+          <LegislationReferenceModal
             on:close={() => (openReferenceUrl = null)}
             parameter={lawParameter ?? billParameter}
             referenceUrl={openReferenceUrl}
diff --git a/src/lib/components/variables/VariableReferredValueView.svelte b/src/lib/components/legislation_view/parameters/VariableReferredValueView.svelte
similarity index 97%
rename from src/lib/components/variables/VariableReferredValueView.svelte
rename to src/lib/components/legislation_view/parameters/VariableReferredValueView.svelte
index e39386a00b7ebf850534802fa44d91e1e32ac056..22b5099dc565901d27c8025bd761226edb755bf0 100644
--- a/src/lib/components/variables/VariableReferredValueView.svelte
+++ b/src/lib/components/legislation_view/parameters/VariableReferredValueView.svelte
@@ -1,7 +1,7 @@
 <script lang="ts">
   import type { Unit, ValueAtInstant } from "@openfisca/json-model"
 
-  import Tooltip from "$lib/components/Tooltip.svelte"
+  import Tooltip from "$lib/components/ui_transverse_components/Tooltip.svelte"
   import { removeNegativeZero } from "$lib/values"
 
   interface Props {
diff --git a/src/lib/components/variables/InflationLawButton.svelte b/src/lib/components/legislation_view/parameters/inflation_view/InflationLawButton.svelte
similarity index 100%
rename from src/lib/components/variables/InflationLawButton.svelte
rename to src/lib/components/legislation_view/parameters/inflation_view/InflationLawButton.svelte
diff --git a/src/lib/components/variables/InflationLawDetails.svelte b/src/lib/components/legislation_view/parameters/inflation_view/InflationLawDetails.svelte
similarity index 100%
rename from src/lib/components/variables/InflationLawDetails.svelte
rename to src/lib/components/legislation_view/parameters/inflation_view/InflationLawDetails.svelte
diff --git a/src/lib/components/variables/InflationLawInfoModal.svelte b/src/lib/components/legislation_view/parameters/inflation_view/InflationLawInfoModal.svelte
similarity index 91%
rename from src/lib/components/variables/InflationLawInfoModal.svelte
rename to src/lib/components/legislation_view/parameters/inflation_view/InflationLawInfoModal.svelte
index b924083416b751bd9ac9182cf8c9cd7958373ee1..3ec338650c23a47bcb55487fdcc474d5084f9c99 100644
--- a/src/lib/components/variables/InflationLawInfoModal.svelte
+++ b/src/lib/components/legislation_view/parameters/inflation_view/InflationLawInfoModal.svelte
@@ -6,10 +6,10 @@
   } from "@openfisca/json-model"
   import { Dialog } from "bits-ui"
 
-  import DialogContent from "$lib/components/DialogContent.svelte"
-  import DialogOverlay from "$lib/components/DialogOverlay.svelte"
-  import ArticleModal from "$lib/components/parameters/ArticleModal.svelte"
-  import InflationLawDetails from "$lib/components/variables/InflationLawDetails.svelte"
+  import DialogContent from "$lib/components/ui_transverse_components/DialogContent.svelte"
+  import DialogOverlay from "$lib/components/ui_transverse_components/DialogOverlay.svelte"
+  import LegislationReferenceModal from "$lib/components/legislation_view/parameters/legislation_reference_view/LegislationReferenceModal.svelte"
+  import InflationLawDetails from "$lib/components/legislation_view/parameters/inflation_view/InflationLawDetails.svelte"
   import { billName, yearPLF } from "$lib/shared.svelte"
 
   interface Props {
@@ -113,7 +113,7 @@
         </ol>
       </div>
 
-      <ArticleModal
+      <LegislationReferenceModal
         on:close={() => (openReferenceUrl = null)}
         parameter={lawParameter ?? billParameter}
         referenceUrl={openReferenceUrl ?? null}
diff --git a/src/lib/components/legifrance/LienView.svelte b/src/lib/components/legislation_view/parameters/legislation_reference_view/LegislationReferenceExternalLink.svelte
similarity index 94%
rename from src/lib/components/legifrance/LienView.svelte
rename to src/lib/components/legislation_view/parameters/legislation_reference_view/LegislationReferenceExternalLink.svelte
index 25f78daa8947cfffbdda300cf644d62c8e62356f..d664dd53c1801cc84333a1957956237ea6eab84a 100644
--- a/src/lib/components/legifrance/LienView.svelte
+++ b/src/lib/components/legislation_view/parameters/legislation_reference_view/LegislationReferenceExternalLink.svelte
@@ -10,7 +10,7 @@
     rootTypeFromLegalId,
   } from "@tricoteuses/legal-explorer"
 
-  import ArticleView from "$lib/components/legifrance/ArticleView.svelte"
+  import LegislationReferenceView from "$lib/components/legislation_view/parameters/legislation_reference_view/LegislationReferenceView.svelte"
   import publicConfig from "$lib/public_config"
 
   interface Props {
@@ -36,7 +36,7 @@
           return undefined
         }
         return {
-          component: ArticleView,
+          component: LegislationReferenceView,
           properties: { article, level },
         }
       }
diff --git a/src/lib/components/parameters/ArticleModal.svelte b/src/lib/components/legislation_view/parameters/legislation_reference_view/LegislationReferenceModal.svelte
similarity index 87%
rename from src/lib/components/parameters/ArticleModal.svelte
rename to src/lib/components/legislation_view/parameters/legislation_reference_view/LegislationReferenceModal.svelte
index 1d7c4124b786ec5150218fedf6f4bcaac31291a6..befb78c3512abceeadef5a194b44acffc3fdde73 100644
--- a/src/lib/components/parameters/ArticleModal.svelte
+++ b/src/lib/components/legislation_view/parameters/legislation_reference_view/LegislationReferenceModal.svelte
@@ -3,9 +3,9 @@
   import { Dialog } from "bits-ui"
   import { createEventDispatcher } from "svelte"
 
-  import DialogContent from "$lib/components/DialogContent.svelte"
-  import DialogOverlay from "$lib/components/DialogOverlay.svelte"
-  import ArticleView from "$lib/components/legifrance/ArticleView.svelte"
+  import DialogContent from "$lib/components/ui_transverse_components/DialogContent.svelte"
+  import DialogOverlay from "$lib/components/ui_transverse_components/DialogOverlay.svelte"
+  import LegislationReferenceView from "$lib/components/legislation_view/parameters/legislation_reference_view/LegislationReferenceView.svelte"
   import publicConfig from "$lib/public_config"
 
   interface Props {
@@ -73,7 +73,7 @@
             </p>
           {:else}
             <div class="overflow-y-auto">
-              <ArticleView {article} {parameter} />
+              <LegislationReferenceView {article} {parameter} />
             </div>
           {/if}
         {/await}
diff --git a/src/lib/components/legifrance/ArticleView.svelte b/src/lib/components/legislation_view/parameters/legislation_reference_view/LegislationReferenceView.svelte
similarity index 97%
rename from src/lib/components/legifrance/ArticleView.svelte
rename to src/lib/components/legislation_view/parameters/legislation_reference_view/LegislationReferenceView.svelte
index 9af9809d99c47f3e7f0af899d3b600853b8b54c0..af2b33a14b6634f7efa970b5a7561955bcb59d46 100644
--- a/src/lib/components/legifrance/ArticleView.svelte
+++ b/src/lib/components/legislation_view/parameters/legislation_reference_view/LegislationReferenceView.svelte
@@ -24,7 +24,7 @@
   } from "@tricoteuses/legal-explorer"
   import { ToWords } from "to-words"
 
-  import LienView from "$lib/components/legifrance/LienView.svelte"
+  import LegislationReferenceExternalLink from "$lib/components/legislation_view/parameters/legislation_reference_view/LegislationReferenceExternalLink.svelte"
   import { getUnitAtDate } from "$lib/units"
 
   interface Props {
@@ -318,7 +318,7 @@
   <ul>
     {#each liens as lien}
       <li class="font-serif">
-        <LienView level={level + 1} {lien} />
+        <LegislationReferenceExternalLink level={level + 1} {lien} />
       </li>
     {/each}
   </ul>
diff --git a/src/lib/components/parameters/ParameterView.svelte b/src/lib/components/legislation_view/parameters/technical_details_view/ParameterView.svelte
similarity index 99%
rename from src/lib/components/parameters/ParameterView.svelte
rename to src/lib/components/legislation_view/parameters/technical_details_view/ParameterView.svelte
index 56837d882918a55dfc16c25bdf3ebf80559b10b2..9dfbe48805d6b894c65335178c13e426d28b5d68 100644
--- a/src/lib/components/parameters/ParameterView.svelte
+++ b/src/lib/components/legislation_view/parameters/technical_details_view/ParameterView.svelte
@@ -10,7 +10,7 @@
   import { getContext } from "svelte"
 
   import { goto } from "$app/navigation"
-  import ScaleView from "$lib/components/parameters/ScaleView.svelte"
+  import ScaleView from "$lib/components/legislation_view/parameters/technical_details_view/ScaleView.svelte"
   import { metadata } from "$lib/metadata"
   import {
     asAmountScaleParameter,
diff --git a/src/lib/components/parameters/ReferencesView.svelte b/src/lib/components/legislation_view/parameters/technical_details_view/ReferencesView.svelte
similarity index 100%
rename from src/lib/components/parameters/ReferencesView.svelte
rename to src/lib/components/legislation_view/parameters/technical_details_view/ReferencesView.svelte
diff --git a/src/lib/components/parameters/ScaleView.svelte b/src/lib/components/legislation_view/parameters/technical_details_view/ScaleView.svelte
similarity index 100%
rename from src/lib/components/parameters/ScaleView.svelte
rename to src/lib/components/legislation_view/parameters/technical_details_view/ScaleView.svelte
diff --git a/src/lib/components/parameters/NodeEdit.svelte b/src/lib/components/legislation_view/parameters/technical_details_view/contribution_view/NodeEdit.svelte
similarity index 98%
rename from src/lib/components/parameters/NodeEdit.svelte
rename to src/lib/components/legislation_view/parameters/technical_details_view/contribution_view/NodeEdit.svelte
index 80610cc958f5c58a23c3fb21618c79ce02ef2a3c..b0c93125340da94e17f5d249029bea9d296dad49 100644
--- a/src/lib/components/parameters/NodeEdit.svelte
+++ b/src/lib/components/legislation_view/parameters/technical_details_view/contribution_view/NodeEdit.svelte
@@ -2,7 +2,7 @@
   import { auditDateIso8601String, laxAudit } from "@auditors/core"
   import type { NodeParameter, Reference } from "@openfisca/json-model"
 
-  import ReferencesEdit from "$lib/components/parameters/ReferencesEdit.svelte"
+  import ReferencesEdit from "$lib/components/legislation_view/parameters/technical_details_view/contribution_view/ReferencesEdit.svelte"
   import { errorAsKeyValueDictionary, iterArrayWithErrors } from "$lib/errors"
   import { getUnitLabel, units } from "$lib/units"
 
diff --git a/src/lib/components/parameters/ReferenceEdit.svelte b/src/lib/components/legislation_view/parameters/technical_details_view/contribution_view/ReferenceEdit.svelte
similarity index 100%
rename from src/lib/components/parameters/ReferenceEdit.svelte
rename to src/lib/components/legislation_view/parameters/technical_details_view/contribution_view/ReferenceEdit.svelte
diff --git a/src/lib/components/parameters/ReferencesEdit.svelte b/src/lib/components/legislation_view/parameters/technical_details_view/contribution_view/ReferencesEdit.svelte
similarity index 95%
rename from src/lib/components/parameters/ReferencesEdit.svelte
rename to src/lib/components/legislation_view/parameters/technical_details_view/contribution_view/ReferencesEdit.svelte
index 46a46575571976c9a2dcd60da11e92357c250a7e..e3ff5422abaad47d011313a290c6eb3d8ad1476e 100644
--- a/src/lib/components/parameters/ReferencesEdit.svelte
+++ b/src/lib/components/legislation_view/parameters/technical_details_view/contribution_view/ReferencesEdit.svelte
@@ -2,7 +2,7 @@
   import type { Reference } from "@openfisca/json-model"
   import { createEventDispatcher } from "svelte"
 
-  import ReferenceEdit from "$lib/components/parameters/ReferenceEdit.svelte"
+  import ReferenceEdit from "$lib/components/legislation_view/parameters/technical_details_view/contribution_view/ReferenceEdit.svelte"
   import { errorAsKeyValueDictionary, iterArrayWithErrors } from "$lib/errors"
 
   interface Props {
diff --git a/src/lib/components/parameters/ScaleEdit.svelte b/src/lib/components/legislation_view/parameters/technical_details_view/contribution_view/ScaleEdit.svelte
similarity index 98%
rename from src/lib/components/parameters/ScaleEdit.svelte
rename to src/lib/components/legislation_view/parameters/technical_details_view/contribution_view/ScaleEdit.svelte
index b09317997c3e5b3762a402e60b5ebf1b3b533d03..b524baebbeef54710153dc52c82a02b39912c2a4 100644
--- a/src/lib/components/parameters/ScaleEdit.svelte
+++ b/src/lib/components/legislation_view/parameters/technical_details_view/contribution_view/ScaleEdit.svelte
@@ -10,8 +10,8 @@
     type ScaleParameter,
   } from "@openfisca/json-model"
 
-  import ReferencesEdit from "$lib/components/parameters/ReferencesEdit.svelte"
-  import ScaleAtInstantEdit from "$lib/components/parameters/ScaleAtInstantEdit.svelte"
+  import ReferencesEdit from "$lib/components/legislation_view/parameters/technical_details_view/contribution_view/ReferencesEdit.svelte"
+  import ScaleAtInstantEdit from "$lib/components/legislation_view/parameters/ScaleAtInstantEdit.svelte"
   import { errorAsKeyValueDictionary, iterArrayWithErrors } from "$lib/errors"
   import { iterToLimit } from "$lib/iterators"
   import {
diff --git a/src/lib/components/parameters/ValueEdit.svelte b/src/lib/components/legislation_view/parameters/technical_details_view/contribution_view/ValueEdit.svelte
similarity index 97%
rename from src/lib/components/parameters/ValueEdit.svelte
rename to src/lib/components/legislation_view/parameters/technical_details_view/contribution_view/ValueEdit.svelte
index 55015419cb46578e71c4a2ca4806f9f38c8cdf18..4e7374e9ae69a5222d3dbde8e5daa5a628121947 100644
--- a/src/lib/components/parameters/ValueEdit.svelte
+++ b/src/lib/components/legislation_view/parameters/technical_details_view/contribution_view/ValueEdit.svelte
@@ -7,8 +7,8 @@
   } from "@openfisca/json-model"
   import { ValueType } from "@openfisca/json-model"
 
-  import ReferencesEdit from "$lib/components/parameters/ReferencesEdit.svelte"
-  import ValueAtInstantEdit from "$lib/components/parameters/ValueAtInstantEdit.svelte"
+  import ReferencesEdit from "$lib/components/legislation_view/parameters/technical_details_view/contribution_view/ReferencesEdit.svelte"
+  import ValueAtInstantEdit from "$lib/components/legislation_view/parameters/ValueAtInstantEdit.svelte"
   import { errorAsKeyValueDictionary, iterArrayWithErrors } from "$lib/errors"
   import { iterToLimit } from "$lib/iterators"
   import {
diff --git a/src/lib/components/variables/VariableHeader.svelte b/src/lib/components/legislation_view/variables/VariableHeader.svelte
similarity index 97%
rename from src/lib/components/variables/VariableHeader.svelte
rename to src/lib/components/legislation_view/variables/VariableHeader.svelte
index 2166bf203a77e6996c5de5d7809a661663febf04..fa02b9b2895eb6c445b3b8172fe0ac651c1ab155 100644
--- a/src/lib/components/variables/VariableHeader.svelte
+++ b/src/lib/components/legislation_view/variables/VariableHeader.svelte
@@ -2,8 +2,8 @@
   import type { Variable } from "@openfisca/json-model"
   import { getVariableLatestFormulaDate } from "@openfisca/json-model"
 
-  import ReadMore from "$lib/components/ReadMore.svelte"
-  import Tooltip from "$lib/components/Tooltip.svelte"
+  import ReadMore from "$lib/components/legislation_view/variables/details_modal/ReadMore.svelte"
+  import Tooltip from "$lib/components/ui_transverse_components/Tooltip.svelte"
   import type { Decomposition } from "$lib/decompositions"
   import type { DisplayMode } from "$lib/displays"
   import { memoUrlByName } from "$lib/memos"
diff --git a/src/lib/components/ReadMore.svelte b/src/lib/components/legislation_view/variables/details_modal/ReadMore.svelte
similarity index 100%
rename from src/lib/components/ReadMore.svelte
rename to src/lib/components/legislation_view/variables/details_modal/ReadMore.svelte
diff --git a/src/lib/components/variables/VariableDetail.svelte b/src/lib/components/legislation_view/variables/details_modal/VariableDetail.svelte
similarity index 95%
rename from src/lib/components/variables/VariableDetail.svelte
rename to src/lib/components/legislation_view/variables/details_modal/VariableDetail.svelte
index 0fd9a519367bc4c6c71d5c6ffb9a7e2c301fde20..b9041793bb53c19d4aec1fd6f48cbb9506b81699 100644
--- a/src/lib/components/variables/VariableDetail.svelte
+++ b/src/lib/components/legislation_view/variables/details_modal/VariableDetail.svelte
@@ -8,14 +8,14 @@
   import { goto } from "$app/navigation"
   import { requestAllBudgetCalculations } from "$lib/calculations.svelte"
   import { clickOutside } from "$lib/click_outside"
-  import Accordion from "$lib/components/accordion/Accordion.svelte"
-  import AccordionItem from "$lib/components/accordion/AccordionItem.svelte"
-  import PictoBudgetEtat from "$lib/components/pictos/PictoBudgetEtat.svelte"
-  import TestCaseFilters from "$lib/components/test_cases/TestCaseFilters.svelte"
-  import TestCasePictos from "$lib/components/test_cases/TestCasePictos.svelte"
-  import VariableDetailBudget from "$lib/components/variables/VariableDetailBudget.svelte"
-  import VariableValueChange from "$lib/components/variables/VariableValueChange.svelte"
-  import WithoutBudgetCard from "$lib/components/budget/WithoutBudgetCard.svelte"
+  import Accordion from "$lib/components/ui_transverse_components/accordion/Accordion.svelte"
+  import AccordionItem from "$lib/components/ui_transverse_components/accordion/AccordionItem.svelte"
+  import PictoBudgetEtat from "$lib/components/ui_transverse_components/pictos/PictoBudgetEtat.svelte"
+  import TestCaseFilters from "$lib/components/impacts_view/test_cases_view/test_cases_library/TestCaseFilters.svelte"
+  import TestCasePictos from "$lib/components/impacts_view/test_cases_view/test_case_selected/TestCasePictos.svelte"
+  import VariableDetailBudget from "$lib/components/legislation_view/variables/details_modal/VariableDetailBudget.svelte"
+  import VariableValueChange from "$lib/components/impacts_view/VariableValueChange.svelte"
+  import WithoutBudgetCard from "$lib/components/impacts_view/budget_view/WithoutBudgetCard.svelte"
   import {
     decompositionCoreByName,
     decompositionCoreByNameByReformName,
diff --git a/src/lib/components/variables/VariableDetailBudget.svelte b/src/lib/components/legislation_view/variables/details_modal/VariableDetailBudget.svelte
similarity index 98%
rename from src/lib/components/variables/VariableDetailBudget.svelte
rename to src/lib/components/legislation_view/variables/details_modal/VariableDetailBudget.svelte
index 8404377cdea1db12cd6f8a2cadb3885b69d9320e..91ede505bf4e8abc96c960f621bb6ff8761398a2 100644
--- a/src/lib/components/variables/VariableDetailBudget.svelte
+++ b/src/lib/components/legislation_view/variables/details_modal/VariableDetailBudget.svelte
@@ -3,7 +3,7 @@
   import type { Writable } from "svelte/store"
 
   import type { BudgetSimulation } from "$lib/budgets"
-  import ValueChange from "$lib/components/ValueChange.svelte"
+  import ValueChange from "$lib/components/impacts_view/ValueChange.svelte"
   import {
     type BudgetVariable,
     budgetVariableNameByVariableName,
diff --git a/src/lib/components/variables/FormulaView.svelte b/src/lib/components/legislation_view/variables/technical_details_view/FormulaView.svelte
similarity index 97%
rename from src/lib/components/variables/FormulaView.svelte
rename to src/lib/components/legislation_view/variables/technical_details_view/FormulaView.svelte
index 61a2b690f5fd0951487fc6cc755e53039a6576be..f9c8ebab8076b13417e8f2c85ff6a0aa8a4d352b 100644
--- a/src/lib/components/variables/FormulaView.svelte
+++ b/src/lib/components/legislation_view/variables/technical_details_view/FormulaView.svelte
@@ -7,7 +7,7 @@
   import type { Writable } from "svelte/store"
 
   import { page } from "$app/stores"
-  import VariableInput from "$lib/components/variables/VariableInput.svelte"
+  import VariableInput from "$lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/VariableInput.svelte"
   import { entityByKey } from "$lib/entities"
   import { leafParametersName } from "$lib/parameters"
   import publicConfig from "$lib/public_config"
diff --git a/src/lib/components/variables/VariableView.svelte b/src/lib/components/legislation_view/variables/technical_details_view/VariableView.svelte
similarity index 97%
rename from src/lib/components/variables/VariableView.svelte
rename to src/lib/components/legislation_view/variables/technical_details_view/VariableView.svelte
index ff381009351cdae67a27d41004d7f93a77f8648c..fb3c302d0ffdb82130713cf4a73e5fe59ccda432 100644
--- a/src/lib/components/variables/VariableView.svelte
+++ b/src/lib/components/legislation_view/variables/technical_details_view/VariableView.svelte
@@ -2,8 +2,8 @@
   import type { Variable } from "@openfisca/json-model"
   import { getContext } from "svelte"
 
-  import FormulaView from "$lib/components/variables/FormulaView.svelte"
-  import VariableInput from "$lib/components/variables/VariableInput.svelte"
+  import FormulaView from "$lib/components/legislation_view/variables/technical_details_view/FormulaView.svelte"
+  import VariableInput from "$lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/VariableInput.svelte"
   import { decompositionCoreByName } from "$lib/decompositions"
   import publicConfig from "$lib/public_config"
   import { date, year } from "$lib/shared.svelte"
diff --git a/src/lib/components/test_cases/TestCaseTab.svelte b/src/lib/components/test_cases/TestCaseTab.svelte
deleted file mode 100644
index 96bede8232eb474d5b9a856eb35508c3a8eb6b4f..0000000000000000000000000000000000000000
--- a/src/lib/components/test_cases/TestCaseTab.svelte
+++ /dev/null
@@ -1,38 +0,0 @@
-<script lang="ts">
-  import { onMount } from "svelte"
-
-  interface Props {
-    href: string
-    icon: string | undefined
-    picto: string | undefined
-    text: string
-    isActive: boolean
-    isDisabled: boolean
-  }
-
-  let { href, icon, picto, text, isActive, isDisabled }: Props = $props()
-
-  let pictoComponent = $state()
-
-  onMount(async () => {
-    if (picto !== undefined)
-      pictoComponent = (await import(`$lib/components/pictos/${picto}.svelte`))
-        .default
-  })
-</script>
-
-<a
-  class="flex items-center gap-2 border-r-2 px-4 py-4 text-sm uppercase text-gray-600 md:px-8 2xl:text-base"
-  class:bg-white={isActive && !isDisabled}
-  class:shadow-md={isActive && !isDisabled}
-  class:!text-gray-400={isDisabled}
-  class:cursor-not-allowed={isDisabled}
-  href={!isDisabled ? href : undefined}
->
-  {#if pictoComponent !== undefined}
-    <pictoComponent classNames="w-5 2xl:w-6"></pictoComponent>
-  {:else}
-    <iconify-icon {icon} class="text-xl 2xl:text-2xl"></iconify-icon>
-  {/if}
-  {text}
-</a>
diff --git a/src/lib/components/test_cases/TestCasesStackRepresentation.svelte b/src/lib/components/test_cases/TestCasesStackRepresentation.svelte
deleted file mode 100644
index 9d62eea96d0b640bcfd4f33b1eae6e4793bdd9b1..0000000000000000000000000000000000000000
--- a/src/lib/components/test_cases/TestCasesStackRepresentation.svelte
+++ /dev/null
@@ -1,18 +0,0 @@
-<script>
-  import PictoBigEnfant from "$lib/components/pictos/PictoBigEnfant.svelte"
-  import PictoBigParent from "$lib/components/pictos/PictoBigParent.svelte"
-</script>
-
-<div class="flex flex-col items-center">
-  <div class="flex h-[7px] w-[80%] rounded-t border bg-gray-100"></div>
-  <div
-    class="-mt-[1px] flex h-[8px] w-[90%] rounded-t border bg-gray-100"
-  ></div>
-  <div
-    class="-mt-[1px] flex rounded border"
-    style="background: linear-gradient(to bottom, #f5f5f5 50%, white 50%);"
-  >
-    <PictoBigParent />
-    <PictoBigEnfant />
-  </div>
-</div>
diff --git a/src/lib/components/transverse_pages/TextUnderconstructionMessage.svelte b/src/lib/components/transverse_pages/TextUnderconstructionMessage.svelte
deleted file mode 100644
index 1cde79cfd7a1ab434c528affcbc4dfc3b1a009ee..0000000000000000000000000000000000000000
--- a/src/lib/components/transverse_pages/TextUnderconstructionMessage.svelte
+++ /dev/null
@@ -1,6 +0,0 @@
-<script lang="ts">
-</script>
-
-<p class="flex rounded bg-amber-500 p-3 text-sm leading-normal text-white">
-  🚧 &nbsp; Cette partie est en construction.
-</p>
diff --git a/src/lib/components/transverse_pages/UnderconstructionMessage.svelte b/src/lib/components/transverse_pages/UnderconstructionMessage.svelte
deleted file mode 100644
index f00bb97e9caba5120ea42ac993e85ef029568ecb..0000000000000000000000000000000000000000
--- a/src/lib/components/transverse_pages/UnderconstructionMessage.svelte
+++ /dev/null
@@ -1,6 +0,0 @@
-<script lang="ts">
-</script>
-
-<p class="flex rounded bg-amber-500 p-3 text-sm leading-normal text-white">
-  🚧 &nbsp; Cette page est en construction.
-</p>
diff --git a/src/lib/components/transverse_pages/AnchorTitle.svelte b/src/lib/components/ui_transverse_components/AnchorTitle.svelte
similarity index 100%
rename from src/lib/components/transverse_pages/AnchorTitle.svelte
rename to src/lib/components/ui_transverse_components/AnchorTitle.svelte
diff --git a/src/lib/components/DialogContent.svelte b/src/lib/components/ui_transverse_components/DialogContent.svelte
similarity index 100%
rename from src/lib/components/DialogContent.svelte
rename to src/lib/components/ui_transverse_components/DialogContent.svelte
diff --git a/src/lib/components/DialogOverlay.svelte b/src/lib/components/ui_transverse_components/DialogOverlay.svelte
similarity index 100%
rename from src/lib/components/DialogOverlay.svelte
rename to src/lib/components/ui_transverse_components/DialogOverlay.svelte
diff --git a/src/lib/components/PersistentPopover.svelte b/src/lib/components/ui_transverse_components/PersistentPopover.svelte
similarity index 100%
rename from src/lib/components/PersistentPopover.svelte
rename to src/lib/components/ui_transverse_components/PersistentPopover.svelte
diff --git a/src/lib/components/SelectChip.svelte b/src/lib/components/ui_transverse_components/SelectChip.svelte
similarity index 100%
rename from src/lib/components/SelectChip.svelte
rename to src/lib/components/ui_transverse_components/SelectChip.svelte
diff --git a/src/lib/components/Toggletip.svelte b/src/lib/components/ui_transverse_components/Toggletip.svelte
similarity index 100%
rename from src/lib/components/Toggletip.svelte
rename to src/lib/components/ui_transverse_components/Toggletip.svelte
diff --git a/src/lib/components/Tooltip.svelte b/src/lib/components/ui_transverse_components/Tooltip.svelte
similarity index 100%
rename from src/lib/components/Tooltip.svelte
rename to src/lib/components/ui_transverse_components/Tooltip.svelte
diff --git a/src/lib/components/accordion/Accordion.svelte b/src/lib/components/ui_transverse_components/accordion/Accordion.svelte
similarity index 100%
rename from src/lib/components/accordion/Accordion.svelte
rename to src/lib/components/ui_transverse_components/accordion/Accordion.svelte
diff --git a/src/lib/components/accordion/AccordionItem.svelte b/src/lib/components/ui_transverse_components/accordion/AccordionItem.svelte
similarity index 100%
rename from src/lib/components/accordion/AccordionItem.svelte
rename to src/lib/components/ui_transverse_components/accordion/AccordionItem.svelte
diff --git a/src/lib/components/layercake/AxisY.svelte b/src/lib/components/ui_transverse_components/layercake/AxisY.svelte
similarity index 100%
rename from src/lib/components/layercake/AxisY.svelte
rename to src/lib/components/ui_transverse_components/layercake/AxisY.svelte
diff --git a/src/lib/components/layercake/Column.svelte b/src/lib/components/ui_transverse_components/layercake/Column.svelte
similarity index 100%
rename from src/lib/components/layercake/Column.svelte
rename to src/lib/components/ui_transverse_components/layercake/Column.svelte
diff --git a/src/lib/components/pictos/PictoArbreMetropole.svelte b/src/lib/components/ui_transverse_components/pictos/PictoArbreMetropole.svelte
similarity index 100%
rename from src/lib/components/pictos/PictoArbreMetropole.svelte
rename to src/lib/components/ui_transverse_components/pictos/PictoArbreMetropole.svelte
diff --git a/src/lib/components/pictos/PictoBigAdulteRetraite.svelte b/src/lib/components/ui_transverse_components/pictos/PictoBigAdulteRetraite.svelte
similarity index 100%
rename from src/lib/components/pictos/PictoBigAdulteRetraite.svelte
rename to src/lib/components/ui_transverse_components/pictos/PictoBigAdulteRetraite.svelte
diff --git a/src/lib/components/pictos/PictoBigEnfant.svelte b/src/lib/components/ui_transverse_components/pictos/PictoBigEnfant.svelte
similarity index 100%
rename from src/lib/components/pictos/PictoBigEnfant.svelte
rename to src/lib/components/ui_transverse_components/pictos/PictoBigEnfant.svelte
diff --git a/src/lib/components/pictos/PictoBigEntreprise.svelte b/src/lib/components/ui_transverse_components/pictos/PictoBigEntreprise.svelte
similarity index 100%
rename from src/lib/components/pictos/PictoBigEntreprise.svelte
rename to src/lib/components/ui_transverse_components/pictos/PictoBigEntreprise.svelte
diff --git a/src/lib/components/pictos/PictoBigHopital.svelte b/src/lib/components/ui_transverse_components/pictos/PictoBigHopital.svelte
similarity index 100%
rename from src/lib/components/pictos/PictoBigHopital.svelte
rename to src/lib/components/ui_transverse_components/pictos/PictoBigHopital.svelte
diff --git a/src/lib/components/pictos/PictoBigParent.svelte b/src/lib/components/ui_transverse_components/pictos/PictoBigParent.svelte
similarity index 100%
rename from src/lib/components/pictos/PictoBigParent.svelte
rename to src/lib/components/ui_transverse_components/pictos/PictoBigParent.svelte
diff --git a/src/lib/components/pictos/PictoBigPersonneACharge.svelte b/src/lib/components/ui_transverse_components/pictos/PictoBigPersonneACharge.svelte
similarity index 100%
rename from src/lib/components/pictos/PictoBigPersonneACharge.svelte
rename to src/lib/components/ui_transverse_components/pictos/PictoBigPersonneACharge.svelte
diff --git a/src/lib/components/pictos/PictoBudgetDecileIr.svelte b/src/lib/components/ui_transverse_components/pictos/PictoBudgetDecileIr.svelte
similarity index 100%
rename from src/lib/components/pictos/PictoBudgetDecileIr.svelte
rename to src/lib/components/ui_transverse_components/pictos/PictoBudgetDecileIr.svelte
diff --git a/src/lib/components/pictos/PictoBudgetDecileIrFoyer.svelte b/src/lib/components/ui_transverse_components/pictos/PictoBudgetDecileIrFoyer.svelte
similarity index 100%
rename from src/lib/components/pictos/PictoBudgetDecileIrFoyer.svelte
rename to src/lib/components/ui_transverse_components/pictos/PictoBudgetDecileIrFoyer.svelte
diff --git a/src/lib/components/pictos/PictoBudgetEtat.svelte b/src/lib/components/ui_transverse_components/pictos/PictoBudgetEtat.svelte
similarity index 100%
rename from src/lib/components/pictos/PictoBudgetEtat.svelte
rename to src/lib/components/ui_transverse_components/pictos/PictoBudgetEtat.svelte
diff --git a/src/lib/components/pictos/PictoBudgetEtatIr.svelte b/src/lib/components/ui_transverse_components/pictos/PictoBudgetEtatIr.svelte
similarity index 100%
rename from src/lib/components/pictos/PictoBudgetEtatIr.svelte
rename to src/lib/components/ui_transverse_components/pictos/PictoBudgetEtatIr.svelte
diff --git a/src/lib/components/pictos/PictoBudgetGagnantsPerdants.svelte b/src/lib/components/ui_transverse_components/pictos/PictoBudgetGagnantsPerdants.svelte
similarity index 100%
rename from src/lib/components/pictos/PictoBudgetGagnantsPerdants.svelte
rename to src/lib/components/ui_transverse_components/pictos/PictoBudgetGagnantsPerdants.svelte
diff --git a/src/lib/components/pictos/PictoEffectifEntreprise.svelte b/src/lib/components/ui_transverse_components/pictos/PictoEffectifEntreprise.svelte
similarity index 100%
rename from src/lib/components/pictos/PictoEffectifEntreprise.svelte
rename to src/lib/components/ui_transverse_components/pictos/PictoEffectifEntreprise.svelte
diff --git a/src/lib/components/pictos/PictoEnfant.svelte b/src/lib/components/ui_transverse_components/pictos/PictoEnfant.svelte
similarity index 100%
rename from src/lib/components/pictos/PictoEnfant.svelte
rename to src/lib/components/ui_transverse_components/pictos/PictoEnfant.svelte
diff --git a/src/lib/components/pictos/PictoEntreprise.svelte b/src/lib/components/ui_transverse_components/pictos/PictoEntreprise.svelte
similarity index 100%
rename from src/lib/components/pictos/PictoEntreprise.svelte
rename to src/lib/components/ui_transverse_components/pictos/PictoEntreprise.svelte
diff --git a/src/lib/components/pictos/PictoEtat.svelte b/src/lib/components/ui_transverse_components/pictos/PictoEtat.svelte
similarity index 100%
rename from src/lib/components/pictos/PictoEtat.svelte
rename to src/lib/components/ui_transverse_components/pictos/PictoEtat.svelte
diff --git a/src/lib/components/pictos/PictoFemme.svelte b/src/lib/components/ui_transverse_components/pictos/PictoFemme.svelte
similarity index 100%
rename from src/lib/components/pictos/PictoFemme.svelte
rename to src/lib/components/ui_transverse_components/pictos/PictoFemme.svelte
diff --git a/src/lib/components/pictos/PictoFicheDePaie.svelte b/src/lib/components/ui_transverse_components/pictos/PictoFicheDePaie.svelte
similarity index 100%
rename from src/lib/components/pictos/PictoFicheDePaie.svelte
rename to src/lib/components/ui_transverse_components/pictos/PictoFicheDePaie.svelte
diff --git a/src/lib/components/pictos/PictoFraisGazoil.svelte b/src/lib/components/ui_transverse_components/pictos/PictoFraisGazoil.svelte
similarity index 100%
rename from src/lib/components/pictos/PictoFraisGazoil.svelte
rename to src/lib/components/ui_transverse_components/pictos/PictoFraisGazoil.svelte
diff --git a/src/lib/components/pictos/PictoGardeAlternee.svelte b/src/lib/components/ui_transverse_components/pictos/PictoGardeAlternee.svelte
similarity index 100%
rename from src/lib/components/pictos/PictoGardeAlternee.svelte
rename to src/lib/components/ui_transverse_components/pictos/PictoGardeAlternee.svelte
diff --git a/src/lib/components/pictos/PictoHandicap.svelte b/src/lib/components/ui_transverse_components/pictos/PictoHandicap.svelte
similarity index 100%
rename from src/lib/components/pictos/PictoHandicap.svelte
rename to src/lib/components/ui_transverse_components/pictos/PictoHandicap.svelte
diff --git a/src/lib/components/pictos/PictoMaison.svelte b/src/lib/components/ui_transverse_components/pictos/PictoMaison.svelte
similarity index 100%
rename from src/lib/components/pictos/PictoMaison.svelte
rename to src/lib/components/ui_transverse_components/pictos/PictoMaison.svelte
diff --git a/src/lib/components/pictos/PictoNombreSalaries.svelte b/src/lib/components/ui_transverse_components/pictos/PictoNombreSalaries.svelte
similarity index 100%
rename from src/lib/components/pictos/PictoNombreSalaries.svelte
rename to src/lib/components/ui_transverse_components/pictos/PictoNombreSalaries.svelte
diff --git a/src/lib/components/pictos/PictoOpenFisca.svelte b/src/lib/components/ui_transverse_components/pictos/PictoOpenFisca.svelte
similarity index 100%
rename from src/lib/components/pictos/PictoOpenFisca.svelte
rename to src/lib/components/ui_transverse_components/pictos/PictoOpenFisca.svelte
diff --git a/src/lib/components/pictos/PictoRevenusCapital.svelte b/src/lib/components/ui_transverse_components/pictos/PictoRevenusCapital.svelte
similarity index 100%
rename from src/lib/components/pictos/PictoRevenusCapital.svelte
rename to src/lib/components/ui_transverse_components/pictos/PictoRevenusCapital.svelte
diff --git a/src/lib/components/piece_of_cake/Area.svelte b/src/lib/components/ui_transverse_components/piece_of_cake/Area.svelte
similarity index 99%
rename from src/lib/components/piece_of_cake/Area.svelte
rename to src/lib/components/ui_transverse_components/piece_of_cake/Area.svelte
index 39f9073577b96b42e0c46afe5fdd034e3c8a80ae..4e870e627a223f584319a1e28453d0b2a8ba1eb1 100644
--- a/src/lib/components/piece_of_cake/Area.svelte
+++ b/src/lib/components/ui_transverse_components/piece_of_cake/Area.svelte
@@ -7,7 +7,7 @@
   import { v4 as uuidV4 } from "uuid"
 
   import type { CalculationName } from "$lib/calculations.svelte"
-  import type { CurveModel } from "$lib/components/piece_of_cake/model"
+  import type { CurveModel } from "$lib/components/ui_transverse_components/piece_of_cake/model"
 
   interface Props {
     modelGroups: CurveModel[][]
diff --git a/src/lib/components/piece_of_cake/AxisX.svelte b/src/lib/components/ui_transverse_components/piece_of_cake/AxisX.svelte
similarity index 100%
rename from src/lib/components/piece_of_cake/AxisX.svelte
rename to src/lib/components/ui_transverse_components/piece_of_cake/AxisX.svelte
diff --git a/src/lib/components/piece_of_cake/AxisY.svelte b/src/lib/components/ui_transverse_components/piece_of_cake/AxisY.svelte
similarity index 100%
rename from src/lib/components/piece_of_cake/AxisY.svelte
rename to src/lib/components/ui_transverse_components/piece_of_cake/AxisY.svelte
diff --git a/src/lib/components/piece_of_cake/BinaryTree.svelte b/src/lib/components/ui_transverse_components/piece_of_cake/BinaryTree.svelte
similarity index 100%
rename from src/lib/components/piece_of_cake/BinaryTree.svelte
rename to src/lib/components/ui_transverse_components/piece_of_cake/BinaryTree.svelte
diff --git a/src/lib/components/piece_of_cake/DragSelect.svelte b/src/lib/components/ui_transverse_components/piece_of_cake/DragSelect.svelte
similarity index 94%
rename from src/lib/components/piece_of_cake/DragSelect.svelte
rename to src/lib/components/ui_transverse_components/piece_of_cake/DragSelect.svelte
index 577c633364487c06a3b64d8b13125dfb2cd7ba08..cc87fc0c20b3a8388a2d41ef566f6fd5b168b17c 100644
--- a/src/lib/components/piece_of_cake/DragSelect.svelte
+++ b/src/lib/components/ui_transverse_components/piece_of_cake/DragSelect.svelte
@@ -1,6 +1,6 @@
 <script lang="ts">
-  import type { CurveModel } from "$lib/components/piece_of_cake/model"
-  import type { GraphDomain } from "$lib/components/piece_of_cake/types"
+  import type { CurveModel } from "$lib/components/ui_transverse_components/piece_of_cake/model"
+  import type { GraphDomain } from "$lib/components/ui_transverse_components/piece_of_cake/types"
 
   interface Props {
     children?: import("svelte").Snippet<[any]>
diff --git a/src/lib/components/piece_of_cake/Html.svelte b/src/lib/components/ui_transverse_components/piece_of_cake/Html.svelte
similarity index 100%
rename from src/lib/components/piece_of_cake/Html.svelte
rename to src/lib/components/ui_transverse_components/piece_of_cake/Html.svelte
diff --git a/src/lib/components/piece_of_cake/MultiLine.svelte b/src/lib/components/ui_transverse_components/piece_of_cake/MultiLine.svelte
similarity index 100%
rename from src/lib/components/piece_of_cake/MultiLine.svelte
rename to src/lib/components/ui_transverse_components/piece_of_cake/MultiLine.svelte
diff --git a/src/lib/components/piece_of_cake/PieceOfCake.svelte b/src/lib/components/ui_transverse_components/piece_of_cake/PieceOfCake.svelte
similarity index 100%
rename from src/lib/components/piece_of_cake/PieceOfCake.svelte
rename to src/lib/components/ui_transverse_components/piece_of_cake/PieceOfCake.svelte
diff --git a/src/lib/components/piece_of_cake/SharedTooltip.svelte b/src/lib/components/ui_transverse_components/piece_of_cake/SharedTooltip.svelte
similarity index 100%
rename from src/lib/components/piece_of_cake/SharedTooltip.svelte
rename to src/lib/components/ui_transverse_components/piece_of_cake/SharedTooltip.svelte
diff --git a/src/lib/components/piece_of_cake/Svg.svelte b/src/lib/components/ui_transverse_components/piece_of_cake/Svg.svelte
similarity index 100%
rename from src/lib/components/piece_of_cake/Svg.svelte
rename to src/lib/components/ui_transverse_components/piece_of_cake/Svg.svelte
diff --git a/src/lib/components/piece_of_cake/model.ts b/src/lib/components/ui_transverse_components/piece_of_cake/model.ts
similarity index 100%
rename from src/lib/components/piece_of_cake/model.ts
rename to src/lib/components/ui_transverse_components/piece_of_cake/model.ts
diff --git a/src/lib/components/piece_of_cake/types.ts b/src/lib/components/ui_transverse_components/piece_of_cake/types.ts
similarity index 100%
rename from src/lib/components/piece_of_cake/types.ts
rename to src/lib/components/ui_transverse_components/piece_of_cake/types.ts
diff --git a/src/lib/components/search/NavBarSearch.svelte b/src/lib/components/ui_transverse_components/search/NavBarSearch.svelte
similarity index 100%
rename from src/lib/components/search/NavBarSearch.svelte
rename to src/lib/components/ui_transverse_components/search/NavBarSearch.svelte
diff --git a/src/lib/components/search/Search.svelte b/src/lib/components/ui_transverse_components/search/Search.svelte
similarity index 100%
rename from src/lib/components/search/Search.svelte
rename to src/lib/components/ui_transverse_components/search/Search.svelte
diff --git a/src/lib/components/search/WelcomeSearch.svelte b/src/lib/components/ui_transverse_components/search/WelcomeSearch.svelte
similarity index 100%
rename from src/lib/components/search/WelcomeSearch.svelte
rename to src/lib/components/ui_transverse_components/search/WelcomeSearch.svelte
diff --git a/src/lib/components/WaterfallPlainView.svelte b/src/lib/components/welcome_views/LegislationPerimeterTree.svelte
similarity index 100%
rename from src/lib/components/WaterfallPlainView.svelte
rename to src/lib/components/welcome_views/LegislationPerimeterTree.svelte
diff --git a/src/lib/components/PlfVariablesListIntro.svelte b/src/lib/components/welcome_views/PlfVariablesListIntro.svelte
similarity index 100%
rename from src/lib/components/PlfVariablesListIntro.svelte
rename to src/lib/components/welcome_views/PlfVariablesListIntro.svelte
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
index 7c63b75a285ca99a79add9b7029d0d39d9bd129f..9f4dd2b52231b351b664dd2a6e078531e7850981 100644
--- a/src/routes/+page.svelte
+++ b/src/routes/+page.svelte
@@ -29,27 +29,27 @@
   import { auditSimulationHash } from "$lib/auditors/hashes"
   import { auditQueryArray, auditQuerySingleton } from "$lib/auditors/queries"
   import { requestAllBudgetCalculations } from "$lib/calculations.svelte"
-  import BudgetLayout from "$lib/components/budget/BudgetLayout.svelte"
-  import BudgetConnexionModal from "$lib/components/BudgetConnexionModal.svelte"
-  import BudgetSimulationSharingModal from "$lib/components/BudgetSimulationSharingModal.svelte"
-  import ModificationsPanel from "$lib/components/ModificationsPanel.svelte"
-  import PlfVariablesListIntro from "$lib/components/PlfVariablesListIntro.svelte"
-  import SkeletonLoaderBudget from "$lib/components/budget/SkeletonLoaderBudget.svelte"
-  import StaticAggregates from "$lib/components/budget/StaticAggregates.svelte"
-  import TestCaseCompareView from "$lib/components/test_cases/TestCaseCompareView.svelte"
-  import TestCaseEdit from "$lib/components/test_cases/TestCaseEdit.svelte"
-  import TestCasePictos from "$lib/components/test_cases/TestCasePictos.svelte"
-  import TestCaseScreenshotLayout from "$lib/components/test_cases/TestCaseScreenshotLayout.svelte"
-  import TestCaseSelectModal from "$lib/components/test_cases/TestCaseSelectModal.svelte"
-  import TestCasesStackRepresentation from "$lib/components/test_cases/TestCasesStackRepresentation.svelte"
-  import TestCaseSummary from "$lib/components/test_cases/TestCaseSummary.svelte"
-  import TestCaseView from "$lib/components/test_cases/TestCaseView.svelte"
-  import TestCaseSimulationSharingModal from "$lib/components/TestCaseSimulationSharingModal.svelte"
-  import VariableDetail from "$lib/components/variables/VariableDetail.svelte"
-  import VariableReferredParameters from "$lib/components/variables/VariableReferredParameters.svelte"
-  import VariableValueChange from "$lib/components/variables/VariableValueChange.svelte"
-  import WaterfallPlainView from "$lib/components/WaterfallPlainView.svelte"
-  import WithoutBudgetCard from "$lib/components/budget/WithoutBudgetCard.svelte"
+  import BudgetLayout from "$lib/components/impacts_view/budget_view/BudgetLayout.svelte"
+  import BudgetConnexionModal from "$lib/components/impacts_view/budget_view/BudgetConnexionModal.svelte"
+  import BudgetSimulationSharingModal from "$lib/components/impacts_view/budget_view/BudgetSimulationSharingModal.svelte"
+  import ModificationsPanel from "$lib/components/legislation_view/ModificationsPanel.svelte"
+  import PlfVariablesListIntro from "$lib/components/welcome_views/PlfVariablesListIntro.svelte"
+  import SkeletonLoaderBudget from "$lib/components/impacts_view/budget_view/SkeletonLoaderBudget.svelte"
+  import StaticAggregates from "$lib/components/impacts_view/budget_view/StaticAggregates.svelte"
+  import TestCaseCompareView from "$lib/components/impacts_view/test_cases_view/test_case_selected/compare_mode/TestCaseCompareView.svelte"
+  import TestCaseEdit from "$lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/TestCaseEdit.svelte"
+  import TestCasePictos from "$lib/components/impacts_view/test_cases_view/test_case_selected/TestCasePictos.svelte"
+  import TestCaseScreenshotLayout from "$lib/components/impacts_view/test_cases_view/TestCaseScreenshotLayout.svelte"
+  import TestCaseSelectModal from "$lib/components/impacts_view/test_cases_view/test_cases_library/TestCaseSelectModal.svelte"
+  import TestCasesLibraryButton from "$lib/components/impacts_view/test_cases_view/test_cases_library/TestCasesLibraryButton.svelte"
+  import TestCaseSummary from "$lib/components/impacts_view/test_cases_view/test_case_selected/TestCaseSummary.svelte"
+  import TestCaseView from "$lib/components/impacts_view/test_cases_view/test_case_selected/TestCaseView.svelte"
+  import TestCaseSimulationSharingModal from "$lib/components/impacts_view/test_cases_view/TestCaseSimulationSharingModal.svelte"
+  import VariableDetail from "$lib/components/legislation_view/variables/details_modal/VariableDetail.svelte"
+  import VariableReferredParameters from "$lib/components/legislation_view/parameters/VariableReferredParameters.svelte"
+  import VariableValueChange from "$lib/components/impacts_view/VariableValueChange.svelte"
+  import LegislationPerimeterTree from "$lib/components/welcome_views/LegislationPerimeterTree.svelte"
+  import WithoutBudgetCard from "$lib/components/impacts_view/budget_view/WithoutBudgetCard.svelte"
   import {
     buildWaterfallDecompositions,
     getDecompositionParentName,
@@ -103,7 +103,7 @@
   const dispositifsTypes = [
     {
       title: "Impôt sur le revenu",
-      icon: "picto-impot-sur-le-revenu.png",
+      icon: "pictos/picto-impot-sur-le-revenu.png",
       children: [
         {
           title: "Impôt sur le revenu",
@@ -113,7 +113,7 @@
     },
     {
       title: "Contribution sociale généralisée (CSG)",
-      icon: "picto-csg-salaires.png",
+      icon: "pictos/picto-csg-salaires.png",
       children: [
         {
           title: "CSG prélevée sur les salaires",
@@ -127,7 +127,7 @@
     },
     {
       title: "Cotisations salariales",
-      icon: "picto-cotisations-salariales.png",
+      icon: "pictos/picto-cotisations-salariales.png",
       children: [
         {
           title: "Cotisation d'assurance vieillesse",
@@ -145,7 +145,7 @@
     },
     {
       title: "Allocations familiales",
-      icon: "picto-allocations-familiales.png",
+      icon: "pictos/picto-allocations-familiales.png",
       children: [
         {
           title: "Allocations familiales brutes",
@@ -155,7 +155,7 @@
     },
     {
       title: "Cotisations employeur",
-      icon: "picto-cotisations-employeur.png",
+      icon: "pictos/picto-cotisations-employeur.png",
       children: [
         {
           title: "Cotisation-maladie-maternité-invalidité-décès",
@@ -983,7 +983,7 @@
                       {#if !displayMode.budget}
                         <div class="mt-7">
                           {#if displayMode.testCasesIndex.length === 0}
-                            <WaterfallPlainView
+                            <LegislationPerimeterTree
                               compact
                               on:click={({ detail }) =>
                                 goto(
@@ -1804,26 +1804,10 @@
                           </a>
                         {/if}
                       {/if}
-                      <button
-                        class="lx-card flex items-start justify-between gap-5 px-7 py-5"
-                        onclick={() => (isTestCaseSelectModalOpen = true)}
-                      >
-                        <div class="flex flex-col">
-                          <span
-                            class="text-start text-lg font-bold 2xl:text-xl"
-                          >
-                            {#if displayMode.parametersVariableName === undefined}
-                              Choisir un cas type
-                            {:else}
-                              Bibliothèque des cas types
-                            {/if}
-                          </span>
-                          <span class="max-w-48 text-start text-sm">
-                            Sélectionner un ménage parmi tous ceux disponibles
-                          </span>
-                        </div>
-                        <TestCasesStackRepresentation />
-                      </button>
+                      <TestCasesLibraryButton
+                        {displayMode}
+                        bind:isTestCaseSelectModalOpen
+                      />
                     </div>
                   {/if}
                 </div>
diff --git a/src/routes/accueil/+page.svelte b/src/routes/accueil/+page.svelte
index ffcd192a0eeccdeca4219997d6828a1e83a72ba1..9f604703caea0b2ffab059a1c34702c0ebca3b31 100644
--- a/src/routes/accueil/+page.svelte
+++ b/src/routes/accueil/+page.svelte
@@ -9,15 +9,15 @@
   import { goto } from "$app/navigation"
   import { page } from "$app/stores"
   import { auditQuerySingleton } from "$lib/auditors/queries"
-  import PictoFemme from "$lib/components/pictos/PictoFemme.svelte"
-  import PictoOpenFisca from "$lib/components/pictos/PictoOpenFisca.svelte"
-  import PlfVariablesListIntro from "$lib/components/PlfVariablesListIntro.svelte"
-  import WelcomeSearch from "$lib/components/search/WelcomeSearch.svelte"
-  import TestCaseSelectModal from "$lib/components/test_cases/TestCaseSelectModal.svelte"
-  import AnchorTitle from "$lib/components/transverse_pages/AnchorTitle.svelte"
-  import Footer from "$lib/components/transverse_pages/Footer.svelte"
-  import VariableDetail from "$lib/components/variables/VariableDetail.svelte"
-  import WaterfallPlainView from "$lib/components/WaterfallPlainView.svelte"
+  import PictoFemme from "$lib/components/ui_transverse_components/pictos/PictoFemme.svelte"
+  import PictoOpenFisca from "$lib/components/ui_transverse_components/pictos/PictoOpenFisca.svelte"
+  import PlfVariablesListIntro from "$lib/components/welcome_views/PlfVariablesListIntro.svelte"
+  import WelcomeSearch from "$lib/components/ui_transverse_components/search/WelcomeSearch.svelte"
+  import TestCaseSelectModal from "$lib/components/impacts_view/test_cases_view/test_cases_library/TestCaseSelectModal.svelte"
+  import AnchorTitle from "$lib/components/ui_transverse_components/AnchorTitle.svelte"
+  import Footer from "$lib/components/Footer.svelte"
+  import VariableDetail from "$lib/components/legislation_view/variables/details_modal/VariableDetail.svelte"
+  import LegislationPerimeterTree from "$lib/components/welcome_views/LegislationPerimeterTree.svelte"
   import { waterfalls, withLinkedVariableNames } from "$lib/decompositions"
   import type { DisplayMode } from "$lib/displays"
   import { trackSearchVariable } from "$lib/matomo"
@@ -366,7 +366,11 @@
         >
           <span> Consulter et modifier</span>
           <span class="inline-flex gap-2">
-            la loi <img alt="Picto stylo" class="w-7" src="/picto_pen.svg" />
+            la loi <img
+              alt="Picto stylo"
+              class="w-7"
+              src="/pictos/picto_pen.svg"
+            />
           </span>
         </h3>
       </div>
@@ -469,7 +473,7 @@
         <img
           alt="Illustration affaires sociales"
           class="ml-20 w-28 md:mt-6"
-          src="/picto-affaires-sociales.svg"
+          src="/pictos/picto-affaires-sociales.svg"
         />
       </div>
     </div>
@@ -544,7 +548,7 @@
       Les {variablesCount} dispositifs couverts par le simulateur LexImpact socio-fiscal&nbsp;:
     </AnchorTitle>
 
-    <WaterfallPlainView
+    <LegislationPerimeterTree
       on:click={({ detail }) =>
         goto(
           getSimulationUrl({
diff --git a/src/routes/fonctionnement/+page.svelte b/src/routes/fonctionnement/+page.svelte
index 56b8c2f2d7e8723954efc80866830a8d97ff0ca9..3a13a037b8f17e8a42f1b6366afa0270601561ce 100644
--- a/src/routes/fonctionnement/+page.svelte
+++ b/src/routes/fonctionnement/+page.svelte
@@ -1,11 +1,11 @@
 <script lang="ts">
-  import PictoEntreprise from "$lib/components/pictos/PictoEntreprise.svelte"
-  import PictoEtat from "$lib/components/pictos/PictoEtat.svelte"
-  import PictoFemme from "$lib/components/pictos/PictoFemme.svelte"
-  import TestCaseSelectModal from "$lib/components/test_cases/TestCaseSelectModal.svelte"
-  import AnchorTitle from "$lib/components/transverse_pages/AnchorTitle.svelte"
-  import Footer from "$lib/components/transverse_pages/Footer.svelte"
-  import OpenGraph from "$lib/components/transverse_pages/OpenGraph.svelte"
+  import PictoEntreprise from "$lib/components/ui_transverse_components/pictos/PictoEntreprise.svelte"
+  import PictoEtat from "$lib/components/ui_transverse_components/pictos/PictoEtat.svelte"
+  import PictoFemme from "$lib/components/ui_transverse_components/pictos/PictoFemme.svelte"
+  import TestCaseSelectModal from "$lib/components/impacts_view/test_cases_view/test_cases_library/TestCaseSelectModal.svelte"
+  import AnchorTitle from "$lib/components/ui_transverse_components/AnchorTitle.svelte"
+  import Footer from "$lib/components/Footer.svelte"
+  import OpenGraph from "$lib/components/OpenGraph.svelte"
   import { withLinkedVariableNames } from "$lib/decompositions"
   import publicConfig from "$lib/public_config"
   import { year } from "$lib/shared.svelte"
diff --git a/src/routes/parameters/+page.svelte b/src/routes/parameters/+page.svelte
index 4106b5fe16ca95f76e1fc57a581756df1266a332..fc46d6b508c1326a419e4ae1e2c07e6ae8954abb 100644
--- a/src/routes/parameters/+page.svelte
+++ b/src/routes/parameters/+page.svelte
@@ -7,7 +7,7 @@
   import { browser } from "$app/environment"
   import { goto } from "$app/navigation"
   import { page } from "$app/stores"
-  import Search from "$lib/components/search/Search.svelte"
+  import Search from "$lib/components/ui_transverse_components/search/Search.svelte"
   import publicConfig from "$lib/public_config"
   import { SearchMode } from "$lib/search/search_mode"
 
diff --git a/src/routes/parameters/[parameter]/+page.svelte b/src/routes/parameters/[parameter]/+page.svelte
index b3421411d0ed3d5da4884fe22dfd09d66d1493b8..006865eac156cf83bf0f5dc5ddd35b4e06e9e1e6 100644
--- a/src/routes/parameters/[parameter]/+page.svelte
+++ b/src/routes/parameters/[parameter]/+page.svelte
@@ -3,7 +3,7 @@
 
   import type { PageData } from "./$types"
 
-  import ParameterView from "$lib/components/parameters/ParameterView.svelte"
+  import ParameterView from "$lib/components/legislation_view/parameters/technical_details_view/ParameterView.svelte"
   import publicConfig from "$lib/public_config"
   import { date } from "$lib/shared.svelte"
   import { newSelfTargetAProps } from "$lib/urls"
diff --git a/src/routes/parameters/[parameter]/edit/+page.svelte b/src/routes/parameters/[parameter]/edit/+page.svelte
index 307fe7ca496ccf77357535f89300b23b7bf69986..0f48eb20d9da746227098ffcc3251020b07bd311 100644
--- a/src/routes/parameters/[parameter]/edit/+page.svelte
+++ b/src/routes/parameters/[parameter]/edit/+page.svelte
@@ -16,9 +16,9 @@
   import type { PageData } from "./$types"
 
   import { goto } from "$app/navigation"
-  import NodeEdit from "$lib/components/parameters/NodeEdit.svelte"
-  import ScaleEdit from "$lib/components/parameters/ScaleEdit.svelte"
-  import ValueEdit from "$lib/components/parameters/ValueEdit.svelte"
+  import NodeEdit from "$lib/components/legislation_view/parameters/technical_details_view/contribution_view/NodeEdit.svelte"
+  import ScaleEdit from "$lib/components/legislation_view/parameters/technical_details_view/contribution_view/ScaleEdit.svelte"
+  import ValueEdit from "$lib/components/legislation_view/parameters/technical_details_view/contribution_view/ValueEdit.svelte"
   import { labelFromParameterClass } from "$lib/parameters"
   import publicConfig from "$lib/public_config"
   import { units } from "$lib/units"
diff --git a/src/routes/test_cases/simulations/[simulation]/+page.svelte b/src/routes/test_cases/simulations/[simulation]/+page.svelte
index 2022b6eb57f173034c709b6a642ad983a8df62bf..443b3758517166cce80b3eb6112669e10fe2a0ea 100644
--- a/src/routes/test_cases/simulations/[simulation]/+page.svelte
+++ b/src/routes/test_cases/simulations/[simulation]/+page.svelte
@@ -6,7 +6,7 @@
   import { goto } from "$app/navigation"
   import { page } from "$app/stores"
   import { requestAllTestCasesCalculations } from "$lib/calculations.svelte"
-  import OpenGraph from "$lib/components/transverse_pages/OpenGraph.svelte"
+  import OpenGraph from "$lib/components/OpenGraph.svelte"
   import publicConfig from "$lib/public_config"
   import { shared } from "$lib/shared.svelte"
   import { newSimulationUrl } from "$lib/urls"
diff --git a/src/routes/variables/[variable]/+page.svelte b/src/routes/variables/[variable]/+page.svelte
index ed4e14cccea2bfd2a8ac87278f22f8b4b5479b5b..f5db4e1b2e14598d7ba4813fcd70fa669c9e3783 100644
--- a/src/routes/variables/[variable]/+page.svelte
+++ b/src/routes/variables/[variable]/+page.svelte
@@ -4,7 +4,7 @@
   import type { PageData } from "./$types"
 
   import { goto } from "$app/navigation"
-  import VariableView from "$lib/components/variables/VariableView.svelte"
+  import VariableView from "$lib/components/legislation_view/variables/technical_details_view/VariableView.svelte"
   import publicConfig from "$lib/public_config"
   import { shared } from "$lib/shared.svelte"
   import type { Situation } from "$lib/situations"
diff --git a/src/routes/variables/[variable]/inputs/[date]/+page.svelte b/src/routes/variables/[variable]/inputs/[date]/+page.svelte
index 3a330f7bb087943a273373b3c891210fe75034a1..a2a2eb574fe97a10c001be6635a14ff12921721a 100644
--- a/src/routes/variables/[variable]/inputs/[date]/+page.svelte
+++ b/src/routes/variables/[variable]/inputs/[date]/+page.svelte
@@ -4,7 +4,7 @@
   import type { PageData } from "./$types"
 
   import { page } from "$app/stores"
-  import VariableReferredInputs from "$lib/components/variables/VariableReferredInputs.svelte"
+  import VariableReferredInputs from "$lib/components/impacts_view/test_cases_view/test_case_selected/edition_mode/VariableReferredInputs.svelte"
   import publicConfig from "$lib/public_config"
   import type { Situation } from "$lib/situations"
   import { shared, year } from "$lib/shared.svelte"
diff --git a/src/routes/variables/[variable]/parameters/[date]/+page.svelte b/src/routes/variables/[variable]/parameters/[date]/+page.svelte
index 59f36b02494347362d8e88565d1a43aedde4e316..44482ac1e22fc79d41dab8c0ede44ea7b06176eb 100644
--- a/src/routes/variables/[variable]/parameters/[date]/+page.svelte
+++ b/src/routes/variables/[variable]/parameters/[date]/+page.svelte
@@ -2,7 +2,7 @@
   import { setContext } from "svelte"
 
   import { page } from "$app/stores"
-  import VariableReferredParameters from "$lib/components/variables/VariableReferredParameters.svelte"
+  import VariableReferredParameters from "$lib/components/legislation_view/parameters/VariableReferredParameters.svelte"
   import { waterfalls } from "$lib/decompositions"
   import type { DisplayMode } from "$lib/displays"
   import publicConfig from "$lib/public_config"
diff --git a/static/picto-affaires-sociales.svg b/static/pictos/picto-affaires-sociales.svg
similarity index 100%
rename from static/picto-affaires-sociales.svg
rename to static/pictos/picto-affaires-sociales.svg
diff --git a/static/picto-allocations-familiales.png b/static/pictos/picto-allocations-familiales.png
similarity index 100%
rename from static/picto-allocations-familiales.png
rename to static/pictos/picto-allocations-familiales.png
diff --git a/static/picto-cotisations-employeur.png b/static/pictos/picto-cotisations-employeur.png
similarity index 100%
rename from static/picto-cotisations-employeur.png
rename to static/pictos/picto-cotisations-employeur.png
diff --git a/static/picto-cotisations-salariales.png b/static/pictos/picto-cotisations-salariales.png
similarity index 100%
rename from static/picto-cotisations-salariales.png
rename to static/pictos/picto-cotisations-salariales.png
diff --git a/static/picto-csg-retraites.png b/static/pictos/picto-csg-retraites.png
similarity index 100%
rename from static/picto-csg-retraites.png
rename to static/pictos/picto-csg-retraites.png
diff --git a/static/picto-csg-salaires.png b/static/pictos/picto-csg-salaires.png
similarity index 100%
rename from static/picto-csg-salaires.png
rename to static/pictos/picto-csg-salaires.png
diff --git a/static/picto-csg.png b/static/pictos/picto-csg.png
similarity index 100%
rename from static/picto-csg.png
rename to static/pictos/picto-csg.png
diff --git a/static/picto-dotations-communes.png b/static/pictos/picto-dotations-communes.png
similarity index 100%
rename from static/picto-dotations-communes.png
rename to static/pictos/picto-dotations-communes.png
diff --git a/static/illustration-exoneration-tode.png b/static/pictos/picto-exoneration-tode.png
similarity index 100%
rename from static/illustration-exoneration-tode.png
rename to static/pictos/picto-exoneration-tode.png
diff --git a/static/picto-impot-sur-le-revenu.png b/static/pictos/picto-impot-sur-le-revenu.png
similarity index 100%
rename from static/picto-impot-sur-le-revenu.png
rename to static/pictos/picto-impot-sur-le-revenu.png
diff --git a/static/illustration-pepa.png b/static/pictos/picto-pepa.png
similarity index 100%
rename from static/illustration-pepa.png
rename to static/pictos/picto-pepa.png
diff --git a/static/illustration-rsa.png b/static/pictos/picto-rsa.png
similarity index 100%
rename from static/illustration-rsa.png
rename to static/pictos/picto-rsa.png
diff --git a/static/illustration-ticpe.png b/static/pictos/picto-ticpe.png
similarity index 100%
rename from static/illustration-ticpe.png
rename to static/pictos/picto-ticpe.png
diff --git a/static/picto_pen.svg b/static/pictos/picto_pen.svg
similarity index 100%
rename from static/picto_pen.svg
rename to static/pictos/picto_pen.svg
diff --git a/static/tutoriel-amender-la-loi.png b/static/tutoriel-amender-la-loi.png
deleted file mode 100644
index adff344aeeff2be9f4de0ea27f1b08e6878dd70b..0000000000000000000000000000000000000000
Binary files a/static/tutoriel-amender-la-loi.png and /dev/null differ
diff --git a/static/tutoriel-editer-cas-type.png b/static/tutoriel-editer-cas-type.png
deleted file mode 100644
index a1b1d80c9e327efb58d544e42866fd1fdbf3ed0e..0000000000000000000000000000000000000000
Binary files a/static/tutoriel-editer-cas-type.png and /dev/null differ
diff --git a/static/tutoriel-edition-cas-type-variables-supp.png b/static/tutoriel-edition-cas-type-variables-supp.png
deleted file mode 100644
index 62d5d9f84638959d48404d657b5450b1901b3eb2..0000000000000000000000000000000000000000
Binary files a/static/tutoriel-edition-cas-type-variables-supp.png and /dev/null differ