@juspay/svelte-ui-components 4.29.1 → 4.31.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 +15 -14
- package/dist/Accordion/Accordion.svelte +18 -0
- package/dist/AnimatedNumber/AnimatedNumber.svelte +776 -0
- package/dist/AnimatedNumber/AnimatedNumber.svelte.d.ts +4 -0
- package/dist/AnimatedNumber/motion.d.ts +47 -0
- package/dist/AnimatedNumber/motion.js +190 -0
- package/dist/AnimatedNumber/properties.d.ts +58 -0
- package/dist/AnimatedNumber/properties.js +1 -0
- package/dist/Badge/Badge.svelte +20 -3
- package/dist/Badge/properties.d.ts +9 -0
- package/dist/Book/Book.svelte +9 -0
- package/dist/Calendar/Calendar.svelte +34 -2
- package/dist/Carousel/Carousel.svelte +17 -2
- package/dist/ChatBubble/ChatBubble.svelte +12 -0
- package/dist/ChatComposer/ChatComposer.svelte +9 -0
- package/dist/CommandMenu/CommandMenu.svelte +13 -0
- package/dist/DateRangePicker/DateRangePicker.svelte +77 -20
- package/dist/DeltaIndicator/DeltaIndicator.svelte +12 -1
- package/dist/DeltaIndicator/properties.d.ts +9 -0
- package/dist/Gallery/Gallery.svelte +16 -0
- package/dist/Gauge/Gauge.svelte +21 -2
- package/dist/Gauge/properties.d.ts +13 -0
- package/dist/Input/Input.svelte +34 -26
- package/dist/KeyboardInput/KeyboardInput.svelte +1 -1
- package/dist/ListItem/ListItem.svelte +27 -2
- package/dist/ListItem/label.d.ts +11 -0
- package/dist/ListItem/label.js +40 -0
- package/dist/ListItem/properties.d.ts +52 -0
- package/dist/MediaUpload/MediaUpload.svelte +12 -1
- package/dist/MediaUpload/properties.d.ts +9 -0
- package/dist/Menu/Menu.svelte +11 -2
- package/dist/Modal/Modal.svelte +14 -4
- package/dist/PieChart/PieChart.svelte +16 -1
- package/dist/PieChart/properties.d.ts +13 -0
- package/dist/Progress/Progress.svelte +21 -1
- package/dist/Progress/properties.d.ts +12 -0
- package/dist/ProportionBar/ProportionBar.svelte +7 -1
- package/dist/ProportionBar/ProportionBar.svelte.d.ts +0 -19
- package/dist/ProportionBar/properties.d.ts +10 -0
- package/dist/Select/Select.svelte +23 -8
- package/dist/SplitButton/SplitButton.svelte +4 -1
- package/dist/SplitInput/SplitInput.svelte +1 -1
- package/dist/StatCard/StatCard.svelte +129 -5
- package/dist/StatCard/metric.d.ts +22 -0
- package/dist/StatCard/metric.js +74 -0
- package/dist/StatCard/properties.d.ts +44 -0
- package/dist/Table/BuiltinCell.svelte +19 -2
- package/dist/Table/cellData.js +3 -0
- package/dist/Table/properties.d.ts +15 -0
- package/dist/Tabs/Tabs.svelte +16 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/styles/theme-dark.css +27 -3
- package/dist-codemod/codemod/migration-assets/legacy-display.css +2 -1
- package/dist-codemod/codemod/migration-assets/legacy-palette.css +4 -1
- package/dist-codemod/codemod/migration-assets/wc-display.json +5 -0
- package/dist-wc/index.js +1435 -747
- package/package.json +4 -2
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether a displayed value is a METRIC worth rolling, or an identifier that
|
|
3
|
+
* merely contains digits.
|
|
4
|
+
*
|
|
5
|
+
* The distinction is not cosmetic. Adopting the odometer across a dashboard
|
|
6
|
+
* mapper animated `demo-store.myshopify.com` and `Shinchan Store GA4 (987654321)`
|
|
7
|
+
* on the anomaly surface: a store domain and a GA4 account id, rolled digit by
|
|
8
|
+
* digit as though they were measurements. Nothing was broken -- they went
|
|
9
|
+
* through the same `statcard-value` slot as `₹60k` -- which is exactly why a
|
|
10
|
+
* blanket "animate this card's values" is the wrong instruction.
|
|
11
|
+
*
|
|
12
|
+
* The rule is digits plus decoration. A metric is allowed to carry a currency
|
|
13
|
+
* symbol, a sign, a percent, group and decimal separators, and SHORT unit words
|
|
14
|
+
* -- `₹60k`, `90%`, `₹1.23Cr`, `12m 15s`, `-8%`. Anything else with a long
|
|
15
|
+
* alphabetic run, a dotted hostname or a parenthesised id is an identifier and
|
|
16
|
+
* is left alone.
|
|
17
|
+
*
|
|
18
|
+
* Deliberately conservative in one direction only: a metric wrongly refused
|
|
19
|
+
* renders exactly as it does today, while an identifier wrongly accepted is a
|
|
20
|
+
* number spinning in a domain name.
|
|
21
|
+
*/
|
|
22
|
+
/** Unit fragments a metric may carry. Matched case-insensitively, whole-run. */
|
|
23
|
+
const UNITS = new Set([
|
|
24
|
+
'k',
|
|
25
|
+
'l',
|
|
26
|
+
'm',
|
|
27
|
+
'b',
|
|
28
|
+
't',
|
|
29
|
+
'cr',
|
|
30
|
+
'lac',
|
|
31
|
+
'lakh',
|
|
32
|
+
'mn',
|
|
33
|
+
'bn',
|
|
34
|
+
's',
|
|
35
|
+
'ms',
|
|
36
|
+
'h',
|
|
37
|
+
'hr',
|
|
38
|
+
'hrs',
|
|
39
|
+
'd',
|
|
40
|
+
'day',
|
|
41
|
+
'days',
|
|
42
|
+
'min',
|
|
43
|
+
'mins',
|
|
44
|
+
'sec',
|
|
45
|
+
'secs',
|
|
46
|
+
'x',
|
|
47
|
+
'pt',
|
|
48
|
+
'pts',
|
|
49
|
+
'px'
|
|
50
|
+
]);
|
|
51
|
+
/** Decoration that carries no meaning for this decision. */
|
|
52
|
+
const DECORATION = /[\p{Nd}\s,.:+%()[\]]|\p{Sc}|\p{Pd}|\p{Sm}/gu;
|
|
53
|
+
export const isAnimatableMetric = (text) => {
|
|
54
|
+
if (typeof text !== 'string') {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
const value = text.trim();
|
|
58
|
+
if (value.length === 0 || !/\p{Nd}/u.test(value)) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
// A dotted hostname or an email is an identifier however many digits it has.
|
|
62
|
+
if (/\.[a-z]{2,}(?:\/|$)|@|\/\//i.test(value)) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
// A parenthesised run of digits is an id in a label, not a measurement:
|
|
66
|
+
// "Shinchan Store GA4 (987654321)".
|
|
67
|
+
if (/\([^)]*\p{Nd}[^)]*\)/u.test(value)) {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
// What remains once digits and decoration are removed must be unit words only.
|
|
71
|
+
const remainder = value.replace(DECORATION, ' ');
|
|
72
|
+
const words = remainder.split(/\s+/).filter((word) => word.length > 0);
|
|
73
|
+
return words.every((word) => UNITS.has(word.toLowerCase()));
|
|
74
|
+
};
|
|
@@ -111,6 +111,50 @@ export type OptionalStatCardProperties = {
|
|
|
111
111
|
footer?: Snippet;
|
|
112
112
|
/** Replaces the string `value` with a custom snippet for advanced value rendering. */
|
|
113
113
|
valueSnippet?: Snippet;
|
|
114
|
+
/**
|
|
115
|
+
* Rolls `value`, each row's `value`/`comparisonValue`, and each breakdown
|
|
116
|
+
* item's `value` through AnimatedNumber's per-digit odometer instead of
|
|
117
|
+
* swapping the text outright. Every one of those is already a
|
|
118
|
+
* consumer-preformatted string, not a raw number -- AnimatedNumber diffs a
|
|
119
|
+
* string by character position, so `'₹1.23Cr'` -> `'₹1.45Cr'` rolls only the
|
|
120
|
+
* two digits that changed and leaves `₹`, the decimal point and `Cr` alone,
|
|
121
|
+
* with nothing here ever surfacing the number underneath. `valueSnippet`
|
|
122
|
+
* still wins outright when set, exactly as it does today.
|
|
123
|
+
* @default false
|
|
124
|
+
*/
|
|
125
|
+
animateValue?: boolean;
|
|
126
|
+
/**
|
|
127
|
+
* Rolls the animated values up from zero as the card appears, rather than
|
|
128
|
+
* painting them outright. Requires an animation mode to be active -- either
|
|
129
|
+
* `animateValue`, or `animatePrimary` having resolved a slot to animate.
|
|
130
|
+
* Ignored when neither applies, because there is then nothing to roll.
|
|
131
|
+
*
|
|
132
|
+
* Worth turning on for a card whose figures arrive once with a fetch and then
|
|
133
|
+
* do not change, which is the ordinary dashboard case -- otherwise the
|
|
134
|
+
* odometer has nothing to react to for the life of the page.
|
|
135
|
+
* @default false
|
|
136
|
+
*/
|
|
137
|
+
animateOnMount?: boolean;
|
|
138
|
+
/**
|
|
139
|
+
* Animate exactly ONE value on the card instead of all of them.
|
|
140
|
+
*
|
|
141
|
+
* Prefer this to `animateValue` on a dashboard. A card carries several numeric
|
|
142
|
+
* slots at different sizes, and animating all of them puts motion on the small
|
|
143
|
+
* supporting figures as loudly as on the headline -- which reads as noise, and
|
|
144
|
+
* on the business variant actually animated the 18px rows while the 44px
|
|
145
|
+
* subtitle above them sat still.
|
|
146
|
+
* @default false
|
|
147
|
+
*/
|
|
148
|
+
animatePrimary?: boolean;
|
|
149
|
+
/**
|
|
150
|
+
* Which slot `animatePrimary` animates.
|
|
151
|
+
*
|
|
152
|
+
* `'auto'` measures the rendered slots and picks the largest one holding a
|
|
153
|
+
* metric, so the card follows its own type scale. Name a slot to override:
|
|
154
|
+
* `'subtitle'`, `'value'`, or a row index. Ignored unless `animatePrimary`.
|
|
155
|
+
* @default 'auto'
|
|
156
|
+
*/
|
|
157
|
+
primary?: 'auto' | 'subtitle' | 'value' | number;
|
|
114
158
|
/**
|
|
115
159
|
* Multiple metric rows. When provided, replaces the single value/delta row with
|
|
116
160
|
* a column of rows separated by dividers.
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
import Select from '../Select/Select.svelte';
|
|
26
26
|
import Input from '../Input/Input.svelte';
|
|
27
27
|
import Menu from '../Menu/Menu.svelte';
|
|
28
|
+
import AnimatedNumber from '../AnimatedNumber/AnimatedNumber.svelte';
|
|
28
29
|
import trendUpSvg from '../assets/trend-up.svg?raw';
|
|
29
30
|
import trendDownSvg from '../assets/trend-down.svg?raw';
|
|
30
31
|
import copySvg from '../assets/copy.svg?raw';
|
|
@@ -258,7 +259,15 @@
|
|
|
258
259
|
>
|
|
259
260
|
<!-- eslint-disable svelte/no-at-html-tags -->
|
|
260
261
|
<span class="builtin-trend-icon">{@html trendUpSvg}</span>
|
|
261
|
-
{compare.
|
|
262
|
+
{#if compare.animateTrend}
|
|
263
|
+
<!-- The string form, not the raw number: it keeps the % inside the
|
|
264
|
+
odometer's accessible name, and avoids Intl grouping a raw
|
|
265
|
+
trendPercent into "1,234.5" where the plain branch shows
|
|
266
|
+
"1234.5". -->
|
|
267
|
+
<AnimatedNumber value={`${compare.trendPercent}%`} />
|
|
268
|
+
{:else}
|
|
269
|
+
{compare.trendPercent}%
|
|
270
|
+
{/if}
|
|
262
271
|
</span>
|
|
263
272
|
{:else if compare.trendPercent < 0}
|
|
264
273
|
<span
|
|
@@ -268,7 +277,15 @@
|
|
|
268
277
|
>
|
|
269
278
|
<!-- eslint-disable svelte/no-at-html-tags -->
|
|
270
279
|
<span class="builtin-trend-icon">{@html trendDownSvg}</span>
|
|
271
|
-
{compare.
|
|
280
|
+
{#if compare.animateTrend}
|
|
281
|
+
<!-- The string form, not the raw number: it keeps the % inside the
|
|
282
|
+
odometer's accessible name, and avoids Intl grouping a raw
|
|
283
|
+
trendPercent into "1,234.5" where the plain branch shows
|
|
284
|
+
"1234.5". -->
|
|
285
|
+
<AnimatedNumber value={`${compare.trendPercent}%`} />
|
|
286
|
+
{:else}
|
|
287
|
+
{compare.trendPercent}%
|
|
288
|
+
{/if}
|
|
272
289
|
</span>
|
|
273
290
|
{:else}
|
|
274
291
|
<span class="builtin-trend builtin-trend-flat">↔ 0%</span>
|
package/dist/Table/cellData.js
CHANGED
|
@@ -116,6 +116,9 @@ export const asCompareCellData = (value) => {
|
|
|
116
116
|
if (typeof record.trendLabel === 'string') {
|
|
117
117
|
compareData.trendLabel = record.trendLabel;
|
|
118
118
|
}
|
|
119
|
+
if (typeof record.animateTrend === 'boolean') {
|
|
120
|
+
compareData.animateTrend = record.animateTrend;
|
|
121
|
+
}
|
|
119
122
|
return compareData;
|
|
120
123
|
};
|
|
121
124
|
export const asLinkCellData = (value) => {
|
|
@@ -89,6 +89,21 @@ export type TableCompareCellData = {
|
|
|
89
89
|
comparison?: string;
|
|
90
90
|
trendPercent?: number;
|
|
91
91
|
trendLabel?: string;
|
|
92
|
+
/**
|
|
93
|
+
* Rolls `trendPercent` through `AnimatedNumber` instead of the plain text
|
|
94
|
+
* it renders as today, so a comparison row that updates in place (a live
|
|
95
|
+
* dashboard, a polling total) visibly counts to its new value rather than
|
|
96
|
+
* jumping. Per-cell rather than a Table-level prop, since a single column
|
|
97
|
+
* can mix trend rows a consumer wants live with historical ones that don't
|
|
98
|
+
* need to move. `AnimatedNumber` is handed the complete string
|
|
99
|
+
* `` `${trendPercent}%` ``, so the unit sits inside its accessible name
|
|
100
|
+
* rather than beside it, where a reader navigating by graphic would never
|
|
101
|
+
* reach it. The `%` stays a literal character rather than an
|
|
102
|
+
* `Intl.NumberFormat` percent style, which would divide the value by 100
|
|
103
|
+
* and render the wrong figure, and it is a literal column that never rolls.
|
|
104
|
+
* @default false
|
|
105
|
+
*/
|
|
106
|
+
animateTrend?: boolean;
|
|
92
107
|
};
|
|
93
108
|
/** Cell shape for `type: 'toggle'` — the handler lives on the column. */
|
|
94
109
|
export type TableToggleCellData = {
|
package/dist/Tabs/Tabs.svelte
CHANGED
|
@@ -638,6 +638,22 @@
|
|
|
638
638
|
transition: var(--tabs-transition, color 0.2s ease, background 0.2s ease);
|
|
639
639
|
}
|
|
640
640
|
|
|
641
|
+
/* Roving focus really does move (see focusedKey/focusTabAt above) -- this
|
|
642
|
+
just replaces the INDICATOR that outline:none above strips, which is what
|
|
643
|
+
was actually missing (WCAG 2.4.7). :focus-visible only, so a mouse click
|
|
644
|
+
that activates a tab still shows nothing new, matching the rest of this
|
|
645
|
+
file's pattern (Sheet's .sheet-panel, Select's .select-clear, ...).
|
|
646
|
+
currentColor tracks --tabs-item-color / --tabs-active-color, which are
|
|
647
|
+
already themed per-mode and per-state, so the ring stays visible against
|
|
648
|
+
--tabs-bar-background in both themes with no extra token needed here. The
|
|
649
|
+
offset is inset, not the usual outward one: .tabs-bar is a same-axis
|
|
650
|
+
overflow:auto scroller with 0px padding/gap by default, so an outward ring
|
|
651
|
+
on an edge tab would be clipped by the scroll container's own edge. */
|
|
652
|
+
.tabs-item:focus-visible {
|
|
653
|
+
outline: var(--tabs-item-focus-outline, 2px solid currentColor);
|
|
654
|
+
outline-offset: var(--tabs-item-focus-outline-offset, -2px);
|
|
655
|
+
}
|
|
656
|
+
|
|
641
657
|
.tabs-item :global(.tabs-item-icon) {
|
|
642
658
|
--image-width: var(--tabs-item-icon-size, 16px);
|
|
643
659
|
--image-height: var(--tabs-item-icon-size, 16px);
|
package/dist/index.d.ts
CHANGED
|
@@ -86,6 +86,7 @@ export { default as FileDropzoneTrigger } from './FileDropzoneTrigger/FileDropzo
|
|
|
86
86
|
export { default as Separator } from './Separator/Separator.svelte';
|
|
87
87
|
export { default as Label } from './Label/Label.svelte';
|
|
88
88
|
export { default as AspectRatio } from './AspectRatio/AspectRatio.svelte';
|
|
89
|
+
export { default as AnimatedNumber } from './AnimatedNumber/AnimatedNumber.svelte';
|
|
89
90
|
export { default as RatingGroup } from './RatingGroup/RatingGroup.svelte';
|
|
90
91
|
export { default as Chat } from './Chat/Chat.svelte';
|
|
91
92
|
export { default as ChatHeader } from './ChatHeader/ChatHeader.svelte';
|
|
@@ -154,6 +155,7 @@ export type * from './LoadingDots/properties';
|
|
|
154
155
|
export type * from './Separator/properties';
|
|
155
156
|
export type * from './Label/properties';
|
|
156
157
|
export type * from './AspectRatio/properties';
|
|
158
|
+
export type * from './AnimatedNumber/properties';
|
|
157
159
|
export type * from './RatingGroup/properties';
|
|
158
160
|
export type * from './Menu/properties';
|
|
159
161
|
export type * from './Sheet/properties';
|
package/dist/index.js
CHANGED
|
@@ -86,6 +86,7 @@ export { default as FileDropzoneTrigger } from './FileDropzoneTrigger/FileDropzo
|
|
|
86
86
|
export { default as Separator } from './Separator/Separator.svelte';
|
|
87
87
|
export { default as Label } from './Label/Label.svelte';
|
|
88
88
|
export { default as AspectRatio } from './AspectRatio/AspectRatio.svelte';
|
|
89
|
+
export { default as AnimatedNumber } from './AnimatedNumber/AnimatedNumber.svelte';
|
|
89
90
|
export { default as RatingGroup } from './RatingGroup/RatingGroup.svelte';
|
|
90
91
|
export { default as Chat } from './Chat/Chat.svelte';
|
|
91
92
|
export { default as ChatHeader } from './ChatHeader/ChatHeader.svelte';
|
|
@@ -135,6 +135,8 @@
|
|
|
135
135
|
--chat-composer-placeholder-color: #9ca3af;
|
|
136
136
|
--chat-composer-action-color: #9ca3af;
|
|
137
137
|
--chat-composer-action-hover-background-color: #252535;
|
|
138
|
+
--chat-composer-focus-border-color: #818cf8;
|
|
139
|
+
--chat-composer-focus-shadow: 0 0 0 2px rgba(129, 140, 248, 0.3);
|
|
138
140
|
--chat-composer-send-background-color: #e4e4e7;
|
|
139
141
|
--chat-composer-send-color: #18181b;
|
|
140
142
|
--chat-composer-send-hover-background-color: #d4d4d8;
|
|
@@ -167,6 +169,7 @@
|
|
|
167
169
|
--chat-bubble-color: #18181b;
|
|
168
170
|
--chat-bubble-hover-background-color: #d4d4d8;
|
|
169
171
|
--chat-bubble-panel-background: #161621;
|
|
172
|
+
--chat-bubble-panel-focus-outline: 2px solid #818cf8;
|
|
170
173
|
|
|
171
174
|
/* HITL */
|
|
172
175
|
--hitl-background: #1e1e2e;
|
|
@@ -460,6 +463,7 @@
|
|
|
460
463
|
|
|
461
464
|
/* Book */
|
|
462
465
|
--book-dot-active-color: #818cf8;
|
|
466
|
+
--book-focus-outline: 2px solid #818cf8;
|
|
463
467
|
--book-nav-color: #9ca3af;
|
|
464
468
|
|
|
465
469
|
/* BrandLoader */
|
|
@@ -523,6 +527,7 @@
|
|
|
523
527
|
--command-menu-background: #1e1e2e;
|
|
524
528
|
--command-menu-input-caret-color: #818cf8;
|
|
525
529
|
--command-menu-input-color: #d1d5db;
|
|
530
|
+
--command-menu-input-focus-outline: 2px solid #818cf8;
|
|
526
531
|
--command-menu-item-active-background: #252535;
|
|
527
532
|
--command-menu-item-active-color: #d1d5db;
|
|
528
533
|
--command-menu-item-color: #9ca3af;
|
|
@@ -545,6 +550,8 @@
|
|
|
545
550
|
--drp-clear-hover-background: #252535;
|
|
546
551
|
--drp-date-input-background: #1e1e2e;
|
|
547
552
|
--drp-date-input-color: #d1d5db;
|
|
553
|
+
--drp-date-input-focus-border: #818cf8;
|
|
554
|
+
--drp-date-input-focus-shadow: 0 0 0 2px rgba(129, 140, 248, 0.3);
|
|
548
555
|
--drp-date-input-invalid-border: #f87171;
|
|
549
556
|
--drp-datetime-arrow-color: #9ca3af;
|
|
550
557
|
--drp-field-error-color: #f87171;
|
|
@@ -553,6 +560,8 @@
|
|
|
553
560
|
--drp-preset-hover-background: #252535;
|
|
554
561
|
--drp-time-field-color: #d1d5db;
|
|
555
562
|
--drp-time-input-background: #1e1e2e;
|
|
563
|
+
--drp-time-input-focus-border: #818cf8;
|
|
564
|
+
--drp-time-input-focus-shadow: 0 0 0 2px rgba(129, 140, 248, 0.3);
|
|
556
565
|
--drp-time-input-icon-color: #9ca3af;
|
|
557
566
|
--drp-time-input-invalid-border: #f87171;
|
|
558
567
|
--drp-time-toggle-active-color: #60a5fa;
|
|
@@ -568,6 +577,9 @@
|
|
|
568
577
|
--file-input-error-color: #f87171;
|
|
569
578
|
--file-input-info-color: #9ca3af;
|
|
570
579
|
|
|
580
|
+
/* Gallery */
|
|
581
|
+
--gallery-lightbox-focus-outline: 2px solid #818cf8;
|
|
582
|
+
|
|
571
583
|
/* GridItem */
|
|
572
584
|
--grid-item-background-color: #252535;
|
|
573
585
|
|
|
@@ -587,22 +599,25 @@
|
|
|
587
599
|
--keyboard-input-key-background: #1e1e2e;
|
|
588
600
|
--keyboard-input-key-color: #d1d5db;
|
|
589
601
|
--keyboard-input-separator-color: #9ca3af;
|
|
602
|
+
--field-group-separator-color: #9ca3af;
|
|
590
603
|
|
|
591
604
|
/* Label */
|
|
592
605
|
--label-required-color: #f87171;
|
|
593
606
|
|
|
594
607
|
/* ListItem */
|
|
608
|
+
--list-item-focus-outline: 2px solid #818cf8;
|
|
595
609
|
--list-item-loader-background: #1a1a26;
|
|
596
610
|
|
|
597
611
|
/* MarkdownText */
|
|
598
612
|
--markdown-text-focus-outline-color: #818cf8;
|
|
613
|
+
--markdown-text-color: #d1d5db;
|
|
599
614
|
--markdown-text-link-color: #a78bfa;
|
|
600
615
|
|
|
601
616
|
/* MediaUpload */
|
|
602
617
|
--media-upload-add-background-color: #1e1e2e;
|
|
603
618
|
/* The tile's own text, on that #1e1e2e tile. The light defaults (#6b7280 /
|
|
604
619
|
#9aa0a8) are tuned for a white tile and read at 3.4:1 and 3.8:1 here. */
|
|
605
|
-
--media-upload-add-color: #
|
|
620
|
+
--media-upload-add-color: #cbd5e1;
|
|
606
621
|
--media-upload-add-hint-color: #9ca3af;
|
|
607
622
|
--media-upload-add-dragging-background-color: #262b4a;
|
|
608
623
|
--media-upload-add-dragging-color: #818cf8;
|
|
@@ -622,9 +637,11 @@
|
|
|
622
637
|
--menu-item-danger-hover-background-color: #331519;
|
|
623
638
|
--menu-item-focus-background-color: #252535;
|
|
624
639
|
--menu-item-hover-background-color: #252535;
|
|
640
|
+
--menu-trigger-focus-outline: 2px solid #818cf8;
|
|
625
641
|
|
|
626
642
|
/* Modal */
|
|
627
643
|
--modal-content-background-color: #1e1e2e;
|
|
644
|
+
--modal-content-focus-outline: 2px solid #818cf8;
|
|
628
645
|
--modal-footer-background-color: #1a1a26;
|
|
629
646
|
--modal-footer-primary-button-color: #9ca3af;
|
|
630
647
|
--modal-footer-secondary-button-color: #9ca3af;
|
|
@@ -737,6 +754,13 @@
|
|
|
737
754
|
--table-header-border-bgcolor: #1e1e2e;
|
|
738
755
|
--table-header-font-color: #9ca3af;
|
|
739
756
|
--table-inline-search-clear-color: #9ca3af;
|
|
757
|
+
/* #9ca3af measured 4.41:1 here -- just under 4.5:1 -- because this input sits on
|
|
758
|
+
a row background that composites lighter than the table's own #1a1a26 (row
|
|
759
|
+
hover/alt tinting stacks on top). #b8bcc4 (already used for
|
|
760
|
+
--loader-sub-text-color, the same "muted text on a dark surface" role) clears
|
|
761
|
+
it with margin, verified at 5.88:1 by scripts/check-contrast.mjs against the
|
|
762
|
+
actual composited background rather than the nominal one. */
|
|
763
|
+
--table-ops-note-placeholder-color: #b8bcc4;
|
|
740
764
|
--table-link-copy-color: #9ca3af;
|
|
741
765
|
--table-sort-active-color: #60a5fa;
|
|
742
766
|
--table-sort-hover-color: #9ca3af;
|
|
@@ -745,12 +769,12 @@
|
|
|
745
769
|
--table-trend-up-color: #4ade80;
|
|
746
770
|
|
|
747
771
|
/* Tabs */
|
|
748
|
-
--tabs-active-color: #
|
|
772
|
+
--tabs-active-color: #a5b4fc;
|
|
749
773
|
--tabs-bar-background: #1e1e2e;
|
|
750
774
|
--tabs-hover-background: #252535;
|
|
751
775
|
--tabs-hover-color: #d1d5db;
|
|
752
776
|
--tabs-indicator-color: #818cf8;
|
|
753
|
-
--tabs-item-color: #
|
|
777
|
+
--tabs-item-color: #cbd5e1;
|
|
754
778
|
--tabs-item-status-default-color: #818cf8;
|
|
755
779
|
--tabs-item-status-error-color: #f87171;
|
|
756
780
|
|
|
@@ -106,7 +106,8 @@ sui-tooltip { --sui-tooltip-display: inline; }
|
|
|
106
106
|
sui-typewriter-text { --sui-typewriter-text-display: inline; }
|
|
107
107
|
sui-voice-orb { --sui-voice-orb-display: inline; }
|
|
108
108
|
|
|
109
|
-
/* components whose new default is `inline-block` (
|
|
109
|
+
/* components whose new default is `inline-block` (12) */
|
|
110
|
+
sui-animated-number { --sui-animated-number-display: inline; }
|
|
110
111
|
sui-avatar { --sui-avatar-display: inline; }
|
|
111
112
|
sui-chat-suggestions { --sui-chat-suggestions-display: inline; }
|
|
112
113
|
sui-checkbox { --sui-checkbox-display: inline; }
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* one property at a time, not to be a permanent fixture in a consumer
|
|
13
13
|
* build.
|
|
14
14
|
*
|
|
15
|
-
*
|
|
15
|
+
* 54 properties pinned below. 9 more could not be -- see the note at the end.
|
|
16
16
|
*
|
|
17
17
|
* Generated by scripts/migrate/legacy-palette.ts -- do not hand edit.
|
|
18
18
|
*/
|
|
@@ -29,16 +29,19 @@
|
|
|
29
29
|
:root { --drp-panel-background: inherit; } /* was the 4.27.x default */
|
|
30
30
|
:root { --empty-state-description-opacity: 0.6; } /* was the 4.27.x default */
|
|
31
31
|
:root { --field-group-label-color: #9ca3af; } /* was the 4.27.x default */
|
|
32
|
+
:root { --field-group-separator-color: #9ca3af; } /* was the 4.27.x default */
|
|
32
33
|
:root { --file-dropzone-trigger-caption-color: #64748b; } /* was the 4.27.x default */
|
|
33
34
|
:root { --hitl-approved-color: #16a34a; } /* was the 4.27.x default */
|
|
34
35
|
:root { --hitl-badge-color: #858585; } /* was the 4.27.x default */
|
|
35
36
|
:root { --hitl-description-color: #858585; } /* was the 4.27.x default */
|
|
36
37
|
:root { --hitl-param-label-color: #858585; } /* was the 4.27.x default */
|
|
37
38
|
:root { --input-char-count-color: #98a2b3; } /* was the 4.27.x default */
|
|
39
|
+
:root { --keyboard-input-separator-color: #888888; } /* was the 4.27.x default */
|
|
38
40
|
:root { --loader-text-color: white; } /* was the 4.27.x default */
|
|
39
41
|
:root { --media-upload-add-color: #6b7280; } /* was the 4.27.x default */
|
|
40
42
|
:root { --media-upload-add-hint-color: #9aa0a8; } /* was the 4.27.x default */
|
|
41
43
|
:root { --media-upload-counter-color: #8a8f98; } /* was the 4.27.x default */
|
|
44
|
+
:root { --menu-trigger-focus-outline: none; } /* was the 4.27.x default */
|
|
42
45
|
:root { --pagination-button-color: #3a4550; } /* was the 4.27.x default */
|
|
43
46
|
:root { --pagination-load-more-color: #3a4550; } /* was the 4.27.x default */
|
|
44
47
|
:root { --pill-tone-muted-color: #6b7280; } /* was the 4.27.x default */
|