@stackoverflow/stacks 3.0.0-beta.3 → 3.0.0-beta.30

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 (108) hide show
  1. package/dist/controllers.d.ts +0 -2
  2. package/dist/css/stacks.css +14245 -15086
  3. package/dist/css/stacks.min.css +1 -1
  4. package/dist/js/stacks.js +0 -364
  5. package/dist/js/stacks.min.js +1 -1
  6. package/lib/atomic/backgrounds.less +67 -0
  7. package/lib/atomic/border-radius.less +38 -0
  8. package/lib/atomic/borders.less +73 -0
  9. package/lib/atomic/box-shadow.less +29 -0
  10. package/lib/atomic/box-sizing.less +3 -0
  11. package/lib/atomic/current-color.less +2 -0
  12. package/lib/atomic/cursors.less +8 -0
  13. package/lib/atomic/display.less +15 -0
  14. package/lib/atomic/flex.less +6 -34
  15. package/lib/atomic/floats.less +20 -0
  16. package/lib/atomic/gap.less +2 -0
  17. package/lib/atomic/grid.less +2 -0
  18. package/lib/atomic/height.less +22 -0
  19. package/lib/atomic/interactivity.less +45 -0
  20. package/lib/atomic/lists.less +29 -0
  21. package/lib/atomic/margin.less +48 -0
  22. package/lib/atomic/object-fit.less +9 -0
  23. package/lib/atomic/opacity.less +54 -0
  24. package/lib/atomic/outline.less +11 -0
  25. package/lib/atomic/overflow.less +17 -0
  26. package/lib/atomic/padding.less +12 -0
  27. package/lib/atomic/positioning.less +41 -0
  28. package/lib/atomic/sizing.less +51 -0
  29. package/lib/atomic/transitions.less +20 -0
  30. package/lib/atomic/truncation.less +58 -0
  31. package/lib/atomic/typography.less +71 -137
  32. package/lib/atomic/vertical-alignment.less +9 -0
  33. package/lib/atomic/visibility.less +18 -0
  34. package/lib/atomic/width.less +27 -0
  35. package/lib/atomic/z-index.less +12 -0
  36. package/lib/base/body.less +2 -4
  37. package/lib/base/configuration-static.less +3 -3
  38. package/lib/base/internal.less +3 -5
  39. package/lib/base/reset-normalize.less +3 -3
  40. package/lib/components/activity-indicator/activity-indicator.less +4 -20
  41. package/lib/components/anchor/anchor.less +28 -39
  42. package/lib/components/avatar/avatar.less +20 -19
  43. package/lib/components/badge/badge.less +227 -167
  44. package/lib/components/banner/banner.less +12 -11
  45. package/lib/components/bling/bling.less +47 -10
  46. package/lib/components/button/button.less +300 -380
  47. package/lib/components/checkbox_radio/checkbox_radio.less +195 -113
  48. package/lib/components/code-block/code-block.fixtures.ts +2 -2
  49. package/lib/components/code-block/code-block.less +2 -3
  50. package/lib/components/description/description.less +17 -2
  51. package/lib/components/empty-state/empty-state.less +17 -6
  52. package/lib/components/form-group/form-group.less +38 -0
  53. package/lib/components/input-fill/input-fill.less +3 -3
  54. package/lib/components/input-icon/input-icon.less +3 -3
  55. package/lib/components/input-message/input-message.less +1 -0
  56. package/lib/components/input_textarea/input_textarea.less +71 -58
  57. package/lib/components/label/label.less +12 -56
  58. package/lib/components/link/link.less +44 -98
  59. package/lib/components/loader/loader.less +88 -0
  60. package/lib/components/menu/menu.less +89 -19
  61. package/lib/components/modal/modal.less +10 -10
  62. package/lib/components/navigation/navigation.less +77 -42
  63. package/lib/components/notice/notice.less +90 -75
  64. package/lib/components/pagination/pagination.less +50 -42
  65. package/lib/components/popover/popover.less +9 -11
  66. package/lib/components/post-summary/post-summary.less +225 -385
  67. package/lib/components/prose/prose.less +49 -35
  68. package/lib/components/select/select.less +46 -41
  69. package/lib/components/sidebar-widget/sidebar-widget.less +26 -196
  70. package/lib/components/table/table.less +48 -22
  71. package/lib/components/tag/tag.less +25 -6
  72. package/lib/components/toast/toast.less +4 -2
  73. package/lib/components/toggle-switch/toggle-switch.less +15 -19
  74. package/lib/components/user-card/user-card.less +129 -92
  75. package/lib/components/vote/vote.less +134 -0
  76. package/lib/controllers.ts +0 -2
  77. package/lib/exports/color-sets.less +108 -81
  78. package/lib/exports/constants-helpers.less +9 -13
  79. package/lib/exports/constants-type.less +18 -36
  80. package/lib/exports/mixins.less +92 -272
  81. package/lib/index.ts +0 -4
  82. package/lib/stacks-static.less +44 -30
  83. package/lib/test/visual-test-utils.ts +42 -10
  84. package/lib/tsconfig.json +1 -1
  85. package/package.json +1 -1
  86. package/dist/components/expandable/expandable.d.ts +0 -17
  87. package/dist/components/uploader/uploader.d.ts +0 -48
  88. package/lib/atomic/border.less +0 -121
  89. package/lib/atomic/misc.less +0 -374
  90. package/lib/atomic/spacing.less +0 -98
  91. package/lib/atomic/width-height.less +0 -194
  92. package/lib/components/block-link/block-link.less +0 -82
  93. package/lib/components/breadcrumbs/breadcrumbs.less +0 -41
  94. package/lib/components/button-group/button-group.less +0 -81
  95. package/lib/components/card/card.less +0 -37
  96. package/lib/components/check-control/check-control.less +0 -17
  97. package/lib/components/check-group/check-group.less +0 -19
  98. package/lib/components/expandable/expandable.less +0 -119
  99. package/lib/components/expandable/expandable.ts +0 -238
  100. package/lib/components/link-preview/link-preview.less +0 -148
  101. package/lib/components/page-title/page-title.less +0 -51
  102. package/lib/components/progress-bar/progress-bar.less +0 -292
  103. package/lib/components/skeleton/skeleton.less +0 -73
  104. package/lib/components/spinner/spinner.less +0 -103
  105. package/lib/components/topbar/topbar.less +0 -553
  106. package/lib/components/uploader/uploader.less +0 -205
  107. package/lib/components/uploader/uploader.ts +0 -207
  108. package/lib/exports/spacing-mixins.less +0 -67
@@ -1,17 +1,8 @@
1
- //
2
- // STACK OVERFLOW
3
- // TYPOGRAPHY
4
- //
5
- // This CSS comes from Stacks, our CSS & Pattern library for rapidly building
6
- // Stack Overflow. For documentation of all these classes and how to contribute,
7
- // visit https://stackoverflow.design/
8
- //
9
- // TABLE OF CONTENTS
10
- // • ATOMIC CLASSES
11
- //
12
- // ============================================================================
13
- // $ TYPE RESETS
14
- // ----------------------------------------------------------------------------
1
+ @import (reference) "../exports/constants-helpers.less";
2
+ @import (reference) "../base/configuration-static.less";
3
+ @import (reference) "../base/internal.less";
4
+
5
+ // TYPE RESETS
15
6
  h1,
16
7
  h2,
17
8
  h3,
@@ -22,23 +13,59 @@ p {
22
13
  margin-top: 0;
23
14
  }
24
15
 
25
- // ============================================================================
26
- // $ TEXT SIZES
27
- // ----------------------------------------------------------------------------
28
- // Declare font sizes
29
- .fs-display4 { font-size: var(--fs-display4) !important; }
30
- .fs-display3 { font-size: var(--fs-display3) !important; }
31
- .fs-display2 { font-size: var(--fs-display2) !important; }
32
- .fs-display1 { font-size: var(--fs-display1) !important; }
33
- .fs-headline2 { font-size: var(--fs-headline2) !important; }
34
- .fs-headline1 { font-size: var(--fs-headline1) !important; }
35
- .fs-title { font-size: var(--fs-title) !important; }
36
- .fs-subheading { font-size: var(--fs-subheading) !important; }
37
- .fs-body3 { font-size: var(--fs-body3) !important; }
38
- .fs-body2 { font-size: var(--fs-body2) !important; }
39
- .fs-body1 { font-size: var(--fs-body1) !important; }
40
- .fs-caption { font-size: var(--fs-caption) !important; }
41
- .fs-fine { font-size: var(--fs-fine) !important; }
16
+ // TEXT SIZES
17
+ .fs-display4 {
18
+ font-size: var(--fs-display4) !important;
19
+ line-height: 1.18;
20
+ }
21
+ .fs-display3 {
22
+ font-size: var(--fs-display3) !important;
23
+ line-height: 1.20;
24
+ }
25
+ .fs-display2 {
26
+ font-size: var(--fs-display2) !important;
27
+ line-height: 1.28;
28
+ }
29
+ .fs-display1 {
30
+ font-size: var(--fs-display1) !important;
31
+ line-height: 1.34;
32
+ }
33
+ .fs-headline2 {
34
+ font-size: var(--fs-headline2) !important;
35
+ line-height: 1.40;
36
+ }
37
+ .fs-headline1 {
38
+ font-size: var(--fs-headline1) !important;
39
+ line-height: 1.40;
40
+ }
41
+ .fs-title {
42
+ font-size: var(--fs-title) !important;
43
+ line-height: 1.40;
44
+ }
45
+ .fs-subheading {
46
+ font-size: var(--fs-subheading) !important;
47
+ line-height: 1.40;
48
+ }
49
+ .fs-body3 {
50
+ font-size: var(--fs-body3) !important;
51
+ line-height: 1.40;
52
+ }
53
+ .fs-body2 {
54
+ font-size: var(--fs-body2) !important;
55
+ line-height: 1.40;
56
+ }
57
+ .fs-body1 {
58
+ font-size: var(--fs-body1) !important;
59
+ line-height: 1.40;
60
+ }
61
+ .fs-caption {
62
+ font-size: var(--fs-caption) !important;
63
+ line-height: 1.40;
64
+ }
65
+ .fs-fine {
66
+ font-size: var(--fs-fine) !important;
67
+ line-height: 1.36;
68
+ }
42
69
 
43
70
  #stacks-internals #screen-sm({
44
71
  .fs-display4 { font-size: calc(var(--fs-display4) * .43) !important; } // 43px
@@ -53,9 +80,7 @@ p {
53
80
  .fs-body2 { font-size: calc(var(--fs-body2) * .9374) !important; } // ~15px
54
81
  }, @force-selector: true);
55
82
 
56
- // ============================================================================
57
- // $ LINE HEIGHTS
58
- // ----------------------------------------------------------------------------
83
+ // LINE HEIGHTS
59
84
  .lh-xs { line-height: var(--lh-xs) !important; }
60
85
  .lh-sm { line-height: var(--lh-sm) !important; }
61
86
  .lh-md { line-height: var(--lh-md) !important; }
@@ -64,100 +89,42 @@ p {
64
89
  .lh-xxl { line-height: var(--lh-xxl) !important; }
65
90
  .lh-unset { line-height: initial !important; }
66
91
 
67
- // ============================================================================
68
- // $$ TEXT STYLES & UTILITIES
69
- // ----------------------------------------------------------------------------
70
- // -- Font Family
92
+ // TEXT STYLES & UTILITIES
93
+ // Font Family
71
94
  .ff-sans { font-family: var(--ff-sans) !important; }
72
95
  .ff-serif { font-family: var(--ff-serif) !important; }
73
96
  .ff-mono { font-family: var(--ff-mono) !important; }
74
97
  .ff-inherit { font-family: inherit !important; }
75
98
 
76
- // -- Font Weight
99
+ // Font Weight
77
100
  .fw-normal { font-weight: 400 !important; }
78
101
  .fw-medium { font-weight: 500 !important; }
79
102
  .fw-bold { font-weight: 600 !important; }
80
103
 
81
- // -- Font Styles
104
+ // Font Styles
82
105
  .fs-normal { font-style: normal !important; }
83
106
  .fs-italic { font-style: italic !important; }
84
107
  .fs-unset { font-style: unset !important; }
85
108
 
86
- // -- Text Align
109
+ // Text Align
87
110
  #stacks-internals #responsify('.ta-left', { text-align: left !important; });
88
111
  #stacks-internals #responsify('.ta-center', { text-align: center !important; });
89
112
  #stacks-internals #responsify('.ta-right', { text-align: right !important; });
90
113
  .ta-justify { text-align: justify !important; }
91
114
  .ta-unset { text-align: unset !important; }
92
115
 
93
- // -- Text Decoration
116
+ // Text Decoration
94
117
  .td-none { text-decoration: none !important; }
95
118
  .td-underline { text-decoration: underline !important; }
96
119
 
97
- // -- Text Transform
120
+ // Text Transform
98
121
  .tt-capitalize { text-transform: capitalize !important; }
99
122
  .tt-lowercase { text-transform: lowercase !important; }
100
123
  .tt-uppercase { text-transform: uppercase !important; }
101
124
  .tt-none { text-transform: none !important; }
102
125
  .tt-unset { text-transform: unset !important; }
103
126
 
104
- // -- Text Truncate
105
- .truncate {
106
- overflow: hidden;
107
- max-width: 100%;
108
- text-overflow: ellipsis !important;
109
- white-space: nowrap;
110
- }
111
-
112
- .v-truncate1 {
113
- .truncation(1);
114
- }
115
-
116
- .v-truncate2 {
117
- .truncation(2);
118
- }
119
-
120
- .v-truncate3 {
121
- .truncation(3);
122
- }
123
-
124
- .v-truncate4 {
125
- .truncation(4);
126
- }
127
-
128
- .v-truncate5 {
129
- .truncation(5);
130
- }
131
-
132
- .truncation(@count) {
133
- // Despite these all being webkit-specific properties, this works across
134
- // Safari, Chrome, Edge, and Firefox.
135
- display: -webkit-box;
136
- -webkit-line-clamp: @count;
137
- -webkit-box-orient: vertical;
138
- overflow: hidden;
139
- }
140
-
141
- .v-truncate-fade {
142
- overflow: hidden;
143
- -webkit-mask-image: linear-gradient(180deg, #000 calc(var(--lh-md) * 9em), transparent);
144
- mask-image: linear-gradient(180deg, #000 calc(var(--lh-md) * 9em), transparent);
145
- max-height: calc(var(--lh-md) * 12em);
146
-
147
- &.v-truncate-fade__sm {
148
- -webkit-mask-image: linear-gradient(180deg, #000 calc(var(--lh-md) * 3em), transparent);
149
- mask-image: linear-gradient(180deg, #000 calc(var(--lh-md) * 3em), transparent);
150
- max-height: calc(var(--lh-md) * 6em);
151
- }
152
-
153
- &.v-truncate-fade__lg {
154
- -webkit-mask-image: linear-gradient(180deg, #000 calc(var(--lh-md) * 21em), transparent);
155
- mask-image: linear-gradient(180deg, #000 calc(var(--lh-md) * 21em), transparent);
156
- max-height: calc(var(--lh-md) * 24em);
157
- }
158
- }
159
-
160
- // -- Whitespace
127
+ // Whitespace
161
128
  .ws-normal { white-space: normal !important; }
162
129
  .ws-nowrap { white-space: nowrap !important; }
163
130
  .ws-pre { white-space: pre !important; }
@@ -165,7 +132,7 @@ p {
165
132
  .ws-pre-line { white-space: pre-line !important; }
166
133
  .ws-unset { white-space: unset !important; }
167
134
 
168
- // -- Word Break
135
+ // Word Break
169
136
  .wb-normal { word-break: normal !important; }
170
137
  .wb-break-all { word-break: break-all !important; }
171
138
  .wb-keep-all { word-break: keep-all !important; }
@@ -173,7 +140,7 @@ p {
173
140
  .wb-initial { word-break: initial !important; }
174
141
  .wb-unset { word-break: unset !important; }
175
142
 
176
- // -- Overflow Wrap
143
+ // Overflow Wrap
177
144
  .ow-normal {
178
145
  overflow-wrap: normal !important;
179
146
  }
@@ -198,7 +165,7 @@ p {
198
165
  overflow-wrap: unset !important;
199
166
  }
200
167
 
201
- // -- Hyphenation
168
+ // Hyphenation
202
169
  .hyphens-none { hyphens: none !important; }
203
170
  .hyphens-auto {
204
171
  -ms-hyphens: auto !important;
@@ -207,7 +174,7 @@ p {
207
174
  }
208
175
  .hyphens-unset { hyphens: unset !important; }
209
176
 
210
- // -- Break word
177
+ // Break word
211
178
  .break-word {
212
179
  // DEPRECATED: https://developer.mozilla.org/en-US/docs/Web/CSS/word-break
213
180
  /* stylelint-disable-next-line declaration-property-value-keyword-no-deprecated */
@@ -218,36 +185,3 @@ p {
218
185
  -ms-hyphens: auto !important;
219
186
  hyphens: auto !important;
220
187
  }
221
-
222
- // ============================================================================
223
- // $ LISTS
224
- // ----------------------------------------------------------------------------
225
- ul,
226
- ol {
227
- padding: 0;
228
- margin-left: 2.8em;
229
-
230
- ul,
231
- ol {
232
- margin-bottom: 0;
233
- }
234
- }
235
-
236
- ul { list-style-type: disc; }
237
- ol { list-style-type: decimal; }
238
-
239
- .list-reset {
240
- list-style: none;
241
- margin: 0;
242
- padding: 0;
243
- }
244
-
245
- // -- List Style Types
246
- .list-ls-none { list-style: none !important; }
247
- .list-ls-disc { list-style-type: disc !important; }
248
- .list-ls-decimal { list-style-type: decimal !important; }
249
- .list-ls-unset { list-style-type: unset !important; }
250
-
251
- // -- List Position
252
- .list-inside { list-style-position: inside !important; }
253
- .list-outside { list-style-position: outside !important; }
@@ -0,0 +1,9 @@
1
+ .va-baseline { vertical-align: baseline !important; }
2
+ .va-bottom { vertical-align: bottom !important; }
3
+ .va-middle { vertical-align: middle !important; }
4
+ .va-sub { vertical-align: sub !important; }
5
+ .va-super { vertical-align: super !important; }
6
+ .va-text-bottom { vertical-align: text-bottom !important; }
7
+ .va-text-top { vertical-align: text-top !important; }
8
+ .va-top { vertical-align: top !important; }
9
+ .va-unset { vertical-align: unset !important; }
@@ -0,0 +1,18 @@
1
+
2
+ .v-visible { visibility: visible !important; }
3
+ .v-hidden { visibility: hidden !important; }
4
+ .v-visible-sr {
5
+ // Borrowed from Wordpress
6
+ // https://make.wordpress.org/accessibility/2015/02/09/hiding-text-for-screen-readers-with-wordpress-core/
7
+ border: 0;
8
+ /* stylelint-disable-next-line property-no-deprecated -- clip is kept for older browser compatibility alongside clip-path */
9
+ clip: rect(var(--su1), var(--su1), var(--su1), var(--su1));
10
+ clip-path: inset(50%);
11
+ height: var(--su1);
12
+ margin: var(--sun1);
13
+ overflow: hidden;
14
+ padding: 0;
15
+ position: absolute;
16
+ width: var(--su1);
17
+ overflow-wrap: normal;
18
+ }
@@ -0,0 +1,27 @@
1
+ @import (reference) "../base/internal.less";
2
+ @import (reference) "../exports/mixins.less";
3
+
4
+ // `width` properties
5
+ .generate-sizing('.w', width, 0 1 2 4 6 8 12 16 24 32 48 64 96 128, 'px');
6
+ .generate-su-sizing('.ws', width); // Static sizing units
7
+ .generate-sizing('.w', width, 10 20 30 40 60 70 80 90, 'percent');
8
+ .generate-sizing('.w', width, 25 50 75 100, 'percent', true); // responsive
9
+ #stacks-internals #responsify('.w33', { width: calc(100% / 3) !important; });
10
+ #stacks-internals #responsify('.w66', { width: calc(100% / 3 * 2) !important; });
11
+ #stacks-internals #responsify('.w-auto', { width: auto !important; });
12
+ #stacks-internals #responsify('.w-screen', { width: 100vw !important; });
13
+
14
+ // `min-width` properties
15
+ .generate-sizing('.wmn', min-width, 0, 'px');
16
+ .generate-su-sizing('.wmn', min-width); // Static sizing units
17
+ .generate-sizing('.wmn', min-width, 25 50 75, 'percent');
18
+ #stacks-internals #responsify('.wmn100', { min-width: 100% !important; });
19
+ #stacks-internals #responsify('.wmn-initial', { min-width: initial !important; });
20
+ #stacks-internals #responsify('.wmn-screen', { min-width: 100vw !important; });
21
+
22
+ // `max-width` properties
23
+ .generate-su-sizing('.wmx', max-width); // Static sizing units
24
+ .generate-sizing('.wmx', max-width, 25 50 75, 'percent');
25
+ #stacks-internals #responsify('.wmx100', { max-width: 100% !important; });
26
+ #stacks-internals #responsify('.wmx-initial', { max-width: initial !important; });
27
+ #stacks-internals #responsify('.wmx-screen', { max-width: 100vw !important; });
@@ -0,0 +1,12 @@
1
+ .z-hide { z-index: var(--zi-hide) !important; }
2
+ .z-base { z-index: var(--zi-base) !important; }
3
+ .z-active { z-index: var(--zi-active) !important; }
4
+ .z-selected { z-index: var(--zi-selected) !important; }
5
+ .z-dropdown { z-index: var(--zi-dropdown) !important; }
6
+ .z-popover { z-index: var(--zi-popovers) !important; }
7
+ .z-tooltip { z-index: var(--zi-tooltips) !important; }
8
+ .z-banner { z-index: var(--zi-banners) !important; }
9
+ .z-nav { z-index: var(--zi-navigation) !important; }
10
+ .z-nav-fixed { z-index: var(--zi-navigation-fixed) !important; }
11
+ .z-modal { z-index: var(--zi-modals) !important; }
12
+ .z-modal-bg { z-index: var(--zi-modals-background) !important; }
@@ -20,20 +20,18 @@ html,
20
20
  body {
21
21
  color: var(--theme-body-font-color, var(--black-600));
22
22
  font-family: var(--theme-body-font-family);
23
- font-size: var(--fs-base);
24
23
  line-height: var(--lh-base);
25
24
  }
26
25
 
27
26
  body {
27
+ background-color: var(--theme-background-color, var(--white));
28
28
  box-sizing: border-box;
29
+ font-size: var(--fs-body1);
29
30
  min-height: 100%;
30
- background-color: var(--theme-background-color, var(--white));
31
31
 
32
32
  *,
33
33
  *:before,
34
34
  *:after {
35
35
  box-sizing: inherit;
36
36
  }
37
-
38
- // TODO SHINE set max width here
39
37
  }
@@ -13,14 +13,14 @@
13
13
  // legal options are `meyer` for the Eric Meyer reset, and `none` if no CSS reset should be compiled in.
14
14
  //
15
15
  //
16
- // #stacks-config-static { @breakpoints: 1264px, 980px, 640px; }
16
+ // #stacks-config-static { @breakpoints: 92.25rem, 71.875rem, 48.75rem; }
17
17
  //
18
18
  // @breakpoints is a list of values "optional_selector1, large_breakpoint1, medium_breakpoint1, small_breakpoint1, optional_selector2, ..."
19
19
  //
20
20
  // Example:
21
21
  //
22
22
  // @breakpoints:
23
- // 1264px, 980px, 640px,
23
+ // 92.25rem, 71.875rem, 48.75rem,
24
24
  // 'html.smaller_breakpoints', 1164px, 880px, 540px,
25
25
  // 'html.even_smaller_breakpoints', 200px, 100px, 50px;
26
26
  //
@@ -37,7 +37,7 @@
37
37
  // ...
38
38
  // </html>
39
39
  //
40
- // With the example @breakpoints setting from above, this <div> will be hidden below 1264px even though the smaller_breakpoints class
40
+ // With the example @breakpoints setting from above, this <div> will be hidden below 92.25rem even though the smaller_breakpoints class
41
41
  // is on the root element, because the selector-free breakpoint group still applies.
42
42
  //
43
43
  // Any selector, if given, MUST select the root (html) element.
@@ -164,12 +164,10 @@
164
164
  // ---------------------------------------------------------------------------
165
165
 
166
166
 
167
- #build-classes(@class-prefix, @rules, @values) {
168
- #stacks-internals #build-classes-with-start-index(@class-prefix, @rules, 1, false, @values);
169
- }
170
- #build-classes(responsive, @class-prefix, @rules, @values) {
171
- #stacks-internals #build-classes-with-start-index(@class-prefix, @rules, 1, true, @values);
167
+ #build-classes(@class-prefix, @rules, @values, @responsive: false) {
168
+ #stacks-internals #build-classes-with-start-index(@class-prefix, @rules, 1, @responsive, @values);
172
169
  }
170
+
173
171
  #build-classes-with-start-index(@class-prefix, @rules, @start-index, @responsive, @values) when (@start-index <= length(@values)) {
174
172
  @val: extract(@values, @start-index);
175
173
  & when (isnumber(@val)) {
@@ -69,7 +69,7 @@ main { /* 1 */
69
69
  */
70
70
 
71
71
  figure {
72
- margin: 1em calc(var(--su-static32) + var(--su-static8)); // 1em 40px
72
+ margin: 1em calc(var(--su32) + var(--su8)); // 1em 40px
73
73
  }
74
74
 
75
75
  /**
@@ -303,7 +303,7 @@ button:-moz-focusring,
303
303
  [type="button"]:-moz-focusring,
304
304
  [type="reset"]:-moz-focusring,
305
305
  [type="submit"]:-moz-focusring {
306
- outline: var(--su-static1) dotted ButtonText;
306
+ outline: var(--su1) dotted ButtonText;
307
307
  }
308
308
 
309
309
  /**
@@ -375,7 +375,7 @@ textarea {
375
375
 
376
376
  [type="search"] {
377
377
  -webkit-appearance: textfield; /* 1 */
378
- outline-offset: calc(var(--su-static2) * -1); // -2px - /* 2 */
378
+ outline-offset: var(--sun2);
379
379
  }
380
380
 
381
381
  /**
@@ -1,41 +1,25 @@
1
1
  .s-activity-indicator {
2
2
  --_ai-bg: var(--pink-400);
3
3
  --_ai-fc: var(--white);
4
- --_ai-min-size: var(--su-static16);
5
- --_ai-p: 0 calc(var(--su-static4) - var(--su-static1));
6
-
7
- .highcontrast-mode({
8
- --_ai-bg: var(--theme-secondary-500);
9
- });
4
+ --_ai-min-size: var(--su16);
5
+ --_ai-p: 0 var(--su3);
10
6
 
11
7
  // VARIANTS
12
8
  &&__danger {
13
9
  --_ai-bg: var(--red-400);
14
-
15
- .highcontrast-mode({
16
- --_ai-bg: var(--red-500);
17
- });
18
10
  }
19
11
 
20
12
  &&__success {
21
13
  --_ai-bg: var(--green-400);
22
14
 
23
- .highcontrast-mode({
24
- --_ai-bg: var(--green-500);
25
- });
26
15
  }
27
16
 
28
17
  &&__warning {
29
18
  --_ai-bg: var(--yellow-400);
30
-
31
- .highcontrast-mode({
32
- --_ai-bg: var(--yellow-500); // needs to be here to override default high contrast
33
- --_ai-fc: var(--white);
34
- });
35
19
  }
36
20
 
37
21
  &&__sm {
38
- --_ai-min-size: calc(var(--su-static8) + var(--su-static2));
22
+ --_ai-min-size: calc(var(--su8) + var(--su2));
39
23
  --_ai-p: 0;
40
24
  }
41
25
 
@@ -45,7 +29,7 @@
45
29
  min-height: var(--_ai-min-size);
46
30
  padding: var(--_ai-p);
47
31
 
48
- border-radius: 1000px;
32
+ border-radius: var(--br-pill);
49
33
  display: inline-flex;
50
34
  font-size: var(--fs-fine);
51
35
  font-weight: 600;
@@ -1,9 +1,14 @@
1
1
  .s-anchors {
2
- // CUSTOM PROPERTIED DEFINED WITHIN VARIANTS
3
- // --_an-a-fc
4
- // --_an-a-fc-hover
5
- // --_an-a-fc-visited
6
- // --_an-a-fc-hover-visited
2
+ --_an-a-fc: var(--theme-link-color, var(--black-600));
3
+ --_an-a-fc-hover: var(--theme-link-color-hover, var(--blue-400));
4
+ --_an-a-fc-visited: var(--theme-link-color-visited, var(--black-400));
5
+
6
+ // CONTEXTUAL STYLES
7
+ .highcontrast-mode({
8
+ a[href] {
9
+ text-decoration: underline;
10
+ }
11
+ });
7
12
 
8
13
  // MODIFIERS
9
14
  &&__underlined {
@@ -14,30 +19,15 @@
14
19
  }
15
20
 
16
21
  // VARIANTS
17
- &&__danger,
18
- &&__grayscale,
19
- &&__inherit,
20
- &&__muted {
21
- --_an-a-fc-hover-visited: var(--_an-a-fc-hover);
22
- }
23
-
24
22
  &&__danger {
25
23
  --_an-a-fc: var(--red-400);
26
24
  --_an-a-fc-hover: var(--red-500);
27
25
  --_an-a-fc-visited: var(--red-600);
28
26
  }
29
27
 
30
- &&__default {
31
- --_an-a-fc: var(--theme-link-color, var(--theme-secondary));
32
- --_an-a-fc-hover: var(--theme-link-color-hover, var(--theme-secondary-500));
33
- --_an-a-fc-visited: var(--theme-link-color-visited, var(--purple-500));
34
- --_an-a-fc-hover-visited: var(--theme-link-color-hover, var(--purple-600));
35
- }
36
-
37
28
  &&__grayscale {
38
29
  --_an-a-fc: var(--black-500);
39
30
  --_an-a-fc-hover: var(--black-600);
40
- --_an-a-fc-visited: var(--black-400);
41
31
  }
42
32
 
43
33
  &&__inherit {
@@ -55,31 +45,30 @@
55
45
 
56
46
  &&__muted {
57
47
  --_an-a-fc: var(--black-400);
58
- --_an-a-fc-hover: var(--black-500);
59
- --_an-a-fc-visited: var(--black-600);
60
48
  }
61
49
 
62
- &&__danger,
63
- &&__default,
64
- &&__grayscale,
65
- &&__inherit,
66
- &&__muted {
67
- a:not(.s-link),
68
- .s-btn.s-btn__link {
69
- &:active,
70
- &:hover {
71
- color: var(--_an-a-fc-hover);
72
- }
50
+ p& > a[href],
51
+ p > a[href] {
52
+ text-decoration: underline;
53
+ }
73
54
 
74
- color: var(--_an-a-fc, inherit);
55
+ a:not(.s-link),
56
+ .s-btn.s-btn__link {
57
+ &:active,
58
+ &:hover {
59
+ color: var(--_an-a-fc-hover);
60
+ text-decoration: underline;
75
61
  }
76
62
 
77
- a:not(.s-link):visited {
78
- &:hover {
79
- color: var(--_an-a-fc-hover-visited, inherit);
80
- }
63
+ color: var(--_an-a-fc, inherit);
64
+ text-decoration: none;
65
+ }
81
66
 
82
- color: var(--_an-a-fc-visited, inherit);
67
+ a:not(.s-link):visited {
68
+ &:hover {
69
+ color: var(--_an-a-fc-hover, inherit);
83
70
  }
71
+
72
+ color: var(--_an-a-fc-visited, inherit);
84
73
  }
85
74
  }