diff --git a/src/plugin-slots/ContentIFrameLoaderSlot/README.md b/src/plugin-slots/ContentIFrameLoaderSlot/README.md
index 9ee49e5d27..be835f7831 100644
--- a/src/plugin-slots/ContentIFrameLoaderSlot/README.md
+++ b/src/plugin-slots/ContentIFrameLoaderSlot/README.md
@@ -1,4 +1,4 @@
-# Content iframe Loader Slot
+# Content IFrame Loader Slot
### Slot ID: `org.openedx.frontend.learning.content_iframe_loader.v1`
@@ -6,5 +6,51 @@
* `content_iframe_loader_slot`
### Props:
-* `courseId`
-* `defaultLoaderComponent`
+* `courseId` - String identifier for the current course
+* `defaultLoaderComponent` - React component used as the default loading indicator
+
+## Description
+
+This slot is used to customize the loading indicator displayed while course content is being loaded in an iframe. It appears when content is loading but hasn't fully rendered yet, providing a customizable loading experience for learners.
+
+The default implementation shows a `PageLoading` component with a screen reader message.
+
+## Example
+
+The following `env.config.jsx` will replace the default loading spinner with a custom loading component that shows the course ID and a custom message.
+
+
+
+
+```js
+import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework';
+
+const config = {
+ pluginSlots: {
+ 'org.openedx.frontend.learning.content_iframe_loader.v1': {
+ plugins: [
+ {
+ op: PLUGIN_OPERATIONS.Insert,
+ widgetId: 'default_contents',
+ widget: {
+ id: 'custom_iframe_loader',
+ type: DIRECT_PLUGIN,
+ RenderWidget: ({ courseId, defaultLoaderComponent }) => (
+
+
Loading course content...
+
Course: {courseId}
+
+ {defaultLoaderComponent}
+
+
Please wait while we prepare your learning experience
+
+ ),
+ },
+ },
+ ]
+ }
+ },
+}
+
+export default config;
+```
diff --git a/src/plugin-slots/ContentIFrameLoaderSlot/images/loader-example.png b/src/plugin-slots/ContentIFrameLoaderSlot/images/loader-example.png
new file mode 100644
index 0000000000..15424c372c
Binary files /dev/null and b/src/plugin-slots/ContentIFrameLoaderSlot/images/loader-example.png differ
diff --git a/src/plugin-slots/CourseOutlineTabNotificationsSlot/README.md b/src/plugin-slots/CourseOutlineTabNotificationsSlot/README.md
index 5ff67937be..fd8e60afb7 100644
--- a/src/plugin-slots/CourseOutlineTabNotificationsSlot/README.md
+++ b/src/plugin-slots/CourseOutlineTabNotificationsSlot/README.md
@@ -6,5 +6,55 @@
* `outline_tab_notifications_slot`
### Props:
-* `courseId`
-* `model`
+* `courseId` - String identifier for the current course
+* `model` - String indicating the context model (set to 'outline')
+
+## Description
+
+This slot is used to add custom notification components to the course outline tab sidebar. It appears in the right sidebar of the course outline/home tab, positioned between the Course Tools widget and the Course Dates widget.
+
+The slot provides a flexible way to inject custom notifications, announcements, or informational components that are contextually relevant to the course outline view.
+
+## Example
+
+The following `env.config.jsx` will add a custom notification component to the course outline tab sidebar.
+
+
+
+```js
+import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework';
+
+const config = {
+ pluginSlots: {
+ 'org.openedx.frontend.learning.course_outline_tab_notifications.v1': {
+ plugins: [
+ {
+ op: PLUGIN_OPERATIONS.Insert,
+ widget: {
+ id: 'custom_outline_notification',
+ type: DIRECT_PLUGIN,
+ RenderWidget: ({ courseId, model }) => (
+
+
+
📢 Course Announcement
+
+ Important updates for course {courseId}
+
+
+ Context: {model}
+
+
+
+
+ ),
+ },
+ },
+ ]
+ }
+ },
+}
+
+export default config;
+```
diff --git a/src/plugin-slots/CourseOutlineTabNotificationsSlot/images/course-outline-notification-example.png b/src/plugin-slots/CourseOutlineTabNotificationsSlot/images/course-outline-notification-example.png
new file mode 100644
index 0000000000..3f27331f5d
Binary files /dev/null and b/src/plugin-slots/CourseOutlineTabNotificationsSlot/images/course-outline-notification-example.png differ
diff --git a/src/plugin-slots/GatedUnitContentMessageSlot/README.md b/src/plugin-slots/GatedUnitContentMessageSlot/README.md
index 2083abbe50..915010ccd0 100644
--- a/src/plugin-slots/GatedUnitContentMessageSlot/README.md
+++ b/src/plugin-slots/GatedUnitContentMessageSlot/README.md
@@ -6,4 +6,65 @@
* `gated_unit_content_message_slot`
### Props:
-* `courseId`
+* `courseId` - String identifier for the current course
+
+## Description
+
+This slot is used to customize the message displayed when course content is gated or locked for learners who haven't upgraded to a verified track. It appears when a unit contains content that requires a paid enrollment (such as graded assignments) and the learner is on the audit track.
+
+The default implementation shows a `LockPaywall` component that displays an upgrade message with benefits of upgrading, including access to graded assignments, certificates, and full course features.
+
+This slot is conditionally rendered only when `contentTypeGatingEnabled` is true and the unit `containsContentTypeGatedContent`.
+
+## Example
+
+The following `env.config.jsx` will replace the default paywall message with a custom gated content component.
+
+
+
+```js
+import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework';
+
+const config = {
+ pluginSlots: {
+ 'org.openedx.frontend.learning.gated_unit_content_message.v1': {
+ plugins: [
+ {
+ op: PLUGIN_OPERATIONS.Insert,
+ widgetId: 'default_contents',
+ widget: {
+ id: 'custom_gated_message',
+ type: DIRECT_PLUGIN,
+ RenderWidget: ({ courseId }) => (
+
+
+
+
+
Premium Content
+
This content is available to verified learners only.
+
+
+
+
+ Upgrade your enrollment for course {courseId} to access:
+
+
+
✅ Graded assignments and quizzes
+
🏆 Verified certificate upon completion
+
💬 Full discussion forum access
+
📱 Mobile app offline access
+
+
+
+ ),
+ },
+ },
+ ]
+ }
+ },
+}
+
+export default config;
+```
diff --git a/src/plugin-slots/GatedUnitContentMessageSlot/images/gated-unit-message-example.png b/src/plugin-slots/GatedUnitContentMessageSlot/images/gated-unit-message-example.png
new file mode 100644
index 0000000000..5a8200423e
Binary files /dev/null and b/src/plugin-slots/GatedUnitContentMessageSlot/images/gated-unit-message-example.png differ
diff --git a/src/plugin-slots/NotificationTraySlot/README.md b/src/plugin-slots/NotificationTraySlot/README.md
index 02bbc5f098..53fe44b091 100644
--- a/src/plugin-slots/NotificationTraySlot/README.md
+++ b/src/plugin-slots/NotificationTraySlot/README.md
@@ -6,6 +6,92 @@
* `notification_tray_slot`
### Props:
-* `courseId`
-* `notificationCurrentState`
-* `setNotificationCurrentState`
+* `courseId` - String identifier for the current course
+* `model` - String indicating the context model (set to 'coursewareMeta')
+* `notificationCurrentState` - Current state of upgrade notifications (UpgradeNotificationState)
+* `setNotificationCurrentState` - Function to update the notification state
+
+## Description
+
+This slot is used to customize the notification tray that appears in the courseware sidebar. The notification tray displays upgrade-related notifications and alerts for learners in verified mode courses. It provides a way to show contextual notifications about course access, deadlines, and upgrade opportunities.
+
+The slot is conditionally rendered only for learners in verified mode courses. For non-verified courses, a simple "no notifications" message is displayed instead.
+
+The `notificationCurrentState` can be one of: `'accessLastHour'`, `'accessHoursLeft'`, `'accessDaysLeft'`, `'FPDdaysLeft'`, `'FPDLastHour'`, `'accessDateView'`, or `'PastExpirationDate'`.
+
+## Example
+
+The following `env.config.jsx` will customize the notification tray with additional notification types and styling.
+
+
+```js
+import { DIRECT_PLUGIN, PLUGIN_OPERATIONS } from '@openedx/frontend-plugin-framework';
+
+const config = {
+ pluginSlots: {
+ 'org.openedx.frontend.learning.notification_tray.v1': {
+ plugins: [
+ {
+ // Insert custom notification content
+ op: PLUGIN_OPERATIONS.Replace,
+ widget: {
+ id: 'custom_notifications',
+ type: DIRECT_PLUGIN,
+ RenderWidget: ({
+ courseId,
+ model,
+ notificationCurrentState,
+ setNotificationCurrentState
+ }) => (
+