<!--
@license
Copyright (C) 2015 The Android Open Source Project

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

<link rel="import" href="../../../behaviors/base-url-behavior/base-url-behavior.html">
<link rel="import" href="../../../bower_components/polymer/polymer.html">
<link rel="import" href="../../core/gr-navigation/gr-navigation.html">
<link rel="import" href="../gr-account-label/gr-account-label.html">
<link rel="import" href="../../../styles/shared-styles.html">

<dom-module id="gr-account-link">
  <template>
    <style include="shared-styles">
      :host {
        display: inline-block;
      }
      a {
        color: var(--primary-text-color);
        text-decoration: none;
      }
      gr-account-label {
        --gr-account-label-text-hover-style: {
          text-decoration: underline;
        };
      }
    </style>
    <span>
      <a href$="[[_computeOwnerLink(account)]]" tabindex="-1">
        <gr-account-label account="[[account]]"
            additional-text="[[additionalText]]"
            avatar-image-size="[[avatarImageSize]]"></gr-account-label>
      </a>
    </span>
  </template>
  <script src="gr-account-link.js"></script>
</dom-module>
