diff --git a/src/patterns/01-core/mixins/_accessiblity.scss b/src/patterns/01-core/mixins/_accessiblity.scss
index 133cedac055173a85c46a8cb0c2adb34b8b88a78..b1b87ae1104d260536b0fb3ab542b92b8a1aaad1 100644
--- a/src/patterns/01-core/mixins/_accessiblity.scss
+++ b/src/patterns/01-core/mixins/_accessiblity.scss
@@ -50,3 +50,8 @@
     display: none;
   }
 }
+
+// Set the Uw use of off-screen class.
+.off-screen {
+  @include visually-hidden();
+}
diff --git a/src/patterns/03-layouts/site-footer/_site-footer.scss b/src/patterns/03-layouts/site-footer/_site-footer.scss
index 26a3842215af430e48451bfd451cbaa36a580b77..8042ec9391ab0b455c27cd35f2243dea65d8405d 100644
--- a/src/patterns/03-layouts/site-footer/_site-footer.scss
+++ b/src/patterns/03-layouts/site-footer/_site-footer.scss
@@ -93,6 +93,12 @@
       color: var(--uw-white-1);
     }
     table {
+      th{
+        color: var(--uw-black);
+      }
+      td{
+        color: var(--uw-black);
+      }
       caption{
         color: var(--uw-white-1);
       }
diff --git a/src/patterns/03-layouts/site-footer/site-footer.twig b/src/patterns/03-layouts/site-footer/site-footer.twig
index 933881a7207f8d815e1994059584ba33d3668446..4bd6fccd9a9310e6c2a4539080736f99be96555e 100644
--- a/src/patterns/03-layouts/site-footer/site-footer.twig
+++ b/src/patterns/03-layouts/site-footer/site-footer.twig
@@ -16,7 +16,9 @@
     </div>
     {%  endif %}
     <div class="uw-site-footer__social-media">
-     social icons
+      {% include "@components/menu/menu--social/menu--social.twig" with {
+        social_media_placement: 'local-site-footer',
+      } %}
     </div>
     <div class="uw-site-footer__content">
       {{ body }}
diff --git a/src/patterns/04-components/_index.scss b/src/patterns/04-components/_index.scss
index 2a4bacb79903126b9d18f7f500f71e3518df8b43..8f5bdd4260023fd1eb051eb0dae6dd143c32ca18 100644
--- a/src/patterns/04-components/_index.scss
+++ b/src/patterns/04-components/_index.scss
@@ -2,6 +2,9 @@
 @forward 'button/button';
 @forward 'card/card';
 @forward 'image/image';
+@forward 'menu/menu';
+@forward 'menu/menu--social/menu--social';
+@forward 'social-media/social-media--icon/social-media--icon';
 @forward 'svg/svg';
 @forward 'tag-list/tag-list';
 @forward 'tag/tag';
diff --git a/src/patterns/04-components/menu/_menu.scss b/src/patterns/04-components/menu/_menu.scss
new file mode 100644
index 0000000000000000000000000000000000000000..0485fef69d2b315e1f9a63688c2134467eee5101
--- /dev/null
+++ b/src/patterns/04-components/menu/_menu.scss
@@ -0,0 +1,16 @@
+// @file
+// Styles for Menu.
+
+@use '../../01-core' as *;
+
+.menu {
+  @include list-unstyled;
+
+  @media print {
+    display: none;
+  }
+}
+
+.menu__item {
+  margin-bottom: 0;
+}
diff --git a/src/patterns/04-components/menu/menu--social/_menu--social.scss b/src/patterns/04-components/menu/menu--social/_menu--social.scss
new file mode 100644
index 0000000000000000000000000000000000000000..7615068fff0ca132aabd391e83b93b96620abdc5
--- /dev/null
+++ b/src/patterns/04-components/menu/menu--social/_menu--social.scss
@@ -0,0 +1,50 @@
+@use '../../../01-core' as *;
+
+.social-media-list {
+  align-items: center;
+  display: inline-flex;
+  gap: var(--size-1);
+  justify-content: center;
+  list-style-type: none;
+  margin: 0 auto;
+  padding:0;
+  text-align:center;
+  width:100%;
+  @media(min-width: $screen-xs) {
+    margin: 0;
+    max-width: inherit;
+  }
+  @media(min-width: $screen-md) {
+    justify-content: flex-end;
+  }
+  li {
+    margin: 0;
+    padding:0;
+  }
+}
+.social-media-i {
+  &::before{
+    display:block;
+    height:100%;
+    width:100%;
+  }
+}
+.social-media-link {
+  background-color: var(--uw-white);
+  border-radius: 3px;
+  display:block;
+  height: 2.125rem;
+  padding: 0.225rem;
+  position: relative;
+  width: 2.125rem;
+  @media(min-width: $screen-lg) {
+    height: var(--size-5);
+    padding: 0.24rem;
+    width: var(--size-5);
+  }
+  &:hover,
+  &:focus{
+    background-color:transparent;
+    text-decoration: none;
+  }
+}
diff --git a/src/patterns/04-components/menu/menu--social/menu--social.twig b/src/patterns/04-components/menu/menu--social/menu--social.twig
new file mode 100644
index 0000000000000000000000000000000000000000..3cfc73d92a92316353312ad9a69c716cea510512
--- /dev/null
+++ b/src/patterns/04-components/menu/menu--social/menu--social.twig
@@ -0,0 +1,13 @@
+<div class="uw-social-media">
+  <ul class="social-media-list {{ social_media_menu_class }}">
+    {% for item in social_media.menu_tree %}
+      <li class="social-media-list-item">
+        {% include "@components/social-media/social-media--icon/social-media--icon.twig" with {
+          "text": item.text,
+          "url": item.url,
+          "social_media_placement": social_media_placement
+        }%}
+      </li>
+    {% endfor %}
+  </ul>
+</div>
diff --git a/src/patterns/04-components/menu/menu--social/menu--social.yml b/src/patterns/04-components/menu/menu--social/menu--social.yml
new file mode 100644
index 0000000000000000000000000000000000000000..2358ec1730ae2f8920d184908ae8d0c687646e67
--- /dev/null
+++ b/src/patterns/04-components/menu/menu--social/menu--social.yml
@@ -0,0 +1,13 @@
+social_media:
+  menu_tree:
+    - text: "Facebook"
+      url: "https://www.facebook.com/university.waterloo"
+    - text: "Twitter"
+      url: "https://twitter.com/uWaterloo"
+    - text: "YouTube"
+      url: "https://www.youtube.com/user/uwaterloo"
+    - text: "Instagram"
+      url: "https://www.instagram.com/uofwaterloo/"
+    - text: "LinkedIn"
+      url: "https://www.linkedin.com/edu/school?id=10875"
+social_media_placement: ""
diff --git a/src/patterns/04-components/menu/menu.twig b/src/patterns/04-components/menu/menu.twig
new file mode 100644
index 0000000000000000000000000000000000000000..cb9010905adc4e2faa89faa292d8f55a8640bae4
--- /dev/null
+++ b/src/patterns/04-components/menu/menu.twig
@@ -0,0 +1,74 @@
+{% import _self as menus %}
+
+{{ menus.menu_links(items, attributes, 0, menu_name) }}
+
+{% macro menu_links(items, attributes, menu_level, menu_name) %}
+  {% import _self as menus %}
+  {% if items %}
+    {% if menu_level == 0 %}
+
+      {% set menu_classes = [
+        'menu',
+        'menu--' ~ menu_name|clean_class,
+        attributes ? attributes.class
+      ]|join(' ')|trim %}
+
+      <ul class="{{ menu_classes }}" {{ attributes ? attributes|without('class') }}>
+    {% else %}
+      <ul class="menu menu__subnav">
+    {% endif %}
+
+    {% for item in items %}
+
+      {% set item_classes = [
+        'menu__item',
+        item.attributes ? item.attributes.class
+      ] %}
+
+      {% set link_classes = [
+        'menu__link',
+      ] %}
+
+      {% if item.below %}
+        {% set item_classes = item_classes|merge(['has-subnav']) %}
+        {% set link_classes = link_classes|merge(['has-subnav']) %}
+      {% endif %}
+
+      {% if item.in_active_trail %}
+        {% set item_classes = item_classes|merge(['is-active-trail']) %}
+        {% set link_classes = link_classes|merge(['is-active-trail']) %}
+      {% endif %}
+
+      {% if item.is_collapsed %}
+        {% set item_classes = item_classes|merge(['is-collapsed']) %}
+        {% set link_classes = link_classes|merge(['is-collapsed']) %}
+      {% endif %}
+
+      {% if item.is_expanded %}
+        {% set item_classes = item_classes|merge(['is-expanded']) %}
+        {% set link_classes = link_classes|merge(['is-expanded']) %}
+      {% endif %}
+
+      {% if item['original_link'].options.attributes.class %}
+        {% set original_link_class = item['original_link'].options.attributes.class %}
+        {% if original_link_class is not iterable %}
+          {% set original_link_class = [original_link_class] %}
+        {% endif %}
+        {% set link_classes = link_classes|merge(original_link_class) %}
+      {% endif %}
+
+      {% set item_classes = item_classes|join(' ')|trim %}
+      {% set link_classes = link_classes|join(' ')|trim %}
+
+      <li class="{{ item_classes }}" {{ item.attributes ? item.attributes|without('class') }}>
+        <a class="{{ link_classes }}" href="{{ item.url }}">{{ item.title }}</a>
+
+        {% if item.below %}
+          {{ menus.menu_links(item.below, attributes, menu_level + 1) }}
+        {% endif %}
+      </li>
+
+    {% endfor %}
+    </ul>
+  {% endif %}
+{% endmacro %}
diff --git a/src/patterns/04-components/menu/menu.yml b/src/patterns/04-components/menu/menu.yml
new file mode 100644
index 0000000000000000000000000000000000000000..b81194b1c9911d2ed60565d7edc8102f9a6887d2
--- /dev/null
+++ b/src/patterns/04-components/menu/menu.yml
@@ -0,0 +1,17 @@
+---
+menu_name: ''
+items:
+  - title: 'Link 1'
+    url: '#'
+    original_link:
+      options:
+        attributes:
+          class: ''
+    in_active_trail: false
+  - title: 'Link 2'
+    url: '#'
+    original_link:
+      options:
+        attributes:
+          class: ''
+    in_active_trail: false
diff --git a/src/patterns/04-components/social-media/social-media--icon/_social-media--icon.scss b/src/patterns/04-components/social-media/social-media--icon/_social-media--icon.scss
new file mode 100644
index 0000000000000000000000000000000000000000..0819d71a1fbff9c2999d3a473696ffd88d043966
--- /dev/null
+++ b/src/patterns/04-components/social-media/social-media--icon/_social-media--icon.scss
@@ -0,0 +1,47 @@
+@use '../../../01-core' as *;
+
+$social-accounts: 'facebook', 'twitter', 'youtube', 'instagram', 'linkedin', 'snapchat';
+
+.uw-footer{
+  .ifdsu{
+    height: 100%;
+    width: 100%;
+    &::before{
+       content:'';
+    }
+  }
+}
+.uw-footer__wrapper {
+  a{
+    @each $social in $social-accounts {
+      .fdsu-#{$social}::before {
+        @include svg-background-color(var(--uw-black),$social);
+      }
+    }
+    &:hover,
+    &:focus{
+      @each $social in $social-accounts {
+        .fdsu-#{$social}::before {
+          @include svg-background-color(var(--uw-gold),$social);
+        }
+      }
+    }
+  }
+}
+.uw-site-footer {
+  a {
+    @each $social in $social-accounts {
+      .fdsu-#{$social}::before {
+        @include svg-background-color(var(--uw-black-3),$social);
+      }
+    }
+    &:hover,
+    &:focus{
+      @each $social in $social-accounts {
+        .fdsu-#{$social}::before {
+          @include svg-background-color(var(--uw-white),$social);
+        }
+      }
+    }
+  }
+}
diff --git a/src/patterns/04-components/social-media/social-media--icon/social-media--icon.twig b/src/patterns/04-components/social-media/social-media--icon/social-media--icon.twig
new file mode 100644
index 0000000000000000000000000000000000000000..d9a279406007eb909987c477f7d928a86e48bf7b
--- /dev/null
+++ b/src/patterns/04-components/social-media/social-media--icon/social-media--icon.twig
@@ -0,0 +1,4 @@
+<a href="{{ url }}" class="social-media-link {{ social_media_placement }}" title="{{ text|lower }}">
+  <i class="ifdsu fdsu-{{ text|lower }} social-media-i {{ social_media_placement }}"></i>
+  <span class="off-screen">{{ text }}</span>
+</a>
diff --git a/src/patterns/04-components/social-media/social-media--icon/social-media--icon.yml b/src/patterns/04-components/social-media/social-media--icon/social-media--icon.yml
new file mode 100644
index 0000000000000000000000000000000000000000..7bc50593f11d9a257861a312fd558e4b9f0eecec
--- /dev/null
+++ b/src/patterns/04-components/social-media/social-media--icon/social-media--icon.yml
@@ -0,0 +1,3 @@
+text: "facebook"
+url: "https://www.facebook.com/university.waterloo"
+social_media_placement: "global-site-footer"