Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor(avatar)!: use spectrum tokens #1565

Merged
merged 17 commits into from
Feb 6, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion components/avatar/gulpfile.js
Original file line number Diff line number Diff line change
@@ -1 +1 @@
module.exports = require('@spectrum-css/component-builder');
module.exports = require('@spectrum-css/component-builder-simple');
138 changes: 77 additions & 61 deletions components/avatar/index.css
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
Copyright 2019 Adobe. All rights reserved.
Copyright 2023 Adobe. All rights reserved.
This file is licensed to you 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
Expand All @@ -10,107 +10,123 @@ OF ANY KIND, either express or implied. See the License for the specific languag
governing permissions and limitations under the License.
*/

@import "../vars/css/components/spectrum-avatar.css";
.spectrum-Avatar {
--spectrum-avatar-color-opacity: 1;

--spectrum-avatar-inline-size: var(--spectrum-avatar-size-100);
--spectrum-avatar-block-size: var(--spectrum-avatar-size-100);

--spectrum-avatar-border-radius: var(--spectrum-avatar-block-size);

--spectrum-avatar-focus-indicator-thickness: var(--spectrum-focus-indicator-thickness);
--spectrum-avatar-focus-indicator-gap: var(--spectrum-focus-indicator-gap);
--spectrum-avatar-focus-indicator-color: var(--spectrum-focus-indicator-color);

--spectrum-avatar-color-opacity-disabled: var(--spectrum-avatar-opacity-disabled);
}

.spectrum-Avatar--size50 {
@remapvars {
find: /--spectrum-avatar-size-50(.*)/;
filter: color;
replace: --spectrum-avatar$1;
}
--spectrum-avatar-inline-size: var(--spectrum-avatar-size-50);
--spectrum-avatar-block-size: var(--spectrum-avatar-size-50)
}

.spectrum-Avatar--size75 {
@remapvars {
find: /--spectrum-avatar-size-75(.*)/;
filter: color;
replace: --spectrum-avatar$1;
}
--spectrum-avatar-inline-size: var(--spectrum-avatar-size-75);
--spectrum-avatar-block-size: var(--spectrum-avatar-size-75)
}

.spectrum-Avatar--size100 {
@remapvars {
find: /--spectrum-avatar-size-100(.*)/;
filter: color;
replace: --spectrum-avatar$1;
}
--spectrum-avatar-inline-size: var(--spectrum-avatar-size-100);
--spectrum-avatar-block-size: var(--spectrum-avatar-size-100)
}

.spectrum-Avatar--size200 {
@remapvars {
find: /--spectrum-avatar-size-200(.*)/;
filter: color;
replace: --spectrum-avatar$1;
}
--spectrum-avatar-inline-size: var(--spectrum-avatar-size-200);
--spectrum-avatar-block-size: var(--spectrum-avatar-size-200)
}

.spectrum-Avatar--size300 {
@remapvars {
find: /--spectrum-avatar-size-300(.*)/;
filter: color;
replace: --spectrum-avatar$1;
}
--spectrum-avatar-inline-size: var(--spectrum-avatar-size-300);
--spectrum-avatar-block-size: var(--spectrum-avatar-size-300)
}

.spectrum-Avatar--size400 {
@remapvars {
find: /--spectrum-avatar-size-400(.*)/;
filter: color;
replace: --spectrum-avatar$1;
}
--spectrum-avatar-inline-size: var(--spectrum-avatar-size-400);
--spectrum-avatar-block-size: var(--spectrum-avatar-size-400)
}

.spectrum-Avatar--size500 {
@remapvars {
find: /--spectrum-avatar-size-500(.*)/;
filter: color;
replace: --spectrum-avatar$1;
}
--spectrum-avatar-inline-size: var(--spectrum-avatar-size-500);
--spectrum-avatar-block-size: var(--spectrum-avatar-size-500)
}

.spectrum-Avatar--size600 {
@remapvars {
find: /--spectrum-avatar-size-600(.*)/;
filter: color;
replace: --spectrum-avatar$1;
}
--spectrum-avatar-inline-size: var(--spectrum-avatar-size-600);
--spectrum-avatar-block-size: var(--spectrum-avatar-size-600)
}

.spectrum-Avatar--size700 {
@remapvars {
find: /--spectrum-avatar-size-700(.*)/;
filter: color;
replace: --spectrum-avatar$1;
--spectrum-avatar-inline-size: var(--spectrum-avatar-size-700);
--spectrum-avatar-block-size: var(--spectrum-avatar-size-700)
}

@media (forced-colors: active) {
.spectrum-Avatar {
--highcontrast-avatar-color-opacity-disabled: 1;
--highcontrast-avatar-focus-indicator-color: CanvasText;
}
}

.spectrum-Avatar {
display: inline-block;
position: relative;
inline-size: var(--spectrum-avatar-width);
block-size: var(--spectrum-avatar-height);
inline-size: var(--mod-avatar-inline-size, var(--spectrum-avatar-inline-size));
block-size: var(--mod-avatar-block-size, var(--spectrum-avatar-block-size));

border-radius: var(--spectrum-avatar-border-radius);
border-radius: var(--mod-avatar-border-radius, var(--spectrum-avatar-border-radius));
border-width: 0;

outline: none;

-webkit-user-drag: none;
user-select: none;
overflow: hidden;

&:after {
content: '';
overflow: visible;

opacity: var(--mod-avatar-color-opacity, var(--spectrum-avatar-color-opacity));

&.is-disabled {
opacity: var(--highcontrast-avatar-color-opacity-disabled, var(--mod-avatar-color-opacity-disabled, var(--spectrum-avatar-color-opacity-disabled)));
}
}

.spectrum-Avatar:not(.is-disabled) .spectrum-Avatar-link:focus-visible {
&::after {
pointer-events: none;
content: "";
position: absolute;
inset-block-start: 0;
inset-block-end: 0;
inset-inline-start: 0;
inset-inline-end: 0;
box-sizing: border-box;
border-width: var(--spectrum-avatar-border-size);
inset-block-start: calc((var(--mod-avatar-focus-indicator-gap, var(--spectrum-avatar-focus-indicator-gap)) + var(--mod-avatar-focus-indicator-thickness, var(--spectrum-avatar-focus-indicator-thickness))) * -1);
inset-inline-start: calc((var(--mod-avatar-focus-indicator-gap, var(--spectrum-avatar-focus-indicator-gap)) + var(--mod-avatar-focus-indicator-thickness, var(--spectrum-avatar-focus-indicator-thickness))) * -1);

inline-size: calc(var(--mod-avatar-inline-size, var(--spectrum-avatar-inline-size)) + (var(--mod-avatar-focus-indicator-gap, var(--spectrum-avatar-focus-indicator-gap)) * 2));
block-size: calc(var(--mod-avatar-inline-size, var(--spectrum-avatar-inline-size)) + (var(--mod-avatar-focus-indicator-gap, var(--spectrum-avatar-focus-indicator-gap)) * 2));

border-style: solid;
border-radius: var(--spectrum-avatar-border-radius);
border-width: var(--mod-avatar-focus-indicator-thickness, var(--spectrum-avatar-focus-indicator-thickness));
border-color: var(--highcontrast-avatar-focus-indicator-color, var(--mod-avatar-focus-indicator-color, var(--spectrum-avatar-focus-indicator-color)));
border-radius: var(--mod-avatar-border-radius, var(--spectrum-avatar-border-radius));
}
}

.spectrum-Avatar-link {
outline-color: transparent;
outline-style: solid;
outline: none;
}

.spectrum-Avatar-image {
inline-size: var(--spectrum-avatar-width);
block-size: var(--spectrum-avatar-height);
inline-size: var(--mod-avatar-inline-size, var(--spectrum-avatar-inline-size));
block-size: var(--mod-avatar-block-size, var(--spectrum-avatar-block-size));

border-radius: var(--mod-avatar-border-radius, var(--spectrum-avatar-border-radius));
pfulton marked this conversation as resolved.
Show resolved Hide resolved
}
89 changes: 72 additions & 17 deletions components/avatar/metadata/avatar.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
name: Avatar
status: Verified
description: An image representing a user.
description: |
An image representing a user.

An avatar image is wrapped in a link that uses the `.spectrum-Avatar-link`
class by default, however, an avatar may also be used without a link.
SpectrumSiteSlug: https://spectrum.adobe.com/page/avatar/
sections:
- name: Migration Guide
Expand All @@ -21,75 +25,126 @@ examples:
<div class="spectrum-Examples-item">
<h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">50</h4>
<div class="spectrum-Avatar spectrum-Avatar--size50">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Avatar">
<a href="#" class="spectrum-Avatar-link">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Avatar">
</a>
</div>
<div class="spectrum-Avatar spectrum-Avatar--size50 is-disabled"">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Disabled Avatar">
<a href="#" class="spectrum-Avatar-link">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Disabled Avatar">
</a>
</div>
</div>
<div class="spectrum-Examples-item">
<h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">75</h4>
<div class="spectrum-Avatar spectrum-Avatar--size75">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Avatar">
<a href="#" class="spectrum-Avatar-link">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Avatar">
</a>
</div>
<div class="spectrum-Avatar spectrum-Avatar--size75 is-disabled"">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Disabled Avatar">
<a href="#" class="spectrum-Avatar-link">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Disabled Avatar">
</a>
</div>
</div>
<div class="spectrum-Examples-item">
<h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">100 (default)</h4>
<div class="spectrum-Avatar spectrum-Avatar--size100">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Avatar">
<a href="#" class="spectrum-Avatar-link">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Avatar">
</a>
</div>
<div class="spectrum-Avatar spectrum-Avatar--size100 is-disabled"">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Disabled Avatar">
<a href="#" class="spectrum-Avatar-link">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Disabled Avatar">
</a>
</div>
</div>
<div class="spectrum-Examples-item">
<h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">200</h4>
<div class="spectrum-Avatar spectrum-Avatar--size200">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Avatar">
<a href="#" class="spectrum-Avatar-link">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Avatar">
</a>
</div>
<div class="spectrum-Avatar spectrum-Avatar--size200 is-disabled"">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Disabled Avatar">
<a href="#" class="spectrum-Avatar-link">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Disabled Avatar">
</a>
</div>
</div>
<div class="spectrum-Examples-item">
<h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">300</h4>
<div class="spectrum-Avatar spectrum-Avatar--size300">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Avatar">
<a href="#" class="spectrum-Avatar-link">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Avatar">
</a>
</div>
<div class="spectrum-Avatar spectrum-Avatar--size300 is-disabled"">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Disabled Avatar">
<a href="#" class="spectrum-Avatar-link">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Disabled Avatar">
</a>
</div>
</div>
<div class="spectrum-Examples-item">
<h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">400</h4>
<div class="spectrum-Avatar spectrum-Avatar--size400">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Avatar">
<a href="#" class="spectrum-Avatar-link">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Avatar">
</a>
</div>
<div class="spectrum-Avatar spectrum-Avatar--size400 is-disabled"">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Disabled Avatar">
<a href="#" class="spectrum-Avatar-link">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Disabled Avatar">
</a>
</div>
</div>
<div class="spectrum-Examples-item">
<h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">500</h4>
<div class="spectrum-Avatar spectrum-Avatar--size500">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Avatar">
<a href="#" class="spectrum-Avatar-link">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Avatar">
</a>
</div>
<div class="spectrum-Avatar spectrum-Avatar--size500 is-disabled"">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Disabled Avatar">
<a href="#" class="spectrum-Avatar-link">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Disabled Avatar">
</a>
</div>
</div>
<div class="spectrum-Examples-item">
<h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">600</h4>
<div class="spectrum-Avatar spectrum-Avatar--size600">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Avatar">
<a href="#" class="spectrum-Avatar-link">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Avatar">
</a>
</div>
<div class="spectrum-Avatar spectrum-Avatar--size600 is-disabled"">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Disabled Avatar">
<a href="#" class="spectrum-Avatar-link">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Disabled Avatar">
</a>
</div>
</div>
<div class="spectrum-Examples-item">
<h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">700</h4>
<div class="spectrum-Avatar spectrum-Avatar--size700">
<a href="#" class="spectrum-Avatar-link">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Avatar">
</a>
</div>
<div class="spectrum-Avatar spectrum-Avatar--size700 is-disabled"">
<a href="#" class="spectrum-Avatar-link">
<img class="spectrum-Avatar-image" src="img/example-ava.jpg" alt="Disabled Avatar">
</a>
</div>
</div>
</div>

- id: avatar-no-link
name: No Link
markup: |
<div class="spectrum-Examples spectrum-Examples--vertical">
<div class="spectrum-Examples-item">
<h4 class="spectrum-Heading spectrum-Heading--sizeXS spectrum-Examples-itemHeading">700</h4>
<div class="spectrum-Avatar spectrum-Avatar--size700">
Expand Down
8 changes: 4 additions & 4 deletions components/avatar/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@spectrum-css/avatar",
"version": "5.0.27",
"version": "6.0.0-beta.1",
"description": "The Spectrum CSS avatar component",
"license": "Apache-2.0",
"homepage": "https://opensource.adobe.com/spectrum-css/",
Expand All @@ -17,11 +17,11 @@
"build": "gulp"
},
"peerDependencies": {
"@spectrum-css/vars": "^8.0.0"
"@spectrum-css/tokens": "^7.0.0"
},
"devDependencies": {
"@spectrum-css/component-builder": "^4.0.1",
"@spectrum-css/vars": "^8.0.3",
"@spectrum-css/component-builder-simple": "^2.0.0",
"@spectrum-css/tokens": "^7.0.0",
"gulp": "^4.0.0"
},
"publishConfig": {
Expand Down
1 change: 0 additions & 1 deletion components/avatar/stories/template.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ export const Template = ({
try {
// Load styles for this component
import(/* webpackPrefetch: true */ "../index.css");
import(/* webpackPrefetch: true */ "../skin.css");
} catch (e) {
console.warn(e);
}
Expand Down
Loading