@webority/theme 0.98.0 → 0.100.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/README.md +11 -40
- package/dist/published-theme.json +8 -31
- package/dist/purge-safelist.json +1 -0
- package/dist/webority-theme.css +1 -1
- package/index.scss +4 -3
- package/package.json +6 -3
- package/scss/_bootstrap.generated.scss +18 -0
- package/scss/_components.scss +38 -38
- package/scss/_marketing.scss +8 -8
- package/scss/_tokens.generated.scss +831 -0
- package/scss/_tokens.scss +4 -639
- package/scss/_variables.scss +7 -12
- package/scss/_wui-components.scss +1 -1
- package/scss/_wui-residual.scss +8 -0
- package/scss/wui/_avatar-picker.scss +2 -2
- package/scss/wui/_calendar.scss +6 -6
- package/scss/wui/_card.scss +1 -1
- package/scss/wui/_carousel.scss +2 -2
- package/scss/wui/_chart-card.scss +2 -2
- package/scss/wui/_chart.scss +8 -8
- package/scss/wui/_chat.scss +2 -2
- package/scss/wui/_choice.scss +78 -78
- package/scss/wui/_code-block.scss +2 -2
- package/scss/wui/_command-palette.scss +9 -9
- package/scss/wui/_comment-thread.scss +5 -5
- package/scss/wui/_consent-banner.scss +2 -2
- package/scss/wui/_controls.scss +52 -52
- package/scss/wui/_data.scss +38 -38
- package/scss/wui/_disclosure.scss +6 -6
- package/scss/wui/_display.scss +51 -51
- package/scss/wui/_dock.scss +4 -4
- package/scss/wui/_drawer.scss +3 -3
- package/scss/wui/_file-viewer.scss +2 -2
- package/scss/wui/_filter-popover.scss +1 -1
- package/scss/wui/_floating.scss +1 -1
- package/scss/wui/_flow.scss +60 -60
- package/scss/wui/_groups.scss +7 -7
- package/scss/wui/_hover-card.scss +1 -1
- package/scss/wui/_image-crop.scss +3 -3
- package/scss/wui/_interaction.scss +3 -3
- package/scss/wui/_kanban.scss +4 -4
- package/scss/wui/_lightbox.scss +2 -2
- package/scss/wui/_media.scss +28 -31
- package/scss/wui/_mention-input.scss +4 -4
- package/scss/wui/_menu-motion.scss +1 -1
- package/scss/wui/_modal-remote.scss +2 -2
- package/scss/wui/_navigation-menu.scss +4 -4
- package/scss/wui/_navigation.scss +25 -25
- package/scss/wui/_notification-center.scss +4 -4
- package/scss/wui/_onboarding-checklist.scss +2 -2
- package/scss/wui/_overlays.scss +21 -21
- package/scss/wui/_pending.scss +1 -1
- package/scss/wui/_rich-text.scss +7 -7
- package/scss/wui/_rolling-number.scss +1 -1
- package/scss/wui/_score-scale.scss +1 -1
- package/scss/wui/_sections.scss +8 -8
- package/scss/wui/_shell-parts.scss +15 -15
- package/scss/wui/_shell.scss +20 -20
- package/scss/wui/_shortcuts.scss +1 -1
- package/scss/wui/_sortable.scss +2 -2
- package/scss/wui/_split-view.scss +4 -4
- package/scss/wui/_theme-toggle.scss +1 -1
- package/scss/wui/_tone-pill.scss +2 -2
- package/scss/wui/_toolbar.scss +2 -2
- package/scss/wui/_tree.scss +3 -3
- package/scss/wui/_typography.scss +6 -6
- package/scss/wui/_utilities.scss +27 -19
- package/scss/wui/_whats-new.scss +4 -4
- package/scss/wui/_workspace.scss +16 -16
- package/scss/wui/tour/_advance.scss +1 -1
- package/scss/wui/tour/_base.scss +1 -1
- package/scss/wui/tour/_end.scss +1 -1
- package/scss/wui/tour/_motion.scss +1 -1
- package/token-meanings.json +56 -64
- package/scss/_wui-aliases.scss +0 -495
package/index.scss
CHANGED
|
@@ -3,14 +3,15 @@
|
|
|
3
3
|
// output import the partials individually with their OWN _variables before bootstrap.
|
|
4
4
|
//
|
|
5
5
|
// Load order is LOAD-BEARING — never reorder:
|
|
6
|
-
// fonts -> variables (
|
|
7
|
-
//
|
|
6
|
+
// fonts -> variables (ends with bootstrap.generated, the !default Bootstrap values from the token source)
|
|
7
|
+
// -> bootstrap -> tokens (tokens.generated, then wui-residual) -> components -> wui-components
|
|
8
|
+
// The token source generates _tokens.generated.scss and _bootstrap.generated.scss (`corepack pnpm run tokens`,
|
|
9
|
+
// run by build). Country flags are NOT imported here, and neither does _wui-components: they are an opt-in
|
|
8
10
|
// layer (scss/_flags.scss, compiled on its own to dist/webority-flags.css) for sites that render
|
|
9
11
|
// the phone input or country picker.
|
|
10
12
|
@import "scss/fonts";
|
|
11
13
|
@import "scss/variables";
|
|
12
14
|
@import "bootstrap/scss/bootstrap";
|
|
13
15
|
@import "scss/tokens";
|
|
14
|
-
@import "scss/wui-aliases";
|
|
15
16
|
@import "scss/components";
|
|
16
17
|
@import "scss/wui-components";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webority/theme",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.100.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": {
|
|
@@ -50,9 +50,12 @@
|
|
|
50
50
|
"bootstrap": "5.3.3",
|
|
51
51
|
"country-flag-icons": "^1.6.20",
|
|
52
52
|
"sass-embedded": "^1.97.0",
|
|
53
|
-
"vite": "^8.0.12"
|
|
53
|
+
"vite": "^8.0.12",
|
|
54
|
+
"@webority/tokens": "0.100.0"
|
|
54
55
|
},
|
|
55
56
|
"scripts": {
|
|
56
|
-
"
|
|
57
|
+
"tokens": "node ../tokens/dist/webority.js brand --library --out ../tokens/dist --web scss/_tokens.generated.scss",
|
|
58
|
+
"tokens:check": "node ../tokens/dist/webority.js brand --library --out ../tokens/dist --web scss/_tokens.generated.scss --check",
|
|
59
|
+
"build": "corepack pnpm run tokens && sass index.scss dist/webority-theme.css --load-path=node_modules --style=compressed --no-source-map --quiet-deps --silence-deprecation=if-function && sass scss/_flags.scss dist/webority-flags.css --style=compressed --no-source-map --quiet && sass scss/_runtime-brand.scss dist/webority-runtime-brand.css --style=compressed --no-source-map --quiet && node ../../scripts/force-state-selectors.mjs dist/webority-theme.css && node ../../scripts/gen-purge-safelist.mjs && node ../../scripts/sync-rcl-assets.mjs theme && vite build --config vite.cli.config.js && node scripts/exportCanvasTheme.mjs"
|
|
57
60
|
}
|
|
58
61
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// Generated by @webority/tokens 0.100.0 from its token source. Do not edit; run webority brand --library.
|
|
2
|
+
$body-color: #252f4a !default;
|
|
3
|
+
$body-secondary-color: #4b5675 !default;
|
|
4
|
+
$body-tertiary-color: #626a82 !default;
|
|
5
|
+
$body-secondary-bg: #f9fbfc !default;
|
|
6
|
+
$body-tertiary-bg: #f5f6fa !default;
|
|
7
|
+
$border-color: #ebedf3 !default;
|
|
8
|
+
$border-color-translucent: rgba(13, 24, 43, 0.08) !default;
|
|
9
|
+
$border-radius: 10px !default;
|
|
10
|
+
$border-radius-sm: 8px !default;
|
|
11
|
+
$border-radius-lg: 14px !default;
|
|
12
|
+
$border-radius-pill: 9999px !default;
|
|
13
|
+
$wui-shadow-overlay: 0px 8px 28px -6px rgba(7, 20, 55, 0.14) !default;
|
|
14
|
+
$wui-shadow-overlay-lg: 0px 24px 60px -16px rgba(7, 20, 55, 0.28) !default;
|
|
15
|
+
$link-color: #4f46e5 !default;
|
|
16
|
+
$line-height-base: 1.55 !default;
|
|
17
|
+
$headings-line-height: 1.2 !default;
|
|
18
|
+
$display-line-height: 1.05 !default;
|
package/scss/_components.scss
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
// ---- Button polish (used by both Razor + React) ---------------------
|
|
7
7
|
// Flat buttons — no drop shadow. Active-press feedback (1px nudge) is
|
|
8
8
|
// retained because it's a tactile signal, not a depth cue.
|
|
9
|
-
// A button is exactly as tall as a field of the same size (the --wui-control-
|
|
9
|
+
// A button is exactly as tall as a field of the same size (the --wui-control-md ladder, 32/36/44px), so a
|
|
10
10
|
// button beside an input lines up in every form row. Heights are min-height with the label flex-centred; sm/lg
|
|
11
11
|
// set theirs in their size blocks below.
|
|
12
12
|
.btn:not(.btn-sm):not(.btn-lg):not(.btn-pill):not(.btn-pill-sm):not(.u-action):not(.btn-icon) {
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
display: inline-flex;
|
|
17
17
|
align-items: center;
|
|
18
18
|
justify-content: center;
|
|
19
|
-
min-height: var(--wui-control-
|
|
19
|
+
min-height: var(--wui-control-md);
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
// Tactile press feedback — every variant AND every size (sm/md/lg). Kept
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
.btn-primary {
|
|
30
|
-
// Hover and press read --color-primary-hover: the pressed primary in light and the lifted dark primary in dark (
|
|
30
|
+
// Hover and press read --color-primary-hover: the pressed primary in light and the lifted dark primary in dark (_tokens.generated.scss), so a rebrand and dark mode both track it.
|
|
31
31
|
--bs-btn-hover-bg: var(--color-primary-hover);
|
|
32
32
|
--bs-btn-hover-border-color: var(--color-primary-hover);
|
|
33
33
|
--bs-btn-active-bg: var(--color-primary-hover);
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
// runtime CSS var. Routing it through the token makes a light-primary brand's
|
|
38
38
|
// --wui-primary-text override reach the button.
|
|
39
39
|
--bs-btn-color: var(--wui-primary-text);
|
|
40
|
-
--bs-btn-hover-color: var(--color-primary
|
|
41
|
-
--bs-btn-active-color: var(--color-primary
|
|
40
|
+
--bs-btn-hover-color: var(--color-on-primary);
|
|
41
|
+
--bs-btn-active-color: var(--color-on-primary);
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
// Secondary — a soft brand tint (matches the design reference's secondary): a
|
|
@@ -48,13 +48,13 @@
|
|
|
48
48
|
// then press. No border (the tint carries the shape). Disabled is the shared
|
|
49
49
|
// neutral-grey state below, like every other variant.
|
|
50
50
|
.btn-secondary {
|
|
51
|
-
--bs-btn-color: var(--color-primary-
|
|
51
|
+
--bs-btn-color: var(--color-primary-text);
|
|
52
52
|
--bs-btn-bg: color-mix(in srgb, var(--color-primary) 12%, transparent);
|
|
53
53
|
--bs-btn-border-color: transparent;
|
|
54
|
-
--bs-btn-hover-color: var(--color-primary-
|
|
54
|
+
--bs-btn-hover-color: var(--color-primary-text);
|
|
55
55
|
--bs-btn-hover-bg: color-mix(in srgb, var(--color-primary) 18%, transparent);
|
|
56
56
|
--bs-btn-hover-border-color: transparent;
|
|
57
|
-
--bs-btn-active-color: var(--color-primary-
|
|
57
|
+
--bs-btn-active-color: var(--color-primary-text);
|
|
58
58
|
--bs-btn-active-bg: color-mix(in srgb, var(--color-primary) 26%, transparent);
|
|
59
59
|
--bs-btn-active-border-color: transparent;
|
|
60
60
|
}
|
|
@@ -119,16 +119,16 @@
|
|
|
119
119
|
// on a transparent fill; hover fills with the brand and flips the label to the on-brand text
|
|
120
120
|
// token; active deepens to the pressed fill.
|
|
121
121
|
.btn-outline-primary {
|
|
122
|
-
--bs-btn-color: var(--color-primary-
|
|
122
|
+
--bs-btn-color: var(--color-primary-text);
|
|
123
123
|
--bs-btn-border-color: var(--color-primary);
|
|
124
124
|
// The hover fill is the theme's primary (the lifted one in dark mode), so its label is too.
|
|
125
|
-
--bs-btn-hover-color: var(--color-primary
|
|
125
|
+
--bs-btn-hover-color: var(--color-on-primary);
|
|
126
126
|
--bs-btn-hover-bg: var(--color-primary);
|
|
127
127
|
--bs-btn-hover-border-color: var(--color-primary);
|
|
128
128
|
--bs-btn-active-color: var(--wui-primary-text);
|
|
129
129
|
--bs-btn-active-bg: var(--wui-primary-pressed);
|
|
130
130
|
--bs-btn-active-border-color: var(--wui-primary-pressed);
|
|
131
|
-
--bs-btn-disabled-color: var(--color-primary-
|
|
131
|
+
--bs-btn-disabled-color: var(--color-primary-text);
|
|
132
132
|
--bs-btn-disabled-border-color: var(--color-primary);
|
|
133
133
|
}
|
|
134
134
|
|
|
@@ -276,21 +276,21 @@
|
|
|
276
276
|
|
|
277
277
|
// ---- Component radii from tokens ------------------------------------
|
|
278
278
|
// .btn/.card/.input capture Bootstrap's compiled $*-border-radius (the library
|
|
279
|
-
// ladder) before a product loads, so a product's --wui-radius* override never
|
|
279
|
+
// ladder) before a product loads, so a product's --wui-radius-md* override never
|
|
280
280
|
// reached them. Re-drive the radius from the tokens — the way the dropdown above
|
|
281
281
|
// already does — so overriding the radius tokens once flows to every control.
|
|
282
282
|
// sm/lg are re-asserted so they keep their own rung instead of the base value.
|
|
283
283
|
// Per-size type + padding scale, matched to the design reference: the three
|
|
284
284
|
// sizes step font-size, horizontal padding and radius together (vertical size
|
|
285
|
-
// comes from --wui-control-
|
|
285
|
+
// comes from --wui-control-md, so a button lines up with an input). Weight
|
|
286
286
|
// is 600 on every rung — buttons read as a deliberate action, not body text.
|
|
287
|
-
// Medium (default): 14px / 600, about 12px side padding, 14px squircle radius, --wui-control-
|
|
287
|
+
// Medium (default): 14px / 600, about 12px side padding, 14px squircle radius, --wui-control-md tall.
|
|
288
288
|
// Side padding is always twice the vertical padding. A button is its field's height with the label
|
|
289
289
|
// line centred, so its vertical padding is (height - both borders - one line) / 2 and its side
|
|
290
290
|
// padding the height less both borders and one line: about 5.7/11.4, 6.2/12.3 and 8.6/17.2px at sm,
|
|
291
291
|
// md and lg with the theme's line height.
|
|
292
292
|
.btn {
|
|
293
|
-
--wui-btn-height: var(--wui-control-
|
|
293
|
+
--wui-btn-height: var(--wui-control-md);
|
|
294
294
|
--bs-btn-border-radius: 14px;
|
|
295
295
|
--bs-btn-font-size: 0.875rem;
|
|
296
296
|
--bs-btn-font-weight: 600;
|
|
@@ -302,26 +302,26 @@
|
|
|
302
302
|
// Small: 12px, about 11px side padding, 12px squircle radius (proportional to md), as tall as a small field.
|
|
303
303
|
.btn-sm:not(.btn-icon),
|
|
304
304
|
.btn-group-sm > .btn:not(.btn-icon) {
|
|
305
|
-
--wui-btn-height: var(--wui-control-
|
|
305
|
+
--wui-btn-height: var(--wui-control-sm);
|
|
306
306
|
--bs-btn-padding-y: 0;
|
|
307
307
|
--bs-btn-border-radius: 12px;
|
|
308
308
|
--bs-btn-font-size: 0.75rem;
|
|
309
309
|
display: inline-flex;
|
|
310
310
|
align-items: center;
|
|
311
311
|
justify-content: center;
|
|
312
|
-
min-height: var(--wui-control-
|
|
312
|
+
min-height: var(--wui-control-sm);
|
|
313
313
|
}
|
|
314
314
|
// Large: 16px, about 17px side padding, 18px squircle radius (proportional to md), as tall as a large field.
|
|
315
315
|
.btn-lg:not(.btn-icon),
|
|
316
316
|
.btn-group-lg > .btn:not(.btn-icon) {
|
|
317
|
-
--wui-btn-height: var(--wui-control-
|
|
317
|
+
--wui-btn-height: var(--wui-control-lg);
|
|
318
318
|
--bs-btn-padding-y: 0;
|
|
319
319
|
--bs-btn-border-radius: 18px;
|
|
320
320
|
--bs-btn-font-size: 1rem;
|
|
321
321
|
display: inline-flex;
|
|
322
322
|
align-items: center;
|
|
323
323
|
justify-content: center;
|
|
324
|
-
min-height: var(--wui-control-
|
|
324
|
+
min-height: var(--wui-control-lg);
|
|
325
325
|
}
|
|
326
326
|
|
|
327
327
|
// ---- Hover animation options (opt-in modifiers) ---------------------
|
|
@@ -593,7 +593,7 @@
|
|
|
593
593
|
--bs-dropdown-header-color: var(--color-text-muted);
|
|
594
594
|
--bs-dropdown-header-padding-x: 0.625rem;
|
|
595
595
|
--bs-dropdown-header-padding-y: 0.25rem;
|
|
596
|
-
box-shadow: var(--wui-shadow-
|
|
596
|
+
box-shadow: var(--wui-shadow-popover);
|
|
597
597
|
// A long menu (account / workspace lists) must never spill past the screen and clip its
|
|
598
598
|
// last rows: cap the panel to the viewport and scroll INSIDE it. The room subtracted
|
|
599
599
|
// leaves space for a topbar-height trigger + margin — the common anchor for these long
|
|
@@ -645,7 +645,7 @@
|
|
|
645
645
|
}
|
|
646
646
|
&:hover .wui-icon, &:hover i, &:hover svg,
|
|
647
647
|
&:focus .wui-icon, &:focus i, &:focus svg {
|
|
648
|
-
color: var(--color-primary-
|
|
648
|
+
color: var(--color-primary-text);
|
|
649
649
|
}
|
|
650
650
|
|
|
651
651
|
// A leading picture instead of a glyph — an external logo/avatar, a brand mark.
|
|
@@ -708,16 +708,16 @@
|
|
|
708
708
|
// No .btn-ghost-sm/-lg rungs: it is an ordinary .btn variant and sizes with Bootstrap's
|
|
709
709
|
// own .btn-sm/.btn-lg, like .btn-primary.
|
|
710
710
|
.btn-ghost {
|
|
711
|
-
--bs-btn-color: var(--color-primary-
|
|
711
|
+
--bs-btn-color: var(--color-primary-text);
|
|
712
712
|
--bs-btn-bg: transparent;
|
|
713
713
|
--bs-btn-border-color: transparent;
|
|
714
|
-
--bs-btn-hover-color: var(--color-primary-
|
|
714
|
+
--bs-btn-hover-color: var(--color-primary-text);
|
|
715
715
|
--bs-btn-hover-bg: color-mix(in srgb, var(--color-primary) 12%, transparent);
|
|
716
716
|
--bs-btn-hover-border-color: transparent;
|
|
717
|
-
--bs-btn-active-color: var(--color-primary-
|
|
717
|
+
--bs-btn-active-color: var(--color-primary-text);
|
|
718
718
|
--bs-btn-active-bg: color-mix(in srgb, var(--color-primary) 18%, transparent);
|
|
719
719
|
--bs-btn-active-border-color: transparent;
|
|
720
|
-
--bs-btn-disabled-color: var(--color-primary-
|
|
720
|
+
--bs-btn-disabled-color: var(--color-primary-text);
|
|
721
721
|
--bs-btn-disabled-bg: transparent;
|
|
722
722
|
--bs-btn-disabled-border-color: transparent;
|
|
723
723
|
}
|
|
@@ -738,7 +738,7 @@
|
|
|
738
738
|
.btn.btn-ghost.btn-ghost.disabled {
|
|
739
739
|
background-color: transparent;
|
|
740
740
|
border-color: transparent;
|
|
741
|
-
color: var(--color-primary-
|
|
741
|
+
color: var(--color-primary-text);
|
|
742
742
|
opacity: var(--wui-disabled-opacity);
|
|
743
743
|
}
|
|
744
744
|
.btn.btn-ghost.btn-ghost.is-loading:disabled,
|
|
@@ -752,16 +752,16 @@
|
|
|
752
752
|
// It pairs with animation="roll", whose label roll and round icon well carry the motion.
|
|
753
753
|
// AppButton's `text` variant emits this class on both surfaces.
|
|
754
754
|
.btn-text {
|
|
755
|
-
--bs-btn-color: var(--color-primary-
|
|
755
|
+
--bs-btn-color: var(--color-primary-text);
|
|
756
756
|
--bs-btn-bg: transparent;
|
|
757
757
|
--bs-btn-border-color: transparent;
|
|
758
|
-
--bs-btn-hover-color: color-mix(in srgb, var(--color-primary-
|
|
758
|
+
--bs-btn-hover-color: color-mix(in srgb, var(--color-primary-text) 80%, var(--color-text));
|
|
759
759
|
--bs-btn-hover-bg: transparent;
|
|
760
760
|
--bs-btn-hover-border-color: transparent;
|
|
761
|
-
--bs-btn-active-color: color-mix(in srgb, var(--color-primary-
|
|
761
|
+
--bs-btn-active-color: color-mix(in srgb, var(--color-primary-text) 70%, var(--color-text));
|
|
762
762
|
--bs-btn-active-bg: transparent;
|
|
763
763
|
--bs-btn-active-border-color: transparent;
|
|
764
|
-
--bs-btn-disabled-color: var(--color-primary-
|
|
764
|
+
--bs-btn-disabled-color: var(--color-primary-text);
|
|
765
765
|
--bs-btn-disabled-bg: transparent;
|
|
766
766
|
--bs-btn-disabled-border-color: transparent;
|
|
767
767
|
}
|
|
@@ -811,7 +811,7 @@
|
|
|
811
811
|
.btn.btn-text.btn-text.disabled {
|
|
812
812
|
background-color: transparent;
|
|
813
813
|
border-color: transparent;
|
|
814
|
-
color: var(--color-primary-
|
|
814
|
+
color: var(--color-primary-text);
|
|
815
815
|
opacity: var(--wui-disabled-opacity);
|
|
816
816
|
}
|
|
817
817
|
|
|
@@ -820,7 +820,7 @@
|
|
|
820
820
|
// nudges 1px on hover (tactile signal). API prop stays `lifted` / class
|
|
821
821
|
// `card-lifted` so call sites don't break.
|
|
822
822
|
.card-lifted {
|
|
823
|
-
transition: transform 0.2s var(--wui-ease-out
|
|
823
|
+
transition: transform 0.2s var(--wui-ease-out);
|
|
824
824
|
&:hover {
|
|
825
825
|
transform: translateY(-1px);
|
|
826
826
|
}
|
|
@@ -868,7 +868,7 @@
|
|
|
868
868
|
margin: -6px -6px -6px auto;
|
|
869
869
|
padding: 0;
|
|
870
870
|
border: 0;
|
|
871
|
-
border-radius: var(--radius);
|
|
871
|
+
border-radius: var(--wui-radius-md);
|
|
872
872
|
// The same resting grey as the modal and drawer close buttons.
|
|
873
873
|
background: var(--color-bg-subtle);
|
|
874
874
|
color: var(--color-text-muted);
|
|
@@ -915,10 +915,10 @@
|
|
|
915
915
|
align-items: center;
|
|
916
916
|
gap: 0.5rem;
|
|
917
917
|
padding-inline: 0.875rem;
|
|
918
|
-
height: var(--wui-control-
|
|
918
|
+
height: var(--wui-control-md);
|
|
919
919
|
background: var(--color-surface);
|
|
920
920
|
border: 1px solid var(--color-border);
|
|
921
|
-
border-radius: var(--radius);
|
|
921
|
+
border-radius: var(--wui-radius-md);
|
|
922
922
|
transition: border-color 0.15s ease;
|
|
923
923
|
}
|
|
924
924
|
.wui-input-group:hover:not(:focus-within):not(.is-disabled) {
|
|
@@ -993,7 +993,7 @@ button.wui-input-trailing:focus-visible,
|
|
|
993
993
|
button.wui-input-leading:focus-visible {
|
|
994
994
|
outline: var(--wui-focus-ring-width) solid var(--color-focus-ring);
|
|
995
995
|
outline-offset: var(--wui-focus-ring-offset);
|
|
996
|
-
color: var(--color-primary-
|
|
996
|
+
color: var(--color-primary-text);
|
|
997
997
|
border-radius: 9999px;
|
|
998
998
|
}
|
|
999
999
|
|
|
@@ -1027,8 +1027,8 @@ button.wui-input-leading:focus-visible {
|
|
|
1027
1027
|
|
|
1028
1028
|
// ---- Subtle hover lift -----------------------------------------------
|
|
1029
1029
|
.lift-on-hover {
|
|
1030
|
-
transition: transform 0.2s var(--wui-ease-out
|
|
1031
|
-
box-shadow 0.2s var(--wui-ease-out
|
|
1030
|
+
transition: transform 0.2s var(--wui-ease-out),
|
|
1031
|
+
box-shadow 0.2s var(--wui-ease-out);
|
|
1032
1032
|
}
|
|
1033
1033
|
.lift-on-hover:hover {
|
|
1034
1034
|
transform: translateY(-1px);
|
package/scss/_marketing.scss
CHANGED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
font-size: 14px;
|
|
31
31
|
font-weight: 700;
|
|
32
32
|
line-height: 1;
|
|
33
|
-
color: var(--color-primary-
|
|
33
|
+
color: var(--color-primary-text);
|
|
34
34
|
}
|
|
35
35
|
.eyebrow::before {
|
|
36
36
|
content: "";
|
|
@@ -189,7 +189,7 @@
|
|
|
189
189
|
|
|
190
190
|
// ---- Single-element fade-in ------------------------------------------
|
|
191
191
|
.fade-in {
|
|
192
|
-
animation: fadeIn 220ms var(--wui-ease-out
|
|
192
|
+
animation: fadeIn 220ms var(--wui-ease-out);
|
|
193
193
|
}
|
|
194
194
|
|
|
195
195
|
// ---- Stagger groups --------------------------------------------------
|
|
@@ -197,7 +197,7 @@
|
|
|
197
197
|
// cascade in 40ms apart, capped at 12 children. For bigger groups,
|
|
198
198
|
// use the IntersectionObserver-driven `[data-reveal]` pattern below.
|
|
199
199
|
.stagger-children > * {
|
|
200
|
-
animation: staggerRise 360ms var(--wui-ease-out
|
|
200
|
+
animation: staggerRise 360ms var(--wui-ease-out) backwards;
|
|
201
201
|
}
|
|
202
202
|
.stagger-children > *:nth-child(1) { animation-delay: 0ms; }
|
|
203
203
|
.stagger-children > *:nth-child(2) { animation-delay: 40ms; }
|
|
@@ -217,7 +217,7 @@
|
|
|
217
217
|
// individual items inside a non-stagger-children container.
|
|
218
218
|
.stagger-item {
|
|
219
219
|
opacity: 0;
|
|
220
|
-
animation: rise 320ms var(--wui-ease-out
|
|
220
|
+
animation: rise 320ms var(--wui-ease-out) forwards;
|
|
221
221
|
animation-delay: var(--stagger, 0ms);
|
|
222
222
|
}
|
|
223
223
|
|
|
@@ -243,8 +243,8 @@
|
|
|
243
243
|
opacity: 0;
|
|
244
244
|
transform: translateY(8px);
|
|
245
245
|
transition:
|
|
246
|
-
opacity 540ms var(--wui-ease-out
|
|
247
|
-
transform 540ms var(--wui-ease-out
|
|
246
|
+
opacity 540ms var(--wui-ease-out),
|
|
247
|
+
transform 540ms var(--wui-ease-out);
|
|
248
248
|
will-change: opacity, transform;
|
|
249
249
|
}
|
|
250
250
|
[data-reveal].is-visible {
|
|
@@ -256,8 +256,8 @@
|
|
|
256
256
|
opacity: 0;
|
|
257
257
|
transform: translateY(8px);
|
|
258
258
|
transition:
|
|
259
|
-
opacity 540ms var(--wui-ease-out
|
|
260
|
-
transform 540ms var(--wui-ease-out
|
|
259
|
+
opacity 540ms var(--wui-ease-out),
|
|
260
|
+
transform 540ms var(--wui-ease-out);
|
|
261
261
|
}
|
|
262
262
|
[data-reveal-stagger].is-visible > * {
|
|
263
263
|
opacity: 1;
|