@webority/theme 0.77.1 → 0.78.0

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webority/theme",
3
- "version": "0.77.1",
3
+ "version": "0.78.0",
4
4
  "description": "Webority shared design system — Bootstrap 5.3 SCSS overrides, --wui-* tokens, and shared component CSS. The single source of brand chrome for React portals and Razor sites.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "publishConfig": {
@@ -30,6 +30,14 @@ wui-calendar {
30
30
  color: var(--color-text-body);
31
31
  }
32
32
 
33
+ // FullCalendar dims other-month days to opacity .3, which puts their numbers under the AA floor.
34
+ wui-calendar .fc .fc-day-other .fc-daygrid-day-top {
35
+ opacity: 1;
36
+ }
37
+ wui-calendar .fc .fc-day-other .fc-daygrid-day-number {
38
+ color: var(--color-text-subtle);
39
+ }
40
+
33
41
  .wui-calendar-toolbar {
34
42
  display: flex;
35
43
  flex-wrap: wrap;
@@ -1031,6 +1031,224 @@ a.info-row:hover .info-value {
1031
1031
  justify-content: center;
1032
1032
  }
1033
1033
 
1034
+ // Steps (`variant="steps"`): a numbered process. Each step is a large tinted icon disc with a
1035
+ // ring, a coloured eyebrow ("Step 1"), a title and a description; a dashed line joins the discs.
1036
+ // Phones get a column with the line running down beside the discs; from md up the steps sit in
1037
+ // a row of equal columns with the line running across, unless `.wui-timeline--steps-vertical`
1038
+ // keeps the column at every width. An untoned step takes the primary colour.
1039
+ .timeline.wui-timeline--steps {
1040
+ --wui-timeline-dot: 56px;
1041
+ --wui-timeline-step-ring: 7px;
1042
+ --wui-timeline-step-tint: var(--color-primary-soft);
1043
+ --wui-timeline-step-ink: var(--color-primary-ink);
1044
+ // The line between discs: 6px dashes with 6px gaps, 1px thick.
1045
+ --wui-timeline-step-line: var(--color-border-strong);
1046
+ --wui-timeline-step-dash: 6px;
1047
+ --wui-timeline-step-gap: 6px;
1048
+ padding: var(--wui-timeline-step-ring);
1049
+ }
1050
+ .timeline.wui-timeline--steps::before {
1051
+ display: none;
1052
+ }
1053
+ .wui-timeline--steps .timeline-item.success {
1054
+ --wui-timeline-step-tint: var(--color-success-soft);
1055
+ --wui-timeline-step-ink: var(--color-success-text);
1056
+ }
1057
+ .wui-timeline--steps .timeline-item.warning {
1058
+ --wui-timeline-step-tint: var(--color-warning-soft);
1059
+ --wui-timeline-step-ink: var(--color-warning-text);
1060
+ }
1061
+ .wui-timeline--steps .timeline-item.danger {
1062
+ --wui-timeline-step-tint: var(--color-danger-soft);
1063
+ --wui-timeline-step-ink: var(--color-danger-text);
1064
+ }
1065
+ .wui-timeline--steps .timeline-item.info {
1066
+ --wui-timeline-step-tint: var(--color-info-soft);
1067
+ --wui-timeline-step-ink: var(--color-info-text);
1068
+ }
1069
+ // The bottom padding is the space between steps in the column. It must clear both rings and
1070
+ // both 6px gaps around the dashed line, so the line between two discs is always visible.
1071
+ .wui-timeline--steps .timeline-item {
1072
+ gap: 16px;
1073
+ padding-bottom: 48px;
1074
+ }
1075
+ .wui-timeline--steps .timeline-item:last-child {
1076
+ padding-bottom: 0;
1077
+ }
1078
+ // The disc: the tint over the surface (the soft tokens are translucent in dark mode), a
1079
+ // surface-coloured gap, then a thin tinted ring. Three classes deep so it outranks the feed's
1080
+ // `.timeline-item.<tone> .timeline-dot`.
1081
+ .wui-timeline--steps .timeline-item .timeline-dot {
1082
+ color: var(--wui-timeline-step-ink);
1083
+ background: linear-gradient(var(--wui-timeline-step-tint), var(--wui-timeline-step-tint)), var(--color-surface);
1084
+ box-shadow:
1085
+ 0 0 0 calc(var(--wui-timeline-step-ring) - 1px) var(--color-surface),
1086
+ 0 0 0 var(--wui-timeline-step-ring) var(--wui-timeline-step-tint);
1087
+ }
1088
+ // The dashed line in the column: down the middle of the disc, from 6px below this disc's ring
1089
+ // to 6px above the next disc's ring. A gradient draws the dashes, so their length and gap are
1090
+ // set here rather than left to the browser's dashed border.
1091
+ .wui-timeline--steps .timeline-item:not(:last-child)::after {
1092
+ content: "";
1093
+ position: absolute;
1094
+ top: calc(var(--wui-timeline-dot) + var(--wui-timeline-step-ring) + 6px);
1095
+ bottom: calc(var(--wui-timeline-step-ring) + 6px);
1096
+ left: calc(var(--wui-timeline-dot) / 2);
1097
+ width: 1px;
1098
+ background: repeating-linear-gradient(
1099
+ to bottom,
1100
+ var(--wui-timeline-step-line) 0 var(--wui-timeline-step-dash),
1101
+ transparent var(--wui-timeline-step-dash) calc(var(--wui-timeline-step-dash) + var(--wui-timeline-step-gap))
1102
+ );
1103
+ }
1104
+ .wui-timeline--steps .timeline-body {
1105
+ padding-top: 4px;
1106
+ }
1107
+ .wui-timeline-eyebrow {
1108
+ margin-bottom: 4px;
1109
+ font-size: 12px;
1110
+ font-weight: 600;
1111
+ line-height: 1.4;
1112
+ letter-spacing: 0.1em;
1113
+ text-transform: uppercase;
1114
+ color: var(--wui-timeline-step-ink, var(--color-primary-ink));
1115
+ }
1116
+ .wui-timeline--steps .timeline-title {
1117
+ font-size: 16px;
1118
+ }
1119
+ .wui-timeline--steps .timeline-desc {
1120
+ margin-top: 6px;
1121
+ font-size: 14px;
1122
+ }
1123
+ @include media-breakpoint-up(md) {
1124
+ .timeline.wui-timeline--steps:not(.wui-timeline--steps-vertical) {
1125
+ display: flex;
1126
+ align-items: flex-start;
1127
+ }
1128
+ .wui-timeline--steps:not(.wui-timeline--steps-vertical) .timeline-item {
1129
+ flex: 1 1 0;
1130
+ min-width: 0;
1131
+ flex-direction: column;
1132
+ gap: 20px;
1133
+ padding: 0 24px 0 0;
1134
+ }
1135
+ .wui-timeline--steps:not(.wui-timeline--steps-vertical) .timeline-item:last-child {
1136
+ padding-right: 0;
1137
+ }
1138
+ .wui-timeline--steps:not(.wui-timeline--steps-vertical) .timeline-body {
1139
+ padding-top: 0;
1140
+ }
1141
+ // The dashed line across: from past this disc's ring to just before the next disc's ring.
1142
+ .wui-timeline--steps:not(.wui-timeline--steps-vertical) .timeline-item:not(:last-child)::after {
1143
+ top: calc(var(--wui-timeline-dot) / 2);
1144
+ bottom: auto;
1145
+ left: calc(var(--wui-timeline-dot) + var(--wui-timeline-step-ring) + 12px);
1146
+ right: calc(var(--wui-timeline-step-ring) + 12px);
1147
+ width: auto;
1148
+ height: 1px;
1149
+ background: repeating-linear-gradient(
1150
+ to right,
1151
+ var(--wui-timeline-step-line) 0 var(--wui-timeline-step-dash),
1152
+ transparent var(--wui-timeline-step-dash) calc(var(--wui-timeline-step-dash) + var(--wui-timeline-step-gap))
1153
+ );
1154
+ }
1155
+ }
1156
+
1157
+ // Sizes (`size="sm"` / `size="lg"`; md is the unclassed default above). A preset sets the dot
1158
+ // and scales the text and spacing to match, in every variant. A px `size` sets only the dot
1159
+ // through the inline --wui-timeline-dot, which outranks these classes.
1160
+ .timeline.wui-timeline--sm {
1161
+ --wui-timeline-dot: 18px;
1162
+ }
1163
+ .timeline.wui-timeline--lg {
1164
+ --wui-timeline-dot: 32px;
1165
+ }
1166
+ .wui-timeline--sm .timeline-item {
1167
+ gap: 10px;
1168
+ padding-bottom: 12px;
1169
+ }
1170
+ .wui-timeline--lg .timeline-item {
1171
+ gap: 16px;
1172
+ padding-bottom: 24px;
1173
+ }
1174
+ .wui-timeline--sm .timeline-item:last-child,
1175
+ .wui-timeline--lg .timeline-item:last-child {
1176
+ padding-bottom: 0;
1177
+ }
1178
+ .wui-timeline--sm .timeline-title {
1179
+ font-size: 13px;
1180
+ }
1181
+ .wui-timeline--lg .timeline-title {
1182
+ font-size: 16px;
1183
+ }
1184
+ .wui-timeline--sm .timeline-desc,
1185
+ .wui-timeline--sm .timeline-note {
1186
+ font-size: 12px;
1187
+ }
1188
+ .wui-timeline--lg .timeline-desc,
1189
+ .wui-timeline--lg .timeline-note {
1190
+ font-size: 14px;
1191
+ }
1192
+ .wui-timeline--sm .timeline-meta {
1193
+ font-size: 12px;
1194
+ }
1195
+ .wui-timeline--lg .timeline-meta {
1196
+ font-size: 13.5px;
1197
+ }
1198
+ // Steps keep their own, larger scale: three classes deep so they outrank the rules above.
1199
+ .timeline.wui-timeline--steps.wui-timeline--sm {
1200
+ --wui-timeline-dot: 44px;
1201
+ --wui-timeline-step-ring: 6px;
1202
+ }
1203
+ .timeline.wui-timeline--steps.wui-timeline--lg {
1204
+ --wui-timeline-dot: 72px;
1205
+ --wui-timeline-step-ring: 8px;
1206
+ }
1207
+ .wui-timeline--steps.wui-timeline--sm .timeline-item {
1208
+ gap: 12px;
1209
+ padding-bottom: 40px;
1210
+ }
1211
+ .wui-timeline--steps.wui-timeline--lg .timeline-item {
1212
+ gap: 20px;
1213
+ padding-bottom: 56px;
1214
+ }
1215
+ .wui-timeline--steps.wui-timeline--sm .timeline-item:last-child,
1216
+ .wui-timeline--steps.wui-timeline--lg .timeline-item:last-child {
1217
+ padding-bottom: 0;
1218
+ }
1219
+ .wui-timeline--steps.wui-timeline--sm .wui-timeline-eyebrow {
1220
+ font-size: 11px;
1221
+ }
1222
+ .wui-timeline--steps.wui-timeline--lg .wui-timeline-eyebrow {
1223
+ font-size: 13px;
1224
+ }
1225
+ .wui-timeline--steps.wui-timeline--sm .timeline-title {
1226
+ font-size: 14px;
1227
+ }
1228
+ .wui-timeline--steps.wui-timeline--lg .timeline-title {
1229
+ font-size: 18px;
1230
+ }
1231
+ .wui-timeline--steps.wui-timeline--sm .timeline-desc {
1232
+ font-size: 13px;
1233
+ }
1234
+ .wui-timeline--steps.wui-timeline--lg .timeline-desc {
1235
+ font-size: 15px;
1236
+ }
1237
+ @include media-breakpoint-up(md) {
1238
+ .wui-timeline--steps.wui-timeline--sm:not(.wui-timeline--steps-vertical) .timeline-item {
1239
+ gap: 14px;
1240
+ padding: 0 16px 0 0;
1241
+ }
1242
+ .wui-timeline--steps.wui-timeline--lg:not(.wui-timeline--steps-vertical) .timeline-item {
1243
+ gap: 24px;
1244
+ padding: 0 32px 0 0;
1245
+ }
1246
+ .wui-timeline--steps.wui-timeline--sm:not(.wui-timeline--steps-vertical) .timeline-item:last-child,
1247
+ .wui-timeline--steps.wui-timeline--lg:not(.wui-timeline--steps-vertical) .timeline-item:last-child {
1248
+ padding-right: 0;
1249
+ }
1250
+ }
1251
+
1034
1252
  // ============================================================================
1035
1253
  // Feature-comparison table — us vs them. The highlighted column is tinted so
1036
1254
  // the reader's eye lands on it without a legend.
@@ -52,8 +52,7 @@
52
52
  background: var(--color-bg-muted);
53
53
  }
54
54
  .wui-onboarding-toggle:focus-visible,
55
- .wui-onboarding-restore:focus-visible,
56
- .wui-onboarding-label:focus-visible {
55
+ .wui-onboarding-restore:focus-visible {
57
56
  outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
58
57
  outline-offset: var(--wui-focus-ring-offset);
59
58
  }
@@ -104,9 +103,11 @@
104
103
  list-style: none;
105
104
  }
106
105
  .wui-onboarding-step {
106
+ position: relative;
107
107
  display: flex;
108
- align-items: flex-start;
108
+ align-items: center;
109
109
  gap: 12px;
110
+ min-height: 44px;
110
111
  padding: 8px 0;
111
112
  }
112
113
  .wui-onboarding-step + .wui-onboarding-step {
@@ -160,6 +161,19 @@ a.wui-onboarding-label:hover {
160
161
  color: var(--color-primary-ink);
161
162
  text-decoration-color: currentColor;
162
163
  }
164
+ a.wui-onboarding-label::after {
165
+ content: "";
166
+ position: absolute;
167
+ inset: 0;
168
+ }
169
+ a.wui-onboarding-label:focus-visible {
170
+ outline: none;
171
+ }
172
+ a.wui-onboarding-label:focus-visible::after {
173
+ outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
174
+ outline-offset: -2px;
175
+ border-radius: var(--wui-radius-sm);
176
+ }
163
177
  .wui-onboarding-step.is-current .wui-onboarding-label {
164
178
  font-weight: 600;
165
179
  }
@@ -285,6 +285,13 @@
285
285
  background 180ms cubic-bezier(0.4, 0, 0.2, 1),
286
286
  color 180ms cubic-bezier(0.4, 0, 0.2, 1);
287
287
  }
288
+ @media (max-width: 575.98px), (pointer: coarse) {
289
+ .wui-modal-close,
290
+ .wui-drawer-close {
291
+ width: var(--wui-control-height);
292
+ height: var(--wui-control-height);
293
+ }
294
+ }
288
295
  .wui-modal-close:hover,
289
296
  .wui-drawer-close:hover {
290
297
  background: var(--color-danger-soft);