@webority/theme 0.24.0 → 0.25.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 +16 -2
- package/dist/purge-safelist.json +125 -2
- package/dist/webority-brand-signal.css +1 -0
- package/dist/webority-theme.css +2 -2
- package/fonts/sans/OFL.txt +92 -0
- package/fonts/sans/WeboritySans-Bold.woff2 +0 -0
- package/fonts/sans/WeboritySans-BoldItalic.woff2 +0 -0
- package/fonts/sans/WeboritySans-Medium.woff2 +0 -0
- package/fonts/sans/WeboritySans-Regular.woff2 +0 -0
- package/fonts/sans/WeboritySans-RegularItalic.woff2 +0 -0
- package/fonts/sans/WeboritySans-SemiBold.woff2 +0 -0
- package/fonts/serif/WeboritySerif-Bold.woff2 +0 -0
- package/fonts/serif/WeboritySerif-BoldItalic.woff2 +0 -0
- package/fonts/serif/WeboritySerif-DemiBold.woff2 +0 -0
- package/fonts/serif/WeboritySerif-ExtraBold.woff2 +0 -0
- package/fonts/serif/WeboritySerif-Medium.woff2 +0 -0
- package/fonts/serif/WeboritySerif-Regular.woff2 +0 -0
- package/fonts/serif/WeboritySerif-RegularItalic.woff2 +0 -0
- package/index.scss +2 -1
- package/package.json +4 -2
- package/scss/_brand-signal.scss +202 -0
- package/scss/_fonts.scss +95 -0
- package/scss/_tokens.scss +55 -2
- package/scss/_variables.scss +2 -1
- package/scss/_wui-aliases.scss +21 -0
- package/scss/_wui-components.scss +11 -0
- package/scss/wui/_calendar.scss +256 -0
- package/scss/wui/_chart-card.scss +86 -0
- package/scss/wui/_chart.scss +524 -0
- package/scss/wui/_context-menu.scss +53 -0
- package/scss/wui/_display.scss +1 -1
- package/scss/wui/_image-crop.scss +146 -0
- package/scss/wui/_modal-remote.scss +3 -0
- package/scss/wui/_rich-text.scss +281 -0
- package/scss/wui/_shell-parts.scss +3 -0
- package/scss/wui/_sortable.scss +135 -0
- package/scss/wui/_table-server.scss +3 -0
- package/scss/wui/_tree.scss +124 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
Copyright (c) 2016 The Inter Project Authors (https://github.com/rsms/inter)
|
|
2
|
+
|
|
3
|
+
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
|
4
|
+
This license is copied below, and is also available with a FAQ at:
|
|
5
|
+
http://scripts.sil.org/OFL
|
|
6
|
+
|
|
7
|
+
-----------------------------------------------------------
|
|
8
|
+
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
|
9
|
+
-----------------------------------------------------------
|
|
10
|
+
|
|
11
|
+
PREAMBLE
|
|
12
|
+
The goals of the Open Font License (OFL) are to stimulate worldwide
|
|
13
|
+
development of collaborative font projects, to support the font creation
|
|
14
|
+
efforts of academic and linguistic communities, and to provide a free and
|
|
15
|
+
open framework in which fonts may be shared and improved in partnership
|
|
16
|
+
with others.
|
|
17
|
+
|
|
18
|
+
The OFL allows the licensed fonts to be used, studied, modified and
|
|
19
|
+
redistributed freely as long as they are not sold by themselves. The
|
|
20
|
+
fonts, including any derivative works, can be bundled, embedded,
|
|
21
|
+
redistributed and/or sold with any software provided that any reserved
|
|
22
|
+
names are not used by derivative works. The fonts and derivatives,
|
|
23
|
+
however, cannot be released under any other type of license. The
|
|
24
|
+
requirement for fonts to remain under this license does not apply
|
|
25
|
+
to any document created using the fonts or their derivatives.
|
|
26
|
+
|
|
27
|
+
DEFINITIONS
|
|
28
|
+
"Font Software" refers to the set of files released by the Copyright
|
|
29
|
+
Holder(s) under this license and clearly marked as such. This may
|
|
30
|
+
include source files, build scripts and documentation.
|
|
31
|
+
|
|
32
|
+
"Reserved Font Name" refers to any names specified as such after the
|
|
33
|
+
copyright statement(s).
|
|
34
|
+
|
|
35
|
+
"Original Version" refers to the collection of Font Software components as
|
|
36
|
+
distributed by the Copyright Holder(s).
|
|
37
|
+
|
|
38
|
+
"Modified Version" refers to any derivative made by adding to, deleting,
|
|
39
|
+
or substituting -- in part or in whole -- any of the components of the
|
|
40
|
+
Original Version, by changing formats or by porting the Font Software to a
|
|
41
|
+
new environment.
|
|
42
|
+
|
|
43
|
+
"Author" refers to any designer, engineer, programmer, technical
|
|
44
|
+
writer or other person who contributed to the Font Software.
|
|
45
|
+
|
|
46
|
+
PERMISSION AND CONDITIONS
|
|
47
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
48
|
+
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
|
49
|
+
redistribute, and sell modified and unmodified copies of the Font
|
|
50
|
+
Software, subject to the following conditions:
|
|
51
|
+
|
|
52
|
+
1) Neither the Font Software nor any of its individual components,
|
|
53
|
+
in Original or Modified Versions, may be sold by itself.
|
|
54
|
+
|
|
55
|
+
2) Original or Modified Versions of the Font Software may be bundled,
|
|
56
|
+
redistributed and/or sold with any software, provided that each copy
|
|
57
|
+
contains the above copyright notice and this license. These can be
|
|
58
|
+
included either as stand-alone text files, human-readable headers or
|
|
59
|
+
in the appropriate machine-readable metadata fields within text or
|
|
60
|
+
binary files as long as those fields can be easily viewed by the user.
|
|
61
|
+
|
|
62
|
+
3) No Modified Version of the Font Software may use the Reserved Font
|
|
63
|
+
Name(s) unless explicit written permission is granted by the corresponding
|
|
64
|
+
Copyright Holder. This restriction only applies to the primary font name as
|
|
65
|
+
presented to the users.
|
|
66
|
+
|
|
67
|
+
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
|
68
|
+
Software shall not be used to promote, endorse or advertise any
|
|
69
|
+
Modified Version, except to acknowledge the contribution(s) of the
|
|
70
|
+
Copyright Holder(s) and the Author(s) or with their explicit written
|
|
71
|
+
permission.
|
|
72
|
+
|
|
73
|
+
5) The Font Software, modified or unmodified, in part or in whole,
|
|
74
|
+
must be distributed entirely under this license, and must not be
|
|
75
|
+
distributed under any other license. The requirement for fonts to
|
|
76
|
+
remain under this license does not apply to any document created
|
|
77
|
+
using the Font Software.
|
|
78
|
+
|
|
79
|
+
TERMINATION
|
|
80
|
+
This license becomes null and void if any of the above conditions are
|
|
81
|
+
not met.
|
|
82
|
+
|
|
83
|
+
DISCLAIMER
|
|
84
|
+
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
85
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
|
86
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
|
87
|
+
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
|
88
|
+
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
89
|
+
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
|
90
|
+
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
91
|
+
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
|
92
|
+
OTHER DEALINGS IN THE FONT SOFTWARE.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/index.scss
CHANGED
|
@@ -3,10 +3,11 @@
|
|
|
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
|
-
// variables (before bootstrap) -> bootstrap -> tokens -> aliases -> components -> wui-components
|
|
6
|
+
// fonts -> variables (before bootstrap) -> bootstrap -> tokens -> aliases -> components -> wui-components
|
|
7
7
|
// Country flags are NOT imported here, and neither does _wui-components: they are an opt-in
|
|
8
8
|
// layer (scss/_flags.scss, compiled on its own to dist/webority-flags.css) for sites that render
|
|
9
9
|
// the phone input or country picker.
|
|
10
|
+
@import "scss/fonts";
|
|
10
11
|
@import "scss/variables";
|
|
11
12
|
@import "bootstrap/scss/bootstrap";
|
|
12
13
|
@import "scss/tokens";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webority/theme",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.25.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": {
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
"files": [
|
|
16
16
|
"index.scss",
|
|
17
17
|
"scss",
|
|
18
|
+
"fonts",
|
|
18
19
|
"dist"
|
|
19
20
|
],
|
|
20
21
|
"exports": {
|
|
@@ -27,6 +28,7 @@
|
|
|
27
28
|
"./scss/*": "./scss/_*.scss",
|
|
28
29
|
"./css": "./dist/webority-theme.css",
|
|
29
30
|
"./css/flags": "./dist/webority-flags.css",
|
|
31
|
+
"./css/brand-signal": "./dist/webority-brand-signal.css",
|
|
30
32
|
"./purge-safelist.json": "./dist/purge-safelist.json",
|
|
31
33
|
"./package.json": "./package.json"
|
|
32
34
|
},
|
|
@@ -41,6 +43,6 @@
|
|
|
41
43
|
"sass-embedded": "^1.97.0"
|
|
42
44
|
},
|
|
43
45
|
"scripts": {
|
|
44
|
-
"build": "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 && node ../../scripts/gen-purge-safelist.mjs && node ../../scripts/sync-rcl-assets.mjs theme"
|
|
46
|
+
"build": "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/_brand-signal.scss dist/webority-brand-signal.css --style=compressed --no-source-map --quiet && node ../../scripts/gen-purge-safelist.mjs && node ../../scripts/sync-rcl-assets.mjs theme"
|
|
45
47
|
}
|
|
46
48
|
}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
// Signal: an opt-in brand layer, a violet-primary palette with ink headings and a serif display face.
|
|
2
|
+
//
|
|
3
|
+
// Loaded AFTER webority-theme.css; the default theme never contains these values. It re-points the
|
|
4
|
+
// --wui-* tokens, then overrides the few Bootstrap values the theme compiles as literals (button
|
|
5
|
+
// variables, link and focus-ring colours, dark-mode rgb triplets), because those are not tokens.
|
|
6
|
+
//
|
|
7
|
+
// Dark mode must match or beat the theme's own selectors, which are
|
|
8
|
+
// :root[data-theme="dark"], :root[data-bs-theme="dark"] and, under @media (prefers-color-scheme: dark),
|
|
9
|
+
// :root[data-theme="auto"] (see _wui-aliases.scss). A lone [data-theme=dark] loses to the second and
|
|
10
|
+
// third, so the dark block below is emitted under all three.
|
|
11
|
+
|
|
12
|
+
// The theme ships the Demi Bold file but declares no weight-600 face for the display family.
|
|
13
|
+
@font-face {
|
|
14
|
+
font-family: "Webority Serif";
|
|
15
|
+
font-style: normal;
|
|
16
|
+
font-weight: 600;
|
|
17
|
+
font-display: swap;
|
|
18
|
+
src: url("../fonts/serif/WeboritySerif-DemiBold.woff2") format("woff2");
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
:root {
|
|
22
|
+
// Named brand constants for consumers; the library CSS does not read these.
|
|
23
|
+
--wui-signal-violet: #4A0FBF;
|
|
24
|
+
--wui-signal-violet-hover: #3D0CA0;
|
|
25
|
+
--wui-signal-tint: #F1EBFF;
|
|
26
|
+
--wui-signal-ink: #16093A;
|
|
27
|
+
--wui-signal-heading: #4C1D95;
|
|
28
|
+
// Reserved for unread counts (white text on it is 5.6:1); never a button or link colour.
|
|
29
|
+
--wui-signal-pink: #B517C8;
|
|
30
|
+
// Filled primary controls in dark mode: lighter than the light-mode fill so the edge shows on the ink page.
|
|
31
|
+
--wui-signal-dark-fill: #5A22D6;
|
|
32
|
+
--wui-signal-dark-fill-hover: #6B35E6;
|
|
33
|
+
|
|
34
|
+
--bs-font-sans-serif: "Webority Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
|
|
35
|
+
--bs-body-font-family: var(--bs-font-sans-serif);
|
|
36
|
+
--wui-font-display: "Webority Serif", Georgia, "Times New Roman", serif;
|
|
37
|
+
|
|
38
|
+
--wui-primary: #4A0FBF;
|
|
39
|
+
--wui-primary-hover: #3D0CA0;
|
|
40
|
+
--wui-primary-pressed: #340A88;
|
|
41
|
+
--wui-primary-50: #8B66E6;
|
|
42
|
+
--wui-primary-30: #B9A2F2;
|
|
43
|
+
--wui-primary-20: #D9CBFA;
|
|
44
|
+
--wui-primary-15: #E6DCFD;
|
|
45
|
+
--wui-primary-10: #F1EBFF;
|
|
46
|
+
--wui-primary-5: #F8F5FF;
|
|
47
|
+
--wui-primary-text: #FFFFFF;
|
|
48
|
+
--wui-accent-dark: #340A88;
|
|
49
|
+
--wui-surface-soft: #F1EBFF;
|
|
50
|
+
--wui-surface-violet: #E6DCFD;
|
|
51
|
+
--wui-surface-violet-soft: #F8F5FF;
|
|
52
|
+
--wui-hero-gradient: radial-gradient(ellipse 120% 80% at 50% 30%, #8B66E6 0%, #4A0FBF 35%, #3D0CA0 75%, #16093A 100%);
|
|
53
|
+
--wui-cta-gradient: radial-gradient(ellipse 120% 100% at 50% 50%, #2B1150 0%, #16093A 60%, #0E0626 100%);
|
|
54
|
+
|
|
55
|
+
--wui-text-heading: #16093A;
|
|
56
|
+
--wui-text-1: #2B2B2B;
|
|
57
|
+
--wui-text-2: #5A5A5A;
|
|
58
|
+
// Muted text: #777777 measures 4.48:1 on white and less on the tints; #6A6A6A clears 4.5:1 on every tint, the violet one included.
|
|
59
|
+
--wui-text-3: #6A6A6A;
|
|
60
|
+
--wui-text-4: #9A9A9A;
|
|
61
|
+
--wui-text-5: #CFC9DE;
|
|
62
|
+
--wui-ink: #16093A;
|
|
63
|
+
|
|
64
|
+
--wui-bg-page: #F8F6FD;
|
|
65
|
+
--wui-bg-light: #FFFFFF;
|
|
66
|
+
--wui-bg-elevated: #FBFAFE;
|
|
67
|
+
--wui-bg-muted: #F3EFFB;
|
|
68
|
+
--wui-field-bg: #FBFAFE;
|
|
69
|
+
--wui-border-light: #E8E4F2;
|
|
70
|
+
--wui-border-soft: #F3F0FA;
|
|
71
|
+
--wui-progress-track: #E8E4F2;
|
|
72
|
+
--wui-neutral-border-dark: #E8E4F2;
|
|
73
|
+
--wui-neutral-bg-dark: #F3EFFB;
|
|
74
|
+
--wui-shadow-overlay: 0 8px 28px -6px rgba(22, 9, 58, 0.16);
|
|
75
|
+
--wui-shadow-overlay-lg: 0 24px 60px -16px rgba(22, 9, 58, 0.30);
|
|
76
|
+
|
|
77
|
+
--wui-dark-bg-page: #120830;
|
|
78
|
+
--wui-dark-bg-elevated: #0E0626;
|
|
79
|
+
--wui-dark-bg-surface: #1A0F40;
|
|
80
|
+
--wui-dark-bg-muted: #261853;
|
|
81
|
+
--wui-dark-border: #35266B;
|
|
82
|
+
--wui-dark-border-strong: #4B3A8A;
|
|
83
|
+
--wui-dark-progress-track: #35266B;
|
|
84
|
+
--wui-dark-text: #EDE9F8;
|
|
85
|
+
--wui-dark-text-muted: #C2BADB;
|
|
86
|
+
--wui-dark-text-subtle: #A59BC6;
|
|
87
|
+
--wui-dark-primary: #A98BFF;
|
|
88
|
+
--wui-dark-primary-hover: #BFA6FF;
|
|
89
|
+
|
|
90
|
+
// Values the theme compiles as literals rather than tokens.
|
|
91
|
+
--bs-primary: #4A0FBF;
|
|
92
|
+
--bs-primary-rgb: 74, 15, 191;
|
|
93
|
+
--bs-link-color: #4A0FBF;
|
|
94
|
+
--bs-link-color-rgb: 74, 15, 191;
|
|
95
|
+
--bs-link-hover-color: #3D0CA0;
|
|
96
|
+
--bs-link-hover-color-rgb: 61, 12, 160;
|
|
97
|
+
--bs-focus-ring-color: rgba(74, 15, 191, 0.3);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Bootstrap compiles its button variables to literal indigo; re-point them on the classes.
|
|
101
|
+
.btn-primary {
|
|
102
|
+
--bs-btn-color: #fff;
|
|
103
|
+
--bs-btn-bg: #4A0FBF;
|
|
104
|
+
--bs-btn-border-color: #4A0FBF;
|
|
105
|
+
--bs-btn-hover-color: #fff;
|
|
106
|
+
--bs-btn-hover-bg: #3D0CA0;
|
|
107
|
+
--bs-btn-hover-border-color: #3D0CA0;
|
|
108
|
+
--bs-btn-focus-shadow-rgb: 74, 15, 191;
|
|
109
|
+
--bs-btn-active-color: #fff;
|
|
110
|
+
--bs-btn-active-bg: #340A88;
|
|
111
|
+
--bs-btn-active-border-color: #340A88;
|
|
112
|
+
--bs-btn-disabled-color: #fff;
|
|
113
|
+
--bs-btn-disabled-bg: #4A0FBF;
|
|
114
|
+
--bs-btn-disabled-border-color: #4A0FBF;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.btn-outline-primary {
|
|
118
|
+
--bs-btn-color: var(--color-primary);
|
|
119
|
+
--bs-btn-border-color: var(--color-primary);
|
|
120
|
+
--bs-btn-hover-color: #fff;
|
|
121
|
+
--bs-btn-hover-bg: #4A0FBF;
|
|
122
|
+
--bs-btn-hover-border-color: #4A0FBF;
|
|
123
|
+
--bs-btn-active-color: #fff;
|
|
124
|
+
--bs-btn-active-bg: #340A88;
|
|
125
|
+
--bs-btn-active-border-color: #340A88;
|
|
126
|
+
--bs-btn-focus-shadow-rgb: 74, 15, 191;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.form-check-input:checked {
|
|
130
|
+
background-color: var(--color-primary);
|
|
131
|
+
border-color: var(--color-primary);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// Display type: Webority Serif Demi Bold on titles, Webority Sans on everything else.
|
|
135
|
+
.page-title,
|
|
136
|
+
.card-title,
|
|
137
|
+
.wui-modal-title,
|
|
138
|
+
.empty-state-title {
|
|
139
|
+
font-family: var(--wui-font-display);
|
|
140
|
+
font-weight: 600;
|
|
141
|
+
font-style: normal;
|
|
142
|
+
letter-spacing: -0.01em;
|
|
143
|
+
color: var(--color-text);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
@mixin wui-signal-dark {
|
|
147
|
+
--wui-signal-heading: #C4AEFF;
|
|
148
|
+
--color-primary-soft: color-mix(in srgb, #A98BFF 20%, transparent);
|
|
149
|
+
// Ink on the lilac fill (--color-primary): 8:1 or better.
|
|
150
|
+
--color-primary-text: #16093A;
|
|
151
|
+
--color-progress-label: #16093A;
|
|
152
|
+
--bs-body-bg-rgb: 18, 8, 48;
|
|
153
|
+
--bs-body-color-rgb: 237, 233, 248;
|
|
154
|
+
--bs-emphasis-color-rgb: 237, 233, 248;
|
|
155
|
+
--bs-secondary-color-rgb: 194, 186, 219;
|
|
156
|
+
--bs-tertiary-color-rgb: 165, 155, 198;
|
|
157
|
+
--bs-secondary-bg-rgb: 26, 15, 64;
|
|
158
|
+
--bs-tertiary-bg-rgb: 38, 24, 83;
|
|
159
|
+
--bs-border-color-rgb: 53, 38, 107;
|
|
160
|
+
--bs-link-color: #A98BFF;
|
|
161
|
+
--bs-link-color-rgb: 169, 139, 255;
|
|
162
|
+
--bs-link-hover-color: #BFA6FF;
|
|
163
|
+
--bs-link-hover-color-rgb: 191, 166, 255;
|
|
164
|
+
--bs-focus-ring-color: rgba(169, 139, 255, 0.4);
|
|
165
|
+
|
|
166
|
+
.btn-primary {
|
|
167
|
+
--bs-btn-bg: #5A22D6;
|
|
168
|
+
--bs-btn-border-color: #5A22D6;
|
|
169
|
+
--bs-btn-hover-bg: #6B35E6;
|
|
170
|
+
--bs-btn-hover-border-color: #6B35E6;
|
|
171
|
+
--bs-btn-active-bg: #4A0FBF;
|
|
172
|
+
--bs-btn-active-border-color: #4A0FBF;
|
|
173
|
+
--bs-btn-disabled-bg: #5A22D6;
|
|
174
|
+
--bs-btn-disabled-border-color: #5A22D6;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.btn-outline-primary {
|
|
178
|
+
--bs-btn-hover-bg: #5A22D6;
|
|
179
|
+
--bs-btn-hover-border-color: #5A22D6;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
.form-check-input:checked {
|
|
183
|
+
background-color: #5A22D6;
|
|
184
|
+
border-color: #5A22D6;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
// The active step's number sits on a light violet fill; the theme's white ink is 2.68:1 there.
|
|
188
|
+
:where(.stepper:not(.wizard-stepper)) {
|
|
189
|
+
--wui-step-accent-fg: #16093A;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
:root[data-theme="dark"],
|
|
194
|
+
:root[data-bs-theme="dark"] {
|
|
195
|
+
@include wui-signal-dark;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
:root[data-theme="auto"] {
|
|
199
|
+
@media (prefers-color-scheme: dark) {
|
|
200
|
+
@include wui-signal-dark;
|
|
201
|
+
}
|
|
202
|
+
}
|
package/scss/_fonts.scss
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
// Webority Sans and Webority Serif, shipped with the theme. URLs are relative to the compiled CSS:
|
|
2
|
+
// dist/webority-theme.css reads ../fonts (the npm package) and wwwroot/css/webority-theme.css reads
|
|
3
|
+
// ../fonts (the Razor static web asset, _content/Webority.Ui.Razor/fonts). Sans is SIL OFL 1.1
|
|
4
|
+
// (fonts/sans/OFL.txt travels with it).
|
|
5
|
+
@font-face {
|
|
6
|
+
font-family: 'Webority Sans';
|
|
7
|
+
font-style: normal;
|
|
8
|
+
font-weight: 400;
|
|
9
|
+
font-display: swap;
|
|
10
|
+
src: url('../fonts/sans/WeboritySans-Regular.woff2') format('woff2');
|
|
11
|
+
}
|
|
12
|
+
@font-face {
|
|
13
|
+
font-family: 'Webority Sans';
|
|
14
|
+
font-style: italic;
|
|
15
|
+
font-weight: 400;
|
|
16
|
+
font-display: swap;
|
|
17
|
+
src: url('../fonts/sans/WeboritySans-RegularItalic.woff2') format('woff2');
|
|
18
|
+
}
|
|
19
|
+
@font-face {
|
|
20
|
+
font-family: 'Webority Sans';
|
|
21
|
+
font-style: normal;
|
|
22
|
+
font-weight: 500;
|
|
23
|
+
font-display: swap;
|
|
24
|
+
src: url('../fonts/sans/WeboritySans-Medium.woff2') format('woff2');
|
|
25
|
+
}
|
|
26
|
+
@font-face {
|
|
27
|
+
font-family: 'Webority Sans';
|
|
28
|
+
font-style: normal;
|
|
29
|
+
font-weight: 600;
|
|
30
|
+
font-display: swap;
|
|
31
|
+
src: url('../fonts/sans/WeboritySans-SemiBold.woff2') format('woff2');
|
|
32
|
+
}
|
|
33
|
+
@font-face {
|
|
34
|
+
font-family: 'Webority Sans';
|
|
35
|
+
font-style: normal;
|
|
36
|
+
font-weight: 700;
|
|
37
|
+
font-display: swap;
|
|
38
|
+
src: url('../fonts/sans/WeboritySans-Bold.woff2') format('woff2');
|
|
39
|
+
}
|
|
40
|
+
@font-face {
|
|
41
|
+
font-family: 'Webority Sans';
|
|
42
|
+
font-style: italic;
|
|
43
|
+
font-weight: 700;
|
|
44
|
+
font-display: swap;
|
|
45
|
+
src: url('../fonts/sans/WeboritySans-BoldItalic.woff2') format('woff2');
|
|
46
|
+
}
|
|
47
|
+
@font-face {
|
|
48
|
+
font-family: 'Webority Serif';
|
|
49
|
+
font-style: normal;
|
|
50
|
+
font-weight: 400;
|
|
51
|
+
font-display: swap;
|
|
52
|
+
src: url('../fonts/serif/WeboritySerif-Regular.woff2') format('woff2');
|
|
53
|
+
}
|
|
54
|
+
@font-face {
|
|
55
|
+
font-family: 'Webority Serif';
|
|
56
|
+
font-style: italic;
|
|
57
|
+
font-weight: 400;
|
|
58
|
+
font-display: swap;
|
|
59
|
+
src: url('../fonts/serif/WeboritySerif-RegularItalic.woff2') format('woff2');
|
|
60
|
+
}
|
|
61
|
+
@font-face {
|
|
62
|
+
font-family: 'Webority Serif';
|
|
63
|
+
font-style: normal;
|
|
64
|
+
font-weight: 500;
|
|
65
|
+
font-display: swap;
|
|
66
|
+
src: url('../fonts/serif/WeboritySerif-Medium.woff2') format('woff2');
|
|
67
|
+
}
|
|
68
|
+
@font-face {
|
|
69
|
+
font-family: 'Webority Serif';
|
|
70
|
+
font-style: normal;
|
|
71
|
+
font-weight: 600;
|
|
72
|
+
font-display: swap;
|
|
73
|
+
src: url('../fonts/serif/WeboritySerif-DemiBold.woff2') format('woff2');
|
|
74
|
+
}
|
|
75
|
+
@font-face {
|
|
76
|
+
font-family: 'Webority Serif';
|
|
77
|
+
font-style: normal;
|
|
78
|
+
font-weight: 700;
|
|
79
|
+
font-display: swap;
|
|
80
|
+
src: url('../fonts/serif/WeboritySerif-Bold.woff2') format('woff2');
|
|
81
|
+
}
|
|
82
|
+
@font-face {
|
|
83
|
+
font-family: 'Webority Serif';
|
|
84
|
+
font-style: italic;
|
|
85
|
+
font-weight: 700;
|
|
86
|
+
font-display: swap;
|
|
87
|
+
src: url('../fonts/serif/WeboritySerif-BoldItalic.woff2') format('woff2');
|
|
88
|
+
}
|
|
89
|
+
@font-face {
|
|
90
|
+
font-family: 'Webority Serif';
|
|
91
|
+
font-style: normal;
|
|
92
|
+
font-weight: 800;
|
|
93
|
+
font-display: swap;
|
|
94
|
+
src: url('../fonts/serif/WeboritySerif-ExtraBold.woff2') format('woff2');
|
|
95
|
+
}
|
package/scss/_tokens.scss
CHANGED
|
@@ -212,6 +212,38 @@
|
|
|
212
212
|
--wui-field-radius-sm: 8px;
|
|
213
213
|
--wui-field-radius-lg: 8px;
|
|
214
214
|
|
|
215
|
+
// ---- Chart colours ---------------------------------------------------
|
|
216
|
+
// The eight series colours <wui-chart> hands out in declared order. Slot 1 is the brand
|
|
217
|
+
// primary, so a product's rebrand reaches its charts; 2 to 8 were checked against it for
|
|
218
|
+
// colour-blind separation (worst neighbouring pair ΔE 9.1). Aqua, yellow and pink sit under
|
|
219
|
+
// 3:1 on white, which is why every chart also has a legend and a data table.
|
|
220
|
+
--wui-chart-1: var(--wui-primary);
|
|
221
|
+
--wui-chart-2: #eb6834;
|
|
222
|
+
--wui-chart-3: #1baf7a;
|
|
223
|
+
--wui-chart-4: #eda100;
|
|
224
|
+
--wui-chart-5: #e87ba4;
|
|
225
|
+
--wui-chart-6: #008300;
|
|
226
|
+
--wui-chart-7: #2a78d6;
|
|
227
|
+
--wui-chart-8: #e34948;
|
|
228
|
+
// One-hue ramp for magnitude (heatmap cells, calendar days), faint to strong, on the primary.
|
|
229
|
+
--wui-chart-seq-0: var(--wui-bg-muted);
|
|
230
|
+
--wui-chart-seq-1: var(--wui-primary-10);
|
|
231
|
+
--wui-chart-seq-2: var(--wui-primary-20);
|
|
232
|
+
--wui-chart-seq-3: var(--wui-primary-30);
|
|
233
|
+
--wui-chart-seq-4: var(--wui-primary-50);
|
|
234
|
+
--wui-chart-seq-5: var(--wui-primary-hover);
|
|
235
|
+
--wui-chart-seq-6: var(--wui-primary-pressed);
|
|
236
|
+
// Below and above a midpoint (variance, change against a target), with a grey middle.
|
|
237
|
+
--wui-chart-diverging-low: #e34948;
|
|
238
|
+
--wui-chart-diverging-mid: #c4cada;
|
|
239
|
+
--wui-chart-diverging-high: #2a78d6;
|
|
240
|
+
// A context series (last period) and a donut's folded Other slice.
|
|
241
|
+
--wui-chart-neutral: #99a1b7;
|
|
242
|
+
// Ink: gridlines, the axis line, and tick and legend text. Aliases, so dark follows --color-*.
|
|
243
|
+
--wui-chart-grid: var(--color-border);
|
|
244
|
+
--wui-chart-axis: var(--color-border-strong);
|
|
245
|
+
--wui-chart-label: var(--color-text-subtle);
|
|
246
|
+
|
|
215
247
|
// ---- Portal dark palette ----------------------------------------
|
|
216
248
|
// Marketing stays light. Portal flips [data-theme="dark"] and maps
|
|
217
249
|
// --color-* aliases onto these so dark hexes live in theme/, not the app.
|
|
@@ -233,6 +265,27 @@
|
|
|
233
265
|
--wui-dark-shadow-thumb: 0 2px 6px rgba(255, 255, 255, 0.1);
|
|
234
266
|
--wui-dark-shadow-thumb-hover: 0 2px 12px rgba(255, 255, 255, 0.2);
|
|
235
267
|
|
|
268
|
+
// Dark chart colours, mapped onto --wui-chart-* by the dark theme (_wui-aliases.scss); slot 1
|
|
269
|
+
// follows --wui-dark-primary. The series set clears 3:1 on the dark page colour.
|
|
270
|
+
--wui-dark-chart-2: #d95926;
|
|
271
|
+
--wui-dark-chart-3: #199e70;
|
|
272
|
+
--wui-dark-chart-4: #c98500;
|
|
273
|
+
--wui-dark-chart-5: #d55181;
|
|
274
|
+
--wui-dark-chart-6: #008300;
|
|
275
|
+
--wui-dark-chart-7: #3987e5;
|
|
276
|
+
--wui-dark-chart-8: #e66767;
|
|
277
|
+
--wui-dark-chart-seq-0: #20242f;
|
|
278
|
+
--wui-dark-chart-seq-1: #262c45;
|
|
279
|
+
--wui-dark-chart-seq-2: #2f3a70;
|
|
280
|
+
--wui-dark-chart-seq-3: #3b4ba0;
|
|
281
|
+
--wui-dark-chart-seq-4: #5168d2;
|
|
282
|
+
--wui-dark-chart-seq-5: #7a90ef;
|
|
283
|
+
--wui-dark-chart-seq-6: #b3c1f7;
|
|
284
|
+
--wui-dark-chart-diverging-low: #e66767;
|
|
285
|
+
--wui-dark-chart-diverging-mid: #3a414f;
|
|
286
|
+
--wui-dark-chart-diverging-high: #3987e5;
|
|
287
|
+
--wui-dark-chart-neutral: #5d6475;
|
|
288
|
+
|
|
236
289
|
// ---- Fluid type scale --------------------------------------------
|
|
237
290
|
// clamp(min, preferred, max) so type scales smoothly between viewports instead of
|
|
238
291
|
// stepping at Bootstrap's breakpoints. `base` sits close to Bootstrap's own 1rem body
|
|
@@ -254,8 +307,8 @@
|
|
|
254
307
|
// A dedicated slot for a display/heading typeface, kept separate from
|
|
255
308
|
// $font-family-base so a product can point ONLY its display headings (.h-display) at a
|
|
256
309
|
// serif or another brand face by overriding this one token, without touching body copy.
|
|
257
|
-
// Defaults to
|
|
258
|
-
--wui-font-display:
|
|
310
|
+
// Defaults to Webority Serif ($font-family-display).
|
|
311
|
+
--wui-font-display: #{$font-family-display};
|
|
259
312
|
|
|
260
313
|
// ---- Z-index scale -------------------------------------------------
|
|
261
314
|
// One page-level ladder. Local stacking inside a component (1, 5, 10, 40…) is
|
package/scss/_variables.scss
CHANGED
|
@@ -89,7 +89,8 @@ $border-radius-pill: 9999px; // same visual as BS 50rem; explicit for token clar
|
|
|
89
89
|
// Font-size base (1rem) and font-weight 300–700 match Bootstrap — not restated.
|
|
90
90
|
// h1/h2/h6 match Bootstrap's $font-size-base multipliers at 1rem — not restated;
|
|
91
91
|
// only h3–h5 are tighter than Bootstrap's scale.
|
|
92
|
-
$font-family-sans-serif: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
92
|
+
$font-family-sans-serif: 'Webority Sans', 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
93
|
+
$font-family-display: 'Webority Serif', Cambria, Georgia, 'Times New Roman', 'Noto Serif', serif;
|
|
93
94
|
$font-family-monospace: 'JetBrains Mono', SFMono-Regular, Menlo, Monaco, Consolas, monospace;
|
|
94
95
|
|
|
95
96
|
$line-height-base: 1.55; // BS 1.5
|
package/scss/_wui-aliases.scss
CHANGED
|
@@ -235,6 +235,27 @@
|
|
|
235
235
|
--color-scrim: color-mix(in srgb, black 45%, transparent);
|
|
236
236
|
--color-scrim-strong: color-mix(in srgb, black 62%, transparent);
|
|
237
237
|
--color-on-scrim: var(--wui-bg-light);
|
|
238
|
+
|
|
239
|
+
// Chart colours: the dark set, so every chart flips with the page.
|
|
240
|
+
--wui-chart-1: var(--wui-dark-primary);
|
|
241
|
+
--wui-chart-2: var(--wui-dark-chart-2);
|
|
242
|
+
--wui-chart-3: var(--wui-dark-chart-3);
|
|
243
|
+
--wui-chart-4: var(--wui-dark-chart-4);
|
|
244
|
+
--wui-chart-5: var(--wui-dark-chart-5);
|
|
245
|
+
--wui-chart-6: var(--wui-dark-chart-6);
|
|
246
|
+
--wui-chart-7: var(--wui-dark-chart-7);
|
|
247
|
+
--wui-chart-8: var(--wui-dark-chart-8);
|
|
248
|
+
--wui-chart-seq-0: var(--wui-dark-chart-seq-0);
|
|
249
|
+
--wui-chart-seq-1: var(--wui-dark-chart-seq-1);
|
|
250
|
+
--wui-chart-seq-2: var(--wui-dark-chart-seq-2);
|
|
251
|
+
--wui-chart-seq-3: var(--wui-dark-chart-seq-3);
|
|
252
|
+
--wui-chart-seq-4: var(--wui-dark-chart-seq-4);
|
|
253
|
+
--wui-chart-seq-5: var(--wui-dark-chart-seq-5);
|
|
254
|
+
--wui-chart-seq-6: var(--wui-dark-chart-seq-6);
|
|
255
|
+
--wui-chart-diverging-low: var(--wui-dark-chart-diverging-low);
|
|
256
|
+
--wui-chart-diverging-mid: var(--wui-dark-chart-diverging-mid);
|
|
257
|
+
--wui-chart-diverging-high: var(--wui-dark-chart-diverging-high);
|
|
258
|
+
--wui-chart-neutral: var(--wui-dark-chart-neutral);
|
|
238
259
|
}
|
|
239
260
|
|
|
240
261
|
// Manual dark mode — set data-theme="dark" and/or data-bs-theme="dark" on <html>
|
|
@@ -29,16 +29,24 @@
|
|
|
29
29
|
@import "wui/controls";
|
|
30
30
|
@import "wui/choice";
|
|
31
31
|
@import "wui/media";
|
|
32
|
+
@import "wui/image-crop";
|
|
32
33
|
@import "wui/navigation";
|
|
33
34
|
@import "wui/card";
|
|
34
35
|
@import "wui/data";
|
|
36
|
+
@import "wui/table-server";
|
|
35
37
|
@import "wui/overlays";
|
|
38
|
+
@import "wui/modal-remote";
|
|
36
39
|
@import "wui/utilities";
|
|
37
40
|
@import "wui/typography";
|
|
38
41
|
@import "wui/disclosure";
|
|
39
42
|
@import "wui/display";
|
|
40
43
|
@import "wui/flow";
|
|
44
|
+
@import "wui/chart";
|
|
45
|
+
@import "wui/chart-card";
|
|
46
|
+
@import "wui/calendar";
|
|
47
|
+
@import "wui/rich-text";
|
|
41
48
|
@import "wui/scrollbar";
|
|
49
|
+
@import "wui/sortable";
|
|
42
50
|
// After `navigation`/`overlays`: the switcher restates dropdown-item chrome those partials
|
|
43
51
|
// set, so it has to win on equal specificity.
|
|
44
52
|
@import "wui/workspace";
|
|
@@ -48,12 +56,15 @@
|
|
|
48
56
|
// A site that does imports `@webority/theme/scss/flags` once, after this file; without it
|
|
49
57
|
// <wui-phone> and <wui-country-select> show an empty grey box where the flag should be.
|
|
50
58
|
@import "wui/shell";
|
|
59
|
+
@import "wui/shell-parts";
|
|
51
60
|
@import "wui/dock";
|
|
52
61
|
@import "wui/consent-banner";
|
|
53
62
|
@import "wui/file-viewer";
|
|
54
63
|
@import "wui/toolbar";
|
|
55
64
|
@import "wui/theme-toggle";
|
|
65
|
+
@import "wui/tree";
|
|
56
66
|
// After `overlays`: anchors the shared modal shell to the top when it holds the palette card.
|
|
57
67
|
@import "wui/command-palette";
|
|
68
|
+
@import "wui/context-menu";
|
|
58
69
|
// Last: restates the settled state of menus other partials style, so it must win.
|
|
59
70
|
@import "wui/menu-motion";
|