diff --git a/src/app/shared/components/index.ts b/src/app/shared/components/index.ts
index fd63850335655032145d9569a1af0f469f55b975..af03d1b8e635c785fa204c37abbcc4696d6835a4 100644
--- a/src/app/shared/components/index.ts
+++ b/src/app/shared/components/index.ts
@@ -28,7 +28,7 @@ import { ModalV3Component } from './v3/modal/modal.component';
 import { RadioV3Component } from './v3/radio/radio.component';
 import { SearchBarV3Component } from './v3/search-bar/search-bar.component';
 import { SwitchComponent } from './v3/switch/switch.component';
-import { TagItemV3Component } from './v3/tag/tag-item/tag-item.component';
+import { TagItemV3Component } from './v3/tag-item/tag-item.component';
 import { TextareaV3Component } from './v3/textarea/textarea.component';
 
 export {
diff --git a/src/app/shared/components/svg-icon/svg-icon.component.ts b/src/app/shared/components/svg-icon/svg-icon.component.ts
index 59fd5650fe345a44f075fec0007a4d127a44903e..ec06e80776349aaf0ed2e2ef2614ef495614ee13 100644
--- a/src/app/shared/components/svg-icon/svg-icon.component.ts
+++ b/src/app/shared/components/svg-icon/svg-icon.component.ts
@@ -6,9 +6,13 @@ import { Component, Input } from '@angular/core';
   styleUrls: ['./svg-icon.component.scss'],
 })
 export class SvgIconComponent {
-  @Input() icon: string;
+  /** Id of svg to use */
+  @Input({ required: true }) icon: string;
+
+  /** Folder of the sprite to use */
+  @Input({ required: true }) type: string;
+
   @Input() iconClass: string;
-  @Input() type: string;
   @Input() iconColor = 'none';
   @Input() title: string = null;
 }
diff --git a/src/app/shared/components/v3/button/button.component.ts b/src/app/shared/components/v3/button/button.component.ts
index 58c195f635c019b32af9b44e29257b90d34deac8..1402a9f783c87ee525c10d27c2de133b79cf196c 100644
--- a/src/app/shared/components/v3/button/button.component.ts
+++ b/src/app/shared/components/v3/button/button.component.ts
@@ -7,12 +7,12 @@ import { ButtonTypeV3 } from './button-type.enum';
   styleUrls: ['./button.component.scss'],
 })
 export class ButtonV3Component {
+  /** Button label */
+  @Input({ required: true }) label: string;
+
   /** HTML type of the button */
   @Input() type: 'submit' | 'button' | 'reset' = 'button';
 
-  /** Button label */
-  @Input() label = 'Bouton';
-
   /** What variant should be the button ? */
   @Input() variant?: ButtonTypeV3 = ButtonTypeV3.Primary;
 
diff --git a/src/app/shared/components/v3/button/icon-button/icon-button.component.ts b/src/app/shared/components/v3/button/icon-button/icon-button.component.ts
index 5e7d0dea305d39bb3ddd0364e6b871d83604b5e7..ca6afba81023bb6c5f834c46bd31dee6340c797b 100644
--- a/src/app/shared/components/v3/button/icon-button/icon-button.component.ts
+++ b/src/app/shared/components/v3/button/icon-button/icon-button.component.ts
@@ -7,6 +7,9 @@ import { ButtonTypeV3 } from '../button-type.enum';
   styleUrls: ['../button.component.scss'],
 })
 export class IconButtonV3Component {
+  /** Icon name */
+  @Input({ required: true }) iconName: string;
+
   /** HTML type of the button */
   @Input() type: 'submit' | 'button' | 'reset' = 'button';
 
@@ -22,9 +25,6 @@ export class IconButtonV3Component {
   /** Folder of the icon ex: assets/ico */
   @Input() iconFolder = 'ico';
 
-  /** Icon name */
-  @Input() iconName: string;
-
   /** Icon color, defaults to none as the svg-icon does */
   @Input() iconColor = 'none';
 
diff --git a/src/app/shared/components/v3/checkbox/checkbox.component.ts b/src/app/shared/components/v3/checkbox/checkbox.component.ts
index 8fb73ea6f850d854952face78e7df4a1eb03da0e..6328818c279f39aadd16ce14bb361c9ebc83bdf1 100644
--- a/src/app/shared/components/v3/checkbox/checkbox.component.ts
+++ b/src/app/shared/components/v3/checkbox/checkbox.component.ts
@@ -10,7 +10,7 @@ export class CheckboxV3Component {
   @Input() id: string;
 
   /** Checked ? */
-  @Input() checked: boolean;
+  @Input({ required: true }) checked: boolean;
 
   /** Indeterminate (half-checked) ? */
   @Input() indeterminate?: boolean;
diff --git a/src/app/shared/components/v3/collapse/collapse.component.ts b/src/app/shared/components/v3/collapse/collapse.component.ts
index 9680242edd6a2c1e67032402e6ae837c11b1a790..2d4275e96ae4a084efbd42dd73d01953f96011b8 100644
--- a/src/app/shared/components/v3/collapse/collapse.component.ts
+++ b/src/app/shared/components/v3/collapse/collapse.component.ts
@@ -13,11 +13,15 @@ import { CollapseType } from './collapse.type';
 export class CollapseComponent implements AfterContentInit {
   @ContentChild(CollapseHeaderComponent) title: CollapseHeaderComponent;
   @ContentChild(CollapseContentComponent) content: CollapseContentComponent;
+
   @Input() variant?: CollapseType = CollapseType.Regular;
+
   /** Adapts border-radius and right padding */
   @Input() size?: 'small' | 'medium' = 'small';
+
   /** Box-shadow when expanded? */
   @Input() boxShadow? = false;
+
   /** Default expanded value */
   @Input() expanded? = false;
 
diff --git a/src/app/shared/components/v3/label-checkbox/label-checkbox.component.ts b/src/app/shared/components/v3/label-checkbox/label-checkbox.component.ts
index b8662ab3cdf816a3b40b3670f817615b60ef2867..5e8b003d5cc45cbd926781ae2a9b4dbd36109f75 100644
--- a/src/app/shared/components/v3/label-checkbox/label-checkbox.component.ts
+++ b/src/app/shared/components/v3/label-checkbox/label-checkbox.component.ts
@@ -7,15 +7,15 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
 })
 export class LabelCheckboxV3Component {
   /** Label text to display */
-  @Input() label: string;
+  @Input({ required: true }) label: string;
 
   /** HTML for that will control checkbox */
-  @Input() for: string;
+  @Input({ required: true }) for: string;
 
   /** What size should the checkbox be ? */
   @Input() size?: 'small' | 'medium' = 'small';
 
-  @Input() checked: boolean;
+  @Input({ required: true }) checked: boolean;
 
   @Input() indeterminate?: boolean;
 
diff --git a/src/app/shared/components/v3/modal/modal.component.ts b/src/app/shared/components/v3/modal/modal.component.ts
index 83a6f73cf36a8077c7ec0b4593c8f1958b308b0a..5fcdd7c9996616c8c88d7ce36592241c9dde437a 100644
--- a/src/app/shared/components/v3/modal/modal.component.ts
+++ b/src/app/shared/components/v3/modal/modal.component.ts
@@ -7,8 +7,8 @@ import { ButtonTypeV3 } from '../button/button-type.enum';
   styleUrls: ['./modal.component.scss'],
 })
 export class ModalV3Component {
-  /* Is modal openned ? */
-  @Input() public opened: boolean;
+  /* Is modal opened ? */
+  @Input({ required: true }) public opened: boolean;
 
   /* Content of the modal (between title and buttons) */
   @Input() public content: string;
diff --git a/src/app/shared/components/v3/radio/radio.component.ts b/src/app/shared/components/v3/radio/radio.component.ts
index 2d0e01ba625963c38737b0219570df16a76a3b00..3ee99023f42d87906f1408ef20871c7eb38d5ade 100644
--- a/src/app/shared/components/v3/radio/radio.component.ts
+++ b/src/app/shared/components/v3/radio/radio.component.ts
@@ -10,7 +10,7 @@ export class RadioV3Component {
   @Input() id: string;
 
   /** Checked ? */
-  @Input() checked: boolean;
+  @Input({ required: true }) checked: boolean;
 
   /** What size should the checkbox be ? */
   @Input() size?: 'small' | 'medium' = 'medium';
diff --git a/src/app/shared/components/v3/search-bar/search-bar.component.ts b/src/app/shared/components/v3/search-bar/search-bar.component.ts
index 2c8f5db93a27a6af3479ceb028d9ac586ec30d27..70586f4a38ceb737d1d9b8a7a7da83e46b7b9204 100644
--- a/src/app/shared/components/v3/search-bar/search-bar.component.ts
+++ b/src/app/shared/components/v3/search-bar/search-bar.component.ts
@@ -8,9 +8,11 @@ import { ButtonTypeV3 } from '../button/button-type.enum';
 })
 export class SearchBarV3Component {
   @Input() placeholder = 'Rechercher';
-  @Input() value = '';
+  @Input({ required: true }) value = '';
+
   /** Triggers when input changes */
   @Output() valueChange = new EventEmitter<string>();
+
   /** Triggers when button is clicked or Enter is pressed on input */
   @Output() search = new EventEmitter<string>();
 
diff --git a/src/app/shared/components/v3/switch/switch.component.ts b/src/app/shared/components/v3/switch/switch.component.ts
index 962a0ba5fa259ab9e9028be0895117b7aee80481..73cce916122607785773ca2b9ce28a0271c56d3d 100644
--- a/src/app/shared/components/v3/switch/switch.component.ts
+++ b/src/app/shared/components/v3/switch/switch.component.ts
@@ -7,10 +7,10 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
 })
 export class SwitchComponent {
   /** Label text to display */
-  @Input() label: string;
+  @Input({ required: true }) label: string;
 
   /** Switch checked value */
-  @Input() checked: boolean;
+  @Input({ required: true }) checked: boolean;
 
   /** Status text for the switch */
   @Input() checkedText?: string = 'Activé';
diff --git a/src/app/shared/components/v3/tag/tag-item/tag-item.component.html b/src/app/shared/components/v3/tag-item/tag-item.component.html
similarity index 100%
rename from src/app/shared/components/v3/tag/tag-item/tag-item.component.html
rename to src/app/shared/components/v3/tag-item/tag-item.component.html
diff --git a/src/app/shared/components/v3/tag/tag-item/tag-item.component.scss b/src/app/shared/components/v3/tag-item/tag-item.component.scss
similarity index 100%
rename from src/app/shared/components/v3/tag/tag-item/tag-item.component.scss
rename to src/app/shared/components/v3/tag-item/tag-item.component.scss
diff --git a/src/app/shared/components/v3/tag/tag-item/tag-item.component.ts b/src/app/shared/components/v3/tag-item/tag-item.component.ts
similarity index 100%
rename from src/app/shared/components/v3/tag/tag-item/tag-item.component.ts
rename to src/app/shared/components/v3/tag-item/tag-item.component.ts
diff --git a/src/app/shared/components/v3/tag/tag-item/tag-item.stories.ts b/src/app/shared/components/v3/tag-item/tag-item.stories.ts
similarity index 96%
rename from src/app/shared/components/v3/tag/tag-item/tag-item.stories.ts
rename to src/app/shared/components/v3/tag-item/tag-item.stories.ts
index 7ffe085f81ac6fb27df605b4151af10f6272513d..00bc172cc8245ac2e30880741853dc30954e35b1 100644
--- a/src/app/shared/components/v3/tag/tag-item/tag-item.stories.ts
+++ b/src/app/shared/components/v3/tag-item/tag-item.stories.ts
@@ -2,7 +2,7 @@ import { CommonModule } from '@angular/common';
 import { EventEmitter } from '@angular/core';
 import type { Meta, StoryObj } from '@storybook/angular';
 import { moduleMetadata } from '@storybook/angular';
-import { SvgIconComponent } from '../../../svg-icon/svg-icon.component';
+import { SvgIconComponent } from '../../svg-icon/svg-icon.component';
 import { TagItemV3Component } from './tag-item.component';
 
 // More on how to set up stories at: https://storybook.js.org/docs/angular/writing-stories/introduction