@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.
Files changed (75) hide show
  1. package/README.md +11 -40
  2. package/dist/published-theme.json +8 -31
  3. package/dist/purge-safelist.json +1 -0
  4. package/dist/webority-theme.css +1 -1
  5. package/index.scss +4 -3
  6. package/package.json +6 -3
  7. package/scss/_bootstrap.generated.scss +18 -0
  8. package/scss/_components.scss +38 -38
  9. package/scss/_marketing.scss +8 -8
  10. package/scss/_tokens.generated.scss +831 -0
  11. package/scss/_tokens.scss +4 -639
  12. package/scss/_variables.scss +7 -12
  13. package/scss/_wui-components.scss +1 -1
  14. package/scss/_wui-residual.scss +8 -0
  15. package/scss/wui/_avatar-picker.scss +2 -2
  16. package/scss/wui/_calendar.scss +6 -6
  17. package/scss/wui/_card.scss +1 -1
  18. package/scss/wui/_carousel.scss +2 -2
  19. package/scss/wui/_chart-card.scss +2 -2
  20. package/scss/wui/_chart.scss +8 -8
  21. package/scss/wui/_chat.scss +2 -2
  22. package/scss/wui/_choice.scss +78 -78
  23. package/scss/wui/_code-block.scss +2 -2
  24. package/scss/wui/_command-palette.scss +9 -9
  25. package/scss/wui/_comment-thread.scss +5 -5
  26. package/scss/wui/_consent-banner.scss +2 -2
  27. package/scss/wui/_controls.scss +52 -52
  28. package/scss/wui/_data.scss +38 -38
  29. package/scss/wui/_disclosure.scss +6 -6
  30. package/scss/wui/_display.scss +51 -51
  31. package/scss/wui/_dock.scss +4 -4
  32. package/scss/wui/_drawer.scss +3 -3
  33. package/scss/wui/_file-viewer.scss +2 -2
  34. package/scss/wui/_filter-popover.scss +1 -1
  35. package/scss/wui/_floating.scss +1 -1
  36. package/scss/wui/_flow.scss +60 -60
  37. package/scss/wui/_groups.scss +7 -7
  38. package/scss/wui/_hover-card.scss +1 -1
  39. package/scss/wui/_image-crop.scss +3 -3
  40. package/scss/wui/_interaction.scss +3 -3
  41. package/scss/wui/_kanban.scss +4 -4
  42. package/scss/wui/_lightbox.scss +2 -2
  43. package/scss/wui/_media.scss +28 -31
  44. package/scss/wui/_mention-input.scss +4 -4
  45. package/scss/wui/_menu-motion.scss +1 -1
  46. package/scss/wui/_modal-remote.scss +2 -2
  47. package/scss/wui/_navigation-menu.scss +4 -4
  48. package/scss/wui/_navigation.scss +25 -25
  49. package/scss/wui/_notification-center.scss +4 -4
  50. package/scss/wui/_onboarding-checklist.scss +2 -2
  51. package/scss/wui/_overlays.scss +21 -21
  52. package/scss/wui/_pending.scss +1 -1
  53. package/scss/wui/_rich-text.scss +7 -7
  54. package/scss/wui/_rolling-number.scss +1 -1
  55. package/scss/wui/_score-scale.scss +1 -1
  56. package/scss/wui/_sections.scss +8 -8
  57. package/scss/wui/_shell-parts.scss +15 -15
  58. package/scss/wui/_shell.scss +20 -20
  59. package/scss/wui/_shortcuts.scss +1 -1
  60. package/scss/wui/_sortable.scss +2 -2
  61. package/scss/wui/_split-view.scss +4 -4
  62. package/scss/wui/_theme-toggle.scss +1 -1
  63. package/scss/wui/_tone-pill.scss +2 -2
  64. package/scss/wui/_toolbar.scss +2 -2
  65. package/scss/wui/_tree.scss +3 -3
  66. package/scss/wui/_typography.scss +6 -6
  67. package/scss/wui/_utilities.scss +27 -19
  68. package/scss/wui/_whats-new.scss +4 -4
  69. package/scss/wui/_workspace.scss +16 -16
  70. package/scss/wui/tour/_advance.scss +1 -1
  71. package/scss/wui/tour/_base.scss +1 -1
  72. package/scss/wui/tour/_end.scss +1 -1
  73. package/scss/wui/tour/_motion.scss +1 -1
  74. package/token-meanings.json +56 -64
  75. package/scss/_wui-aliases.scss +0 -495
package/scss/_tokens.scss CHANGED
@@ -1,639 +1,4 @@
1
- // =====================================================================
2
- // Webority UI — custom CSS variables.
3
- // Things Bootstrap doesn't natively have a slot for: extended brand
4
- // ramps, gradient definitions, easing curves, etc. Imported AFTER
5
- // `bootstrap/scss/bootstrap` so we don't clobber its computed values.
6
- // =====================================================================
7
-
8
- :root {
9
- // Extended primary ramp — neutral indigo default; used for tints,
10
- // washes, hovers. Products override --wui-primary* with their brand.
11
- /// meaning: Brand primary fill for primary buttons, selected states and the first chart series.
12
- --wui-primary: #4F46E5;
13
- /// meaning: Primary fill while a control is hovered.
14
- --wui-primary-hover: #6366F1;
15
- /// meaning: Primary fill while a control is pressed or active.
16
- --wui-primary-pressed: #4338CA;
17
- /// meaning: Strongest soft primary fill or border tint that follows dark mode.
18
- --wui-primary-50: #818CF8;
19
- /// meaning: Medium soft primary fill or border tint that follows dark mode.
20
- --wui-primary-30: #A5B4FC;
21
- /// meaning: Light soft primary fill or border tint that follows dark mode.
22
- --wui-primary-20: #C7D2FE;
23
- /// meaning: Lighter soft primary fill or border tint that follows dark mode.
24
- --wui-primary-15: #DDE1FD;
25
- /// meaning: Pale soft primary fill or border tint that follows dark mode.
26
- --wui-primary-10: #E0E7FF;
27
- /// meaning: Faintest soft primary fill or border tint that follows dark mode.
28
- --wui-primary-5: #EEF2FF;
29
-
30
- // Foreground ramp (cool blue-grey neutrals) — for text hierarchy
31
- // beyond Bootstrap's body-color / body-secondary-color.
32
- /// meaning: Heading ink for page and section titles.
33
- --wui-text-heading: #071437;
34
- /// meaning: Primary body text, a step softer than the heading ink.
35
- --wui-text-1: #252F4A;
36
- /// meaning: Secondary text for descriptions, sub-labels and muted copy.
37
- --wui-text-2: #4B5675;
38
- // Tertiary text, for hints, captions, labels, timestamps and placeholders. It measures 4.97:1 on
39
- // the library page background and 4.76:1 on a lightly tinted brand page (#eef1f7), so it stays
40
- // above the 4.5:1 AA floor on every neutral surface. It stays clearly lighter than --wui-text-2;
41
- // --wui-text-4/5 remain for genuinely decorative use.
42
- /// meaning: Tertiary text for hints, captions, labels, timestamps and placeholders.
43
- --wui-text-3: #626A82;
44
- /// meaning: Decorative faint ink, not for text a person must read.
45
- --wui-text-4: #99A1B7;
46
- /// meaning: Faintest ink, for decorative marks.
47
- --wui-text-5: #C4CADA;
48
-
49
- // Surfaces
50
- /// meaning: Page background behind every surface in light mode.
51
- --wui-bg-page: #F4F6F8;
52
- /// meaning: White card and panel surface, the lightest fill in light mode.
53
- --wui-bg-light: #FFFFFF;
54
- /// meaning: Subtle raised surface, one step off the page.
55
- --wui-bg-elevated: #F9FBFC;
56
- /// meaning: Muted fill for grouped areas and quiet controls.
57
- --wui-bg-muted: #F5F6FA;
58
- // Resting fill for every input-like control (text field, select, textarea, and the
59
- // combobox/phone/date/number wrappers) — a touch lighter than --wui-bg-muted so fields read
60
- // as their own surface. Change here to restyle every field's background at once.
61
- /// meaning: Resting fill of every input-like control, such as fields, selects and textareas.
62
- --wui-field-bg: #F9FBFC;
63
- // Resting and hover border of every input-like control: a soft edge a step darker than
64
- // --wui-border-light, and the --wui-text-5 hover. They sit under WCAG 1.4.11's 3:1 by
65
- // design choice; check-contrast reports them as FAIL without failing the gate.
66
- /// meaning: Resting border of every input-like control.
67
- --wui-field-border: #DFE2EA;
68
- /// meaning: Hover border of every input-like control.
69
- --wui-field-border-hover: #C4CADA;
70
- /// meaning: Default hairline border of cards, tables and dividers.
71
- --wui-border-light: #EBEDF3;
72
- /// meaning: Softest border, for inner dividers.
73
- --wui-border-soft: #F4F6F8;
74
- /// meaning: Strong border for emphasised separators, chart axes and unselected control outlines.
75
- --wui-border-strong: #C4CADA;
76
- // The unfilled part of a progress bar / meter. Darker than every surface it can sit on
77
- // (card, page, muted fill) so the empty track reads as a track, yet light enough that the
78
- // mid-yellow warning fill still separates from it.
79
- /// meaning: Unfilled track of a progress bar or meter.
80
- --wui-progress-track: #E1E5EE;
81
- /// meaning: Inset of the table wrapper and toolbar, which a table class can retune.
82
- --wui-table-pad: 20px;
83
-
84
- // Gradients (hero, CTA)
85
- /// meaning: Background gradient of the hero band on marketing pages.
86
- --wui-hero-gradient:
87
- radial-gradient(ellipse 120% 80% at 50% 30%,
88
- #818CF8 0%, #4F46E5 35%, #4338CA 75%, #312E81 100%);
89
- /// meaning: Background gradient of the call-to-action band on marketing pages.
90
- --wui-cta-gradient:
91
- radial-gradient(ellipse 120% 100% at 50% 50%,
92
- #312E81 0%, #1E1B4B 60%, #0F0D2E 100%);
93
-
94
- // Easing curves — match locked design's CSS / Framer Motion exports
95
- /// meaning: Easing curve matching the locked design's motion exports.
96
- --wui-ease-out-quart: cubic-bezier(0.22, 1, 0.36, 1);
97
- /// meaning: Easing curve for interface transitions.
98
- --wui-ease-ui: cubic-bezier(0.32, 0.72, 0, 1);
99
- // Elastic / spring — overshoots the target then settles (the y > 1 control point).
100
- // Used by the tab ink-bar so a tab switch springs into place rather than sliding flat.
101
- /// meaning: Overshooting easing for the tab ink bar's spring into place.
102
- --wui-ease-elastic: cubic-bezier(0.34, 1.56, 0.64, 1);
103
-
104
- // Elevation. In-page card tokens are flat (none). Overlay
105
- // rungs match $wui-shadow-overlay* in _variables.scss — one ink for menus,
106
- // popovers, modals. Do not hand-roll a third shadow.
107
- /// meaning: Shadow under in-page cards, none in this theme so cards stay flat.
108
- --wui-shadow-card: none;
109
- /// meaning: Shadow of a lifted card, none in this theme.
110
- --wui-shadow-card-lifted: none;
111
- /// meaning: Shadow of a lifted card while it is hovered, none in this theme.
112
- --wui-shadow-card-lifted-hover: none;
113
- /// meaning: Shadow of floating overlays such as menus and popovers.
114
- --wui-shadow-overlay: #{$wui-shadow-overlay};
115
- /// meaning: Larger overlay shadow, for the largest floating surfaces.
116
- --wui-shadow-overlay-lg: #{$wui-shadow-overlay-lg};
117
-
118
- // Component-specific shadows. Used by slider thumbs and other interactive elements.
119
- /// meaning: Shadow under a slider thumb and other small interactive elements.
120
- --wui-shadow-thumb: 0 2px 6px rgba(0, 0, 0, 0.1);
121
- /// meaning: Shadow under a slider thumb while it is hovered.
122
- --wui-shadow-thumb-hover: 0 2px 12px rgba(0, 0, 0, 0.2);
123
-
124
- // The control height ladder: sm 32, md 36, lg 44. A button, field, select, segmented control, tab
125
- // or chip of one size shares its height, so a row of mixed controls lines up. On a phone-width or
126
- // touch screen md rises to 44px, the touch-target floor (media rule after this block).
127
- /// meaning: Default height of a button, field, select or tab; larger on phones.
128
- --wui-control-height: 36px;
129
- /// meaning: Height of the small control size, for dense toolbars and chips.
130
- --wui-control-height-sm: 32px;
131
- /// meaning: Height of the large control size, for prominent buttons and fields.
132
- --wui-control-height-lg: 44px;
133
-
134
- // Scrollbar thumb — one quiet grey-blue at three interaction strengths.
135
- /// meaning: Resting thumb colour of a thin scrollbar.
136
- --wui-scrollbar: rgba(145, 158, 171, 0.45);
137
- /// meaning: Scrollbar thumb colour while it is hovered.
138
- --wui-scrollbar-hover: rgba(145, 158, 171, 0.65);
139
- /// meaning: Scrollbar thumb colour while it is dragged.
140
- --wui-scrollbar-active: rgba(145, 158, 171, 0.85);
141
-
142
- // ---- Marketing surface ramp -------------------------------------
143
- // Soft tints + neutral washes used by mega-menu hover, callout cards,
144
- // and section accents. Distinct from --wui-bg-* (which are the
145
- // platform/portal palette).
146
- /// meaning: Soft tint surface for marketing callouts and mega-menu hover.
147
- --wui-surface-soft: #F2EFFE;
148
- /// meaning: Violet-tinted surface for marketing section accents and callout cards.
149
- --wui-surface-violet: #ECE4FE;
150
- /// meaning: Near-white surface for marketing section accents.
151
- --wui-surface-violet-soft: #FCFCFC;
152
- /// meaning: Neutral wash surface for marketing sections and panels.
153
- --wui-surface-mute: #F9FBFC;
154
- /// meaning: Pure black ink, the highest-contrast text colour.
155
- --wui-ink: #000000;
156
-
157
- // ---- Foreground ramp aliases -----------------------------------
158
- // Marketing-side parlance — names mirror the standalone design.
159
- // These point at the same hex values as --wui-text-* (kept as
160
- // aliases rather than duplicated literals so a re-tune of the text
161
- // ramp updates both sides at once).
162
- /// meaning: Marketing alias of the primary body text ink.
163
- --wui-fg-2: var(--wui-text-1);
164
- /// meaning: Marketing alias of the secondary text ink.
165
- --wui-fg-3: var(--wui-text-2);
166
- /// meaning: Marketing alias of the tertiary text ink.
167
- --wui-fg-4: var(--wui-text-3);
168
- /// meaning: Marketing alias of the faintest text ink.
169
- --wui-fg-5: var(--wui-text-5);
170
-
171
- // ---- Neutral ramp ----------------------------------------------
172
- // Used by table emphasis, dividers, and mega-menu hover surfaces.
173
- /// meaning: Border tone of table emphasis rows and dividers.
174
- --wui-neutral-border-dark: #EBEDF3;
175
- /// meaning: Faintest border tone, for dividers.
176
- --wui-neutral-border-light: #F9FBFC;
177
- /// meaning: Muted background of table emphasis rows and mega-menu hover.
178
- --wui-neutral-bg-dark: #F5F6FA;
179
- /// meaning: Faint background for table emphasis and mega-menu hover.
180
- --wui-neutral-bg-light: #F9FBFC;
181
-
182
- // ---- Accent-dark -----------------------------------------------
183
- // Darker primary for pressed/hover accents in CSS (not SCSS $link-hover).
184
- // Aliased onto --wui-primary-pressed so a product that rebrands the pressed
185
- // token once also updates this name (was a frozen indigo hex).
186
- /// meaning: Pressed and hover accent colour in CSS, following the pressed primary.
187
- --wui-accent-dark: var(--wui-primary-pressed);
188
-
189
- // ---- Container width + responsive padding ----------------------
190
- // The standalone design uses a 1512px max canvas with generous side
191
- // padding that grows on wider viewports. Pair with .container-cloves.
192
- /// meaning: Maximum width of the page container on every surface.
193
- --wui-container-max: 1512px;
194
- /// meaning: Side padding of the page container, growing on wider viewports.
195
- --wui-container-pad: 24px;
196
-
197
- // ---- Primary "on-fill" text --------------------------------------
198
- // Unlike the semantic -text tokens below (a legible STANDALONE colour derived
199
- // from a fill, for using the status colour AS body text), this is the text/icon
200
- // colour to use ON TOP OF a solid --wui-primary fill — a selected datepicker day,
201
- // an active pagination page, a checked segmented option, .btn-primary's label.
202
- // Derived from $primary (_variables.scss): white when it clears AA on the primary, near-black
203
- // when the primary is too light for white. A runtime rebrand of --wui-primary sets it too.
204
- /// meaning: Text and icon colour on a solid primary fill, such as a primary button label.
205
- --wui-primary-text: #{wui-hex($wui-primary-text)};
206
-
207
- // ---- Primary as text -----------------------------------------------
208
- // The brand primary darkened until it clears AA (4.5:1) as text on every light surface and on
209
- // its own soft tint (_variables.scss). Every link, tab label, page number, selected option and
210
- // primary-coloured icon reads this, never --wui-primary, which is sized as a fill. Equal to
211
- // --wui-primary when the primary already clears AA. A runtime rebrand of --wui-primary sets it too.
212
- /// meaning: Primary as text and small glyphs on light surfaces, passing AA contrast.
213
- --wui-primary-ink: #{wui-hex($wui-primary-ink)};
214
-
215
- // ---- Semantic status ramps -------------------------------------
216
- // Canonical info/success/warning/danger scales: `active` (text/icon on
217
- // light), the base `100` (vivid fills/dots), then tints 50/30/20/10/5.
218
- // Shared by the portal (aliased to --color-*) and marketing alerts/badges.
219
- /// meaning: Info colour as text on light surfaces.
220
- --wui-info-text: #1460ba;
221
- /// meaning: Info ink for icons and active states on light surfaces.
222
- --wui-info-active: #056EE9;
223
- /// meaning: Vivid info fill for badges, dots and info buttons.
224
- --wui-info: #056EE9;
225
- /// meaning: Info tint 50 for borders and the strongest soft info fill.
226
- --wui-info-50: #8DC2FF;
227
- /// meaning: Info tint 30 for soft fills and borders of alerts and badges.
228
- --wui-info-30: #BBDBFF;
229
- /// meaning: Info tint 20 for soft fills behind info alerts and badges.
230
- --wui-info-20: #D1E6FF;
231
- /// meaning: Info tint 10, the soft background of info alerts and badges.
232
- --wui-info-10: #E9F3FF;
233
- /// meaning: Faintest info tint, for hover washes and soft info backgrounds.
234
- --wui-info-5: #F3F9FF;
235
-
236
- // `-text` variants exist because the status colours are FILLS. #E82646 and #04B440
237
- // are correct on a button or a badge, and both fail AA as text on a light surface
238
- // (4.4:1 and 2.8:1) — which is how a validation error message, of all things, came
239
- // to be unreadable. Darkening the base tokens would change every red button and
240
- // green badge in the system, so text gets its own value and the fills keep theirs.
241
- /// meaning: Success colour as text on light surfaces, darkened to pass AA.
242
- --wui-success-text: #0e7531;
243
- // Deepened success fill for surfaces that carry WHITE text (progress-bar labels), mirroring
244
- // --wui-danger-strong below. The brighter --wui-success/-active are far too light for white
245
- // (2.78:1 / 2.78:1, under AA); this clears it (#0e7531 → 5.82:1). Keep white-on-success off
246
- // the other tokens so buttons/badges keep the vibrant fill.
247
- /// meaning: Deep success fill behind white text, such as progress-bar labels.
248
- --wui-success-strong: #0e7531;
249
- /// meaning: Active success fill, the deepest vivid success tone.
250
- --wui-success-active: #04B440;
251
- /// meaning: Vivid success fill for badges, dots and success buttons.
252
- --wui-success: #04B440;
253
- /// meaning: Success tint 50 for borders and the strongest soft success fill.
254
- --wui-success-50: #8BE3A9;
255
- /// meaning: Success tint 30 for soft fills and borders of alerts and badges.
256
- --wui-success-30: #BAEECC;
257
- /// meaning: Success tint 20 for soft fills behind success alerts and badges.
258
- --wui-success-20: #D1F4DD;
259
- /// meaning: Success tint 10, the soft background of success alerts and badges.
260
- --wui-success-10: #E8FAEE;
261
- /// meaning: Faintest success tint, for hover washes and soft success backgrounds.
262
- --wui-success-5: #F3FCF6;
263
-
264
- /// meaning: Warning colour as text on light surfaces, darkened to pass AA.
265
- --wui-warning-text: #876100;
266
- // White on the vivid amber is only 2.3:1, so the warning button fills with these deeper
267
- // tones instead: #9A6B00 is 4.7:1 under white, the hover deeper still.
268
- /// meaning: Deep warning fill behind white text, such as the warning button.
269
- --wui-warning-strong: #9A6B00;
270
- /// meaning: Deep warning fill while a warning button with white text is hovered.
271
- --wui-warning-strong-hover: #855C00;
272
- /// meaning: Active warning fill, the deepest vivid warning tone.
273
- --wui-warning-active: #DFA000;
274
- /// meaning: Vivid warning fill for badges and dots.
275
- --wui-warning: #DFA000;
276
- /// meaning: Warning tint 50 for borders and the strongest soft warning fill.
277
- --wui-warning-50: #FBD880;
278
- /// meaning: Warning tint 30 for soft fills and borders of alerts and badges.
279
- --wui-warning-30: #FDE8B3;
280
- /// meaning: Warning tint 20 for soft fills behind warning alerts and badges.
281
- --wui-warning-20: #FDEFCC;
282
- /// meaning: Warning tint 10, the soft background of warning alerts and badges.
283
- --wui-warning-10: #FFF8E6;
284
- /// meaning: Faintest warning tint, for hover washes and soft warning backgrounds.
285
- --wui-warning-5: #FEFBF2;
286
-
287
- // Error TEXT red. Shares the brand hue (350°) with --wui-danger-active (#E82646) but is
288
- // darkened until it clears the 4.5:1 AA floor on every surface it lands on — the tightest
289
- // is the .alert-danger tint (--wui-danger-10 #FFEAEF), where this is 4.77:1 and the brand
290
- // #E82646 is only 3.81:1. Do NOT swap this back to --wui-danger-active: that has been tried
291
- // three times and each time the a11y gate rejected the release. The brand red stays in use
292
- // for non-text danger (fills, borders, icons), which carry a 3:1 floor instead.
293
- /// meaning: Error text colour for validation messages and danger text on light surfaces.
294
- --wui-danger-text: #CF1735;
295
- // Deepened danger fill for surfaces that carry WHITE text (btn-danger). The brighter
296
- // --wui-danger/-active below are too light for white (3.86:1 / 4.38:1, under AA); these
297
- // clear it — #C81340 → 5.80:1, hover → higher. Keep white-on-danger off the other tokens.
298
- /// meaning: Deep danger fill behind white text, such as the danger button.
299
- --wui-danger-strong: #C81340;
300
- /// meaning: Deep danger fill while a danger button with white text is hovered.
301
- --wui-danger-strong-hover: #AB1036;
302
- /// meaning: Active danger fill, the deepest vivid danger tone.
303
- --wui-danger-active: #E82646;
304
- /// meaning: Vivid danger fill for badges, dots and danger buttons.
305
- --wui-danger: #E82646;
306
- /// meaning: Danger tint 50 for borders and the strongest soft danger fill.
307
- --wui-danger-50: #FC94AD;
308
- /// meaning: Danger tint 30 for soft fills and borders of alerts and badges.
309
- --wui-danger-30: #FDBFCE;
310
- /// meaning: Danger tint 20 for soft fills behind danger alerts and badges.
311
- --wui-danger-20: #FED4DE;
312
- /// meaning: Danger tint 10, the soft background of danger alerts and badges.
313
- --wui-danger-10: #FFEAEF;
314
- /// meaning: Faintest danger tint, for hover washes and soft danger backgrounds.
315
- --wui-danger-5: #FEF4F6;
316
-
317
- // Corner radii (DESIGN.md scale) — portal aliases as --radius-*
318
- /// meaning: Small step of the corner radius scale.
319
- --wui-radius-sm: 8px;
320
- /// meaning: Medium step of the corner radius scale, the default corner.
321
- --wui-radius-md: 10px;
322
- /// meaning: Large step of the corner radius scale.
323
- --wui-radius-lg: 14px;
324
- /// meaning: Extra-large step of the corner radius scale.
325
- --wui-radius-xl: 16px;
326
- /// meaning: Fully rounded corner, for pills and round buttons.
327
- --wui-radius-pill: 9999px;
328
-
329
- // Spacing scale, shared with the phone library and every Canvas theme.
330
- /// meaning: No space.
331
- --wui-space-none: 0px;
332
- /// meaning: Hairline step of the spacing scale.
333
- --wui-space-xxs: 2px;
334
- /// meaning: Extra-small step of the spacing scale.
335
- --wui-space-xs: 4px;
336
- /// meaning: Small step of the spacing scale.
337
- --wui-space-sm: 8px;
338
- /// meaning: Medium step of the spacing scale.
339
- --wui-space-md: 12px;
340
- /// meaning: Large step of the spacing scale.
341
- --wui-space-lg: 16px;
342
- /// meaning: Extra-large step of the spacing scale.
343
- --wui-space-xl: 24px;
344
- /// meaning: Double extra-large step of the spacing scale.
345
- --wui-space-2xl: 32px;
346
- /// meaning: Triple extra-large step of the spacing scale.
347
- --wui-space-3xl: 48px;
348
- /// meaning: Largest step of the spacing scale.
349
- --wui-space-4xl: 64px;
350
-
351
- /// meaning: Regular text weight.
352
- --wui-fw-normal: 400;
353
- /// meaning: Medium text weight.
354
- --wui-fw-medium: 500;
355
- /// meaning: Semibold text weight, for labels and titles.
356
- --wui-fw-semibold: 600;
357
- /// meaning: Bold text weight.
358
- --wui-fw-bold: 700;
359
- /// meaning: Line height of headings.
360
- --wui-lh-heading: #{$headings-line-height};
361
- /// meaning: Line height of running text and of any text that is not a heading or display text.
362
- --wui-lh-body: #{$line-height-base};
363
- /// meaning: Line height of display-size text such as hero titles.
364
- --wui-lh-display: #{$display-line-height};
365
-
366
- // Field (input/select/datepicker/…) radius — a flat 8px corner across every
367
- // size, for a crisp plain-rounded field (no squircle). Change here to restyle
368
- // every field's corner at once.
369
- /// meaning: Corner radius of every input-like control.
370
- --wui-field-radius: 8px;
371
- /// meaning: Corner radius of a small input-like control.
372
- --wui-field-radius-sm: 8px;
373
- /// meaning: Corner radius of a large input-like control.
374
- --wui-field-radius-lg: 8px;
375
-
376
- // ---- Chart colours ---------------------------------------------------
377
- // The eight series colours <wui-chart> hands out in declared order. Slot 1 is the brand
378
- // primary, so a product's rebrand reaches its charts; 2 to 8 were checked against it for
379
- // colour-blind separation (worst neighbouring pair ΔE 9.1). Aqua, yellow and pink sit under
380
- // 3:1 on white, which is why every chart also has a legend and a data table.
381
- /// meaning: Colour of chart series 1, the brand primary.
382
- --wui-chart-1: var(--wui-primary);
383
- /// meaning: Colour of chart series 2 of the eight categorical series.
384
- --wui-chart-2: #eb6834;
385
- /// meaning: Colour of chart series 3 of the eight categorical series.
386
- --wui-chart-3: #1baf7a;
387
- /// meaning: Colour of chart series 4 of the eight categorical series.
388
- --wui-chart-4: #eda100;
389
- /// meaning: Colour of chart series 5 of the eight categorical series.
390
- --wui-chart-5: #e87ba4;
391
- /// meaning: Colour of chart series 6 of the eight categorical series.
392
- --wui-chart-6: #008300;
393
- /// meaning: Colour of chart series 7 of the eight categorical series.
394
- --wui-chart-7: #2a78d6;
395
- /// meaning: Colour of chart series 8 of the eight categorical series.
396
- --wui-chart-8: #e34948;
397
- // One-hue ramp for magnitude (heatmap cells, calendar days), faint to strong, on the primary.
398
- /// meaning: Faintest step of the magnitude ramp, for empty heatmap and calendar cells.
399
- --wui-chart-seq-0: var(--wui-bg-muted);
400
- /// meaning: First step of the one-hue magnitude ramp for heatmap and calendar cells.
401
- --wui-chart-seq-1: var(--wui-primary-10);
402
- /// meaning: Second step of the one-hue magnitude ramp for heatmap and calendar cells.
403
- --wui-chart-seq-2: var(--wui-primary-20);
404
- /// meaning: Third step of the one-hue magnitude ramp for heatmap and calendar cells.
405
- --wui-chart-seq-3: var(--wui-primary-30);
406
- /// meaning: Fourth step of the one-hue magnitude ramp for heatmap and calendar cells.
407
- --wui-chart-seq-4: var(--wui-primary-50);
408
- /// meaning: Fifth step of the one-hue magnitude ramp for heatmap and calendar cells.
409
- --wui-chart-seq-5: var(--wui-primary-hover);
410
- /// meaning: Strongest step of the one-hue magnitude ramp for heatmap and calendar cells.
411
- --wui-chart-seq-6: var(--wui-primary-pressed);
412
- // Below and above a midpoint (variance, change against a target), with a grey middle.
413
- /// meaning: Colour of values below the midpoint in a diverging chart.
414
- --wui-chart-diverging-low: #e34948;
415
- /// meaning: Neutral midpoint colour of a diverging chart.
416
- --wui-chart-diverging-mid: #c4cada;
417
- /// meaning: Colour of values above the midpoint in a diverging chart.
418
- --wui-chart-diverging-high: #2a78d6;
419
- // A context series (last period) and a donut's folded Other slice.
420
- /// meaning: Context series colour, such as the last period, and the folded Other slice.
421
- --wui-chart-neutral: #99a1b7;
422
- // Ink: gridlines, the axis line, and tick and legend text. Aliases, so dark follows --color-*.
423
- /// meaning: Gridline colour of charts.
424
- --wui-chart-grid: var(--color-border);
425
- /// meaning: Axis line colour of charts.
426
- --wui-chart-axis: var(--color-border-strong);
427
- /// meaning: Tick and legend text colour of charts.
428
- --wui-chart-label: var(--color-text-subtle);
429
-
430
- // ---- Portal dark palette ----------------------------------------
431
- // Marketing stays light. Portal flips [data-theme="dark"] and maps
432
- // --color-* aliases onto these so dark hexes live in theme/, not the app.
433
- /// meaning: Dark page background, the base of every dark-mode surface.
434
- --wui-dark-bg-page: #0f1117;
435
- /// meaning: Subtle dark background, one step off the dark page.
436
- --wui-dark-bg-elevated: #0d0f15;
437
- /// meaning: Dark muted fill for grouped areas and quiet controls.
438
- --wui-dark-bg-muted: #232733;
439
- /// meaning: Dark card and panel surface, one step above the dark page.
440
- --wui-dark-bg-surface: #181b23;
441
- /// meaning: Dark hairline border of cards, tables and dividers.
442
- --wui-dark-border: #2a2f3a;
443
- /// meaning: Stronger dark border for emphasised separators.
444
- --wui-dark-border-strong:#3a414f;
445
- // Field borders on the dark fills: the dark border and strong border values.
446
- /// meaning: Resting border of input-like controls in dark mode.
447
- --wui-dark-field-border: #2a2f3a;
448
- /// meaning: Hover border of input-like controls in dark mode.
449
- --wui-dark-field-border-hover: #3a414f;
450
- // Lighter than the dark page, surface and muted fill, so the empty track shows on all three.
451
- /// meaning: Unfilled track of a progress bar or meter in dark mode.
452
- --wui-dark-progress-track: #323845;
453
- /// meaning: Primary body text colour in dark mode.
454
- --wui-dark-text: #e6e8ee;
455
- /// meaning: Secondary text colour in dark mode.
456
- --wui-dark-text-muted: #b4b9c6;
457
- /// meaning: Tertiary text colour in dark mode, for hints and captions.
458
- --wui-dark-text-subtle: #8a90a0;
459
- // Primary as TEXT, rings and focus borders, and as the fill under near-black ink: the brand
460
- // primary lifted until it clears 4.5:1 on every dark surface and tint (_variables.scss), so a
461
- // brand set with wui-brand-primary reaches dark mode. A runtime override must clear the same.
462
- /// meaning: Primary as text, rings, focus borders and the fill under dark ink in dark mode.
463
- --wui-dark-primary: #{wui-hex($wui-dark-primary)};
464
- /// meaning: Primary fill while it is hovered in dark mode.
465
- --wui-dark-primary-hover: #{wui-hex($wui-dark-primary-hover)};
466
-
467
- // Dark mode shadow remaps — lighter shadows (white ink) for visibility on dark surfaces.
468
- /// meaning: Slider thumb shadow in dark mode, drawn with light ink.
469
- --wui-dark-shadow-thumb: 0 2px 6px rgba(255, 255, 255, 0.1);
470
- /// meaning: Slider thumb shadow while it is hovered in dark mode.
471
- --wui-dark-shadow-thumb-hover: 0 2px 12px rgba(255, 255, 255, 0.2);
472
-
473
- // Dark chart colours, mapped onto --wui-chart-* by the dark theme (_wui-aliases.scss); slot 1
474
- // follows --wui-dark-primary. The series set clears 3:1 on the dark page colour.
475
- /// meaning: Dark-mode colour of chart series 2 of the categorical set.
476
- --wui-dark-chart-2: #d95926;
477
- /// meaning: Dark-mode colour of chart series 3 of the categorical set.
478
- --wui-dark-chart-3: #199e70;
479
- /// meaning: Dark-mode colour of chart series 4 of the categorical set.
480
- --wui-dark-chart-4: #c98500;
481
- /// meaning: Dark-mode colour of chart series 5 of the categorical set.
482
- --wui-dark-chart-5: #d55181;
483
- /// meaning: Dark-mode colour of chart series 6 of the categorical set.
484
- --wui-dark-chart-6: #008300;
485
- /// meaning: Dark-mode colour of chart series 7 of the categorical set.
486
- --wui-dark-chart-7: #3987e5;
487
- /// meaning: Dark-mode colour of chart series 8 of the categorical set.
488
- --wui-dark-chart-8: #e66767;
489
- /// meaning: Dark-mode faintest step of the magnitude ramp, for empty heatmap cells.
490
- --wui-dark-chart-seq-0: #20242f;
491
- /// meaning: Dark-mode first step of the magnitude ramp for heatmap and calendar cells.
492
- --wui-dark-chart-seq-1: #262c45;
493
- /// meaning: Dark-mode second step of the magnitude ramp for heatmap and calendar cells.
494
- --wui-dark-chart-seq-2: #2f3a70;
495
- /// meaning: Dark-mode third step of the magnitude ramp for heatmap and calendar cells.
496
- --wui-dark-chart-seq-3: #3b4ba0;
497
- /// meaning: Dark-mode fourth step of the magnitude ramp for heatmap and calendar cells.
498
- --wui-dark-chart-seq-4: #5168d2;
499
- /// meaning: Dark-mode fifth step of the magnitude ramp for heatmap and calendar cells.
500
- --wui-dark-chart-seq-5: #7a90ef;
501
- /// meaning: Dark-mode strongest step of the magnitude ramp for heatmap and calendar cells.
502
- --wui-dark-chart-seq-6: #b3c1f7;
503
- /// meaning: Dark-mode colour of values below the midpoint in a diverging chart.
504
- --wui-dark-chart-diverging-low: #e66767;
505
- /// meaning: Dark-mode neutral midpoint colour of a diverging chart.
506
- --wui-dark-chart-diverging-mid: #3a414f;
507
- /// meaning: Dark-mode colour of values above the midpoint in a diverging chart.
508
- --wui-dark-chart-diverging-high: #3987e5;
509
- /// meaning: Dark-mode context series colour, such as the last period.
510
- --wui-dark-chart-neutral: #5d6475;
511
-
512
- // ---- Fluid type scale --------------------------------------------
513
- // clamp(min, preferred, max) so type scales smoothly between viewports instead of
514
- // stepping at Bootstrap's breakpoints. `base` sits close to Bootstrap's own 1rem body
515
- // size; every other step is derived at a consistent ratio, up and down. Additive only —
516
- // nothing in the shared theme consumes these yet, a product opts in per element.
517
- /// meaning: Extra-small step of the fluid type scale; a product opts in per element.
518
- --wui-fs-xs: clamp(0.75rem, 0.73rem + 0.1vw, 0.8125rem);
519
- /// meaning: Small step of the fluid type scale; a product opts in per element.
520
- --wui-fs-sm: clamp(0.8125rem, 0.79rem + 0.12vw, 0.875rem);
521
- /// meaning: Step between the small and body sizes of the fluid type scale; a product opts in per element.
522
- --wui-fs-smb: clamp(0.875rem, 0.8rem + 0.2vw, 0.9375rem);
523
- /// meaning: Body-size step of the fluid type scale, close to Bootstrap's 1rem.
524
- --wui-fs-base: clamp(0.95rem, 0.9rem + 0.25vw, 1.05rem);
525
- /// meaning: Large step of the fluid type scale; a product opts in per element.
526
- --wui-fs-lg: clamp(1.05rem, 0.98rem + 0.35vw, 1.25rem);
527
- /// meaning: Extra-large step of the fluid type scale; a product opts in per element.
528
- --wui-fs-xl: clamp(1.25rem, 1.15rem + 0.5vw, 1.5rem);
529
- /// meaning: Double extra-large step of the fluid type scale; a product opts in per element.
530
- --wui-fs-2xl: clamp(1.5rem, 1.3rem + 1vw, 2rem);
531
- /// meaning: Triple extra-large step of the fluid type scale; a product opts in per element.
532
- --wui-fs-3xl: clamp(1.875rem, 1.5rem + 1.75vw, 2.75rem);
533
- /// meaning: Step between the triple and fourth extra-large sizes of the fluid type scale; a product opts in per element.
534
- --wui-fs-48: clamp(2.5rem, 2.2rem + 1.5vw, 3rem);
535
- /// meaning: Fourth extra-large step of the fluid type scale; a product opts in per element.
536
- --wui-fs-4xl: clamp(2.25rem, 1.7rem + 2.5vw, 3.5rem);
537
- /// meaning: Fifth extra-large step of the fluid type scale; a product opts in per element.
538
- --wui-fs-5xl: clamp(2.75rem, 1.9rem + 3.75vw, 4.5rem);
539
- /// meaning: Step between the fifth and sixth extra-large sizes of the fluid type scale; a product opts in per element.
540
- --wui-fs-64: clamp(3rem, 2.6rem + 2.5vw, 4rem);
541
- /// meaning: Sixth extra-large step of the fluid type scale; a product opts in per element.
542
- --wui-fs-6xl: clamp(3.5rem, 2.2rem + 5.5vw, 6rem);
543
- /// meaning: First display step above the fluid type scale, 64px on a phone to 120px on a desktop.
544
- --wui-fs-7xl: clamp(4rem, 2.7rem + 5.33vw, 7.5rem);
545
- /// meaning: Largest display step of the fluid type scale, 72px on a phone to 144px on a desktop.
546
- --wui-fs-8xl: clamp(4.5rem, 2.83rem + 6.86vw, 9rem);
547
-
548
- // ---- Font stacks ---------------------------------------------------
549
- // Sans-serif body font (Bootstrap's system stack or product override).
550
- --font-sans: var(--bs-body-font-family);
551
-
552
- // ---- Typeface slots -----------------------------------------------
553
- // Display (headings, Webority Serif), body (running text and controls) and mono (code, aligned figures)
554
- // are the three typefaces Canvas themes and products name; a product repoints one without touching the others.
555
- /// meaning: Display typeface for headings marked as display text.
556
- --wui-font-display: #{$font-family-display};
557
- /// meaning: Body typeface for running text and controls.
558
- --wui-font-body: #{$font-family-sans-serif};
559
- /// meaning: Monospace typeface for code, identifiers and figures that must line up.
560
- --wui-font-mono: #{$font-family-monospace};
561
-
562
- // ---- Z-index scale -------------------------------------------------
563
- // One page-level ladder. Local stacking inside a component (1, 5, 10, 40…) is
564
- // NOT on this scale — only fixed/portalled layers that compete across the page.
565
- //
566
- // Why not Bootstrap's raw 1040/1050 for modals? App shell sticky chrome uses
567
- // 1040–1045; a BS-height modal would paint under the mobile drawer. Modals are
568
- // elevated to 1500+ so the shell never covers a dialog. Portalled menus
569
- // (select / date / phone / infotip) sit at 1600 so a combobox inside a modal
570
- // is not trapped under the dialog. Never invent a third number in component CSS —
571
- // pick a rung from this list.
572
- /// meaning: Stacking layer of in-page dropdown menus.
573
- --wui-z-dropdown: 1000;
574
- /// meaning: Stacking layer of sticky page chrome such as headers.
575
- --wui-z-sticky: 1020;
576
- // Desktop shell sidebar: its overflowing menus (the workspace switcher) paint over sticky page
577
- // content, while the fixed corner layers (consent banner, floating buttons) still cover it.
578
- /// meaning: Stacking layer of the desktop shell sidebar and its overflowing menus.
579
- --wui-z-shell-sidebar: 1025;
580
- /// meaning: Stacking layer of fixed corner layers such as the consent banner.
581
- --wui-z-fixed: 1030;
582
- /// meaning: Stacking layer of the app shell base chrome and the splash.
583
- --wui-z-shell: 1040; // splash, shell base chrome
584
- /// meaning: Stacking layer of the dim behind the mobile drawer.
585
- --wui-z-shell-scrim: 1044; // mobile drawer scrim
586
- /// meaning: Stacking layer of the mobile sidebar drawer.
587
- --wui-z-shell-drawer: 1045; // mobile sidebar drawer
588
- /// meaning: Stacking layer of the dim behind a modal dialog.
589
- --wui-z-modal-backdrop: 1500;
590
- /// meaning: Stacking layer of a modal dialog above its backdrop.
591
- --wui-z-modal: 1505;
592
- /// meaning: Stacking layer of the product tour, above modals and below menus.
593
- --wui-z-tour: 1550; // product tour: above a modal, below menus and popovers
594
- /// meaning: Stacking layer of portalled select, date and phone menus and info tips.
595
- --wui-z-menu: 1600; // portalled select/date/phone menus + infotip
596
- /// meaning: Stacking layer of popovers, on the same rung as menus.
597
- --wui-z-popover: 1600; // same rung as --wui-z-menu (above modal)
598
- /// meaning: Stacking layer of tooltips, above menus and popovers.
599
- --wui-z-tooltip: 1650;
600
- /// meaning: Stacking layer of toast notifications, the topmost layer.
601
- --wui-z-toast: 1700;
602
-
603
- // The weekday every calendar's week starts on: the date picker, the date range and the event
604
- // calendar. 0 = Sunday, 1 = Monday, through 6 = Saturday. A product sets it once here, a page or
605
- // a section can set it on an ancestor, and a control's own first-day attribute wins over both.
606
- /// meaning: Weekday calendars start their week on, from 0 for Sunday to 6 for Saturday.
607
- --wui-first-day: 1;
608
- }
609
-
610
- // The neutral surfaces follow the dark theme, so a neutral alert or table row stays dark on a dark
611
- // page. The selectors match the dark theme (manual attribute, and the automatic media query).
612
- :root[data-theme="dark"],
613
- :root[data-bs-theme="dark"] {
614
- --wui-neutral-bg-light: var(--wui-dark-bg-surface);
615
- --wui-neutral-bg-dark: var(--wui-dark-bg-muted);
616
- }
617
-
618
- :root[data-theme="auto"] {
619
- @media (prefers-color-scheme: dark) {
620
- --wui-neutral-bg-light: var(--wui-dark-bg-surface);
621
- --wui-neutral-bg-dark: var(--wui-dark-bg-muted);
622
- }
623
- }
624
-
625
- // A finger needs 44px: on a phone-width or touch screen the default control takes the lg rung. The
626
- // same query sizes the modal and drawer close buttons (wui/_overlays.scss).
627
- @media (max-width: 575.98px), (pointer: coarse) {
628
- :root {
629
- --wui-control-height: 44px;
630
- }
631
- }
632
-
633
- // Bootstrap md / xl (not invented px)
634
- @media (min-width: 768px) {
635
- :root { --wui-container-pad: 64px; }
636
- }
637
- @media (min-width: 1200px) {
638
- :root { --wui-container-pad: 88px; }
639
- }
1
+ // The library's CSS custom properties, imported after Bootstrap: the names generated from the token
2
+ // source, then the few the token source does not generate.
3
+ @import "tokens.generated";
4
+ @import "wui-residual";