@graupl/graupl 1.0.0-alpha.12 → 1.0.0-alpha.14

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 (180) hide show
  1. package/.github/workflows/codeql-analysis.yml +3 -3
  2. package/.husky/commit-msg +0 -1
  3. package/.husky/pre-commit +0 -1
  4. package/CHANGELOG.md +65 -0
  5. package/dist/base/button.css +1 -1
  6. package/dist/base/button.css.map +1 -1
  7. package/dist/base/form.css +1 -1
  8. package/dist/base/form.css.map +1 -1
  9. package/dist/base/link.css +1 -1
  10. package/dist/base/link.css.map +1 -1
  11. package/dist/base/table.css +1 -1
  12. package/dist/base/table.css.map +1 -1
  13. package/dist/base.css +1 -1
  14. package/dist/base.css.map +1 -1
  15. package/dist/component/alert.css +2 -0
  16. package/dist/component/alert.css.map +1 -0
  17. package/dist/component/card.css +2 -0
  18. package/dist/component/card.css.map +1 -0
  19. package/dist/component/carousel.css +2 -0
  20. package/dist/component/carousel.css.map +1 -0
  21. package/dist/component/input-group.css +1 -1
  22. package/dist/component/input-group.css.map +1 -1
  23. package/dist/component/menu.css +2 -0
  24. package/dist/component/menu.css.map +1 -0
  25. package/dist/component/navigation.css +2 -0
  26. package/dist/component/navigation.css.map +1 -0
  27. package/dist/component.css +1 -1
  28. package/dist/component.css.map +1 -1
  29. package/dist/graupl.css +1 -1
  30. package/dist/graupl.css.map +1 -1
  31. package/dist/layout/columns.css +1 -1
  32. package/dist/layout/columns.css.map +1 -1
  33. package/dist/layout/container.css.map +1 -1
  34. package/dist/layout/flex-columns.css +2 -0
  35. package/dist/layout/flex-columns.css.map +1 -0
  36. package/dist/layout.css +1 -1
  37. package/dist/layout.css.map +1 -1
  38. package/dist/normalize.css.map +1 -1
  39. package/dist/state/focus.css.map +1 -1
  40. package/dist/state.css.map +1 -1
  41. package/dist/theme/color.css.map +1 -1
  42. package/dist/theme/typography.css +1 -1
  43. package/dist/theme/typography.css.map +1 -1
  44. package/dist/theme.css +1 -1
  45. package/dist/theme.css.map +1 -1
  46. package/dist/utilities/alignment.css.map +1 -1
  47. package/dist/utilities/color.css.map +1 -1
  48. package/dist/utilities/display.css +1 -1
  49. package/dist/utilities/display.css.map +1 -1
  50. package/dist/utilities/flex.css.map +1 -1
  51. package/dist/utilities/height.css +2 -0
  52. package/dist/utilities/height.css.map +1 -0
  53. package/dist/utilities/inset.css.map +1 -1
  54. package/dist/utilities/justification.css.map +1 -1
  55. package/dist/utilities/list.css.map +1 -1
  56. package/dist/utilities/order.css +2 -0
  57. package/dist/utilities/order.css.map +1 -0
  58. package/dist/utilities/postion.css.map +1 -1
  59. package/dist/utilities/spacing.css +1 -1
  60. package/dist/utilities/spacing.css.map +1 -1
  61. package/dist/utilities/typography.css +1 -1
  62. package/dist/utilities/typography.css.map +1 -1
  63. package/dist/utilities/visibility.css.map +1 -1
  64. package/dist/utilities/width.css +2 -0
  65. package/dist/utilities/width.css.map +1 -0
  66. package/dist/utilities.css +1 -1
  67. package/dist/utilities.css.map +1 -1
  68. package/docs/.vitepress/config.js +39 -12
  69. package/docs/components/alert.md +130 -0
  70. package/docs/components/button.md +84 -0
  71. package/docs/components/card.md +369 -0
  72. package/docs/components/index.md +1 -0
  73. package/docs/components/inputgroup.md +159 -0
  74. package/docs/components/menu.md +326 -0
  75. package/docs/components/navigation.md +158 -0
  76. package/docs/content.md +237 -0
  77. package/docs/defaults.md +121 -0
  78. package/docs/forms.md +79 -0
  79. package/docs/functions.md +9 -0
  80. package/docs/getting-started.md +1 -0
  81. package/docs/index.md +1 -7
  82. package/docs/introduction.md +22 -2
  83. package/docs/layout.md +200 -0
  84. package/docs/mixins.md +47 -0
  85. package/docs/state.md +67 -0
  86. package/docs/theme.md +258 -0
  87. package/docs/utilities.md +357 -0
  88. package/eslint.config.js +1 -0
  89. package/index.html +760 -325
  90. package/package.json +5 -6
  91. package/scss/component/alert.scss +3 -0
  92. package/scss/component/card.scss +3 -0
  93. package/scss/component/carousel.scss +3 -0
  94. package/scss/component/menu.scss +3 -0
  95. package/scss/component/navigation.scss +3 -0
  96. package/scss/layout/flex-columns.scss +3 -0
  97. package/scss/utilities/height.scss +3 -0
  98. package/scss/utilities/order.scss +3 -0
  99. package/scss/utilities/width.scss +3 -0
  100. package/src/js/alert/Alert.js +511 -0
  101. package/src/js/alert/index.js +21 -0
  102. package/src/js/carousel/Carousel.js +1376 -0
  103. package/src/js/carousel/index.js +20 -0
  104. package/src/js/domHelpers.js +37 -0
  105. package/src/js/eventHandlers.js +32 -0
  106. package/src/js/navigation.js +34 -0
  107. package/src/js/validate.js +225 -0
  108. package/src/scss/_defaults.scss +15 -1
  109. package/src/scss/base/_index.scss +1 -1
  110. package/src/scss/base/button/_defaults.scss +15 -3
  111. package/src/scss/base/button/_index.scss +80 -120
  112. package/src/scss/base/button/_mixins.scss +164 -0
  113. package/src/scss/base/button/_variables.scss +43 -11
  114. package/src/scss/base/form/_index.scss +3 -5
  115. package/src/scss/base/form/_variables.scss +8 -0
  116. package/src/scss/base/link/_defaults.scss +37 -6
  117. package/src/scss/base/link/_index.scss +73 -13
  118. package/src/scss/base/link/_variables.scss +175 -18
  119. package/src/scss/base/table/_index.scss +3 -5
  120. package/src/scss/base/table/_variables.scss +8 -0
  121. package/src/scss/component/_index.scss +6 -1
  122. package/src/scss/component/alert/_defaults.scss +49 -0
  123. package/src/scss/component/alert/_index.scss +118 -0
  124. package/src/scss/component/alert/_variables.scss +170 -0
  125. package/src/scss/component/card/_defaults.scss +32 -0
  126. package/src/scss/component/card/_index.scss +177 -0
  127. package/src/scss/component/card/_variables.scss +185 -0
  128. package/src/scss/component/carousel/_defaults.scss +43 -0
  129. package/src/scss/component/carousel/_index.scss +182 -0
  130. package/src/scss/component/carousel/_variables.scss +104 -0
  131. package/src/scss/component/input-group/_index.scss +1 -1
  132. package/src/scss/component/menu/_defaults.scss +66 -0
  133. package/src/scss/component/menu/_index.scss +305 -0
  134. package/src/scss/component/menu/_variables.scss +495 -0
  135. package/src/scss/component/navigation/_defaults.scss +29 -0
  136. package/src/scss/component/navigation/_index.scss +189 -0
  137. package/src/scss/component/navigation/_variables.scss +237 -0
  138. package/src/scss/functions/_theme.scss +16 -0
  139. package/src/scss/layout/_index.scss +2 -1
  140. package/src/scss/layout/columns/_index.scss +23 -1
  141. package/src/scss/layout/container/_index.scss +1 -1
  142. package/src/scss/layout/flex-columns/_defaults.scss +18 -0
  143. package/src/scss/layout/flex-columns/_index.scss +77 -0
  144. package/src/scss/layout/flex-columns/_variables.scss +26 -0
  145. package/src/scss/mixins/_layer.scss +2 -4
  146. package/src/scss/mixins/_media-queries.scss +8 -0
  147. package/src/scss/mixins/_visually-hidden.scss +20 -0
  148. package/src/scss/state/_index.scss +1 -1
  149. package/src/scss/state/focus/_index.scss +1 -1
  150. package/src/scss/theme/_index.scss +1 -1
  151. package/src/scss/theme/color/_index.scss +1 -1
  152. package/src/scss/theme/typography/_defaults.scss +1 -1
  153. package/src/scss/theme/typography/_index.scss +1 -1
  154. package/src/scss/theme/typography/_variables.scss +5 -2
  155. package/src/scss/utilities/_index.scss +5 -1
  156. package/src/scss/utilities/alignment/_index.scss +1 -1
  157. package/src/scss/utilities/color/_index.scss +1 -1
  158. package/src/scss/utilities/display/_defaults.scss +2 -0
  159. package/src/scss/utilities/display/_index.scss +11 -1
  160. package/src/scss/utilities/flex/_index.scss +1 -1
  161. package/src/scss/utilities/height/_defaults.scss +38 -0
  162. package/src/scss/utilities/height/_index.scss +23 -0
  163. package/src/scss/utilities/height/_variables.scss +6 -0
  164. package/src/scss/utilities/inset/_index.scss +1 -1
  165. package/src/scss/utilities/justification/_index.scss +1 -1
  166. package/src/scss/utilities/list/_index.scss +1 -1
  167. package/src/scss/utilities/order/_defaults.scss +19 -0
  168. package/src/scss/utilities/order/_index.scss +35 -0
  169. package/src/scss/utilities/order/_variables.scss +6 -0
  170. package/src/scss/utilities/position/_index.scss +1 -1
  171. package/src/scss/utilities/ratio/_defaults.scss +25 -0
  172. package/src/scss/utilities/ratio/_index.scss +34 -0
  173. package/src/scss/utilities/ratio/_variables.scss +9 -0
  174. package/src/scss/utilities/spacing/_index.scss +34 -17
  175. package/src/scss/utilities/typography/_index.scss +1 -1
  176. package/src/scss/utilities/visibility/_index.scss +1 -1
  177. package/src/scss/utilities/width/_defaults.scss +38 -0
  178. package/src/scss/utilities/width/_index.scss +23 -0
  179. package/src/scss/utilities/width/_variables.scss +6 -0
  180. package/stylelint.config.js +1 -0
@@ -0,0 +1,164 @@
1
+ // @graupl/graupl button base styles.
2
+
3
+ @use "defaults";
4
+ @use "../../defaults" as root-defaults;
5
+ @use "../../theme/color/variables" as color;
6
+ @use "variables" as *;
7
+ @use "../../mixins/layer" as *;
8
+ @use "../../mixins/media-queries" as *;
9
+ @use "../../functions/theme";
10
+ @use "sass:map";
11
+
12
+ @mixin apply-button(
13
+ $min-width: $button-min-width,
14
+ $min-height: $button-min-height,
15
+ $padding: $button-padding,
16
+ $transform: $button-transform,
17
+ $transition: $button-transition,
18
+ $border: $button-border,
19
+ $border-radius: $button-border-radius,
20
+ $font-size: $button-font-size,
21
+ $visited-transform: $button-visited-transform,
22
+ $focus-transform: $button-focus-transform,
23
+ $hover-transform: $button-hover-transform,
24
+ $active-transform: $button-active-transform,
25
+ $disabled-transform: $button-disabled-transform,
26
+ $border-color: $button-border-color,
27
+ $background: $button-background,
28
+ $color: $button-color,
29
+ $visited-border-color: $button-visited-border-color,
30
+ $visited-background: $button-visited-background,
31
+ $visited-color: $button-visited-color,
32
+ $focus-border-color: $button-focus-border-color,
33
+ $focus-background: $button-focus-background,
34
+ $focus-color: $button-focus-color,
35
+ $hover-border-color: $button-hover-border-color,
36
+ $hover-background: $button-hover-background,
37
+ $hover-color: $button-hover-color,
38
+ $active-border-color: $button-active-border-color,
39
+ $active-background: $button-active-background,
40
+ $active-color: $button-active-color,
41
+ $disabled-border-color: $button-disabled-border-color,
42
+ $disabled-background: $button-disabled-background,
43
+ $disabled-color: $button-disabled-color
44
+ ) {
45
+ @include layer(base) {
46
+ display: flex;
47
+ align-items: center;
48
+ justify-content: center;
49
+ min-width: $min-width;
50
+ min-height: $min-height;
51
+ padding: $padding;
52
+ transform: $transform;
53
+ transition: $transition;
54
+ border: $border;
55
+ border-radius: $border-radius;
56
+ font-size: $font-size;
57
+ cursor: pointer;
58
+
59
+ &:visited,
60
+ &#{defaults.$button-visited-selector} {
61
+ --#{root-defaults.$prefix}-button-transform: #{$visited-transform};
62
+ }
63
+
64
+ &:focus-visible,
65
+ &#{defaults.$button-focus-selector} {
66
+ --#{root-defaults.$prefix}-button-transform: #{$focus-transform};
67
+ }
68
+
69
+ &:hover,
70
+ &#{defaults.$button-hover-selector} {
71
+ --#{root-defaults.$prefix}-button-transform: #{$hover-transform};
72
+ }
73
+
74
+ &:active,
75
+ &#{defaults.$button-active-selector} {
76
+ --#{root-defaults.$prefix}-button-transform: #{$active-transform};
77
+ }
78
+
79
+ &:disabled,
80
+ &[disabled],
81
+ &#{defaults.$button-disabled-selector} {
82
+ cursor: not-allowed;
83
+
84
+ &,
85
+ &:visited,
86
+ &#{defaults.$button-visited-selector},
87
+ &:focus-visible,
88
+ &#{defaults.$button-focus-selector},
89
+ &:hover,
90
+ &#{defaults.$button-hover-selector},
91
+ &:active,
92
+ &#{defaults.$button-active-selector} {
93
+ --#{root-defaults.$prefix}-button-transform: #{$disabled-transform};
94
+ }
95
+ }
96
+
97
+ @include animation-off {
98
+ --#{root-defaults.$prefix}-button-transition: #{$button-transition-reduced-motion};
99
+ }
100
+ }
101
+
102
+ @include layer(theme) {
103
+ border-color: $border-color;
104
+ background: $background;
105
+ color: $color;
106
+
107
+ @each $color, $map in color.$theme-active {
108
+ &#{defaults.$button-theme-selector-prefix}#{$color} {
109
+ @each $prop, $shade in defaults.$button-state-theme-map {
110
+ --#{root-defaults.$prefix}-button-#{$prop}: #{theme.get(
111
+ $color,
112
+ $shade
113
+ )};
114
+ }
115
+ }
116
+ }
117
+
118
+ &:visited,
119
+ &#{defaults.$button-visited-selector} {
120
+ --#{root-defaults.$prefix}-button-border-color: #{$visited-border-color};
121
+ --#{root-defaults.$prefix}-button-background: #{$visited-background};
122
+ --#{root-defaults.$prefix}-button-color: #{$visited-color};
123
+ }
124
+
125
+ &:focus-visible,
126
+ &#{defaults.$button-focus-selector} {
127
+ --#{root-defaults.$prefix}-button-border-color: #{$focus-border-color};
128
+ --#{root-defaults.$prefix}-button-background: #{$focus-background};
129
+ --#{root-defaults.$prefix}-button-color: #{$focus-color};
130
+ }
131
+
132
+ &:hover,
133
+ &#{defaults.$button-hover-selector} {
134
+ --#{root-defaults.$prefix}-button-border-color: #{$hover-border-color};
135
+ --#{root-defaults.$prefix}-button-background: #{$hover-background};
136
+ --#{root-defaults.$prefix}-button-color: #{$hover-color};
137
+ }
138
+
139
+ &:active,
140
+ &#{defaults.$button-active-selector} {
141
+ --#{root-defaults.$prefix}-button-border-color: #{$active-border-color};
142
+ --#{root-defaults.$prefix}-button-background: #{$active-background};
143
+ --#{root-defaults.$prefix}-button-color: #{$active-color};
144
+ }
145
+
146
+ &:disabled,
147
+ &[disabled],
148
+ &#{defaults.$button-disabled-selector} {
149
+ &,
150
+ &:visited,
151
+ &#{defaults.$button-visited-selector},
152
+ &:focus-visible,
153
+ &#{defaults.$button-focus-selector},
154
+ &:hover,
155
+ &#{defaults.$button-hover-selector},
156
+ &:active,
157
+ &#{defaults.$button-active-selector} {
158
+ --#{root-defaults.$prefix}-button-border-color: #{$disabled-border-color};
159
+ --#{root-defaults.$prefix}-button-background: #{$disabled-background};
160
+ --#{root-defaults.$prefix}-button-color: #{$disabled-color};
161
+ }
162
+ }
163
+ }
164
+ }
@@ -53,6 +53,14 @@ $button-transform: var(
53
53
  --#{root-defaults.$prefix}-button-transform,
54
54
  #{defaults.$button-transform}
55
55
  );
56
+ $button-visited-transform: var(
57
+ --#{root-defaults.$prefix}-button-visited-transform,
58
+ #{defaults.$button-visited-transform}
59
+ );
60
+ $button-focus-transform: var(
61
+ --#{root-defaults.$prefix}-button-focus-transform,
62
+ #{defaults.$button-focus-transform}
63
+ );
56
64
  $button-hover-transform: var(
57
65
  --#{root-defaults.$prefix}-button-hover-transform,
58
66
  #{defaults.$button-hover-transform}
@@ -61,13 +69,9 @@ $button-active-transform: var(
61
69
  --#{root-defaults.$prefix}-button-active-transform,
62
70
  #{defaults.$button-active-transform}
63
71
  );
64
- $button-hover-transform-reduced-motion: var(
65
- --#{root-defaults.$prefix}-button-hover-transform-reduced-motion,
66
- #{defaults.$button-hover-transform-reduced-motion}
67
- );
68
- $button-active-transform-reduced-motion: var(
69
- --#{root-defaults.$prefix}-button-active-transform-reduced-motion,
70
- #{defaults.$button-active-transform-reduced-motion}
72
+ $button-disabled-transform: var(
73
+ --#{root-defaults.$prefix}-button-disabled-transform,
74
+ #{defaults.$button-disabled-transform}
71
75
  );
72
76
 
73
77
  // Background properties.
@@ -75,6 +79,14 @@ $button-background: var(
75
79
  --#{root-defaults.$prefix}-button-background,
76
80
  #{color.$root-background}
77
81
  );
82
+ $button-visited-background: var(
83
+ --#{root-defaults.$prefix}-button-visited-background,
84
+ #{color.$root-background}
85
+ );
86
+ $button-focus-background: var(
87
+ --#{root-defaults.$prefix}-button-focus-background,
88
+ #{color.$root-background}
89
+ );
78
90
  $button-hover-background: var(
79
91
  --#{root-defaults.$prefix}-button-hover-background,
80
92
  #{theme.get(primary, 900)}
@@ -91,7 +103,15 @@ $button-disabled-background: var(
91
103
  // Text properties.
92
104
  $button-color: var(
93
105
  --#{root-defaults.$prefix}-button-color,
94
- #{theme.get(primary, 900)}
106
+ #{color.$root-color}
107
+ );
108
+ $button-visited-color: var(
109
+ --#{root-defaults.$prefix}-button-visited-color,
110
+ #{color.$root-color}
111
+ );
112
+ $button-focus-color: var(
113
+ --#{root-defaults.$prefix}-button-focus-color,
114
+ #{color.$root-color}
95
115
  );
96
116
  $button-hover-color: var(
97
117
  --#{root-defaults.$prefix}-button-hover-color,
@@ -115,6 +135,10 @@ $button-border-style: var(
115
135
  --#{root-defaults.$prefix}-botton-border-style,
116
136
  #{root-variables.$border-style}
117
137
  );
138
+ $button-border: var(
139
+ --#{root-defaults.$prefix}-button-border,
140
+ #{$button-border-width} #{$button-border-style}
141
+ );
118
142
  $button-border-radius: var(
119
143
  --#{root-defaults.$prefix}-button-border-radius,
120
144
  #{root-variables.$border-radius}
@@ -123,15 +147,23 @@ $button-border-radius: var(
123
147
  // Border colour properties.
124
148
  $button-border-color: var(
125
149
  --#{root-defaults.$prefix}-button-border-color,
126
- #{theme.get(primary, 900)}
150
+ #{color.$root-color}
151
+ );
152
+ $button-visited-border-color: var(
153
+ --#{root-defaults.$prefix}-button-visited-border-color,
154
+ #{color.$root-color}
155
+ );
156
+ $button-focus-border-color: var(
157
+ --#{root-defaults.$prefix}-button-focus-border-color,
158
+ #{color.$root-color}
127
159
  );
128
160
  $button-hover-border-color: var(
129
161
  --#{root-defaults.$prefix}-button-hover-border-color,
130
- #{theme.get(primary, 900)}
162
+ #{color.$root-color}
131
163
  );
132
164
  $button-active-border-color: var(
133
165
  --#{root-defaults.$prefix}-button-active-border-color,
134
- #{theme.get(primary, 900)}
166
+ #{color.$root-color}
135
167
  );
136
168
  $button-disabled-border-color: var(
137
169
  --#{root-defaults.$prefix}-button-disabled-border-color,
@@ -1,4 +1,4 @@
1
- // @gruapl/graupl form base styles.
1
+ // @graupl/graupl form base styles.
2
2
 
3
3
  @use "defaults";
4
4
  @use "variables" as *;
@@ -9,8 +9,7 @@
9
9
  #{defaults.$textarea-selector},
10
10
  #{defaults.$select-selector} {
11
11
  padding: $input-padding;
12
- border-width: $input-border-width;
13
- border-style: $input-border-style;
12
+ border: $input-border;
14
13
  border-radius: $input-border-radius;
15
14
  font-size: $input-font-size;
16
15
 
@@ -28,8 +27,7 @@
28
27
  flex-flow: $fieldset-direction wrap;
29
28
  gap: $fieldset-gap;
30
29
  padding: $fieldset-padding;
31
- border-width: $fieldset-border-width;
32
- border-style: $fieldset-border-style;
30
+ border: $fieldset-border;
33
31
  border-radius: $fieldset-border-radius;
34
32
  font-size: $fieldset-font-size;
35
33
 
@@ -106,6 +106,10 @@ $input-border-style: var(
106
106
  --#{root-defaults.$prefix}-botton-border-style,
107
107
  #{root-variables.$border-style}
108
108
  );
109
+ $input-border: var(
110
+ --#{root-defaults.$prefix}-input-border,
111
+ #{$input-border-width} #{$input-border-style}
112
+ );
109
113
  $input-border-radius: var(
110
114
  --#{root-defaults.$prefix}-input-border-radius,
111
115
  #{root-variables.$border-radius}
@@ -118,6 +122,10 @@ $fieldset-border-style: var(
118
122
  --#{root-defaults.$prefix}-fieldset-border-style,
119
123
  #{$input-border-style}
120
124
  );
125
+ $fieldset-border: var(
126
+ --#{root-defaults.$prefix}-fieldset-border,
127
+ #{$fieldset-border-width} #{$fieldset-border-style}
128
+ );
121
129
  $fieldset-border-radius: var(
122
130
  --#{root-defaults.$prefix}-fieldset-border-radius,
123
131
  #{$input-border-radius}
@@ -8,12 +8,43 @@
8
8
 
9
9
  // Link selectors.
10
10
  $link-selector: "a" !default;
11
+ $stretched-link-selector: ".stretched" !default;
12
+ $stretched-link-pseudo-selector: "before" !default;
11
13
 
12
14
  // Link properties.
13
- $link-text-decoration: underline;
14
- $link-hover-text-decoration: underline;
15
+ $link-text-decoration: underline !default;
16
+ $link-visited-text-decoration: $link-text-decoration !default;
17
+ $link-active-text-decoration: $link-text-decoration !default;
18
+ $link-hover-text-decoration: $link-text-decoration !default;
19
+ $link-focus-text-decoration: $link-text-decoration !default;
20
+ $link-disabled-text-decoration: $link-text-decoration !default;
21
+ $link-text-decoration-style: solid !default;
22
+ $link-visited-text-decoration-style: $link-text-decoration-style !default;
23
+ $link-active-text-decoration-style: $link-text-decoration-style !default;
24
+ $link-hover-text-decoration-style: $link-text-decoration-style !default;
25
+ $link-focus-text-decoration-style: $link-text-decoration-style !default;
26
+ $link-disabled-text-decoration-style: $link-text-decoration-style !default;
15
27
  $link-transform: none !default;
16
- $link-hover-transform: none !default;
17
- $link-hover-transform-reduced-motion: none !default;
18
- $link-active-transform: none !default;
19
- $link-active-transform-reduced-motion: none !default;
28
+ $link-visited-transform: $link-transform !default;
29
+ $link-focus-transform: $link-transform !default;
30
+ $link-hover-transform: $link-transform !default;
31
+ $link-active-transform: $link-transform !default;
32
+ $link-disabled-transform: $link-transform !default;
33
+ $link-border-width: 0 !default;
34
+ $link-border-color: transparent !default;
35
+ $link-visited-border-color: $link-border-color !default;
36
+ $link-focus-border-color: $link-border-color !default;
37
+ $link-hover-border-color: $link-border-color !default;
38
+ $link-active-border-color: $link-border-color !default;
39
+ $link-disabled-border-color: $link-border-color !default;
40
+ $link-background: transparent !default;
41
+ $link-visited-background: $link-background !default;
42
+ $link-focus-background: $link-background !default;
43
+ $link-hover-background: $link-background !default;
44
+ $link-active-background: $link-background !default;
45
+ $link-disabled-background: $link-background !default;
46
+ $link-min-width: auto;
47
+ $link-min-height: auto;
48
+
49
+ // Stretched link properties.
50
+ $stretched-link-z-index: 5 !default;
@@ -1,4 +1,4 @@
1
- // @gruapl/graupl link base styles.
1
+ // @graupl/graupl link base styles.
2
2
 
3
3
  @use "defaults";
4
4
  @use "variables" as *;
@@ -8,24 +8,70 @@
8
8
 
9
9
  @include layer(base) {
10
10
  #{defaults.$link-selector} {
11
+ min-width: $link-min-width;
12
+ min-height: $link-min-height;
11
13
  padding: $link-padding;
12
14
  transform: $link-transform;
13
15
  transition: $link-transition;
16
+ border: $link-border;
17
+ border-radius: $link-border-radius;
14
18
  text-decoration: $link-text-decoration;
19
+ text-decoration-style: $link-text-decoration-style;
15
20
  text-decoration-thickness: $link-text-decoration-thickness;
16
21
 
22
+ &:visited {
23
+ --#{root-defaults.$prefix}-link-text-decoration: #{$link-visited-text-decoration};
24
+ --#{root-defaults.$prefix}-link-text-decoration-thickness: #{$link-visited-text-decoration-thickness};
25
+ --#{root-defaults.$prefix}-link-text-decoration-style: #{$link-visited-text-decoration-style};
26
+ --#{root-defaults.$prefix}-link-transform: #{$link-visited-transform};
27
+ }
28
+
29
+ &:focus-visible {
30
+ --#{root-defaults.$prefix}-link-text-decoration: #{$link-focus-text-decoration};
31
+ --#{root-defaults.$prefix}-link-text-decoration-thickness: #{$link-focus-text-decoration-thickness};
32
+ --#{root-defaults.$prefix}-link-text-decoration-style: #{$link-focus-text-decoration-style};
33
+ --#{root-defaults.$prefix}-link-transform: #{$link-focus-transform};
34
+ }
35
+
17
36
  &:hover {
18
37
  --#{root-defaults.$prefix}-link-text-decoration: #{$link-hover-text-decoration};
19
38
  --#{root-defaults.$prefix}-link-text-decoration-thickness: #{$link-hover-text-decoration-thickness};
39
+ --#{root-defaults.$prefix}-link-text-decoration-style: #{$link-hover-text-decoration-style};
20
40
  --#{root-defaults.$prefix}-link-transform: #{$link-hover-transform};
21
41
  }
22
42
 
23
43
  &:active {
44
+ --#{root-defaults.$prefix}-link-text-decoration: #{$link-active-text-decoration};
45
+ --#{root-defaults.$prefix}-link-text-decoration-thickness: #{$link-active-text-decoration-thickness};
46
+ --#{root-defaults.$prefix}-link-text-decoration-style: #{$link-active-text-decoration-style};
24
47
  --#{root-defaults.$prefix}-link-transform: #{$link-active-transform};
25
48
  }
26
49
 
50
+ &:disabled,
27
51
  &[disabled] {
28
52
  cursor: not-allowed;
53
+
54
+ &,
55
+ &:visited,
56
+ &:focus-visible,
57
+ &:hover,
58
+ &:active {
59
+ --#{root-defaults.$prefix}-link-text-decoration: #{$link-disabled-text-decoration};
60
+ --#{root-defaults.$prefix}-link-text-decoration-thickness: #{$link-disabled-text-decoration-thickness};
61
+ --#{root-defaults.$prefix}-link-text-decoration-style: #{$link-disabled-text-decoration-style};
62
+ --#{root-defaults.$prefix}-link-transform: #{$link-disabled-transform};
63
+ }
64
+ }
65
+
66
+ &#{defaults.$stretched-link-selector} {
67
+ isolation: isolate;
68
+
69
+ &::#{defaults.$stretched-link-pseudo-selector} {
70
+ content: "";
71
+ position: absolute;
72
+ inset: 0;
73
+ z-index: $stretched-link-z-index;
74
+ }
29
75
  }
30
76
  }
31
77
 
@@ -38,37 +84,51 @@
38
84
 
39
85
  @include layer(theme) {
40
86
  #{defaults.$link-selector} {
87
+ border-color: $link-border-color;
41
88
  background: $link-background;
42
89
  color: $link-color;
90
+ text-decoration-color: $link-text-decoration-color;
91
+
92
+ &:visited {
93
+ --#{root-defaults.$prefix}-link-color: #{$link-visited-color};
94
+ --#{root-defaults.$prefix}-link-background: #{$link-visited-background};
95
+ --#{root-defaults.$prefix}-link-border-color: #{$link-visited-border-color};
96
+ --#{root-defaults.$prefix}-link-text-decoration-color: #{$link-visited-text-decoration-color};
97
+ }
98
+
99
+ &:focus-visible {
100
+ --#{root-defaults.$prefix}-link-color: #{$link-focus-color};
101
+ --#{root-defaults.$prefix}-link-background: #{$link-focus-background};
102
+ --#{root-defaults.$prefix}-link-border-color: #{$link-focus-border-color};
103
+ --#{root-defaults.$prefix}-link-text-decoration-color: #{$link-focus-text-decoration-color};
104
+ }
43
105
 
44
106
  &:hover {
45
107
  --#{root-defaults.$prefix}-link-color: #{$link-hover-color};
46
108
  --#{root-defaults.$prefix}-link-background: #{$link-hover-background};
109
+ --#{root-defaults.$prefix}-link-border-color: #{$link-hover-border-color};
110
+ --#{root-defaults.$prefix}-link-text-decoration-color: #{$link-hover-text-decoration-color};
47
111
  }
48
112
 
49
113
  &:active {
50
114
  --#{root-defaults.$prefix}-link-color: #{$link-active-color};
51
115
  --#{root-defaults.$prefix}-link-background: #{$link-active-background};
116
+ --#{root-defaults.$prefix}-link-border-color: #{$link-active-border-color};
117
+ --#{root-defaults.$prefix}-link-text-decoration-color: #{$link-active-text-decoration-color};
52
118
  }
53
119
 
54
- // stylelint-disable no-descending-specificity
55
- &:visited {
56
- &,
57
- &:hover {
58
- --#{root-defaults.$prefix}-link-color: #{$link-visited-color};
59
- --#{root-defaults.$prefix}-link-background: #{$link-visited-background};
60
- }
61
- }
62
-
120
+ &:disabled,
63
121
  &[disabled] {
64
122
  &,
123
+ &:visited,
124
+ &:focus-visible,
65
125
  &:hover,
66
- &:active,
67
- &:visited {
126
+ &:active {
68
127
  --#{root-defaults.$prefix}-link-color: #{$link-disabled-color};
69
128
  --#{root-defaults.$prefix}-link-background: #{$link-disabled-background};
129
+ --#{root-defaults.$prefix}-link-border-color: #{$link-disabled-border-color};
130
+ --#{root-defaults.$prefix}-link-text-decoration-color: #{$link-disabled-text-decoration-color};
70
131
  }
71
132
  }
72
- // stylelint-enable no-descending-specificity
73
133
  }
74
134
  }