primer_view_components 0.1.8 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +79 -0
- data/README.md +1 -1
- data/app/assets/javascripts/primer_view_components.js +1 -1
- data/app/assets/javascripts/primer_view_components.js.map +1 -1
- data/app/assets/styles/primer_view_components.css +1 -3
- data/app/assets/styles/primer_view_components.css.map +1 -1
- data/app/components/primer/alpha/action_list/item.rb +3 -5
- data/app/components/primer/alpha/action_list.css +1 -1
- data/app/components/primer/alpha/action_list.css.json +16 -16
- data/app/components/primer/alpha/action_list.css.map +1 -1
- data/app/components/primer/alpha/action_list.pcss +145 -145
- data/app/components/primer/alpha/action_list.rb +30 -15
- data/app/components/primer/alpha/action_menu/action_menu_element.d.ts +2 -1
- data/app/components/primer/alpha/action_menu/action_menu_element.js +44 -34
- data/app/components/primer/alpha/action_menu/action_menu_element.ts +32 -30
- data/app/components/primer/alpha/action_menu/list.rb +6 -1
- data/app/components/primer/alpha/action_menu.rb +1 -1
- data/app/components/primer/alpha/auto_complete.css +1 -1
- data/app/components/primer/alpha/auto_complete.css.map +1 -1
- data/app/components/primer/alpha/auto_complete.pcss +3 -3
- data/app/components/primer/alpha/banner.css +1 -1
- data/app/components/primer/alpha/banner.css.map +1 -1
- data/app/components/primer/alpha/banner.pcss +11 -11
- data/app/components/primer/alpha/button_marketing.css.map +1 -1
- data/app/components/primer/alpha/button_marketing.pcss +5 -12
- data/app/components/primer/alpha/button_marketing.rb +3 -0
- data/app/components/primer/alpha/dialog.css +1 -1
- data/app/components/primer/alpha/dialog.css.map +1 -1
- data/app/components/primer/alpha/dialog.pcss +36 -36
- data/app/components/primer/alpha/dropdown.css +1 -1
- data/app/components/primer/alpha/dropdown.css.map +1 -1
- data/app/components/primer/alpha/dropdown.pcss +12 -12
- data/app/components/primer/alpha/form_control.html.erb +1 -1
- data/app/components/primer/alpha/hellip_button.rb +3 -1
- data/app/components/primer/alpha/layout.css +1 -1
- data/app/components/primer/alpha/layout.css.map +1 -1
- data/app/components/primer/alpha/layout.pcss +4 -4
- data/app/components/primer/alpha/menu.css +1 -1
- data/app/components/primer/alpha/menu.css.map +1 -1
- data/app/components/primer/alpha/menu.pcss +21 -21
- data/app/components/primer/alpha/modal_dialog.js +17 -4
- data/app/components/primer/alpha/modal_dialog.ts +17 -4
- data/app/components/primer/alpha/nav_list/item.rb +2 -0
- data/app/components/primer/alpha/nav_list.js +6 -0
- data/app/components/primer/alpha/nav_list.rb +55 -36
- data/app/components/primer/alpha/nav_list.ts +8 -0
- data/app/components/primer/alpha/octicon_symbols.html.erb +1 -1
- data/app/components/primer/alpha/overlay/header.html.erb +5 -3
- data/app/components/primer/alpha/overlay/header.rb +4 -1
- data/app/components/primer/alpha/overlay.css +1 -1
- data/app/components/primer/alpha/overlay.css.json +1 -2
- data/app/components/primer/alpha/overlay.css.map +1 -1
- data/app/components/primer/alpha/overlay.pcss +14 -4
- data/app/components/primer/alpha/overlay.rb +1 -0
- data/app/components/primer/alpha/segmented_control.css +1 -1
- data/app/components/primer/alpha/segmented_control.css.map +1 -1
- data/app/components/primer/alpha/segmented_control.pcss +24 -33
- data/app/components/primer/alpha/tab_nav.css +1 -1
- data/app/components/primer/alpha/tab_nav.css.map +1 -1
- data/app/components/primer/alpha/tab_nav.pcss +12 -12
- data/app/components/primer/alpha/text_field.css +1 -3
- data/app/components/primer/alpha/text_field.css.json +1 -0
- data/app/components/primer/alpha/text_field.css.map +1 -1
- data/app/components/primer/alpha/text_field.pcss +87 -83
- data/app/components/primer/alpha/toggle_switch.css +1 -1
- data/app/components/primer/alpha/toggle_switch.css.json +11 -11
- data/app/components/primer/alpha/toggle_switch.css.map +1 -1
- data/app/components/primer/alpha/toggle_switch.d.ts +1 -1
- data/app/components/primer/alpha/toggle_switch.html.erb +2 -2
- data/app/components/primer/alpha/toggle_switch.js +44 -42
- data/app/components/primer/alpha/toggle_switch.pcss +16 -16
- data/app/components/primer/alpha/toggle_switch.rb +7 -0
- data/app/components/primer/alpha/toggle_switch.ts +50 -41
- data/app/components/primer/alpha/underline_nav.css +1 -1
- data/app/components/primer/alpha/underline_nav.css.map +1 -1
- data/app/components/primer/alpha/underline_nav.pcss +11 -11
- data/app/components/primer/beta/auto_complete.rb +1 -1
- data/app/components/primer/beta/avatar.css +1 -1
- data/app/components/primer/beta/avatar.css.map +1 -1
- data/app/components/primer/beta/avatar.pcss +18 -18
- data/app/components/primer/beta/avatar_stack.css +1 -1
- data/app/components/primer/beta/avatar_stack.css.map +1 -1
- data/app/components/primer/beta/avatar_stack.pcss +5 -5
- data/app/components/primer/beta/base_button.rb +11 -0
- data/app/components/primer/beta/blankslate.css +1 -1
- data/app/components/primer/beta/blankslate.css.map +1 -1
- data/app/components/primer/beta/blankslate.pcss +16 -16
- data/app/components/primer/beta/border_box.css +1 -1
- data/app/components/primer/beta/border_box.css.json +1 -1
- data/app/components/primer/beta/border_box.css.map +1 -1
- data/app/components/primer/beta/border_box.pcss +40 -42
- data/app/components/primer/beta/button.css +1 -1
- data/app/components/primer/beta/button.css.json +4 -0
- data/app/components/primer/beta/button.css.map +1 -1
- data/app/components/primer/beta/button.pcss +39 -24
- data/app/components/primer/beta/button.rb +3 -0
- data/app/components/primer/beta/button_group.css +1 -0
- data/app/components/primer/beta/button_group.css.json +14 -0
- data/app/components/primer/beta/button_group.css.map +1 -0
- data/app/components/primer/beta/button_group.pcss +27 -0
- data/app/components/primer/beta/button_group.rb +19 -19
- data/app/components/primer/beta/close_button.rb +3 -1
- data/app/components/primer/beta/counter.css +1 -1
- data/app/components/primer/beta/counter.css.map +1 -1
- data/app/components/primer/beta/counter.pcss +5 -5
- data/app/components/primer/beta/details.html.erb +6 -2
- data/app/components/primer/beta/details.rb +18 -10
- data/app/components/primer/beta/flash.css +1 -1
- data/app/components/primer/beta/flash.css.map +1 -1
- data/app/components/primer/beta/flash.pcss +12 -12
- data/app/components/primer/beta/icon_button.rb +7 -3
- data/app/components/primer/beta/label.css +1 -1
- data/app/components/primer/beta/label.css.map +1 -1
- data/app/components/primer/beta/label.pcss +3 -3
- data/app/components/primer/beta/popover.css +1 -1
- data/app/components/primer/beta/popover.css.map +1 -1
- data/app/components/primer/beta/popover.pcss +4 -4
- data/app/components/primer/beta/state.css +1 -1
- data/app/components/primer/beta/state.css.map +1 -1
- data/app/components/primer/beta/state.pcss +7 -7
- data/app/components/primer/beta/subhead.css +1 -1
- data/app/components/primer/beta/subhead.css.map +1 -1
- data/app/components/primer/beta/subhead.pcss +9 -9
- data/app/components/primer/beta/timeline_item.css +1 -1
- data/app/components/primer/beta/timeline_item.css.map +1 -1
- data/app/components/primer/beta/timeline_item.pcss +18 -18
- data/app/components/primer/beta/truncate.css +1 -1
- data/app/components/primer/beta/truncate.css.map +1 -1
- data/app/components/primer/beta/truncate.pcss +1 -1
- data/app/components/primer/focus_group.js +8 -13
- data/app/components/primer/focus_group.ts +8 -12
- data/app/components/primer/primer.d.ts +1 -0
- data/app/components/primer/primer.js +1 -0
- data/app/components/primer/primer.pcss +1 -0
- data/app/components/primer/primer.ts +1 -0
- data/lib/postcss_mixins/activeIndicatorLine.pcss +4 -4
- data/lib/primer/accessibility.rb +74 -0
- data/lib/primer/forms/dsl/input.rb +4 -8
- data/lib/primer/forms/dsl/text_field_input.rb +0 -4
- data/lib/primer/forms/dsl/toggle_switch_input.rb +4 -0
- data/lib/primer/forms/form_control.html.erb +3 -5
- data/lib/primer/forms/primer_base_component_wrapper.html.erb +3 -0
- data/lib/primer/forms/primer_base_component_wrapper.rb +24 -0
- data/lib/primer/forms/toggle_switch.html.erb +3 -3
- data/lib/primer/forms/toggle_switch.rb +6 -2
- data/lib/primer/forms/toggle_switch_input.js +7 -2
- data/lib/primer/forms/toggle_switch_input.ts +9 -2
- data/lib/primer/static/generate_info_arch.rb +3 -0
- data/lib/primer/static/generate_previews.rb +15 -8
- data/lib/primer/view_components/linters/deprecated_components_counter.rb +37 -13
- data/lib/primer/view_components/version.rb +2 -2
- data/lib/primer/yard/component_manifest.rb +1 -1
- data/lib/primer/yard/lookbook_pages_backend.rb +8 -2
- data/lib/primer/yard/registry.rb +4 -0
- data/previews/pages/forms/03_caption_templates.md.erb +1 -1
- data/previews/pages/forms/04_after_content.md.erb +1 -1
- data/previews/pages/forms/06_miscellaneous_inputs.md.erb +1 -1
- data/previews/pages/forms/07_toggle_switch_forms.md.erb +1 -1
- data/previews/primer/alpha/action_menu_preview/two_menus.html.erb +13 -0
- data/previews/primer/alpha/action_menu_preview/with_actions.html.erb +21 -0
- data/previews/primer/alpha/action_menu_preview.rb +5 -13
- data/previews/primer/alpha/button_marketing_preview.rb +3 -2
- data/previews/primer/alpha/dialog_preview.rb +4 -3
- data/previews/primer/alpha/hellip_button_preview.rb +3 -2
- data/previews/primer/alpha/nav_list_preview.rb +1 -1
- data/previews/primer/alpha/overlay_preview/middle_of_page_with_relative_container.html.erb +19 -0
- data/previews/primer/alpha/overlay_preview.rb +31 -0
- data/previews/primer/beta/base_button_preview.rb +9 -2
- data/previews/primer/beta/button_group_preview/action_menus.html.erb +8 -0
- data/previews/primer/beta/button_group_preview.rb +49 -11
- data/previews/primer/beta/button_preview/trailing_counter.html.erb +1 -1
- data/previews/primer/beta/button_preview.rb +5 -2
- data/previews/primer/beta/close_button_preview.rb +3 -2
- data/previews/primer/beta/details_preview.rb +11 -8
- data/previews/primer/forms_preview.rb +44 -0
- data/static/arguments.json +11 -5
- data/static/classes.json +378 -372
- data/static/constants.json +0 -1
- data/static/info_arch.json +5457 -1364
- data/static/previews.json +5197 -1428
- metadata +40 -36
- data/lib/tasks/docs.rake +0 -185
- data/lib/tasks/helpers/ast_processor.rb +0 -44
- data/lib/tasks/helpers/ast_traverser.rb +0 -77
- data/lib/tasks/primer_view_components.rake +0 -47
- data/lib/tasks/static.rake +0 -29
- data/lib/tasks/test.rake +0 -83
- data/lib/tasks/utilities.rake +0 -109
- data/previews/primer/forms/forms_preview.rb +0 -48
- /data/previews/primer/{forms/forms_preview → forms_preview}/after_content_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/array_check_box_group_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/caption_template_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/check_box_group_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/check_box_with_nested_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/composed_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/example_toggle_switch_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/horizontal_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/immediate_validation_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/invalid_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/multi_input_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/multi_text_field_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/name_with_question_mark_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/radio_button_group_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/radio_button_with_nested_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/select_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/single_text_field_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/submit_button_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/text_field_and_checkbox_form.html.erb +0 -0
@@ -26,46 +26,59 @@ let ToggleSwitchElement = class ToggleSwitchElement extends HTMLElement {
|
|
26
26
|
isRemote() {
|
27
27
|
return this.src != null;
|
28
28
|
}
|
29
|
-
toggle() {
|
29
|
+
async toggle() {
|
30
30
|
if (this.isDisabled()) {
|
31
31
|
return;
|
32
32
|
}
|
33
|
-
if (this.isRemote()) {
|
34
|
-
this.setLoadingState();
|
35
|
-
this.submitForm();
|
36
|
-
}
|
37
|
-
else {
|
33
|
+
if (!this.isRemote()) {
|
38
34
|
this.performToggle();
|
35
|
+
return;
|
36
|
+
}
|
37
|
+
// toggle immediately to tell screen readers the switch was clicked
|
38
|
+
this.performToggle();
|
39
|
+
this.setLoadingState();
|
40
|
+
try {
|
41
|
+
await this.submitForm();
|
42
|
+
}
|
43
|
+
catch (error) {
|
44
|
+
if (error instanceof Error) {
|
45
|
+
// because we toggle immediately when the switch is clicked, toggle back to the
|
46
|
+
// old state on failure
|
47
|
+
this.setErrorState(error.message || 'An error occurred, please try again.');
|
48
|
+
this.performToggle();
|
49
|
+
}
|
50
|
+
return;
|
39
51
|
}
|
52
|
+
this.setSuccessState();
|
40
53
|
}
|
41
54
|
turnOn() {
|
42
55
|
if (this.isDisabled()) {
|
43
56
|
return;
|
44
57
|
}
|
45
|
-
this.switch.setAttribute('aria-
|
58
|
+
this.switch.setAttribute('aria-pressed', 'true');
|
46
59
|
this.classList.add('ToggleSwitch--checked');
|
47
60
|
}
|
48
61
|
turnOff() {
|
49
62
|
if (this.isDisabled()) {
|
50
63
|
return;
|
51
64
|
}
|
52
|
-
this.switch.setAttribute('aria-
|
65
|
+
this.switch.setAttribute('aria-pressed', 'false');
|
53
66
|
this.classList.remove('ToggleSwitch--checked');
|
54
67
|
}
|
55
68
|
isOn() {
|
56
|
-
return this.switch.getAttribute('aria-
|
69
|
+
return this.switch.getAttribute('aria-pressed') === 'true';
|
57
70
|
}
|
58
71
|
isOff() {
|
59
72
|
return !this.isOn();
|
60
73
|
}
|
61
74
|
isDisabled() {
|
62
|
-
return this.switch.getAttribute('
|
75
|
+
return this.switch.getAttribute('disabled') != null;
|
63
76
|
}
|
64
77
|
disable() {
|
65
|
-
this.switch.setAttribute('
|
78
|
+
this.switch.setAttribute('disabled', 'disabled');
|
66
79
|
}
|
67
80
|
enable() {
|
68
|
-
this.switch.
|
81
|
+
this.switch.removeAttribute('disabled');
|
69
82
|
}
|
70
83
|
performToggle() {
|
71
84
|
if (this.isOn()) {
|
@@ -76,9 +89,10 @@ let ToggleSwitchElement = class ToggleSwitchElement extends HTMLElement {
|
|
76
89
|
}
|
77
90
|
}
|
78
91
|
setLoadingState() {
|
79
|
-
this.disable();
|
80
92
|
this.errorIcon.setAttribute('hidden', 'hidden');
|
81
93
|
this.loadingSpinner.removeAttribute('hidden');
|
94
|
+
const event = new CustomEvent('toggleSwitchLoading', { bubbles: true });
|
95
|
+
this.dispatchEvent(event);
|
82
96
|
}
|
83
97
|
setSuccessState() {
|
84
98
|
const event = new CustomEvent('toggleSwitchSuccess', { bubbles: true });
|
@@ -95,43 +109,31 @@ let ToggleSwitchElement = class ToggleSwitchElement extends HTMLElement {
|
|
95
109
|
this.errorIcon.removeAttribute('hidden');
|
96
110
|
}
|
97
111
|
this.loadingSpinner.setAttribute('hidden', 'hidden');
|
98
|
-
this.enable();
|
99
112
|
}
|
100
113
|
async submitForm() {
|
101
114
|
const body = new FormData();
|
102
115
|
if (this.csrf) {
|
103
116
|
body.append(this.csrfField, this.csrf);
|
104
117
|
}
|
105
|
-
body.append('value', this.isOn() ? '
|
118
|
+
body.append('value', this.isOn() ? '1' : '0');
|
119
|
+
if (!this.src)
|
120
|
+
throw new Error('invalid src');
|
121
|
+
let response;
|
106
122
|
try {
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
'Requested-With': 'XMLHttpRequest'
|
116
|
-
},
|
117
|
-
body
|
118
|
-
});
|
119
|
-
}
|
120
|
-
catch (error) {
|
121
|
-
throw new Error('A network error occurred, please try again.');
|
122
|
-
}
|
123
|
-
if (response.ok) {
|
124
|
-
this.setSuccessState();
|
125
|
-
this.performToggle();
|
126
|
-
}
|
127
|
-
else {
|
128
|
-
throw new Error(await response.text());
|
129
|
-
}
|
123
|
+
response = await fetch(this.src, {
|
124
|
+
credentials: 'same-origin',
|
125
|
+
method: 'POST',
|
126
|
+
headers: {
|
127
|
+
'Requested-With': 'XMLHttpRequest'
|
128
|
+
},
|
129
|
+
body
|
130
|
+
});
|
130
131
|
}
|
131
132
|
catch (error) {
|
132
|
-
|
133
|
-
|
134
|
-
|
133
|
+
throw new Error('A network error occurred, please try again.');
|
134
|
+
}
|
135
|
+
if (!response.ok) {
|
136
|
+
throw new Error(await response.text());
|
135
137
|
}
|
136
138
|
}
|
137
139
|
};
|
@@ -146,7 +148,7 @@ __decorate([
|
|
146
148
|
], ToggleSwitchElement.prototype, "errorIcon", void 0);
|
147
149
|
__decorate([
|
148
150
|
debounce(300)
|
149
|
-
], ToggleSwitchElement.prototype, "
|
151
|
+
], ToggleSwitchElement.prototype, "toggle", null);
|
150
152
|
ToggleSwitchElement = __decorate([
|
151
153
|
controller
|
152
154
|
], ToggleSwitchElement);
|
@@ -9,7 +9,7 @@
|
|
9
9
|
.ToggleSwitch {
|
10
10
|
align-items: center;
|
11
11
|
display: inline-flex;
|
12
|
-
gap: var(--controlStack-medium-gap-condensed
|
12
|
+
gap: var(--controlStack-medium-gap-condensed);
|
13
13
|
}
|
14
14
|
|
15
15
|
.ToggleSwitch--checked {
|
@@ -27,16 +27,16 @@
|
|
27
27
|
.ToggleSwitch-track {
|
28
28
|
position: relative;
|
29
29
|
display: block;
|
30
|
-
width: var(--base-size-64
|
31
|
-
height: var(--control-medium-size
|
30
|
+
width: var(--base-size-64);
|
31
|
+
height: var(--control-medium-size);
|
32
32
|
padding: 0;
|
33
33
|
overflow: hidden;
|
34
34
|
text-decoration: none;
|
35
35
|
cursor: pointer;
|
36
36
|
user-select: none;
|
37
37
|
background-color: var(--color-switch-track-bg);
|
38
|
-
border: var(--borderWidth-thin
|
39
|
-
border-radius: var(--borderRadius-medium
|
38
|
+
border: var(--borderWidth-thin) solid var(--color-switch-track-border);
|
39
|
+
border-radius: var(--borderRadius-medium);
|
40
40
|
transition-timing-function: cubic-bezier(0.5, 1, 0.89, 1);
|
41
41
|
transition-duration: 80ms;
|
42
42
|
transition-property: background-color, border-color;
|
@@ -70,17 +70,17 @@
|
|
70
70
|
}
|
71
71
|
}
|
72
72
|
|
73
|
-
.ToggleSwitch-track[aria-
|
73
|
+
.ToggleSwitch-track[aria-pressed='true'][disabled] {
|
74
74
|
background-color: var(--color-switch-track-disabled-bg);
|
75
75
|
color: var(--color-switch-track-checked-disabled-fg);
|
76
76
|
border-color: transparent;
|
77
77
|
}
|
78
78
|
|
79
|
-
.ToggleSwitch-track[aria-
|
79
|
+
.ToggleSwitch-track[aria-pressed='true'] {
|
80
80
|
background-color: var(--color-switch-track-checked-bg);
|
81
81
|
border-color: var(--color-switch-track-checked-border);
|
82
82
|
|
83
|
-
&:not([
|
83
|
+
&:not([disabled]) {
|
84
84
|
&:hover {
|
85
85
|
background-color: var(--color-switch-track-checked-hover-bg);
|
86
86
|
}
|
@@ -105,7 +105,7 @@
|
|
105
105
|
}
|
106
106
|
}
|
107
107
|
|
108
|
-
.ToggleSwitch-track[
|
108
|
+
.ToggleSwitch-track[disabled] {
|
109
109
|
cursor: not-allowed;
|
110
110
|
background-color: var(--color-switch-track-disabled-bg);
|
111
111
|
border-color: transparent;
|
@@ -158,8 +158,8 @@
|
|
158
158
|
z-index: 1;
|
159
159
|
width: 50%;
|
160
160
|
background-color: var(--color-switch-knob-bg);
|
161
|
-
border: var(--borderWidth-thin
|
162
|
-
border-radius: var(--borderRadius-medium
|
161
|
+
border: var(--borderWidth-thin) solid var(--color-switch-knob-border);
|
162
|
+
border-radius: var(--borderRadius-medium);
|
163
163
|
box-shadow: var(--color-shadow-medium), var(--color-btn-inset-shadow);
|
164
164
|
transition-timing-function: cubic-bezier(0.5, 1, 0.89, 1);
|
165
165
|
transition-duration: 80ms;
|
@@ -172,26 +172,26 @@
|
|
172
172
|
|
173
173
|
.ToggleSwitch-status {
|
174
174
|
position: relative;
|
175
|
-
font-size: var(--text-body-size-medium
|
175
|
+
font-size: var(--text-body-size-medium);
|
176
176
|
line-height: 1.5;
|
177
177
|
color: var(--color-fg-default);
|
178
178
|
text-align: right;
|
179
179
|
}
|
180
180
|
|
181
181
|
.ToggleSwitch-statusIcon {
|
182
|
-
width: var(--base-size-16
|
182
|
+
width: var(--base-size-16);
|
183
183
|
display: flex;
|
184
184
|
margin-top: 0.063rem;
|
185
185
|
}
|
186
186
|
|
187
187
|
.ToggleSwitch--small {
|
188
188
|
& .ToggleSwitch-status {
|
189
|
-
font-size: var(--text-body-size-small
|
189
|
+
font-size: var(--text-body-size-small);
|
190
190
|
}
|
191
191
|
|
192
192
|
& .ToggleSwitch-track {
|
193
|
-
width: var(--base-size-48
|
194
|
-
height: var(--control-xsmall-size
|
193
|
+
width: var(--base-size-48);
|
194
|
+
height: var(--control-xsmall-size);
|
195
195
|
}
|
196
196
|
}
|
197
197
|
|
@@ -31,17 +31,35 @@ class ToggleSwitchElement extends HTMLElement {
|
|
31
31
|
return this.src != null
|
32
32
|
}
|
33
33
|
|
34
|
-
|
34
|
+
@debounce(300)
|
35
|
+
async toggle() {
|
35
36
|
if (this.isDisabled()) {
|
36
37
|
return
|
37
38
|
}
|
38
39
|
|
39
|
-
if (this.isRemote()) {
|
40
|
-
this.setLoadingState()
|
41
|
-
this.submitForm()
|
42
|
-
} else {
|
40
|
+
if (!this.isRemote()) {
|
43
41
|
this.performToggle()
|
42
|
+
return
|
44
43
|
}
|
44
|
+
|
45
|
+
// toggle immediately to tell screen readers the switch was clicked
|
46
|
+
this.performToggle()
|
47
|
+
this.setLoadingState()
|
48
|
+
|
49
|
+
try {
|
50
|
+
await this.submitForm()
|
51
|
+
} catch (error) {
|
52
|
+
if (error instanceof Error) {
|
53
|
+
// because we toggle immediately when the switch is clicked, toggle back to the
|
54
|
+
// old state on failure
|
55
|
+
this.setErrorState(error.message || 'An error occurred, please try again.')
|
56
|
+
this.performToggle()
|
57
|
+
}
|
58
|
+
|
59
|
+
return
|
60
|
+
}
|
61
|
+
|
62
|
+
this.setSuccessState()
|
45
63
|
}
|
46
64
|
|
47
65
|
turnOn(): void {
|
@@ -49,7 +67,7 @@ class ToggleSwitchElement extends HTMLElement {
|
|
49
67
|
return
|
50
68
|
}
|
51
69
|
|
52
|
-
this.switch.setAttribute('aria-
|
70
|
+
this.switch.setAttribute('aria-pressed', 'true')
|
53
71
|
this.classList.add('ToggleSwitch--checked')
|
54
72
|
}
|
55
73
|
|
@@ -58,12 +76,12 @@ class ToggleSwitchElement extends HTMLElement {
|
|
58
76
|
return
|
59
77
|
}
|
60
78
|
|
61
|
-
this.switch.setAttribute('aria-
|
79
|
+
this.switch.setAttribute('aria-pressed', 'false')
|
62
80
|
this.classList.remove('ToggleSwitch--checked')
|
63
81
|
}
|
64
82
|
|
65
83
|
isOn(): boolean {
|
66
|
-
return this.switch.getAttribute('aria-
|
84
|
+
return this.switch.getAttribute('aria-pressed') === 'true'
|
67
85
|
}
|
68
86
|
|
69
87
|
isOff(): boolean {
|
@@ -71,15 +89,15 @@ class ToggleSwitchElement extends HTMLElement {
|
|
71
89
|
}
|
72
90
|
|
73
91
|
isDisabled(): boolean {
|
74
|
-
return this.switch.getAttribute('
|
92
|
+
return this.switch.getAttribute('disabled') != null
|
75
93
|
}
|
76
94
|
|
77
95
|
disable(): void {
|
78
|
-
this.switch.setAttribute('
|
96
|
+
this.switch.setAttribute('disabled', 'disabled')
|
79
97
|
}
|
80
98
|
|
81
99
|
enable(): void {
|
82
|
-
this.switch.
|
100
|
+
this.switch.removeAttribute('disabled')
|
83
101
|
}
|
84
102
|
|
85
103
|
private performToggle(): void {
|
@@ -91,9 +109,11 @@ class ToggleSwitchElement extends HTMLElement {
|
|
91
109
|
}
|
92
110
|
|
93
111
|
private setLoadingState(): void {
|
94
|
-
this.disable()
|
95
112
|
this.errorIcon.setAttribute('hidden', 'hidden')
|
96
113
|
this.loadingSpinner.removeAttribute('hidden')
|
114
|
+
|
115
|
+
const event = new CustomEvent('toggleSwitchLoading', {bubbles: true})
|
116
|
+
this.dispatchEvent(event)
|
97
117
|
}
|
98
118
|
|
99
119
|
private setSuccessState(): void {
|
@@ -116,10 +136,8 @@ class ToggleSwitchElement extends HTMLElement {
|
|
116
136
|
}
|
117
137
|
|
118
138
|
this.loadingSpinner.setAttribute('hidden', 'hidden')
|
119
|
-
this.enable()
|
120
139
|
}
|
121
140
|
|
122
|
-
@debounce(300)
|
123
141
|
private async submitForm() {
|
124
142
|
const body = new FormData()
|
125
143
|
|
@@ -127,36 +145,27 @@ class ToggleSwitchElement extends HTMLElement {
|
|
127
145
|
body.append(this.csrfField, this.csrf)
|
128
146
|
}
|
129
147
|
|
130
|
-
body.append('value', this.isOn() ? '
|
148
|
+
body.append('value', this.isOn() ? '1' : '0')
|
131
149
|
|
132
|
-
|
133
|
-
if (!this.src) throw new Error('invalid src')
|
134
|
-
|
135
|
-
let response
|
136
|
-
|
137
|
-
try {
|
138
|
-
response = await fetch(this.src, {
|
139
|
-
credentials: 'same-origin',
|
140
|
-
method: 'POST',
|
141
|
-
headers: {
|
142
|
-
'Requested-With': 'XMLHttpRequest'
|
143
|
-
},
|
144
|
-
body
|
145
|
-
})
|
146
|
-
} catch (error) {
|
147
|
-
throw new Error('A network error occurred, please try again.')
|
148
|
-
}
|
150
|
+
if (!this.src) throw new Error('invalid src')
|
149
151
|
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
152
|
+
let response
|
153
|
+
|
154
|
+
try {
|
155
|
+
response = await fetch(this.src, {
|
156
|
+
credentials: 'same-origin',
|
157
|
+
method: 'POST',
|
158
|
+
headers: {
|
159
|
+
'Requested-With': 'XMLHttpRequest'
|
160
|
+
},
|
161
|
+
body
|
162
|
+
})
|
156
163
|
} catch (error) {
|
157
|
-
|
158
|
-
|
159
|
-
|
164
|
+
throw new Error('A network error occurred, please try again.')
|
165
|
+
}
|
166
|
+
|
167
|
+
if (!response.ok) {
|
168
|
+
throw new Error(await response.text())
|
160
169
|
}
|
161
170
|
}
|
162
171
|
}
|
@@ -1 +1 @@
|
|
1
|
-
.UnderlineNav{-webkit-overflow-scrolling:auto;box-shadow:inset 0 -1px 0 var(--color-border-muted);display:flex;justify-content:space-between;min-height:var(--base-size-48,
|
1
|
+
.UnderlineNav{-webkit-overflow-scrolling:auto;box-shadow:inset 0 -1px 0 var(--color-border-muted);display:flex;justify-content:space-between;min-height:var(--base-size-48,3rem);overflow-x:auto;overflow-y:hidden}.UnderlineNav .Counter{background-color:var(--color-neutral-muted);color:var(--color-fg-default);margin-left:var(--control-medium-gap,.5rem)}.UnderlineNav .Counter--primary{background-color:var(--color-neutral-emphasis);color:var(--color-fg-on-emphasis)}.UnderlineNav-body{align-items:center;display:flex;gap:var(--control-medium-gap,.5rem);list-style:none}.UnderlineNav-item{align-items:center;background-color:initial;border:0;border-radius:var(--borderRadius-medium,6px);color:var(--color-fg-default);cursor:pointer;display:flex;font-size:var(--text-body-size-medium,.875rem);line-height:30px;padding:0 var(--control-medium-paddingInline-condensed,.5rem);position:relative;text-align:center;white-space:nowrap}.UnderlineNav-item:focus,.UnderlineNav-item:focus-visible,.UnderlineNav-item:hover{border-bottom-color:var(--color-neutral-muted);color:var(--color-fg-default);outline-offset:-2px;text-decoration:none;transition:border-bottom-color .12s ease-out}.UnderlineNav-item [data-content]:before{content:attr(data-content);display:block;font-weight:var(--base-text-weight-semibold,600);height:0;visibility:hidden}.UnderlineNav-item:before{content:"";height:100%;left:50%;min-height:48px;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:100%}@media (pointer:fine){.UnderlineNav-item:hover{background:var(--color-action-list-item-default-hover-bg);color:var(--color-fg-default);text-decoration:none;transition:background .12s ease-out}}.UnderlineNav-item.selected,.UnderlineNav-item[aria-current]:not([aria-current=false]),.UnderlineNav-item[role=tab][aria-selected=true]{border-bottom-color:var(--color-primer-border-active);color:var(--color-fg-default);font-weight:var(--base-text-weight-semibold,600)}.UnderlineNav-item.selected:after,.UnderlineNav-item[aria-current]:not([aria-current=false]):after,.UnderlineNav-item[role=tab][aria-selected=true]:after{background:var(--color-primer-border-active);border-radius:var(--borderRadius-medium,6px);bottom:calc(50% - 25px);content:"";height:2px;position:absolute;right:50%;transform:translate(50%,-50%);width:100%;z-index:1}.UnderlineNav--right{justify-content:flex-end}.UnderlineNav--right .UnderlineNav-actions{flex:1 1 auto}.UnderlineNav-actions{align-self:center}.UnderlineNav--full{display:block}.UnderlineNav--full .UnderlineNav-body{min-height:var(--base-size-48,3rem)}.UnderlineNav-octicon{fill:var(--color-fg-muted);color:var(--color-fg-muted);display:inline!important;margin-right:var(--control-medium-gap,.5rem)}.UnderlineNav-container{display:flex;justify-content:space-between}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["underline_nav.pcss","<no source>"],"names":[],"mappings":"AAEA,cAME,+BAAgC,CADhC,mDAAoD,CAJpD,YAAa,CAMb,6BAA8B,CAL9B,
|
1
|
+
{"version":3,"sources":["underline_nav.pcss","<no source>"],"names":[],"mappings":"AAEA,cAME,+BAAgC,CADhC,mDAAoD,CAJpD,YAAa,CAMb,6BAA8B,CAL9B,mCAA+B,CAC/B,eAAgB,CAChB,iBAeF,CAVE,uBAGE,2CAA4C,CAD5C,6BAA8B,CAD9B,2CAGF,CAEA,gCAEE,8CAA+C,CAD/C,iCAEF,CAGF,mBAEE,kBAAmB,CADnB,YAAa,CAEb,mCAA8B,CAC9B,eACF,CAEA,mBAaE,kBAAmB,CAHnB,wBAA6B,CAC7B,QAAS,CACT,4CAAyC,CANzC,6BAA8B,CAG9B,cAAe,CAPf,YAAa,CAEb,8CAAuC,CACvC,gBAAiB,CAFjB,6DAAwD,CAFxD,iBAAkB,CAMlB,iBAAkB,CAClB,kBA8DF,CAvDE,mFAKE,8CAA+C,CAF/C,6BAA8B,CAG9B,mBAAoB,CAFpB,oBAAqB,CAGrB,4CACF,CAGA,yCAKE,0BAA2B,CAJ3B,aAAc,CAEd,gDAA6C,CAD7C,QAAS,CAET,iBAEF,CAIE,0BClEJ,WAAA,YAAA,SAAA,gBAAA,kBAAA,QAAA,4CAAA,UDkE8B,CAI5B,sBACE,yBAGE,yDAA0D,CAF1D,6BAA8B,CAC9B,oBAAqB,CAErB,mCACF,CACF,CAEA,wIAKE,qDAAsD,CADtD,6BAA8B,CAD9B,gDAiBF,CAZE,0JAQE,4CAA6C,CAC7C,4CAAyC,CALzC,uBAAwB,CAGxB,UAAW,CADX,UAAW,CALX,iBAAkB,CAElB,SAAU,CAOV,6BAA+B,CAL/B,UAAW,CAHX,SASF,CAIJ,qBACE,wBAKF,CAHE,2CACE,aACF,CAGF,sBACE,iBACF,CAEA,oBACE,aAMF,CAHE,uCACE,mCACF,CAGF,sBAIE,0BAA2B,CAD3B,2BAA4B,CAF5B,wBAA0B,CAC1B,4CAGF,CAEA,wBACE,YAAa,CACb,6BACF","file":"underline_nav.css","sourcesContent":["/* UnderlineNav */\n\n.UnderlineNav {\n display: flex;\n min-height: var(--base-size-48);\n overflow-x: auto;\n overflow-y: hidden;\n box-shadow: inset 0 -1px 0 var(--color-border-muted);\n -webkit-overflow-scrolling: auto;\n justify-content: space-between;\n\n & .Counter {\n margin-left: var(--control-medium-gap);\n color: var(--color-fg-default);\n background-color: var(--color-neutral-muted);\n }\n\n & .Counter--primary {\n color: var(--color-fg-on-emphasis);\n background-color: var(--color-neutral-emphasis);\n }\n}\n\n.UnderlineNav-body {\n display: flex;\n align-items: center;\n gap: var(--control-medium-gap);\n list-style: none;\n}\n\n.UnderlineNav-item {\n position: relative;\n display: flex;\n padding: 0 var(--control-medium-paddingInline-condensed);\n font-size: var(--text-body-size-medium);\n line-height: 30px;\n color: var(--color-fg-default);\n text-align: center;\n white-space: nowrap;\n cursor: pointer;\n background-color: transparent;\n border: 0;\n border-radius: var(--borderRadius-medium);\n align-items: center;\n\n &:hover,\n &:focus,\n &:focus-visible {\n color: var(--color-fg-default);\n text-decoration: none;\n border-bottom-color: var(--color-neutral-muted);\n outline-offset: -2px;\n transition: border-bottom-color 0.12s ease-out;\n }\n\n /* renders a visibly hidden \"copy\" of the label in bold, reserving box space for when label becomes bold on selected */\n & [data-content]::before {\n display: block;\n height: 0;\n font-weight: var(--base-text-weight-semibold);\n visibility: hidden;\n content: attr(data-content);\n }\n\n /* increase touch target area */\n &::before {\n @mixin minTouchTarget 48px;\n }\n\n /* hover state was \"sticking\" on mobile after click */\n @media (pointer: fine) {\n &:hover {\n color: var(--color-fg-default);\n text-decoration: none;\n background: var(--color-action-list-item-default-hover-bg);\n transition: background 0.12s ease-out;\n }\n }\n\n &.selected,\n &[role='tab'][aria-selected='true'],\n &[aria-current]:not([aria-current='false']) {\n font-weight: var(--base-text-weight-semibold);\n color: var(--color-fg-default);\n border-bottom-color: var(--color-primer-border-active);\n\n /* current/selected underline */\n &::after {\n position: absolute;\n z-index: 1; /* raise above full-width flash banner */\n right: 50%;\n bottom: calc(50% - 25px); /* 48px total height / 2 (24px) + 1px */\n width: 100%;\n height: 2px;\n content: '';\n background: var(--color-primer-border-active);\n border-radius: var(--borderRadius-medium);\n transform: translate(50%, -50%);\n }\n }\n}\n\n.UnderlineNav--right {\n justify-content: flex-end;\n\n & .UnderlineNav-actions {\n flex: 1 1 auto;\n }\n}\n\n.UnderlineNav-actions {\n align-self: center;\n}\n\n.UnderlineNav--full {\n display: block;\n\n /* required for underline to align with additional wrapper element */\n & .UnderlineNav-body {\n min-height: var(--base-size-48);\n }\n}\n\n.UnderlineNav-octicon {\n display: inline !important;\n margin-right: var(--control-medium-gap);\n color: var(--color-fg-muted);\n fill: var(--color-fg-muted);\n}\n\n.UnderlineNav-container {\n display: flex;\n justify-content: space-between;\n}\n",null]}
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
.UnderlineNav {
|
4
4
|
display: flex;
|
5
|
-
min-height: var(--base-size-48
|
5
|
+
min-height: var(--base-size-48);
|
6
6
|
overflow-x: auto;
|
7
7
|
overflow-y: hidden;
|
8
8
|
box-shadow: inset 0 -1px 0 var(--color-border-muted);
|
@@ -10,7 +10,7 @@
|
|
10
10
|
justify-content: space-between;
|
11
11
|
|
12
12
|
& .Counter {
|
13
|
-
margin-left: var(--control-medium-gap
|
13
|
+
margin-left: var(--control-medium-gap);
|
14
14
|
color: var(--color-fg-default);
|
15
15
|
background-color: var(--color-neutral-muted);
|
16
16
|
}
|
@@ -24,15 +24,15 @@
|
|
24
24
|
.UnderlineNav-body {
|
25
25
|
display: flex;
|
26
26
|
align-items: center;
|
27
|
-
gap: var(--control-medium-gap
|
27
|
+
gap: var(--control-medium-gap);
|
28
28
|
list-style: none;
|
29
29
|
}
|
30
30
|
|
31
31
|
.UnderlineNav-item {
|
32
32
|
position: relative;
|
33
33
|
display: flex;
|
34
|
-
padding: 0 var(--control-medium-paddingInline-condensed
|
35
|
-
font-size: var(--text-body-size-medium
|
34
|
+
padding: 0 var(--control-medium-paddingInline-condensed);
|
35
|
+
font-size: var(--text-body-size-medium);
|
36
36
|
line-height: 30px;
|
37
37
|
color: var(--color-fg-default);
|
38
38
|
text-align: center;
|
@@ -40,7 +40,7 @@
|
|
40
40
|
cursor: pointer;
|
41
41
|
background-color: transparent;
|
42
42
|
border: 0;
|
43
|
-
border-radius: var(--borderRadius-medium
|
43
|
+
border-radius: var(--borderRadius-medium);
|
44
44
|
align-items: center;
|
45
45
|
|
46
46
|
&:hover,
|
@@ -57,7 +57,7 @@
|
|
57
57
|
& [data-content]::before {
|
58
58
|
display: block;
|
59
59
|
height: 0;
|
60
|
-
font-weight: var(--base-text-weight-semibold
|
60
|
+
font-weight: var(--base-text-weight-semibold);
|
61
61
|
visibility: hidden;
|
62
62
|
content: attr(data-content);
|
63
63
|
}
|
@@ -80,7 +80,7 @@
|
|
80
80
|
&.selected,
|
81
81
|
&[role='tab'][aria-selected='true'],
|
82
82
|
&[aria-current]:not([aria-current='false']) {
|
83
|
-
font-weight: var(--base-text-weight-semibold
|
83
|
+
font-weight: var(--base-text-weight-semibold);
|
84
84
|
color: var(--color-fg-default);
|
85
85
|
border-bottom-color: var(--color-primer-border-active);
|
86
86
|
|
@@ -94,7 +94,7 @@
|
|
94
94
|
height: 2px;
|
95
95
|
content: '';
|
96
96
|
background: var(--color-primer-border-active);
|
97
|
-
border-radius: var(--borderRadius-medium
|
97
|
+
border-radius: var(--borderRadius-medium);
|
98
98
|
transform: translate(50%, -50%);
|
99
99
|
}
|
100
100
|
}
|
@@ -117,13 +117,13 @@
|
|
117
117
|
|
118
118
|
/* required for underline to align with additional wrapper element */
|
119
119
|
& .UnderlineNav-body {
|
120
|
-
min-height: var(--base-size-48
|
120
|
+
min-height: var(--base-size-48);
|
121
121
|
}
|
122
122
|
}
|
123
123
|
|
124
124
|
.UnderlineNav-octicon {
|
125
125
|
display: inline !important;
|
126
|
-
margin-right: var(--control-medium-gap
|
126
|
+
margin-right: var(--control-medium-gap);
|
127
127
|
color: var(--color-fg-muted);
|
128
128
|
fill: var(--color-fg-muted);
|
129
129
|
}
|
@@ -1 +1 @@
|
|
1
|
-
.avatar{background-color:var(--color-avatar-bg);border-radius:var(--borderRadius-medium,6px);box-shadow:0 0 0 1px var(--color-avatar-border);display:inline-block;flex-shrink:0;line-height:1;overflow:hidden;vertical-align:middle}.avatar-link{float:left;line-height:1}.avatar-group-item{display:inline-block;margin-bottom:3px}.avatar-1,.avatar-2,.avatar-small{border-radius:var(--borderRadius-small,
|
1
|
+
.avatar{background-color:var(--color-avatar-bg);border-radius:var(--borderRadius-medium,6px);box-shadow:0 0 0 1px var(--color-avatar-border);display:inline-block;flex-shrink:0;line-height:1;overflow:hidden;vertical-align:middle}.avatar-link{float:left;line-height:1}.avatar-group-item{display:inline-block;margin-bottom:3px}.avatar-1,.avatar-2,.avatar-small{border-radius:var(--borderRadius-small,3px)}.avatar-1{height:var(--base-size-16,1rem);width:var(--base-size-16,1rem)}.avatar-2{height:var(--base-size-20,1.25rem);width:var(--base-size-20,1.25rem)}.avatar-3{height:var(--base-size-24,1.5rem);width:var(--base-size-24,1.5rem)}.avatar-4{height:var(--base-size-28,1.75rem);width:var(--base-size-28,1.75rem)}.avatar-5{height:var(--base-size-32,2rem);width:var(--base-size-32,2rem)}.avatar-6{height:var(--base-size-40,2.5rem);width:var(--base-size-40,2.5rem)}.avatar-7{height:var(--base-size-48,3rem);width:var(--base-size-48,3rem)}.avatar-8{height:var(--base-size-64,4rem);width:var(--base-size-64,4rem)}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["avatar.pcss"],"names":[],"mappings":"AAEA,QAKE,uCAAwC,CACxC,
|
1
|
+
{"version":3,"sources":["avatar.pcss"],"names":[],"mappings":"AAEA,QAKE,uCAAwC,CACxC,4CAAyC,CAEzC,+CAAgD,CAPhD,oBAAqB,CAMrB,aAAc,CAJd,aAAc,CADd,eAAgB,CAEhB,qBAKF,CAEA,aACE,UAAW,CACX,aACF,CAGA,mBACE,oBAAqB,CACrB,iBACF,CAIA,kCAGE,2CACF,CAIA,UAEE,+BAA2B,CAD3B,8BAEF,CAEA,UAEE,kCAA2B,CAD3B,iCAEF,CAEA,UAEE,iCAA2B,CAD3B,gCAEF,CAEA,UAEE,kCAA2B,CAD3B,iCAEF,CAEA,UAEE,+BAA2B,CAD3B,8BAEF,CAEA,UAEE,iCAA2B,CAD3B,gCAEF,CAEA,UAEE,+BAA2B,CAD3B,8BAEF,CAEA,UAEE,+BAA2B,CAD3B,8BAEF","file":"avatar.css","sourcesContent":["/* avatar */\n\n.avatar {\n display: inline-block;\n overflow: hidden; /* Ensure page layout in Firefox should images fail to load */\n line-height: 1;\n vertical-align: middle;\n background-color: var(--color-avatar-bg); /* adds opaque bg to transparent avatars */\n border-radius: var(--borderRadius-medium);\n flex-shrink: 0;\n box-shadow: 0 0 0 1px var(--color-avatar-border);\n}\n\n.avatar-link {\n float: left;\n line-height: 1;\n}\n\n/* User for example on /stars and /user for grids of avatars */\n.avatar-group-item {\n display: inline-block;\n margin-bottom: 3px;\n}\n\n/* Border radius */\n\n.avatar-1,\n.avatar-2,\n.avatar-small {\n border-radius: var(--borderRadius-small);\n}\n\n/* Sizes */\n\n.avatar-1 {\n width: var(--base-size-16);\n height: var(--base-size-16);\n}\n\n.avatar-2 {\n width: var(--base-size-20);\n height: var(--base-size-20);\n}\n\n.avatar-3 {\n width: var(--base-size-24);\n height: var(--base-size-24);\n}\n\n.avatar-4 {\n width: var(--base-size-28);\n height: var(--base-size-28);\n}\n\n.avatar-5 {\n width: var(--base-size-32);\n height: var(--base-size-32);\n}\n\n.avatar-6 {\n width: var(--base-size-40);\n height: var(--base-size-40);\n}\n\n.avatar-7 {\n width: var(--base-size-48);\n height: var(--base-size-48);\n}\n\n.avatar-8 {\n width: var(--base-size-64);\n height: var(--base-size-64);\n}\n"]}
|
@@ -6,7 +6,7 @@
|
|
6
6
|
line-height: 1;
|
7
7
|
vertical-align: middle;
|
8
8
|
background-color: var(--color-avatar-bg); /* adds opaque bg to transparent avatars */
|
9
|
-
border-radius: var(--borderRadius-medium
|
9
|
+
border-radius: var(--borderRadius-medium);
|
10
10
|
flex-shrink: 0;
|
11
11
|
box-shadow: 0 0 0 1px var(--color-avatar-border);
|
12
12
|
}
|
@@ -27,47 +27,47 @@
|
|
27
27
|
.avatar-1,
|
28
28
|
.avatar-2,
|
29
29
|
.avatar-small {
|
30
|
-
border-radius: var(--borderRadius-small
|
30
|
+
border-radius: var(--borderRadius-small);
|
31
31
|
}
|
32
32
|
|
33
33
|
/* Sizes */
|
34
34
|
|
35
35
|
.avatar-1 {
|
36
|
-
width: var(--base-size-16
|
37
|
-
height: var(--base-size-16
|
36
|
+
width: var(--base-size-16);
|
37
|
+
height: var(--base-size-16);
|
38
38
|
}
|
39
39
|
|
40
40
|
.avatar-2 {
|
41
|
-
width: var(--base-size-20
|
42
|
-
height: var(--base-size-20
|
41
|
+
width: var(--base-size-20);
|
42
|
+
height: var(--base-size-20);
|
43
43
|
}
|
44
44
|
|
45
45
|
.avatar-3 {
|
46
|
-
width: var(--base-size-24
|
47
|
-
height: var(--base-size-24
|
46
|
+
width: var(--base-size-24);
|
47
|
+
height: var(--base-size-24);
|
48
48
|
}
|
49
49
|
|
50
50
|
.avatar-4 {
|
51
|
-
width: var(--base-size-28
|
52
|
-
height: var(--base-size-28
|
51
|
+
width: var(--base-size-28);
|
52
|
+
height: var(--base-size-28);
|
53
53
|
}
|
54
54
|
|
55
55
|
.avatar-5 {
|
56
|
-
width: var(--base-size-32
|
57
|
-
height: var(--base-size-32
|
56
|
+
width: var(--base-size-32);
|
57
|
+
height: var(--base-size-32);
|
58
58
|
}
|
59
59
|
|
60
60
|
.avatar-6 {
|
61
|
-
width: var(--base-size-40
|
62
|
-
height: var(--base-size-40
|
61
|
+
width: var(--base-size-40);
|
62
|
+
height: var(--base-size-40);
|
63
63
|
}
|
64
64
|
|
65
65
|
.avatar-7 {
|
66
|
-
width: var(--base-size-48
|
67
|
-
height: var(--base-size-48
|
66
|
+
width: var(--base-size-48);
|
67
|
+
height: var(--base-size-48);
|
68
68
|
}
|
69
69
|
|
70
70
|
.avatar-8 {
|
71
|
-
width: var(--base-size-64
|
72
|
-
height: var(--base-size-64
|
71
|
+
width: var(--base-size-64);
|
72
|
+
height: var(--base-size-64);
|
73
73
|
}
|