{"action":"created","comment":{"url":"https://api.github.com/repos/cerner/terra-framework/pulls/comments/175469454","pull_request_review_id":105002486,"id":175469454,"diff_hunk":"@@ -0,0 +1,264 @@\n+# Terra Application Layout\n+\n+## Usage Summary\n+\n+1. The ApplicationLayout requires a `Base` component (from `terra-base`) and any `Router` component (from `react-router-dom`) in its parent hierarchy.\n+2. The `nameConfig` prop customizes the ApplicationLayout's branding.\n+3. The `utilityConfig` prop generates an utilities menu and presentation controls within the layout. A default set of options can be generated by a helper.\n+4. The `routingConfig` prop determines which components get rendered in the ApplicationLayout based on the current router location. Usage of the path `'/'` is restricted for `menu` components.\n+5. The `navigationItems` prop generates primary navigation controls within the layout. The provided navigation items should have associated content in the `routingConfig`.\n+6. The `indexPath` prop determines the default redirect location for the layout. The provided path should have associated content in the `routingConfig`.\n+7. Components rendered within the ApplicationLayout also receive an `app` prop with default support for modal disclosures.\n+8. Components rendered within the ApplicationLayout receive a `layoutConfig` prop for layout state manipulation.\n+9. Components rendered within the ApplicationLayout also receive an `routingStackDelegate` prop.\n+10. The `show` and `showParent` functions of the `routingStackDelegate` should be used for virtual navigation within configuration regions. Specifically, `showParent` must be implemented by `menu` components to ensure that access to the `ApplicationLayout`'s default menu is maintained.\n+\n+## Prerequisites\n+\n+- Like all Terra components, the ApplicationLayout requires the presence of a `Base` component (provided by `terra-base`) in its parent hierarchy.\n+- Additionally, the ApplicationLayout requires the presence of any `Router` component (provided by `react-router-dom`) in its parent hierarchy.\n+\n+## Props\n+\n+### `nameConfig`\n+\n+The `nameConfig` prop allows consuming applications to add their own branding to the ApplicationLayout. The ApplicationLayout will render this content in various ways based on the current breakpoint.\n+\n+|Key Name|Type|Is Required|Description|\n+|---|---|---|---|\n+|`accessory`|Element|optional|A React element that will be presented beside the title. This is typically some sort of icon or visual branding.\n+|`title`|String|optional|The title of the application. This text will be styled by the ApplicationLayout.|\n+\n+```jsx\n+const myNameConfig = {\n+  accessory: <MyApplicationLogo />,\n+  title: 'My Application',\n+}\n+```\n+\n+### `utilityConfig`\n+\n+The `utilityConfig` prop allows consuming applications to present an application-level menu directly from the ApplicationLayout. The ApplicationLayout will render this content in various ways based on the current breakpoint.\n+\n+The API for the `utilityConfig` matches that of the `ApplicationHeaderUtility` and `ApplicationMenuUtility` components from `terra-application-utility`. Please see their respective documentation for more information regarding their full capabilities.\n+\n+|Key Name|Type|Is Required|Description|\n+|---|---|---|---|\n+|`title`|String|optional|A string rendered within the utility menu's presentation target.|\n+|`accessory`|Element|optional|A React element rendered next to the title.|\n+|`menuItems`|Array|required|An array of objects specifying the utility menu options to present.|\n+|`selectedKey`|String|required|The string key of the initial menu item to present.|\n+|`onChange`|Function|required|A function that will be called upon selection of a terminal utility item.|\n+\n+```jsx\n+import Avatar from 'terra-avatar';\n+import { UtilityUtils } from 'terra-application-utility';\n+\n+const myUtilityConfig = {\n+  title: 'Doe, John',\n+  accessory: <Avatar variant=\"user\" ariaLabel=\"Doe, John\" />,\n+  menuItems: [{\n+    key: 'menu',\n+    title: 'Menu',\n+    childKeys: ['item-1', 'item-2', 'item-3', 'item-4'],\n+  }, {\n+    key: 'item-1',\n+    title: 'Item 1',\n+  }, {\n+    key: 'item-2',\n+    title: 'Toggle Item - Checked',\n+    isSelectable: true,\n+    isSelected: true,\n+  },  {\n+    key: 'item-3',\n+    title: 'Toggle Item - Not Checked',\n+    isSelectable: true,\n+    isSelected: false,\n+  }, {\n+    key: 'item-4',\n+    contentLocation: UtilityUtils.LOCATIONS.FOOTER,\n+    title: 'Footer Item',\n+  }]),\n+  selectedKey: 'menu',\n+  onChange: (event, itemKey, disclose) => {\n+    /**\n+     * This function will be called when items are selected within the utility menu.\n+     * The disclose parameter is provided for convenience, but any presentation method\n+     * could be used to handle that menu content selection.\n+     */\n+  },\n+}\n+```\n+\n+### `routingConfig`\n+\n+The `routingConfig` prop allows consuming applications to render components within the ApplicationLayout's content and menu regions based upon the current router location.\n+\n+The ApplicationLayout directly implements the `NavigationLayout` from `terra-navigation-layout`. However, while the `NavigationLayout` allows for the customization of the `header` region of the layout, the `ApplicationLayout` does not. Any `header` entries provided with the `routingConfig` prop will be ignored. Please review the `NavigationLayout` documentation for more information regarding its usage.\n+\n+> Note: Usage of the path `'/'` is restricted for `menu` components. The ApplicationLayout will dynamically inject configuration for the `'/'` path when necessary to properly render navigationItems at `compact` breakpoints.\n+\n+```jsx\n+const routingConfig = {\n+  content: {\n+    'Page 1' : {\n+      path: '/page_1',\n+      component: {\n+        default: {\n+          componentClass: Page1Content,\n+        },\n+      },\n+    },\n+    'Page 2' : {\n+      path: '/page_2',\n+      component: {\n+        default: {\n+          componentClass: Page2Content,\n+        },\n+      },\n+    },\n+  },\n+  menu: {\n+    'Page 1' : {\n+      path: '/page_1',\n+      component: {\n+        default: {\n+          componentClass: Page1Menu,\n+        },\n+      },\n+    },\n+  },\n+};\n+```\n+\n+### `navigationItems`\n+\n+The `navigationItems` prop allows consumers to render high-level, primary navigation controls directly within the ApplicationLayout. The ApplicationLayout will render this content in various ways based on the current breakpoint. If `navigationItems` are omitted, no primary navigation controls will be rendered.\n+\n+Each navigation item provided must be associated to a path that is present within the `routingConfig` specification. The navigation item, as rendered by the ApplicationLayout, will route to that path upon selection.\n+\n+The value provided for `navigationItems` should be an array of objects with the following API:\n+\n+|Key Name|Type|Is Required|Description|\n+|---|---|---|---|\n+|`text`|String|required|A string rendered within the navigation item control.|\n+|`path`|Element|required|A string path to route to upon navigation item selection. This path should be present within the `routingConfig` as well.|\n+\n+```jsx\n+/**\n+ * Given the above routingConfig example, with entries defined for paths '/page_1' and '/page_2',\n+ * the following configuration would generate controls for moving between those two paths.\n+ */\n+const navigationItems = [{\n+  path: '/page_1',\n+  text: 'Page 1',\n+}, {\n+  path: '/page_2',\n+  text: 'Page 2',\n+}];\n+```\n+\n+### `extensions`\n+\n+The `extensions` prop allows consumers to render an element within the ApplicationLayout's extensions region. The `extensions` content will be rendered in various ways depending on the current breakpoint. The `extensions` element will receive `app` and `layoutConfig` props from the ApplicationLayout, allowing it to interact with and respond to changes within the ApplicationLayout.\n+\n+```jsx\n+import { Utils } from 'terra-application-layout';\n+\n+const MyExtensions = ({ app, layoutConfig }) => {\n+  if (Utils.helpers.isSizeCompact(layoutConfig.size)) {\n+    return (\n+      <div>Extensions for ApplicationLayout menu!</div>\n+    );\n+  } else {\n+    return (\n+      <div>Extensions for ApplicationLayout header!</div>\n+    );\n+  }\n+};\n+```\n+\n+### `indexPath`\n+\n+The `indexPath` prop allows consumers to set the default path of the ApplicationLayout. The ApplicationLayout will redirect to this path should users of the consuming application attempt to route to a component not detailed in the `routingConfig` prop. Accordingly, the `indexPath` value must haved an associated entry within the `routingConfig` specification.\n+\n+### `app`\n+\n+By default, the ApplicationLayout will render itself within a `ModalManager` and provide modal presentation capabilities to all of its child components. However, the ApplicationLayout accepts an AppDelegate prop (as `app`) that it will fall back to, if necessary. If no `app` prop is provided, the ModalManager provided by the ApplicationLayout will handle all disclosure requests by the ApplicationLayout's children.\n+\n+## Menu/Content Component Configuration\n+\n+The `routingConfig` prop specifies which components will be rendered in the ApplicationLayout's `content` and `menu` regions. These components receive a set of props from the ApplicationLayout that they must utilize; otherwise, these components can be completely defined by the consuming application.\n+\n+> Note: Because the `ApplicationLayout` utilizes client-side routing provided by `react-router-dom`, the usage of `<a href=>` links and page anchors is restricted. Usage of links and page anchors may negatively impact navigation within an application. `<Link />` components provided by `react-router-dom` or custom events can and should be used instead.\n+\n+The components rendered in these regions will receive the following props from the ApplicationLayout:\n+\n+### `app`\n+\n+The AppDelegate instance (as `app`) provided to the ApplicationLayout's contents is created by ApplicationLayout's default `ModalManager`.\n+\n+Please review the AppDelegate documenation with `terra-app-delegate` for more information regarding the available disclosure options.\n+\n+### `layoutConfig`\n+\n+The `layoutConfig` contains properties describing the ApplicationLayout's state and functions that allow for the manipulation of that state.\n+\n+Please review the `Layout` component in `terra-layout` for more information.\n+\n+### `routingStackDelegate`\n+\n+The `routingStackDelegate` contains APIs that allow for virtual navigation within a set of matched component paths.\n+\n+Imagine a `routingConfiguration` that looks something like this:\n+\n+```jsx\n+const myRoutingConfig = {\n+  menu: {\n+    '/a': {\n+      path: '/a',\n+      component: {\n+        default: {\n+          componentClass: AMenuComponent\n+        }\n+      }\n+    },\n+    '/a/b': {\n+      path: '/a/b',\n+      component: {\n+        default: {\n+          componentClass: BMenuComponent\n+        }\n+      }\n+    },\n+    '/a/b/c': {\n+      path: '/a/b/c',\n+      component: {\n+        default: {\n+          componentClass: CMenuComponent\n+        }\n+      }\n+    },\n+  }\n+  content: {\n+    '/a': {\n+      path: '/a',\n+      component: {\n+        default: {\n+          componentClass: AContentComponent\n+        }\n+      }\n+    }\n+  }\n+}\n+```\n+\n+If the global router location is `/a/b/c`, the ApplicationLayout will render `CMenuComponent` in the menu region and `AContentComponent` in the content region. However, given the nested nature of the configuration, the `BMenuComponent` and `AMenuComponent` may still provide important navigation or contextual information for the `AContentComponent`. It would be nice to be able to be able to view those menus without changing the global router location and losing the current users current application context.","path":"packages/terra-application-layout/docs/usage.md","position":256,"original_position":256,"commit_id":"0019e0a39862c6853c67d5ec43e17fa0f49898bc","original_commit_id":"0019e0a39862c6853c67d5ec43e17fa0f49898bc","user":{"login":"emilyrohrbough","id":14099737,"avatar_url":"https://avatars1.githubusercontent.com/u/14099737?v=4","gravatar_id":"","url":"https://api.github.com/users/emilyrohrbough","html_url":"https://github.com/emilyrohrbough","followers_url":"https://api.github.com/users/emilyrohrbough/followers","following_url":"https://api.github.com/users/emilyrohrbough/following{/other_user}","gists_url":"https://api.github.com/users/emilyrohrbough/gists{/gist_id}","starred_url":"https://api.github.com/users/emilyrohrbough/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/emilyrohrbough/subscriptions","organizations_url":"https://api.github.com/users/emilyrohrbough/orgs","repos_url":"https://api.github.com/users/emilyrohrbough/repos","events_url":"https://api.github.com/users/emilyrohrbough/events{/privacy}","received_events_url":"https://api.github.com/users/emilyrohrbough/received_events","type":"User","site_admin":false},"body":"An idea could be to break this doc out into pieces and add a `slide-group` doc section that should visually navigate this example with the explanation. ","created_at":"2018-03-19T15:09:43Z","updated_at":"2018-03-19T15:09:43Z","html_url":"https://github.com/cerner/terra-framework/pull/116#discussion_r175469454","pull_request_url":"https://api.github.com/repos/cerner/terra-framework/pulls/116","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/cerner/terra-framework/pulls/comments/175469454"},"html":{"href":"https://github.com/cerner/terra-framework/pull/116#discussion_r175469454"},"pull_request":{"href":"https://api.github.com/repos/cerner/terra-framework/pulls/116"}},"in_reply_to_id":175467277},"pull_request":{"url":"https://api.github.com/repos/cerner/terra-framework/pulls/116","id":175654777,"html_url":"https://github.com/cerner/terra-framework/pull/116","diff_url":"https://github.com/cerner/terra-framework/pull/116.diff","patch_url":"https://github.com/cerner/terra-framework/pull/116.patch","issue_url":"https://api.github.com/repos/cerner/terra-framework/issues/116","number":116,"state":"open","locked":false,"title":"Creating ApplicationLayout","user":{"login":"tbiethman","id":1711637,"avatar_url":"https://avatars3.githubusercontent.com/u/1711637?v=4","gravatar_id":"","url":"https://api.github.com/users/tbiethman","html_url":"https://github.com/tbiethman","followers_url":"https://api.github.com/users/tbiethman/followers","following_url":"https://api.github.com/users/tbiethman/following{/other_user}","gists_url":"https://api.github.com/users/tbiethman/gists{/gist_id}","starred_url":"https://api.github.com/users/tbiethman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tbiethman/subscriptions","organizations_url":"https://api.github.com/users/tbiethman/orgs","repos_url":"https://api.github.com/users/tbiethman/repos","events_url":"https://api.github.com/users/tbiethman/events{/privacy}","received_events_url":"https://api.github.com/users/tbiethman/received_events","type":"User","site_admin":false},"body":"### Summary\r\n\r\nThis PR introduces the ApplicationLayout.\r\n\r\nAddresses: #77 \r\n\r\nBroken/outdated tests have been removed, but I didn't want them to hold up the implementation review any longer. I'll be adding those back shortly as I fix them.\r\n\r\n","created_at":"2018-03-16T21:54:14Z","updated_at":"2018-03-19T15:09:43Z","closed_at":null,"merged_at":null,"merge_commit_sha":"be9516578822a5560c33fd7540619919f2e260ac","assignee":{"login":"tbiethman","id":1711637,"avatar_url":"https://avatars3.githubusercontent.com/u/1711637?v=4","gravatar_id":"","url":"https://api.github.com/users/tbiethman","html_url":"https://github.com/tbiethman","followers_url":"https://api.github.com/users/tbiethman/followers","following_url":"https://api.github.com/users/tbiethman/following{/other_user}","gists_url":"https://api.github.com/users/tbiethman/gists{/gist_id}","starred_url":"https://api.github.com/users/tbiethman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tbiethman/subscriptions","organizations_url":"https://api.github.com/users/tbiethman/orgs","repos_url":"https://api.github.com/users/tbiethman/repos","events_url":"https://api.github.com/users/tbiethman/events{/privacy}","received_events_url":"https://api.github.com/users/tbiethman/received_events","type":"User","site_admin":false},"assignees":[{"login":"tbiethman","id":1711637,"avatar_url":"https://avatars3.githubusercontent.com/u/1711637?v=4","gravatar_id":"","url":"https://api.github.com/users/tbiethman","html_url":"https://github.com/tbiethman","followers_url":"https://api.github.com/users/tbiethman/followers","following_url":"https://api.github.com/users/tbiethman/following{/other_user}","gists_url":"https://api.github.com/users/tbiethman/gists{/gist_id}","starred_url":"https://api.github.com/users/tbiethman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tbiethman/subscriptions","organizations_url":"https://api.github.com/users/tbiethman/orgs","repos_url":"https://api.github.com/users/tbiethman/repos","events_url":"https://api.github.com/users/tbiethman/events{/privacy}","received_events_url":"https://api.github.com/users/tbiethman/received_events","type":"User","site_admin":false}],"requested_reviewers":[{"login":"bjankord","id":633148,"avatar_url":"https://avatars1.githubusercontent.com/u/633148?v=4","gravatar_id":"","url":"https://api.github.com/users/bjankord","html_url":"https://github.com/bjankord","followers_url":"https://api.github.com/users/bjankord/followers","following_url":"https://api.github.com/users/bjankord/following{/other_user}","gists_url":"https://api.github.com/users/bjankord/gists{/gist_id}","starred_url":"https://api.github.com/users/bjankord/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bjankord/subscriptions","organizations_url":"https://api.github.com/users/bjankord/orgs","repos_url":"https://api.github.com/users/bjankord/repos","events_url":"https://api.github.com/users/bjankord/events{/privacy}","received_events_url":"https://api.github.com/users/bjankord/received_events","type":"User","site_admin":false},{"login":"mjhenkes","id":1588747,"avatar_url":"https://avatars2.githubusercontent.com/u/1588747?v=4","gravatar_id":"","url":"https://api.github.com/users/mjhenkes","html_url":"https://github.com/mjhenkes","followers_url":"https://api.github.com/users/mjhenkes/followers","following_url":"https://api.github.com/users/mjhenkes/following{/other_user}","gists_url":"https://api.github.com/users/mjhenkes/gists{/gist_id}","starred_url":"https://api.github.com/users/mjhenkes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mjhenkes/subscriptions","organizations_url":"https://api.github.com/users/mjhenkes/orgs","repos_url":"https://api.github.com/users/mjhenkes/repos","events_url":"https://api.github.com/users/mjhenkes/events{/privacy}","received_events_url":"https://api.github.com/users/mjhenkes/received_events","type":"User","site_admin":false},{"login":"JakeLaCombe","id":2552573,"avatar_url":"https://avatars3.githubusercontent.com/u/2552573?v=4","gravatar_id":"","url":"https://api.github.com/users/JakeLaCombe","html_url":"https://github.com/JakeLaCombe","followers_url":"https://api.github.com/users/JakeLaCombe/followers","following_url":"https://api.github.com/users/JakeLaCombe/following{/other_user}","gists_url":"https://api.github.com/users/JakeLaCombe/gists{/gist_id}","starred_url":"https://api.github.com/users/JakeLaCombe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JakeLaCombe/subscriptions","organizations_url":"https://api.github.com/users/JakeLaCombe/orgs","repos_url":"https://api.github.com/users/JakeLaCombe/repos","events_url":"https://api.github.com/users/JakeLaCombe/events{/privacy}","received_events_url":"https://api.github.com/users/JakeLaCombe/received_events","type":"User","site_admin":false},{"login":"ryanthemanuel","id":4873279,"avatar_url":"https://avatars3.githubusercontent.com/u/4873279?v=4","gravatar_id":"","url":"https://api.github.com/users/ryanthemanuel","html_url":"https://github.com/ryanthemanuel","followers_url":"https://api.github.com/users/ryanthemanuel/followers","following_url":"https://api.github.com/users/ryanthemanuel/following{/other_user}","gists_url":"https://api.github.com/users/ryanthemanuel/gists{/gist_id}","starred_url":"https://api.github.com/users/ryanthemanuel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ryanthemanuel/subscriptions","organizations_url":"https://api.github.com/users/ryanthemanuel/orgs","repos_url":"https://api.github.com/users/ryanthemanuel/repos","events_url":"https://api.github.com/users/ryanthemanuel/events{/privacy}","received_events_url":"https://api.github.com/users/ryanthemanuel/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":869907624,"url":"https://api.github.com/repos/cerner/terra-framework/labels/application-layout","name":"application-layout","color":"deed82","default":false},{"id":729695080,"url":"https://api.github.com/repos/cerner/terra-framework/labels/new%20feature","name":"new feature","color":"3b47b5","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/cerner/terra-framework/pulls/116/commits","review_comments_url":"https://api.github.com/repos/cerner/terra-framework/pulls/116/comments","review_comment_url":"https://api.github.com/repos/cerner/terra-framework/pulls/comments{/number}","comments_url":"https://api.github.com/repos/cerner/terra-framework/issues/116/comments","statuses_url":"https://api.github.com/repos/cerner/terra-framework/statuses/0019e0a39862c6853c67d5ec43e17fa0f49898bc","head":{"label":"cerner:application-layout-pr","ref":"application-layout-pr","sha":"0019e0a39862c6853c67d5ec43e17fa0f49898bc","user":{"login":"cerner","id":1873208,"avatar_url":"https://avatars1.githubusercontent.com/u/1873208?v=4","gravatar_id":"","url":"https://api.github.com/users/cerner","html_url":"https://github.com/cerner","followers_url":"https://api.github.com/users/cerner/followers","following_url":"https://api.github.com/users/cerner/following{/other_user}","gists_url":"https://api.github.com/users/cerner/gists{/gist_id}","starred_url":"https://api.github.com/users/cerner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cerner/subscriptions","organizations_url":"https://api.github.com/users/cerner/orgs","repos_url":"https://api.github.com/users/cerner/repos","events_url":"https://api.github.com/users/cerner/events{/privacy}","received_events_url":"https://api.github.com/users/cerner/received_events","type":"Organization","site_admin":false},"repo":{"id":107724721,"name":"terra-framework","full_name":"cerner/terra-framework","owner":{"login":"cerner","id":1873208,"avatar_url":"https://avatars1.githubusercontent.com/u/1873208?v=4","gravatar_id":"","url":"https://api.github.com/users/cerner","html_url":"https://github.com/cerner","followers_url":"https://api.github.com/users/cerner/followers","following_url":"https://api.github.com/users/cerner/following{/other_user}","gists_url":"https://api.github.com/users/cerner/gists{/gist_id}","starred_url":"https://api.github.com/users/cerner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cerner/subscriptions","organizations_url":"https://api.github.com/users/cerner/orgs","repos_url":"https://api.github.com/users/cerner/repos","events_url":"https://api.github.com/users/cerner/events{/privacy}","received_events_url":"https://api.github.com/users/cerner/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/cerner/terra-framework","description":"Terra framework houses higher order opinionated react components to help developers quickly build out new applications.","fork":false,"url":"https://api.github.com/repos/cerner/terra-framework","forks_url":"https://api.github.com/repos/cerner/terra-framework/forks","keys_url":"https://api.github.com/repos/cerner/terra-framework/keys{/key_id}","collaborators_url":"https://api.github.com/repos/cerner/terra-framework/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/cerner/terra-framework/teams","hooks_url":"https://api.github.com/repos/cerner/terra-framework/hooks","issue_events_url":"https://api.github.com/repos/cerner/terra-framework/issues/events{/number}","events_url":"https://api.github.com/repos/cerner/terra-framework/events","assignees_url":"https://api.github.com/repos/cerner/terra-framework/assignees{/user}","branches_url":"https://api.github.com/repos/cerner/terra-framework/branches{/branch}","tags_url":"https://api.github.com/repos/cerner/terra-framework/tags","blobs_url":"https://api.github.com/repos/cerner/terra-framework/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/cerner/terra-framework/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/cerner/terra-framework/git/refs{/sha}","trees_url":"https://api.github.com/repos/cerner/terra-framework/git/trees{/sha}","statuses_url":"https://api.github.com/repos/cerner/terra-framework/statuses/{sha}","languages_url":"https://api.github.com/repos/cerner/terra-framework/languages","stargazers_url":"https://api.github.com/repos/cerner/terra-framework/stargazers","contributors_url":"https://api.github.com/repos/cerner/terra-framework/contributors","subscribers_url":"https://api.github.com/repos/cerner/terra-framework/subscribers","subscription_url":"https://api.github.com/repos/cerner/terra-framework/subscription","commits_url":"https://api.github.com/repos/cerner/terra-framework/commits{/sha}","git_commits_url":"https://api.github.com/repos/cerner/terra-framework/git/commits{/sha}","comments_url":"https://api.github.com/repos/cerner/terra-framework/comments{/number}","issue_comment_url":"https://api.github.com/repos/cerner/terra-framework/issues/comments{/number}","contents_url":"https://api.github.com/repos/cerner/terra-framework/contents/{+path}","compare_url":"https://api.github.com/repos/cerner/terra-framework/compare/{base}...{head}","merges_url":"https://api.github.com/repos/cerner/terra-framework/merges","archive_url":"https://api.github.com/repos/cerner/terra-framework/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/cerner/terra-framework/downloads","issues_url":"https://api.github.com/repos/cerner/terra-framework/issues{/number}","pulls_url":"https://api.github.com/repos/cerner/terra-framework/pulls{/number}","milestones_url":"https://api.github.com/repos/cerner/terra-framework/milestones{/number}","notifications_url":"https://api.github.com/repos/cerner/terra-framework/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/cerner/terra-framework/labels{/name}","releases_url":"https://api.github.com/repos/cerner/terra-framework/releases{/id}","deployments_url":"https://api.github.com/repos/cerner/terra-framework/deployments","created_at":"2017-10-20T20:43:46Z","updated_at":"2018-03-16T19:54:33Z","pushed_at":"2018-03-19T04:16:47Z","git_url":"git://github.com/cerner/terra-framework.git","ssh_url":"git@github.com:cerner/terra-framework.git","clone_url":"https://github.com/cerner/terra-framework.git","svn_url":"https://github.com/cerner/terra-framework","homepage":"http://engineering.cerner.com/terra-framework/","size":12118,"stargazers_count":10,"watchers_count":10,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":1,"mirror_url":null,"archived":false,"open_issues_count":16,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":1,"open_issues":16,"watchers":10,"default_branch":"master"}},"base":{"label":"cerner:master","ref":"master","sha":"22d34e0d00df39d735d7c6072a582928a0650bcf","user":{"login":"cerner","id":1873208,"avatar_url":"https://avatars1.githubusercontent.com/u/1873208?v=4","gravatar_id":"","url":"https://api.github.com/users/cerner","html_url":"https://github.com/cerner","followers_url":"https://api.github.com/users/cerner/followers","following_url":"https://api.github.com/users/cerner/following{/other_user}","gists_url":"https://api.github.com/users/cerner/gists{/gist_id}","starred_url":"https://api.github.com/users/cerner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cerner/subscriptions","organizations_url":"https://api.github.com/users/cerner/orgs","repos_url":"https://api.github.com/users/cerner/repos","events_url":"https://api.github.com/users/cerner/events{/privacy}","received_events_url":"https://api.github.com/users/cerner/received_events","type":"Organization","site_admin":false},"repo":{"id":107724721,"name":"terra-framework","full_name":"cerner/terra-framework","owner":{"login":"cerner","id":1873208,"avatar_url":"https://avatars1.githubusercontent.com/u/1873208?v=4","gravatar_id":"","url":"https://api.github.com/users/cerner","html_url":"https://github.com/cerner","followers_url":"https://api.github.com/users/cerner/followers","following_url":"https://api.github.com/users/cerner/following{/other_user}","gists_url":"https://api.github.com/users/cerner/gists{/gist_id}","starred_url":"https://api.github.com/users/cerner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cerner/subscriptions","organizations_url":"https://api.github.com/users/cerner/orgs","repos_url":"https://api.github.com/users/cerner/repos","events_url":"https://api.github.com/users/cerner/events{/privacy}","received_events_url":"https://api.github.com/users/cerner/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/cerner/terra-framework","description":"Terra framework houses higher order opinionated react components to help developers quickly build out new applications.","fork":false,"url":"https://api.github.com/repos/cerner/terra-framework","forks_url":"https://api.github.com/repos/cerner/terra-framework/forks","keys_url":"https://api.github.com/repos/cerner/terra-framework/keys{/key_id}","collaborators_url":"https://api.github.com/repos/cerner/terra-framework/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/cerner/terra-framework/teams","hooks_url":"https://api.github.com/repos/cerner/terra-framework/hooks","issue_events_url":"https://api.github.com/repos/cerner/terra-framework/issues/events{/number}","events_url":"https://api.github.com/repos/cerner/terra-framework/events","assignees_url":"https://api.github.com/repos/cerner/terra-framework/assignees{/user}","branches_url":"https://api.github.com/repos/cerner/terra-framework/branches{/branch}","tags_url":"https://api.github.com/repos/cerner/terra-framework/tags","blobs_url":"https://api.github.com/repos/cerner/terra-framework/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/cerner/terra-framework/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/cerner/terra-framework/git/refs{/sha}","trees_url":"https://api.github.com/repos/cerner/terra-framework/git/trees{/sha}","statuses_url":"https://api.github.com/repos/cerner/terra-framework/statuses/{sha}","languages_url":"https://api.github.com/repos/cerner/terra-framework/languages","stargazers_url":"https://api.github.com/repos/cerner/terra-framework/stargazers","contributors_url":"https://api.github.com/repos/cerner/terra-framework/contributors","subscribers_url":"https://api.github.com/repos/cerner/terra-framework/subscribers","subscription_url":"https://api.github.com/repos/cerner/terra-framework/subscription","commits_url":"https://api.github.com/repos/cerner/terra-framework/commits{/sha}","git_commits_url":"https://api.github.com/repos/cerner/terra-framework/git/commits{/sha}","comments_url":"https://api.github.com/repos/cerner/terra-framework/comments{/number}","issue_comment_url":"https://api.github.com/repos/cerner/terra-framework/issues/comments{/number}","contents_url":"https://api.github.com/repos/cerner/terra-framework/contents/{+path}","compare_url":"https://api.github.com/repos/cerner/terra-framework/compare/{base}...{head}","merges_url":"https://api.github.com/repos/cerner/terra-framework/merges","archive_url":"https://api.github.com/repos/cerner/terra-framework/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/cerner/terra-framework/downloads","issues_url":"https://api.github.com/repos/cerner/terra-framework/issues{/number}","pulls_url":"https://api.github.com/repos/cerner/terra-framework/pulls{/number}","milestones_url":"https://api.github.com/repos/cerner/terra-framework/milestones{/number}","notifications_url":"https://api.github.com/repos/cerner/terra-framework/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/cerner/terra-framework/labels{/name}","releases_url":"https://api.github.com/repos/cerner/terra-framework/releases{/id}","deployments_url":"https://api.github.com/repos/cerner/terra-framework/deployments","created_at":"2017-10-20T20:43:46Z","updated_at":"2018-03-16T19:54:33Z","pushed_at":"2018-03-19T04:16:47Z","git_url":"git://github.com/cerner/terra-framework.git","ssh_url":"git@github.com:cerner/terra-framework.git","clone_url":"https://github.com/cerner/terra-framework.git","svn_url":"https://github.com/cerner/terra-framework","homepage":"http://engineering.cerner.com/terra-framework/","size":12118,"stargazers_count":10,"watchers_count":10,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":1,"mirror_url":null,"archived":false,"open_issues_count":16,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":1,"open_issues":16,"watchers":10,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/cerner/terra-framework/pulls/116"},"html":{"href":"https://github.com/cerner/terra-framework/pull/116"},"issue":{"href":"https://api.github.com/repos/cerner/terra-framework/issues/116"},"comments":{"href":"https://api.github.com/repos/cerner/terra-framework/issues/116/comments"},"review_comments":{"href":"https://api.github.com/repos/cerner/terra-framework/pulls/116/comments"},"review_comment":{"href":"https://api.github.com/repos/cerner/terra-framework/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/cerner/terra-framework/pulls/116/commits"},"statuses":{"href":"https://api.github.com/repos/cerner/terra-framework/statuses/0019e0a39862c6853c67d5ec43e17fa0f49898bc"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"emilyrohrbough"}}