@fluentui/web-components 3.0.0-rc.26 → 3.0.0-rc.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/CHANGELOG.md +21 -2
  2. package/README.md +26 -0
  3. package/custom-elements.json +41 -56
  4. package/dist/esm/accordion/accordion.styles.css +11 -7
  5. package/dist/esm/accordion/accordion.template.html +4 -3
  6. package/dist/esm/accordion-item/accordion-item.styles.css +174 -170
  7. package/dist/esm/accordion-item/accordion-item.template.html +38 -31
  8. package/dist/esm/anchor-button/anchor-button.styles.css +224 -223
  9. package/dist/esm/anchor-button/anchor-button.template.html +8 -11
  10. package/dist/esm/avatar/avatar.styles.css +475 -470
  11. package/dist/esm/avatar/avatar.template.html +10 -14
  12. package/dist/esm/badge/badge.styles.css +264 -266
  13. package/dist/esm/badge/badge.template.html +5 -2
  14. package/dist/esm/button/button.base.js +2 -0
  15. package/dist/esm/button/button.base.js.map +1 -1
  16. package/dist/esm/button/button.styles.css +260 -259
  17. package/dist/esm/button/button.template.html +8 -10
  18. package/dist/esm/checkbox/checkbox.base.js +2 -0
  19. package/dist/esm/checkbox/checkbox.base.js.map +1 -1
  20. package/dist/esm/checkbox/checkbox.styles.css +146 -142
  21. package/dist/esm/checkbox/checkbox.template.html +21 -16
  22. package/dist/esm/compound-button/compound-button.styles.css +363 -365
  23. package/dist/esm/compound-button/compound-button.template.html +9 -11
  24. package/dist/esm/counter-badge/counter-badge.styles.css +177 -177
  25. package/dist/esm/counter-badge/counter-badge.template.html +5 -2
  26. package/dist/esm/dialog/dialog.styles.css +65 -66
  27. package/dist/esm/dialog/dialog.template.html +18 -15
  28. package/dist/esm/dialog-body/dialog-body.styles.css +81 -76
  29. package/dist/esm/dialog-body/dialog-body.styles.js +1 -0
  30. package/dist/esm/dialog-body/dialog-body.styles.js.map +1 -1
  31. package/dist/esm/dialog-body/dialog-body.template.html +2 -1
  32. package/dist/esm/divider/divider.styles.css +105 -101
  33. package/dist/esm/divider/divider.template.html +6 -1
  34. package/dist/esm/drawer/drawer.styles.css +124 -119
  35. package/dist/esm/drawer/drawer.template.html +5 -2
  36. package/dist/esm/drawer-body/drawer-body.styles.css +29 -26
  37. package/dist/esm/drawer-body/drawer-body.template.html +5 -2
  38. package/dist/esm/dropdown/dropdown.base.d.ts +1 -1
  39. package/dist/esm/dropdown/dropdown.base.js +3 -1
  40. package/dist/esm/dropdown/dropdown.base.js.map +1 -1
  41. package/dist/esm/dropdown/dropdown.styles.css +192 -190
  42. package/dist/esm/dropdown/dropdown.styles.js +1 -0
  43. package/dist/esm/dropdown/dropdown.styles.js.map +1 -1
  44. package/dist/esm/dropdown/dropdown.template.html +26 -19
  45. package/dist/esm/field/field.styles.css +125 -121
  46. package/dist/esm/field/field.template.html +3 -2
  47. package/dist/esm/image/image.styles.css +49 -50
  48. package/dist/esm/image/image.template.html +6 -1
  49. package/dist/esm/label/label.styles.css +34 -30
  50. package/dist/esm/label/label.template.html +5 -2
  51. package/dist/esm/link/link.styles.css +58 -54
  52. package/dist/esm/link/link.template.html +4 -7
  53. package/dist/esm/listbox/listbox.styles.css +40 -36
  54. package/dist/esm/listbox/listbox.styles.js +2 -2
  55. package/dist/esm/listbox/listbox.template.html +4 -6
  56. package/dist/esm/menu/menu.d.ts +8 -8
  57. package/dist/esm/menu/menu.js.map +1 -1
  58. package/dist/esm/menu/menu.styles.css +56 -52
  59. package/dist/esm/menu/menu.styles.js +5 -5
  60. package/dist/esm/menu/menu.template.html +6 -5
  61. package/dist/esm/menu-button/menu-button.styles.css +260 -259
  62. package/dist/esm/menu-button/menu-button.template.html +23 -14
  63. package/dist/esm/menu-item/menu-item.js +2 -0
  64. package/dist/esm/menu-item/menu-item.js.map +1 -1
  65. package/dist/esm/menu-item/menu-item.styles.css +141 -137
  66. package/dist/esm/menu-item/menu-item.styles.js +8 -3
  67. package/dist/esm/menu-item/menu-item.styles.js.map +1 -1
  68. package/dist/esm/menu-item/menu-item.template.html +48 -17
  69. package/dist/esm/menu-list/menu-list.styles.css +19 -15
  70. package/dist/esm/menu-list/menu-list.template.html +4 -3
  71. package/dist/esm/message-bar/message-bar.styles.css +83 -84
  72. package/dist/esm/message-bar/message-bar.template.html +7 -2
  73. package/dist/esm/option/option.styles.css +117 -114
  74. package/dist/esm/option/option.template.html +17 -14
  75. package/dist/esm/progress-bar/progress-bar.styles.css +83 -79
  76. package/dist/esm/progress-bar/progress-bar.template.html +4 -1
  77. package/dist/esm/radio/radio.styles.css +100 -96
  78. package/dist/esm/radio/radio.template.html +6 -9
  79. package/dist/esm/radio-group/radio-group.styles.css +45 -41
  80. package/dist/esm/radio-group/radio-group.template.html +11 -10
  81. package/dist/esm/rating-display/rating-display.styles.css +136 -134
  82. package/dist/esm/rating-display/rating-display.template.html +5 -2
  83. package/dist/esm/slider/slider.js +2 -0
  84. package/dist/esm/slider/slider.js.map +1 -1
  85. package/dist/esm/slider/slider.styles.css +186 -182
  86. package/dist/esm/slider/slider.template.html +13 -15
  87. package/dist/esm/spinner/spinner.styles.css +155 -151
  88. package/dist/esm/spinner/spinner.template.html +16 -11
  89. package/dist/esm/switch/switch.styles.css +112 -108
  90. package/dist/esm/switch/switch.template.html +9 -8
  91. package/dist/esm/tab/tab.js +2 -0
  92. package/dist/esm/tab/tab.js.map +1 -1
  93. package/dist/esm/tab/tab.styles.css +112 -108
  94. package/dist/esm/tab/tab.template.html +6 -5
  95. package/dist/esm/tablist/tablist.styles.css +194 -190
  96. package/dist/esm/tablist/tablist.template.html +2 -5
  97. package/dist/esm/text/text.styles.css +105 -101
  98. package/dist/esm/text/text.template.html +6 -1
  99. package/dist/esm/text-input/text-input.base.d.ts +0 -7
  100. package/dist/esm/text-input/text-input.base.js +3 -14
  101. package/dist/esm/text-input/text-input.base.js.map +1 -1
  102. package/dist/esm/text-input/text-input.styles.css +199 -195
  103. package/dist/esm/text-input/text-input.template.html +34 -35
  104. package/dist/esm/text-input/text-input.template.js +1 -4
  105. package/dist/esm/text-input/text-input.template.js.map +1 -1
  106. package/dist/esm/textarea/textarea.base.js +2 -0
  107. package/dist/esm/textarea/textarea.base.js.map +1 -1
  108. package/dist/esm/textarea/textarea.styles.css +254 -250
  109. package/dist/esm/textarea/textarea.template.html +28 -27
  110. package/dist/esm/toggle-button/toggle-button.styles.css +360 -357
  111. package/dist/esm/toggle-button/toggle-button.template.html +8 -10
  112. package/dist/esm/tooltip/tooltip.styles.css +81 -77
  113. package/dist/esm/tooltip/tooltip.template.html +6 -1
  114. package/dist/esm/tree/tree.styles.css +9 -5
  115. package/dist/esm/tree/tree.template.html +3 -2
  116. package/dist/esm/tree-item/tree-item.base.js +2 -0
  117. package/dist/esm/tree-item/tree-item.base.js.map +1 -1
  118. package/dist/esm/tree-item/tree-item.styles.css +157 -153
  119. package/dist/esm/tree-item/tree-item.template.html +8 -7
  120. package/dist/esm/utils/autofocus.d.ts +12 -0
  121. package/dist/esm/utils/autofocus.js +25 -0
  122. package/dist/esm/utils/autofocus.js.map +1 -0
  123. package/dist/web-components-all.js +26 -20
  124. package/dist/web-components-all.min.js +15 -15
  125. package/dist/web-components.d.ts +9 -16
  126. package/dist/web-components.js +26 -20
  127. package/dist/web-components.min.js +15 -15
  128. package/package.json +4 -5
@@ -1,131 +1,134 @@
1
+ :host([hidden]) {
2
+ display: none;
3
+ }
4
+ :host {
5
+ display: inline-grid;
6
+ }
1
7
 
2
- :host([hidden]){display:none}:host{display:inline-grid}
8
+ :host {
9
+ -webkit-tap-highlight-color: transparent;
3
10
 
4
- :host {
5
- -webkit-tap-highlight-color: transparent;
6
-
7
11
  font-family: var(--fontFamilyBase);
8
12
  font-size: var(--fontSizeBase300);
9
13
  line-height: var(--lineHeightBase300);
10
14
  font-weight: var(--fontWeightRegular);
11
15
 
12
- align-items: center;
13
- background-color: var(--colorNeutralBackground1);
14
- border-radius: var(--borderRadiusMedium);
15
- box-sizing: border-box;
16
- color: var(--colorNeutralForeground2);
17
- column-gap: var(--spacingHorizontalXS);
18
- cursor: pointer;
19
- grid-template-areas: 'indicator start content';
20
- grid-template-columns: auto auto 1fr;
21
- min-height: 32px;
22
- padding: var(--spacingHorizontalSNudge);
23
- text-align: start;
24
- }
25
-
26
- .content {
27
- grid-area: content;
28
- line-height: 1;
29
- }
30
-
31
- ::slotted([slot='start']) {
32
- grid-area: start;
33
- }
34
-
35
- :host(:hover) {
36
- background-color: var(--colorNeutralBackground1Hover);
37
- color: var(--colorNeutralForeground2Hover);
38
- }
39
-
40
- :host(:active) {
41
- background-color: var(--colorNeutralBackground1Pressed);
42
- color: var(--colorNeutralForeground2Pressed);
43
- }
44
-
45
- :host(:disabled) {
46
- background-color: var(--colorNeutralBackground1);
47
- color: var(--colorNeutralForegroundDisabled);
48
- cursor: default;
49
- }
50
-
51
- .checkmark-16-filled {
52
- fill: currentColor;
53
- width: 16px;
54
- }
55
-
56
- slot[name='checked-indicator'] > *,
57
- ::slotted([slot='checked-indicator']) {
58
- aspect-ratio: 1;
59
- flex: 0 0 auto;
60
- grid-area: indicator;
61
- visibility: hidden;
62
- }
63
-
64
- :host(:state(selected)) :is(slot[name='checked-indicator'] > *, ::slotted([slot='checked-indicator'])) {
65
- visibility: visible;
66
- }
67
-
68
- :host(:state(multiple)) .checkmark-16-filled,
69
- :host(:not(:state(multiple))) .checkmark-12-regular {
70
- display: none;
71
- }
72
-
73
- :host(:state(multiple)) .checkmark-12-regular {
74
- background-color: var(--colorNeutralBackground1);
75
- border-radius: var(--borderRadiusSmall);
76
- border: var(--strokeWidthThin) solid var(--colorNeutralStrokeAccessible);
77
- box-sizing: border-box;
78
- cursor: pointer;
79
- fill: transparent;
80
- position: relative;
81
- visibility: visible;
82
- width: 16px;
83
- }
84
-
85
- :host(:state(multiple):state(selected)) .checkmark-12-regular {
86
- background-color: var(--colorCompoundBrandBackground);
87
- border-color: var(--colorCompoundBrandStroke);
88
- fill: var(--colorNeutralForegroundInverted);
89
- }
90
-
91
- :host(:disabled:state(multiple)) .checkmark-12-regular {
92
- border-color: var(--colorNeutralStrokeDisabled);
93
- }
94
-
95
- :host(:disabled:state(multiple):state(selected)) .checkmark-12-regular {
96
- background-color: var(--colorNeutralBackgroundDisabled);
16
+ align-items: center;
17
+ background-color: var(--colorNeutralBackground1);
18
+ border-radius: var(--borderRadiusMedium);
19
+ box-sizing: border-box;
20
+ color: var(--colorNeutralForeground2);
21
+ column-gap: var(--spacingHorizontalXS);
22
+ cursor: pointer;
23
+ grid-template-areas: 'indicator start content';
24
+ grid-template-columns: auto auto 1fr;
25
+ min-height: 32px;
26
+ padding: var(--spacingHorizontalSNudge);
27
+ text-align: start;
28
+ }
29
+
30
+ .content {
31
+ grid-area: content;
32
+ line-height: 1;
33
+ }
34
+
35
+ ::slotted([slot='start']) {
36
+ grid-area: start;
37
+ }
38
+
39
+ :host(:hover) {
40
+ background-color: var(--colorNeutralBackground1Hover);
41
+ color: var(--colorNeutralForeground2Hover);
42
+ }
43
+
44
+ :host(:active) {
45
+ background-color: var(--colorNeutralBackground1Pressed);
46
+ color: var(--colorNeutralForeground2Pressed);
47
+ }
48
+
49
+ :host(:disabled) {
50
+ background-color: var(--colorNeutralBackground1);
51
+ color: var(--colorNeutralForegroundDisabled);
52
+ cursor: default;
53
+ }
54
+
55
+ .checkmark-16-filled {
56
+ fill: currentColor;
57
+ width: 16px;
58
+ }
59
+
60
+ slot[name='checked-indicator'] > *,
61
+ ::slotted([slot='checked-indicator']) {
62
+ aspect-ratio: 1;
63
+ flex: 0 0 auto;
64
+ grid-area: indicator;
65
+ visibility: hidden;
66
+ }
67
+
68
+ :host(:state(selected)) :is(slot[name='checked-indicator'] > *, ::slotted([slot='checked-indicator'])) {
69
+ visibility: visible;
70
+ }
71
+
72
+ :host(:state(multiple)) .checkmark-16-filled,
73
+ :host(:not(:state(multiple))) .checkmark-12-regular {
74
+ display: none;
75
+ }
76
+
77
+ :host(:state(multiple)) .checkmark-12-regular {
78
+ background-color: var(--colorNeutralBackground1);
79
+ border-radius: var(--borderRadiusSmall);
80
+ border: var(--strokeWidthThin) solid var(--colorNeutralStrokeAccessible);
81
+ box-sizing: border-box;
82
+ cursor: pointer;
83
+ fill: transparent;
84
+ position: relative;
85
+ visibility: visible;
86
+ width: 16px;
87
+ }
88
+
89
+ :host(:state(multiple):state(selected)) .checkmark-12-regular {
90
+ background-color: var(--colorCompoundBrandBackground);
91
+ border-color: var(--colorCompoundBrandStroke);
92
+ fill: var(--colorNeutralForegroundInverted);
93
+ }
94
+
95
+ :host(:disabled:state(multiple)) .checkmark-12-regular {
96
+ border-color: var(--colorNeutralStrokeDisabled);
97
+ }
98
+
99
+ :host(:disabled:state(multiple):state(selected)) .checkmark-12-regular {
100
+ background-color: var(--colorNeutralBackgroundDisabled);
101
+ }
102
+
103
+ :host(:state(active)) {
104
+ border: var(--strokeWidthThick) solid var(--colorStrokeFocus2);
105
+ }
106
+
107
+ @supports (selector(:host(:has(*)))) {
108
+ :host(:has([slot='start']:not([size='16']))) {
109
+ column-gap: var(--spacingHorizontalSNudge);
97
110
  }
111
+ }
98
112
 
99
- :host(:state(active)) {
100
- border: var(--strokeWidthThick) solid var(--colorStrokeFocus2);
101
- }
113
+ :host(:state(description)) {
114
+ column-gap: var(--spacingHorizontalSNudge);
115
+ grid-template-areas:
116
+ 'indicator start content'
117
+ 'indicator start description';
118
+ }
102
119
 
103
- @supports (selector(:host(:has(*)))) {
104
- :host(:has([slot='start']:not([size='16']))) {
105
- column-gap: var(--spacingHorizontalSNudge);
106
- }
107
- }
120
+ ::slotted([slot='description']) {
121
+ color: var(--colorNeutralForeground3);
122
+ grid-area: description;
108
123
 
109
- :host(:state(description)) {
110
- column-gap: var(--spacingHorizontalSNudge);
111
- grid-template-areas:
112
- 'indicator start content'
113
- 'indicator start description';
114
- }
115
-
116
- ::slotted([slot='description']) {
117
- color: var(--colorNeutralForeground3);
118
- grid-area: description;
119
-
120
124
  font-family: var(--fontFamilyBase);
121
125
  font-size: var(--fontSizeBase200);
122
126
  line-height: var(--lineHeightBase200);
123
127
  font-weight: var(--fontWeightRegular);
128
+ }
124
129
 
130
+ @media (forced-colors: active) {
131
+ :host(:disabled) {
132
+ color: GrayText;
125
133
  }
126
-
127
- @media (forced-colors: active) {
128
- :host(:disabled) {
129
- color: GrayText;
130
- }
131
- }
134
+ }
@@ -1,21 +1,24 @@
1
1
  <f-template name="fluent-option" shadowrootmode="open">
2
- <template>{{styles}}<slot name="checked-indicator">
3
- <svg aria-hidden="true" class="checkmark-16-filled" viewBox="0 0 16 16">
4
- <path
5
- d="M14.046 3.486a.75.75 0 0 1-.032 1.06l-7.93 7.474a.85.85 0 0 1-1.188-.022l-2.68-2.72a.75.75 0 1 1 1.068-1.053l2.234 2.267l7.468-7.038a.75.75 0 0 1 1.06.032"
6
- />
7
- </svg>
8
- <svg aria-hidden="true" class="checkmark-12-regular" viewBox="0 0 12 12">
9
- <path
10
- d="M9.854 3.146a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 0 1-.708 0l-2-2a.5.5 0 1 1 .708-.708L5 7.293l4.146-4.147a.5.5 0 0 1 .708 0"
11
- />
12
- </svg>
13
- </slot>
14
- <slot name="start" f-ref="{start}"></slot>
2
+ <template>
3
+ {{styles}}
4
+ <slot name="checked-indicator">
5
+ <svg aria-hidden="true" class="checkmark-16-filled" viewBox="0 0 16 16">
6
+ <path
7
+ d="M14.046 3.486a.75.75 0 0 1-.032 1.06l-7.93 7.474a.85.85 0 0 1-1.188-.022l-2.68-2.72a.75.75 0 1 1 1.068-1.053l2.234 2.267l7.468-7.038a.75.75 0 0 1 1.06.032"
8
+ />
9
+ </svg>
10
+ <svg aria-hidden="true" class="checkmark-12-regular" viewBox="0 0 12 12">
11
+ <path
12
+ d="M9.854 3.146a.5.5 0 0 1 0 .708l-4.5 4.5a.5.5 0 0 1-.708 0l-2-2a.5.5 0 1 1 .708-.708L5 7.293l4.146-4.147a.5.5 0 0 1 .708 0"
13
+ />
14
+ </svg>
15
+ </slot>
16
+ <slot name="start" f-ref="{start}"></slot>
15
17
  <div class="content" part="content">
16
18
  <slot f-slotted="{freeformOutputs filter elements(output)}"></slot>
17
19
  </div>
18
20
  <div class="description" part="description">
19
21
  <slot name="description" f-slotted="{descriptionSlot}"></slot>
20
- </div></template>
22
+ </div>
23
+ </template>
21
24
  </f-template>
@@ -1,99 +1,103 @@
1
+ :host([hidden]) {
2
+ display: none;
3
+ }
4
+ :host {
5
+ display: block;
6
+ }
1
7
 
2
- :host([hidden]){display:none}:host{display:block}
8
+ :host {
9
+ width: 100%;
10
+ height: 2px;
11
+ overflow-x: hidden;
12
+ background-color: var(--colorNeutralBackground6);
13
+ border-radius: var(--borderRadiusMedium);
14
+ contain: content;
3
15
 
4
- :host {
5
- width: 100%;
6
- height: 2px;
7
- overflow-x: hidden;
8
- background-color: var(--colorNeutralBackground6);
9
- border-radius: var(--borderRadiusMedium);
10
- contain: content;
11
-
12
- @supports (width: attr(value type(<number>))) {
13
- --max: attr(max type(<number>), 100);
14
- --min: attr(min type(<number>), 0);
15
- --value: attr(value type(<number>), 0);
16
- --indicator-width: clamp(0%, calc((var(--value) - var(--min)) / (var(--max) - var(--min)) * 100%), 100%);
17
- }
16
+ @supports (width: attr(value type(<number>))) {
17
+ --max: attr(max type(<number>), 100);
18
+ --min: attr(min type(<number>), 0);
19
+ --value: attr(value type(<number>), 0);
20
+ --indicator-width: clamp(0%, calc((var(--value) - var(--min)) / (var(--max) - var(--min)) * 100%), 100%);
18
21
  }
22
+ }
19
23
 
20
- :host([thickness='large']) {
21
- height: 4px;
22
- }
24
+ :host([thickness='large']) {
25
+ height: 4px;
26
+ }
23
27
 
24
- :host([shape='square']) {
25
- border-radius: var(--borderRadiusNone);
26
- }
28
+ :host([shape='square']) {
29
+ border-radius: var(--borderRadiusNone);
30
+ }
27
31
 
28
- .indicator {
29
- background-color: var(--colorCompoundBrandBackground);
30
- border-radius: inherit;
31
- height: 100%;
32
- }
32
+ .indicator {
33
+ background-color: var(--colorCompoundBrandBackground);
34
+ border-radius: inherit;
35
+ height: 100%;
36
+ }
33
37
 
34
- :host([value]) .indicator {
35
- transition: all 0.2s ease-in-out;
38
+ :host([value]) .indicator {
39
+ transition: all 0.2s ease-in-out;
36
40
 
37
- @supports (width: attr(value type(<number>))) {
38
- width: var(--indicator-width);
39
- }
41
+ @supports (width: attr(value type(<number>))) {
42
+ width: var(--indicator-width);
40
43
  }
44
+ }
41
45
 
42
- :host(:not([value])) .indicator {
43
- position: relative;
44
- width: 33%;
45
- background-image: linear-gradient(
46
- to right,
47
- var(--colorNeutralBackground6) 0%,
48
- var(--colorTransparentBackground) 50%,
49
- var(--colorNeutralBackground6) 100%
50
- );
51
- animation-name: indeterminate;
52
- animation-duration: 3s;
53
- animation-timing-function: linear;
54
- animation-iteration-count: infinite;
55
- }
46
+ :host(:not([value])) .indicator {
47
+ position: relative;
48
+ width: 33%;
49
+ background-image: linear-gradient(
50
+ to right,
51
+ var(--colorNeutralBackground6) 0%,
52
+ var(--colorTransparentBackground) 50%,
53
+ var(--colorNeutralBackground6) 100%
54
+ );
55
+ animation-name: indeterminate;
56
+ animation-duration: 3s;
57
+ animation-timing-function: linear;
58
+ animation-iteration-count: infinite;
59
+ }
56
60
 
57
- :host([validation-state='error']) .indicator {
58
- background-color: var(--colorPaletteRedBackground3);
59
- }
61
+ :host([validation-state='error']) .indicator {
62
+ background-color: var(--colorPaletteRedBackground3);
63
+ }
60
64
 
61
- :host([validation-state='warning']) .indicator {
62
- background-color: var(--colorPaletteDarkOrangeBackground3);
63
- }
65
+ :host([validation-state='warning']) .indicator {
66
+ background-color: var(--colorPaletteDarkOrangeBackground3);
67
+ }
64
68
 
65
- :host([validation-state='success']) .indicator {
66
- background-color: var(--colorPaletteGreenBackground3);
67
- }
69
+ :host([validation-state='success']) .indicator {
70
+ background-color: var(--colorPaletteGreenBackground3);
71
+ }
68
72
 
69
- @layer animations {
70
- /* Disable animations for reduced motion */
71
- @media (prefers-reduced-motion: no-preference) {
72
- :host([value]) {
73
- transition: none;
74
- }
75
- :host(:not([value])) .indicator {
76
- animation-duration: 0.01ms;
77
- animation-iteration-count: 1;
78
- }
73
+ @layer animations {
74
+ /* Disable animations for reduced motion */
75
+ @media (prefers-reduced-motion: no-preference) {
76
+ :host([value]) {
77
+ transition: none;
78
+ }
79
+ :host(:not([value])) .indicator {
80
+ animation-duration: 0.01ms;
81
+ animation-iteration-count: 1;
79
82
  }
80
83
  }
84
+ }
81
85
 
82
- @keyframes indeterminate {
83
- 0% {
84
- inset-inline-start: -33%;
85
- }
86
- 100% {
87
- inset-inline-start: 100%;
88
- }
86
+ @keyframes indeterminate {
87
+ 0% {
88
+ inset-inline-start: -33%;
89
+ }
90
+ 100% {
91
+ inset-inline-start: 100%;
89
92
  }
93
+ }
90
94
 
91
- @media (forced-colors: active) {
92
- :host {
93
- background-color: CanvasText;
94
- }
95
- .indicator,
96
- :host(:is([validation-state='success'], [validation-state='warning'], [validation-state='error'])) .indicator {
97
- background-color: Highlight;
98
- }
95
+ @media (forced-colors: active) {
96
+ :host {
97
+ background-color: CanvasText;
98
+ }
99
+ .indicator,
100
+ :host(:is([validation-state='success'], [validation-state='warning'], [validation-state='error'])) .indicator {
101
+ background-color: Highlight;
99
102
  }
103
+ }
@@ -1,3 +1,6 @@
1
1
  <f-template name="fluent-progress-bar" shadowrootmode="open">
2
- <template>{{styles}}<div class="indicator" part="indicator" f-ref="{indicator}"></div></template>
2
+ <template>
3
+ {{styles}}
4
+ <div class="indicator" part="indicator" f-ref="{indicator}"></div>
5
+ </template>
3
6
  </f-template>