diff --git a/app/components/rev-dep-row.hbs b/app/components/rev-dep-row.hbs new file mode 100644 index 00000000000..27a537ea1ba --- /dev/null +++ b/app/components/rev-dep-row.hbs @@ -0,0 +1,21 @@ +
+
+ + {{@dependency.version.crateName}} + + + depends on {{@dependency.req}} + +
+
+ {{svg-jar "download-arrow" local-class="download-icon"}} + {{format-num @dependency.downloads}} +
+
diff --git a/app/components/rev-dep-row.js b/app/components/rev-dep-row.js new file mode 100644 index 00000000000..48f84c5d1f1 --- /dev/null +++ b/app/components/rev-dep-row.js @@ -0,0 +1,11 @@ +import { action } from '@ember/object'; +import Component from '@glimmer/component'; +import { tracked } from '@glimmer/tracking'; + +export default class VersionRow extends Component { + @tracked focused = false; + + @action setFocused(value) { + this.focused = value; + } +} diff --git a/app/components/rev-dep-row.module.css b/app/components/rev-dep-row.module.css new file mode 100644 index 00000000000..d15ea26b638 --- /dev/null +++ b/app/components/rev-dep-row.module.css @@ -0,0 +1,82 @@ +.row { + --hover-bg-color: hsl(217, 37%, 98%); + --crate-color: var(--grey700); + --shadow: 0 1px 3px hsla(51, 90%, 42%, .35); + + display: flex; + align-items: center; + justify-content: space-between; + flex-wrap: wrap; + position: relative; + font-size: 18px; + padding: 15px 25px; + background-color: white; + border-radius: 5px; + box-shadow: var(--shadow); + transition: all 300ms; + + &:hover, &.focused { + background-color: var(--hover-bg-color); + transition: all 0ms; + } + + &.focused { + box-shadow: 0 0 0 3px var(--yellow500), var(--shadow); + } + + @media only screen and (max-width: 550px) { + display: block + } +} + +.left { + overflow: hidden; + text-overflow: ellipsis; +} + +.link { + color: var(--crate-color); + font-weight: 500; + margin-right: 15px; + outline: none; + + &:hover { + color: var(--crate-color); + } + + &::after { + content: ''; + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; + } +} + +.range { + color: var(--grey600); + text-transform: uppercase; + letter-spacing: .7px; + font-size: 13px; +} + +.downloads { + display: flex; + align-items: center; + color: var(--grey600); + font-size: 16px; + font-weight: 500; + font-variant: tabular-nums; + + @media only screen and (max-width: 550px) { + margin-top: 5px; + } +} + +.download-icon { + width: auto; + height: 16px; + flex-shrink: 0; + margin-right: 7px; +} diff --git a/app/styles/crate/reverse-dependencies.module.css b/app/styles/crate/reverse-dependencies.module.css index 75d9f0f2bfa..056d0a83aec 100644 --- a/app/styles/crate/reverse-dependencies.module.css +++ b/app/styles/crate/reverse-dependencies.module.css @@ -7,42 +7,17 @@ } .list { - background-color: white; - padding: 0 20px; - margin-bottom: 20px; -} - -.row { - border-bottom: 2px solid var(--gray-border); - padding: 20px 0; - display: flex; - justify-content: space-between; - flex-wrap: wrap; - - &:last-of-type { - border: none; + list-style: none; + margin: 0 0 20px; + padding: 0; + + li { + &:not(:first-child) { + margin-top: 10px; + } } } -.stats { - width: 25%; - color: var(--main-color-light); -} - -.downloads { - display: flex; - align-items: center; - padding-bottom: 5px; -} - -.download-icon { - color: #b13b89; -} - -.rev-dep-downloads { - padding-left: 7px -} - .no-results { text-align: center; margin: 20px; diff --git a/app/templates/crate/reverse-dependencies.hbs b/app/templates/crate/reverse-dependencies.hbs index 5a2b1f4287e..81d81bb16be 100644 --- a/app/templates/crate/reverse-dependencies.hbs +++ b/app/templates/crate/reverse-dependencies.hbs @@ -10,22 +10,13 @@ /> -
+
+ {{else}}