diff --git a/app/assets/javascripts/design_management/components/design_sidebar.vue b/app/assets/javascripts/design_management/components/design_sidebar.vue
index 8c9e1fe2cc498045289409ded6da433f5ce11aeb..4433c3469f10b70e28361659912dfc40843b10b5 100644
--- a/app/assets/javascripts/design_management/components/design_sidebar.vue
+++ b/app/assets/javascripts/design_management/components/design_sidebar.vue
@@ -11,7 +11,6 @@ import { extractDiscussions, extractParticipants } from '../utils/design_managem
 import DesignDiscussion from './design_notes/design_discussion.vue';
 import DescriptionForm from './design_description/description_form.vue';
 import DesignNoteSignedOut from './design_notes/design_note_signed_out.vue';
-import DesignTodoButton from './design_todo_button.vue';
 import DesignDisclosure from './design_disclosure.vue';
 
 export default {
@@ -22,7 +21,6 @@ export default {
     GlAccordion,
     GlAccordionItem,
     GlSkeletonLoader,
-    DesignTodoButton,
     DescriptionForm,
     DesignDisclosure,
   },
@@ -139,13 +137,7 @@ export default {
   <design-disclosure :open="true">
     <template #default>
       <div class="image-notes gl-h-full gl-pt-0" @click.self="handleSidebarClick">
-        <div
-          class="gl-py-4 gl-mb-4 gl-display-flex gl-justify-content-space-between gl-align-items-center gl-border-b-1 gl-border-b-solid gl-border-b-gray-100"
-        >
-          <span>{{ __('To Do') }}</span>
-          <design-todo-button :design="design" @error="$emit('todoError', $event)" />
-        </div>
-        <h2 class="gl-font-weight-bold gl-mt-0">
+        <h2 class="gl-font-weight-bold gl-mt-4">
           {{ issue.title }}
         </h2>
         <a
diff --git a/app/assets/javascripts/design_management/components/design_todo_button.vue b/app/assets/javascripts/design_management/components/design_todo_button.vue
index a1a23d61093811e5e204d0e4362b270993d3486b..00857777e3436662cd4fe41d7644bd5abbcd67ab 100644
--- a/app/assets/javascripts/design_management/components/design_todo_button.vue
+++ b/app/assets/javascripts/design_management/components/design_todo_button.vue
@@ -1,6 +1,8 @@
 <script>
+import { GlIcon, GlTooltipDirective } from '@gitlab/ui';
 import todoMarkDoneMutation from '~/graphql_shared/mutations/todo_mark_done.mutation.graphql';
 import TodoButton from '~/sidebar/components/todo_toggle/todo_button.vue';
+import { todoLabel } from '~/sidebar/utils';
 import createDesignTodoMutation from '../graphql/mutations/create_design_todo.mutation.graphql';
 import getDesignQuery from '../graphql/queries/get_design.query.graphql';
 import allVersionsMixin from '../mixins/all_versions';
@@ -11,6 +13,10 @@ import { CREATE_DESIGN_TODO_ERROR, DELETE_DESIGN_TODO_ERROR } from '../utils/err
 export default {
   components: {
     TodoButton,
+    GlIcon,
+  },
+  directives: {
+    GlTooltip: GlTooltipDirective,
   },
   mixins: [allVersionsMixin],
   inject: {
@@ -58,6 +64,12 @@ export default {
     hasPendingTodo() {
       return Boolean(this.pendingTodo);
     },
+    buttonIcon() {
+      return this.pendingTodo ? 'todo-done' : 'todo-add';
+    },
+    tooltipLabel() {
+      return todoLabel(this.hasPendingTodo);
+    },
   },
   methods: {
     createTodo() {
@@ -132,10 +144,14 @@ export default {
 
 <template>
   <todo-button
+    v-gl-tooltip
+    :title="tooltipLabel"
     issuable-type="design"
     :issuable-id="design.iid"
     :is-todo="hasPendingTodo"
     :loading="todoLoading"
     @click.stop.prevent="toggleTodo"
-  />
+  >
+    <gl-icon :class="{ 'gl-fill-blue-500': pendingTodo }" :name="buttonIcon" />
+  </todo-button>
 </template>
diff --git a/app/assets/javascripts/design_management/components/toolbar/index.vue b/app/assets/javascripts/design_management/components/toolbar/index.vue
index b2249da9b256704f6195eb1162124cbff28c577e..61e863b5ecd0ee74dbab7dba7b497dfba47bef7d 100644
--- a/app/assets/javascripts/design_management/components/toolbar/index.vue
+++ b/app/assets/javascripts/design_management/components/toolbar/index.vue
@@ -6,6 +6,7 @@ import { __, s__, sprintf } from '~/locale';
 import timeagoMixin from '~/vue_shared/mixins/timeago';
 import { DESIGNS_ROUTE_NAME } from '../../router/constants';
 import DeleteButton from '../delete_button.vue';
+import DesignTodoButton from '../design_todo_button.vue';
 import DesignNavigation from './design_navigation.vue';
 
 export default {
@@ -18,6 +19,7 @@ export default {
     GlSkeletonLoader,
     DesignNavigation,
     DeleteButton,
+    DesignTodoButton,
   },
   directives: {
     GlTooltip: GlTooltipDirective,
@@ -68,6 +70,10 @@ export default {
       type: Boolean,
       required: true,
     },
+    design: {
+      type: Object,
+      required: true,
+    },
   },
   data() {
     return {
@@ -115,6 +121,7 @@ export default {
       </div>
     </div>
     <design-navigation :id="id" class="gl-ml-auto gl-flex-shrink-0" />
+    <design-todo-button :design="design" class="gl-mr-3" @error="$emit('todoError', $event)" />
     <gl-button
       v-gl-tooltip.bottom
       :href="image"
diff --git a/app/assets/javascripts/design_management/pages/design/index.vue b/app/assets/javascripts/design_management/pages/design/index.vue
index 9f6077ace9291e5b51188515a4d0254d783593aa..0af31d2b9d576769315c73f47a574e9797792dc6 100644
--- a/app/assets/javascripts/design_management/pages/design/index.vue
+++ b/app/assets/javascripts/design_management/pages/design/index.vue
@@ -350,6 +350,7 @@ export default {
             :is-deleting="loading"
             :is-latest-version="isLatestVersion"
             :is-loading="isLoading"
+            :design="design"
             v-bind="design"
             @delete="mutate"
           />
diff --git a/spec/frontend/design_management/components/design_sidebar_spec.js b/spec/frontend/design_management/components/design_sidebar_spec.js
index 0682cd7103568ca197be3f31c9e4acf4901a7095..119c785fca7b15c512081e80661d376f91aa3bb6 100644
--- a/spec/frontend/design_management/components/design_sidebar_spec.js
+++ b/spec/frontend/design_management/components/design_sidebar_spec.js
@@ -4,7 +4,6 @@ import { nextTick } from 'vue';
 import DesignDiscussion from '~/design_management/components/design_notes/design_discussion.vue';
 import DesignNoteSignedOut from '~/design_management/components/design_notes/design_note_signed_out.vue';
 import DesignSidebar from '~/design_management/components/design_sidebar.vue';
-import DesignTodoButton from '~/design_management/components/design_todo_button.vue';
 import DesignDisclosure from '~/design_management/components/design_disclosure.vue';
 import updateActiveDiscussionMutation from '~/design_management/graphql/mutations/update_active_discussion.mutation.graphql';
 import Participants from '~/sidebar/components/participants/participants.vue';
@@ -94,12 +93,6 @@ describe('Design management design sidebar component', () => {
     expect(findParticipants().props('participants')).toHaveLength(1);
   });
 
-  it('renders To-Do button', () => {
-    createComponent();
-
-    expect(wrapper.findComponent(DesignTodoButton).exists()).toBe(true);
-  });
-
   describe('when has no discussions', () => {
     beforeEach(() => {
       createComponent({
diff --git a/spec/frontend/design_management/components/design_todo_button_spec.js b/spec/frontend/design_management/components/design_todo_button_spec.js
index 2262e5fdd83dfa06b97f92343196f6c6817737a6..8f2699497523f73122f5493ee9a0a3290641051f 100644
--- a/spec/frontend/design_management/components/design_todo_button_spec.js
+++ b/spec/frontend/design_management/components/design_todo_button_spec.js
@@ -1,3 +1,4 @@
+import { GlIcon } from '@gitlab/ui';
 import { shallowMount, mount } from '@vue/test-utils';
 import { nextTick } from 'vue';
 import DesignTodoButton from '~/design_management/components/design_todo_button.vue';
@@ -21,6 +22,7 @@ const mutate = jest.fn().mockResolvedValue();
 
 describe('Design management design todo button', () => {
   let wrapper;
+  const findIcon = () => wrapper.findComponent(GlIcon);
 
   function createComponent(props = {}, { mountFn = shallowMount } = {}) {
     wrapper = mountFn(DesignTodoButton, {
@@ -59,8 +61,8 @@ describe('Design management design todo button', () => {
       createComponent({ design: mockDesignWithPendingTodos }, { mountFn: mount });
     });
 
-    it('renders correct button text', () => {
-      expect(wrapper.text()).toBe('Mark as done');
+    it('renders correct button icon', () => {
+      expect(findIcon().props('name')).toBe('todo-done');
     });
 
     describe('when clicked', () => {
@@ -106,7 +108,7 @@ describe('Design management design todo button', () => {
     });
 
     it('renders correct button text', () => {
-      expect(wrapper.text()).toBe('Add a to do');
+      expect(findIcon().props('name')).toBe('todo-add');
     });
 
     describe('when clicked', () => {
diff --git a/spec/frontend/design_management/components/toolbar/__snapshots__/index_spec.js.snap b/spec/frontend/design_management/components/toolbar/__snapshots__/index_spec.js.snap
index 93ce2db382ea897875c237f74057932f9e454a96..15e1ff4694c5b75c3557339ec9979ca926a5a5d6 100644
--- a/spec/frontend/design_management/components/toolbar/__snapshots__/index_spec.js.snap
+++ b/spec/frontend/design_management/components/toolbar/__snapshots__/index_spec.js.snap
@@ -26,6 +26,10 @@ exports[`Design management toolbar component renders design and updated data 1`]
     class="gl-flex-shrink-0 gl-ml-auto"
     id="reference-0"
   />
+  <design-todo-button-stub
+    class="gl-mr-3"
+    design="[object Object]"
+  />
   <gl-button-stub
     aria-label="Download design"
     buttontextclasses=""
diff --git a/spec/frontend/design_management/components/toolbar/index_spec.js b/spec/frontend/design_management/components/toolbar/index_spec.js
index 764ad73805fc3c51c88af16d587641b1ed09cdfc..9a2dc913659838b98fe78a3157f37a0743bc2e4d 100644
--- a/spec/frontend/design_management/components/toolbar/index_spec.js
+++ b/spec/frontend/design_management/components/toolbar/index_spec.js
@@ -7,9 +7,11 @@ import createMockApollo from 'helpers/mock_apollo_helper';
 import waitForPromises from 'helpers/wait_for_promises';
 import permissionsQuery from 'shared_queries/design_management/design_permissions.query.graphql';
 import DeleteButton from '~/design_management/components/delete_button.vue';
+import DesignTodoButton from '~/design_management/components/design_todo_button.vue';
 import Toolbar from '~/design_management/components/toolbar/index.vue';
 import { DESIGNS_ROUTE_NAME } from '~/design_management/router/constants';
 import { getPermissionsQueryResponse } from '../../mock_data/apollo_mock';
+import design from '../../mock_data/design';
 
 Vue.use(VueRouter);
 Vue.use(VueApollo);
@@ -45,6 +47,7 @@ describe('Design management toolbar component', () => {
         isLatestVersion: true,
         isLoading,
         isDeleting: false,
+        design,
         filename: 'test.jpg',
         updatedAt: updatedAt.toString(),
         updatedBy: {
@@ -105,6 +108,12 @@ describe('Design management toolbar component', () => {
     expect(wrapper.findComponent(DeleteButton).exists()).toBe(false);
   });
 
+  it('renders To-Do button', () => {
+    createComponent();
+
+    expect(wrapper.findComponent(DesignTodoButton).exists()).toBe(true);
+  });
+
   it('emits `delete` event on deleteButton `delete-selected-designs` event', async () => {
     createComponent();
 
diff --git a/spec/frontend/design_management/pages/design/__snapshots__/index_spec.js.snap b/spec/frontend/design_management/pages/design/__snapshots__/index_spec.js.snap
index fc4474f62f2b2df2c6b5eb833dda89b64b512b3c..72dcf5914d9d748c059852e583550baaa4bb0b43 100644
--- a/spec/frontend/design_management/pages/design/__snapshots__/index_spec.js.snap
+++ b/spec/frontend/design_management/pages/design/__snapshots__/index_spec.js.snap
@@ -37,18 +37,8 @@ exports[`Design management design index page renders design index 1`] = `
         <div
           class="gl-h-full gl-pt-0 image-notes"
         >
-          <div
-            class="gl-align-items-center gl-border-b-1 gl-border-b-gray-100 gl-border-b-solid gl-display-flex gl-justify-content-space-between gl-mb-4 gl-py-4"
-          >
-            <span>
-              To Do
-            </span>
-            <design-todo-button-stub
-              design="[object Object]"
-            />
-          </div>
           <h2
-            class="gl-font-weight-bold gl-mt-0"
+            class="gl-font-weight-bold gl-mt-4"
           >
             My precious issue
           </h2>
@@ -166,18 +156,8 @@ exports[`Design management design index page with error GlAlert is rendered in c
         <div
           class="gl-h-full gl-pt-0 image-notes"
         >
-          <div
-            class="gl-align-items-center gl-border-b-1 gl-border-b-gray-100 gl-border-b-solid gl-display-flex gl-justify-content-space-between gl-mb-4 gl-py-4"
-          >
-            <span>
-              To Do
-            </span>
-            <design-todo-button-stub
-              design="[object Object]"
-            />
-          </div>
           <h2
-            class="gl-font-weight-bold gl-mt-0"
+            class="gl-font-weight-bold gl-mt-4"
           >
             My precious issue
           </h2>