@uni-design-system/uni-core 9.0.1 → 10.1.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/CHANGELOG.md CHANGED
@@ -1,5 +1,306 @@
1
1
  # @uni-design-system/uni-core
2
2
 
3
+ ## 10.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`f28c951`](https://github.com/uni-design-system/uni/commit/f28c95117f2844b58a265b59c2ea8b9715156670) Thanks [@gaenglish](https://github.com/gaenglish)! - `uni-drawer` is a three-row panel, and is no longer its own scroll container.
8
+
9
+ **The `<dialog>` used to be the scroller.** `over` mode set `overflowY: 'auto'`
10
+ on the panel and put the theme's padding there too, which made a pinned header
11
+ or footer impossible: padding on a scrolling box scrolls away with its content,
12
+ and any row you pinned against it could not sit flush to the panel edge. It also
13
+ set only the one axis — and a single explicit overflow axis computes the other
14
+ to `auto`, which is exactly how a container becomes an accidental scroller.
15
+ `side` had it right already, setting both.
16
+
17
+ The panel is now a flex column of three rows — an optional
18
+ `[uni-drawer-header]`, the projected body, an optional `[uni-drawer-buttons]`
19
+ (alias `[drawer-buttons]`) — and **only the body scrolls**. The panel itself is
20
+ `overflow: clip` on both axes, explicitly, never the shorthand. The body carries
21
+ `overscroll-behavior: contain`, so scrolling to its end does not start scrolling
22
+ the page behind it, and `position: relative`, so a stray absolutely positioned
23
+ descendant is contained rather than re-homed into an ancestor.
24
+
25
+ Those two must travel together: a positioned body _without_ a clipped shell is
26
+ worse than the status quo, because it pulls phantom overflow into the scroller
27
+ instead of out of the panel.
28
+
29
+ **`drawer.behavior.padding` is now the body's padding, not the panel's.** A
30
+ drawer with no header or footer looks the same as before. One that gains either
31
+ gets rows flush to the panel edge, which is the point.
32
+
33
+ Two new theme entries, `drawerHeader` and `drawerButtons`, mirror the dialog
34
+ pair knob for knob but default to a panel's posture rather than a dialog's: the
35
+ header's title is left-aligned rather than centered, and the footer trails its
36
+ actions rather than centering them.
37
+
38
+ Note one deliberate divergence from `[dialog-buttons]`: the drawer footer's
39
+ **confirm button does not close the drawer**. A panel's save is usually async
40
+ and can fail, so closing is left to the consumer via `(confirmed)`.
41
+
42
+ - [`67e17ea`](https://github.com/uni-design-system/uni/commit/67e17ea927e3ca24b7abecdcccf134d53ac3656b) Thanks [@gaenglish](https://github.com/gaenglish)! - `uni-toggle` honours `size`, and the checked colour has a theme home.
43
+
44
+ **`size` did nothing.** `uni-toggle` inherits a bindable `size` input from
45
+ `BaseComponent`, but its geometry came from a single `toggle.behavior.size`
46
+ number, so `<uni-toggle size="sm">` compiled, read as deliberate, and rendered
47
+ identically to every other switch. The theme now carries a `sizes` block and the
48
+ input selects from it.
49
+
50
+ **Geometry is stated per size, not derived from ratios.** Each size token is a
51
+ `width` / `height` / `padding` triple — `padding` being the knob's inset — and
52
+ the rest falls out: knob is `height - 2 * padding`, travel is `width - height`,
53
+ radius is `height / 2`. Real switch designs do not hold a constant proportion
54
+ across sizes (a consumer's 32x18 and 28x16 pair differs in both track and knob
55
+ ratio), so a single ratio token could match one size or the other but never
56
+ both.
57
+
58
+ `lg` is `BaseComponent`'s default and reproduces the previous geometry exactly —
59
+ 40x20, knob 16 — so **no existing toggle moves**. A theme still setting the
60
+ legacy `toggle.behavior.size` number keeps the old derived-ratio behaviour; that
61
+ option is now deprecated in favour of the `sizes` block.
62
+
63
+ **Fixed: the knob would have overhung the track at any other proportion.** The
64
+ checked transform was hardcoded to translate by one track height, which is only
65
+ correct while the track is `2x` wide and the knob `0.8x`. It is now derived, so
66
+ the knob lands the same distance from each edge at every size.
67
+
68
+ **New `checkedColor`, as an input and a theme option.** The on-state used to be
69
+ the instance's `variant`, which meant an app wanting one switch colour repeated
70
+ an attribute on every call site. `toggle.behavior.checkedColor` sets it once;
71
+ the input overrides per instance; `variant` remains the fallback when neither is
72
+ set. The focus ring follows the resolved colour rather than staying on `variant`.
73
+ An input as well as an option is necessary because `variant` defaults to
74
+ `'primary'` and so cannot be distinguished from unset — without one, a themed
75
+ `checkedColor` would have silently made `variant` inert with no way back.
76
+
77
+ **Toggle transitions are a motion token.** It hardcoded `0.3s ease` while
78
+ `uni-radio` already read `theme.motion(options.motion ?? 'control')`, so a theme
79
+ setting a motion scale moved the radio and not the switch.
80
+
81
+ ### Patch Changes
82
+
83
+ - [`7545ff3`](https://github.com/uni-design-system/uni/commit/7545ff3e6dd85d29157963488f75f9e3681947c7) Thanks [@gaenglish](https://github.com/gaenglish)! - Stepper buttons now leave focus in their field, and `uni-quantity-stepper`
84
+ follows the theme's field chrome.
85
+
86
+ **Clicking `+` or `−` focused nothing.** Taking pointer capture means calling
87
+ `preventDefault()` on `pointerdown`, which also suppresses the browser's default
88
+ focus handling — and the buttons carry `tabindex="-1"`, so focus landed on
89
+ `<body>`. The arrow keys then did nothing, exactly when a user reaching for `+`
90
+ is most likely to try them. `createPressRepeat` gained a `focus` callback,
91
+ invoked on press and handed the pressed button; `uni-number-input` and
92
+ `uni-quantity-stepper` point it at their text field, the way a native spinner
93
+ does. Where there is no field — a read-only quantity stepper, whose buttons are
94
+ themselves the tab stops — focus goes to the button instead. **This affected
95
+ `uni-number-input` as well**, not just the stepper.
96
+
97
+ **`uni-quantity-stepper` ignored a theme's field styling.** It carried its own
98
+ `color` / `border` / `borderRadius` tokens, so a theme that restyles `input` —
99
+ Wellsourced fills its fields `#F3F2EF` — left the stepper stark white beside
100
+ them. Those three now default to the shared `input` chrome and are unset in the
101
+ base theme, so the stepper tracks whatever a theme does to its fields; they
102
+ remain available as per-component overrides for parting them deliberately. With
103
+ the focus indicator and the dividers already sourced this way, the container is
104
+ now consistently the field chrome unless a theme says otherwise.
105
+
106
+ ## 10.0.0
107
+
108
+ ### Major Changes
109
+
110
+ - [`21b655d`](https://github.com/uni-design-system/uni/commit/21b655df0f93e2e2de6a22ccf38050b474d4e5ab) Thanks [@gaenglish](https://github.com/gaenglish)! - `uni-slider` is rebuilt on custom thumbs instead of `<input type="range">`,
111
+ gaining range mode, marks, a value readout and an exact decimal step model. This
112
+ is a breaking change to both the component's value shape and its theme options.
113
+
114
+ **Why it could not stay native.** One `<input type="range">` cannot carry two
115
+ thumbs, so range mode, thumb crossing and per-thumb ARIA bounds were all
116
+ unreachable; marks and a value tooltip were unstyleable through it. The
117
+ alternative — a second component for the range case — would have meant two
118
+ keyboard implementations to keep in step, which is the drift the shared step
119
+ model exists to prevent. What the platform was giving us (the slider ARIA
120
+ pattern and the keyboard map) is reimplemented explicitly and covered by 29
121
+ specs.
122
+
123
+ **Breaking: value shape.**
124
+
125
+ ```ts
126
+ // before
127
+ value = model<number>(0);
128
+ // after — the shape follows `mode`, and `null` is empty
129
+ value = model<number | UniNumberRange | null>(null);
130
+ ```
131
+
132
+ A `single` slider still reads and writes a plain number, so
133
+ `[(value)]="volume"` is unchanged. Code that relied on `value()` being
134
+ non-nullable, or that read it without narrowing, now needs to handle `null` and
135
+ the `{ start, end }` range.
136
+
137
+ **Breaking: theme options.** `slider.options.color` is **removed**. Fill and
138
+ thumb colour now come from the `variant` role pair, the rule every other
139
+ component follows, so `variant="warn"` recolours a slider with no theme edit. A
140
+ theme that set `color` should delete it and pass `variant` at the call site.
141
+ `trackColor` now defaults to `primary-container` rather than `surface-variant`.
142
+
143
+ New options: `thumbBorderRadius`, `minTouchTarget`, `markSize`, `markColor`,
144
+ `labelTypeface`, `labelColor`, `tooltipColor`, `tooltipTextColor`,
145
+ `tooltipShadow`, `tooltipBorderRadius`, `transitionMs`. `trackHeight`,
146
+ `thumbSize` and `borderRadius` are unchanged.
147
+
148
+ **New capability.**
149
+ - `mode="range"` — two thumbs, a `{ start, end }` value, `minGap` to fence the
150
+ ends apart. Thumbs may cross and swap, and the dragged one keeps focus.
151
+ - `marks` and `snapToMarks` — labelled stops, spoken in place of the number.
152
+ - `valueDisplay` — `none`, `inline`, `tooltip`, or `input`, which seats a
153
+ compact `uni-number-input` at the trailing edge, two-way bound to the same
154
+ value: drag for the ballpark, type for the exact figure. Single mode only.
155
+ - `origin` — anchor the fill somewhere other than `min`, for sliders spanning ±.
156
+ - `sliding` and `changed` outputs, replacing an implicit per-frame model write.
157
+ **Bind `changed` in forms**; `sliding` fires every frame of a drag.
158
+ - `largeStep`, defaulting to a tenth of the range, for `PageUp`/`PageDown` and
159
+ `Shift+Arrow`.
160
+ - Right-to-left support: the horizontal arrows and the track mirror; the value
161
+ does not.
162
+
163
+ **Also new: the `cdk/number` primitives** this is built on, shared with the
164
+ numeric input family still to come — exact scaled-`BigInt` decimal arithmetic
165
+ (`stepDecimal`, `roundDecimal`, `clampDecimal`), locale-aware
166
+ `parseNumber`/`formatNumber` over `Intl`, and `createPressRepeat` for
167
+ hold-to-repeat stepper buttons. Stepping `0.1` twenty times from `0` now lands
168
+ on exactly `2`, and `1.15` rounds to `1.2` where `(1.15).toFixed(1)` gives
169
+ `'1.1'`.
170
+
171
+ ### Minor Changes
172
+
173
+ - [`2a79bb8`](https://github.com/uni-design-system/uni/commit/2a79bb8ebd8fd0b5cd792697972b6f48b444c80f) Thanks [@gaenglish](https://github.com/gaenglish)! - New `uni-number-input`: the field for a quantity, a price, a percentage or a
174
+ measurement, with locale-aware parsing, `Intl` formatting on commit,
175
+ prefix/suffix adornments, min/max/step fences and steppers that hold to repeat.
176
+
177
+ ```html
178
+ <uni-number-input label="Quantity" [(value)]="qty" [min]="1" />
179
+ <uni-number-input label="Unit price" currency="USD" [(value)]="price" />
180
+ ```
181
+
182
+ **Why not `<input type="number">`.** Per the HTML value sanitization algorithm,
183
+ a number input whose text is not a valid floating-point number reports
184
+ `value === ''`. Type `12,50` as most of Europe does, or paste `1,234.56` from a
185
+ spreadsheet, and the app reads an empty field with no way to tell that from a
186
+ blank one — a data-loss bug, and the reason this is `type="text"` with
187
+ `role="spinbutton"`. The platform control also cannot group thousands, cannot
188
+ place an affix outside the editable text, has ~10px unstyleable spinners below
189
+ the WCAG 2.2 target minimum, changes value on the scroll wheel while focused,
190
+ and steps in floats.
191
+
192
+ **What it does instead.**
193
+ - **Presets** — `decimal`, `integer`, `currency`, `percent` — supply decimals,
194
+ grouping, affix and `inputmode` together, so a money field is `label`,
195
+ `currency="USD"`, `[(value)]`. `numberFormat` is the escape hatch, merged over
196
+ the preset.
197
+ - **Parses what people actually type**: canonical ASCII always, locale grouping
198
+ (`1.234,56` in German), pasted affixes and currency symbols, accounting
199
+ negatives `(1,234.56)`, localized digit systems, compact `1.5k`, and — behind
200
+ `allowExpressions` — spreadsheet arithmetic like `12*3`, via a shunting-yard
201
+ parser that never calls `eval`.
202
+ - **Unreadable text stays in the field**, flagged with a dashed underline and a
203
+ `rejected` event, rather than being silently swallowed.
204
+ - **Exact arithmetic.** Stepping `0.1` twenty times from `0` lands on exactly
205
+ `2`; `1.15` rounds to `1.2` where `(1.15).toFixed(1)` gives `'1.1'`. A second
206
+ `valueAsString` model carries digits a `number` cannot, and a dev-mode warning
207
+ fires when a bound `value` cannot round-trip.
208
+ - **Percent never divides behind your back**: `preset="percent"` shows `15%` for
209
+ `15`. Models that really are fractions set `valueIsFraction`.
210
+ - Clamping on commit rather than per keystroke, visible fences that disable the
211
+ matching stepper and announce, `wrap` for cyclic fields, `emptyStepValue`,
212
+ four stepper layouts, and hold-to-repeat that announces once on release.
213
+
214
+ `uni-slider` gains `valueDisplay="input"`, which seats one of these as its
215
+ readout — drag for the ballpark, type for the exact value.
216
+
217
+ Adds `numberInput` to `ComponentName` with a theme entry. Field chrome is not
218
+ duplicated there: colour, border, radius and focus come from the shared `input`
219
+ options via `uni-input-box`, so a number field restyles with every other field.
220
+
221
+ `uni-input-box` gains a `managedInset` input. The themed leading inset normally
222
+ rides the inner `<input>`, which is right while the text is the field's leading
223
+ edge and wrong the moment an adornment sits in front — a currency prefix would
224
+ hug the border while the number it belongs to sat indented past it. A field with
225
+ adornments sets `managedInset` and places the inset on whichever element is
226
+ actually first. Existing fields are unaffected: the default is `false`.
227
+
228
+ - [`e7875ee`](https://github.com/uni-design-system/uni/commit/e7875ee81030a703f4ca1904bb94cb8ddc7f57b9) Thanks [@gaenglish](https://github.com/gaenglish)! - New `uni-number-range-input`: two linked numeric fields in one chrome with a
229
+ single `{ start, end }` value — price filters, thresholds, tolerances. This
230
+ completes the numeric family alongside `uni-number-input`,
231
+ `uni-quantity-stepper` and the rebuilt `uni-slider`.
232
+
233
+ ```html
234
+ <uni-number-range-input label="Price range" currency="USD" [(value)]="price" [minGap]="50" />
235
+ ```
236
+
237
+ `start`/`end` deliberately match `UniDateRange`, so the library has one range
238
+ vocabulary, and they never collide with the `min`/`max` **inputs**, which mean
239
+ the fence rather than the value.
240
+
241
+ **The rules that make it one field rather than two glued together:**
242
+ - **Either end alone is a valid value.** `{ start: 50 }` means "50 and up",
243
+ which is a real filter. This is where it diverges from `uni-date-time-input`,
244
+ whose two parts are two halves of one answer.
245
+ - **Stepping is fenced; typing swaps.** A stepper can never walk one end through
246
+ the other — its wall is the other end, held off by `minGap`, and each end's
247
+ `aria-valuemin`/`aria-valuemax` report that wall rather than the outer bounds.
248
+ A _typed_ backwards commit is swapped and announced instead, the rule
249
+ `uni-calendar` applies to a backwards date range: clamping against the other
250
+ end would destroy the number just entered.
251
+ - **`minGap` pushes the end you edited**, not the other one, which is what makes
252
+ stepping behave as a fence rather than dragging the range along.
253
+ - A refused draft flags only the end it was typed into; the other stays valid.
254
+ - `preset`, `currency`, `prefix`, `suffix`, `decimals`, `grouping`, `locale` and
255
+ `roundingMode` are forwarded to both ends so the halves always read alike.
256
+
257
+ It owns its commit path rather than nesting two `uni-number-input`s, because the
258
+ two behaviours above need _different_ bounds — a stepper must be fenced at the
259
+ other end while a typed commit must arrive un-clamped — and a child field
260
+ applies one bound pair to both. The arithmetic, parsing and formatting are still
261
+ the shared `cdk/number` primitives.
262
+
263
+ Adds `numberRangeInput` to `ComponentName` with a theme entry (`partGap`,
264
+ `dividerText`, `dividerColor`). Field chrome is not duplicated there: colour,
265
+ border, radius and focus come from the shared `input` options via
266
+ `uni-input-box`. `dividerText` is literal punctuation rather than an icon token —
267
+ an en dash between two numbers is not a glyph a theme swaps artwork for.
268
+
269
+ - [`589cecb`](https://github.com/uni-design-system/uni/commit/589cecb178d9119eea3fbc3f3cd9149eefdaa036) Thanks [@gaenglish](https://github.com/gaenglish)! - New `uni-quantity-stepper`: `− 3 +` for cart lines, table cells and seat counts
270
+ — the numeric core with no field chrome, no label and no room for either.
271
+
272
+ ```html
273
+ <uni-quantity-stepper label="Quantity, Blue T-shirt (M)" [(value)]="qty" [min]="1" />
274
+ ```
275
+
276
+ A separate component rather than a `chrome="bare"` flag on `uni-number-input`,
277
+ because this control is defined by what it does _not_ have — presets, affixes,
278
+ expressions, four stepper layouts — and eight inputs are easier to write
279
+ correctly than forty plus a list of which ones to leave alone. The arithmetic,
280
+ parsing and hold-to-repeat come from the same `cdk/number` primitives, so
281
+ `1,200` and the keyboard map behave identically in both.
282
+ - **`deleteAtMin`** is the cart pattern in one attribute: at the floor the
283
+ decrement becomes a remove affordance, renamed `Remove {label}`, and emits
284
+ `removed` rather than stepping to zero. Without it every shop reimplements the
285
+ same `value === 1 ? remove() : step(-1)` branch outside the component. (The
286
+ spec called this output `emptied`; that is a native `HTMLMediaElement` event
287
+ name, which `@angular-eslint/no-output-native` rightly rejects, and `removed`
288
+ is already what `uni-tag` calls the same request.)
289
+ - The middle is a real input by default — typing `12` beats tapping `+` eleven
290
+ times, and it takes the same grouped and locale-aware entry the field does.
291
+ `editable=false` renders the number as text for read-mostly tables, and the
292
+ buttons become the tab stops since there is nothing else to focus.
293
+ - `size` is `sm` / `md` / `lg` at 24 / 32 / 40px _outer_ height, so an `md`
294
+ stepper lines up with a 32px field beside it, with the buttons square at that
295
+ height. `md` and `lg` clear the 24×24 pointer target of WCAG 2.2 SC 2.5.8;
296
+ `sm` leaves 22px inside its border and is the dense desktop option.
297
+
298
+ Adds `quantityStepper` to `ComponentName` with a theme entry. Unlike the other
299
+ numeric controls it does **not** inherit the shared `input` chrome — it is not a
300
+ field — so it carries its own container tokens, defaulted to the same values
301
+ `input` uses so a cart stepper and a form field look related out of the box.
302
+ Height comes from the entry's `sizes` block rather than an option.
303
+
3
304
  ## 9.0.1
4
305
 
5
306
  ### Patch Changes
@@ -1099,7 +1099,30 @@ var buildComponents = (c) => ({
1099
1099
  divider: "light",
1100
1100
  elevation: "menu",
1101
1101
  padding: "md",
1102
- backdrop: { background: "rgba(0, 0, 0, 0.4)" }
1102
+ backdrop: { background: "rgba(0, 0, 0, 0.4)" },
1103
+ scrim: true,
1104
+ background: "solid"
1105
+ } },
1106
+ drawerHeader: { options: {
1107
+ color: void 0,
1108
+ height: 56,
1109
+ padding: "md",
1110
+ textRole: "title-medium",
1111
+ textAlign: "left",
1112
+ divider: "light",
1113
+ closeButtonIcon: "close",
1114
+ closeButtonSize: "md"
1115
+ } },
1116
+ drawerButtons: { options: {
1117
+ gap: "sm",
1118
+ padding: "md",
1119
+ justifyContent: "flex-end",
1120
+ confirmButtonVariant: "primary",
1121
+ cancelButtonVariant: "quaternary",
1122
+ buttonSize: "md",
1123
+ divider: "light",
1124
+ stretch: false,
1125
+ reverseOrder: false
1103
1126
  } },
1104
1127
  avatar: {
1105
1128
  options: {
@@ -1294,6 +1317,44 @@ var buildComponents = (c) => ({
1294
1317
  rows: 3,
1295
1318
  resize: "vertical"
1296
1319
  } },
1320
+ numberInput: { options: {
1321
+ stepperLayout: "stacked",
1322
+ incrementIcon: "plus",
1323
+ decrementIcon: "minus",
1324
+ stepUpIcon: "chevronUp",
1325
+ stepDownIcon: "chevronDown",
1326
+ stepperWidth: 32,
1327
+ minTouchTarget: 24,
1328
+ affixColor: "on-primary-surface-variant",
1329
+ affixGap: "xs",
1330
+ align: "start",
1331
+ tabularNumerals: true,
1332
+ repeatDelayMs: 500,
1333
+ repeatIntervalMs: 100,
1334
+ repeatFastIntervalMs: 25,
1335
+ repeatRampMs: 2e3
1336
+ } },
1337
+ numberRangeInput: { options: {
1338
+ partGap: "sm",
1339
+ dividerText: "–",
1340
+ dividerColor: "outline",
1341
+ affixColor: "on-primary-surface-variant",
1342
+ affixGap: "xs"
1343
+ } },
1344
+ quantityStepper: {
1345
+ options: {
1346
+ incrementIcon: "plus",
1347
+ decrementIcon: "minus",
1348
+ deleteIcon: "delete",
1349
+ tabularNumerals: true,
1350
+ valueWidth: "3ch"
1351
+ },
1352
+ sizes: {
1353
+ sm: { height: 24 },
1354
+ md: { height: 32 },
1355
+ lg: { height: 40 }
1356
+ }
1357
+ },
1297
1358
  tabs: { options: {
1298
1359
  typeface: "title-small",
1299
1360
  textColor: "on-surface-variant",
@@ -1717,11 +1778,21 @@ var buildComponents = (c) => ({
1717
1778
  gap: "xxs"
1718
1779
  } },
1719
1780
  slider: { options: {
1720
- color: "primary",
1721
- trackColor: "surface-variant",
1722
- borderRadius: "max",
1723
1781
  trackHeight: 4,
1724
- thumbSize: 16
1782
+ trackColor: "primary-container",
1783
+ borderRadius: "max",
1784
+ thumbSize: 16,
1785
+ thumbBorderRadius: "max",
1786
+ minTouchTarget: 24,
1787
+ markSize: 3,
1788
+ markColor: "on-primary-container",
1789
+ labelTypeface: "label",
1790
+ labelColor: "on-surface-variant",
1791
+ tooltipColor: "inverse-surface",
1792
+ tooltipTextColor: "on-inverse-surface",
1793
+ tooltipShadow: "menu",
1794
+ tooltipBorderRadius: "xs",
1795
+ transitionMs: 120
1725
1796
  } },
1726
1797
  skeleton: { options: {
1727
1798
  color: "surface-variant",
@@ -1744,11 +1815,30 @@ var buildComponents = (c) => ({
1744
1815
  grade: 0,
1745
1816
  opticalSize: 24
1746
1817
  } },
1747
- toggle: { options: {
1748
- size: 20,
1749
- trackColor: "surface-variant",
1750
- knobColor: "surface"
1751
- } },
1818
+ toggle: {
1819
+ options: {
1820
+ trackColor: "surface-variant",
1821
+ knobColor: "surface",
1822
+ motion: "control"
1823
+ },
1824
+ sizes: {
1825
+ sm: {
1826
+ width: 28,
1827
+ height: 16,
1828
+ padding: 3
1829
+ },
1830
+ md: {
1831
+ width: 32,
1832
+ height: 18,
1833
+ padding: 3
1834
+ },
1835
+ lg: {
1836
+ width: 40,
1837
+ height: 20,
1838
+ padding: 2
1839
+ }
1840
+ }
1841
+ },
1752
1842
  tooltip: { options: {
1753
1843
  border: void 0,
1754
1844
  borderRadius: "xs",