@itwin/itwinui-react 3.3.2 → 3.3.4

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,21 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.3.4
4
+
5
+ ### Patch Changes
6
+
7
+ - [#1816](https://github.com/iTwin/iTwinUI/pull/1816): Fixed an issue where `Table` was showing a dummy vertical scrollbar track inside the table header in Chromium 121 + Windows.
8
+ - [#1810](https://github.com/iTwin/iTwinUI/pull/1810): Fixed `Surface.Body` not being visually aligned with `Surface.Header` depending on scrollbar visibility.
9
+ - [#1776](https://github.com/iTwin/iTwinUI/pull/1776): Fixed broken animation in full-page `Modal` and `Dialog`.
10
+ - [#1809](https://github.com/iTwin/iTwinUI/pull/1809): Fixed `Table` bug where the table-body had an incorrect horizontal scrollbar/overflow when the `Table`'s width is reduced below the initial width.
11
+
12
+ ## 3.3.3
13
+
14
+ ### Patch Changes
15
+
16
+ - [#1800](https://github.com/iTwin/iTwinUI/pull/1800): Updated internal usage of `ResizeObserver` to prevent throwing a benign "ResizeObserver loop limit exceeded" error in React 17 apps. Some affected components: `ButtonGroup`, `Tabs`, `Table`, `Tree`, `Breadcrumbs`, etc.
17
+ - [#1807](https://github.com/iTwin/iTwinUI/pull/1807): iTwinUI will now also check for `vitest` and `mocha` (in addition to `jest`) before running any code that would cause problems in these test runners.
18
+
3
19
  ## 3.3.2
4
20
 
5
21
  ### Patch Changes
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { SoftBackgrounds } from '../utils/index.js';
3
2
  import type { AnyString, PolymorphicForwardRefComponent } from '../utils/index.js';
4
3
  export type AvatarStatus = 'online' | 'busy' | 'away' | 'offline';
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import type { ButtonProps } from './Button.js';
3
2
  import type { DropdownMenuProps } from '../DropdownMenu/DropdownMenu.js';
4
3
  import type { PolymorphicForwardRefComponent } from '../utils/index.js';
@@ -38,6 +38,7 @@ const DialogContext_js_1 = require("./DialogContext.js");
38
38
  const react_transition_group_1 = require("react-transition-group");
39
39
  const DialogDragContext_js_1 = require("./DialogDragContext.js");
40
40
  const useDragAndDrop_js_1 = __importDefault(require("../utils/hooks/useDragAndDrop.js"));
41
+ const styles_js_1 = __importDefault(require("../../styles.js"));
41
42
  /**
42
43
  * Dialog component which can wrap any content.
43
44
  * @example
@@ -133,7 +134,6 @@ exports.DialogMain = React.forwardRef((props, ref) => {
133
134
  const content = (React.createElement(index_js_1.Box, { className: (0, classnames_1.default)('iui-dialog', {
134
135
  'iui-dialog-default': styleType === 'default',
135
136
  'iui-dialog-full-page': styleType === 'fullPage',
136
- 'iui-dialog-visible': isOpen,
137
137
  'iui-dialog-draggable': isDraggable,
138
138
  }, className), role: 'dialog', ref: (0, index_js_1.useMergedRefs)(dialogRef, ref), onKeyDown: handleKeyDown, tabIndex: -1, "data-iui-placement": placement, style: {
139
139
  transform,
@@ -148,8 +148,9 @@ exports.DialogMain = React.forwardRef((props, ref) => {
148
148
  }, onResizeEnd: setResizeStyle })),
149
149
  children));
150
150
  return (React.createElement(react_transition_group_1.CSSTransition, { in: isOpen, classNames: {
151
- enter: 'iui-dialog-animation-enter',
152
- enterActive: 'iui-dialog-animation-enter-active',
151
+ enter: styles_js_1.default['iui-dialog-animation-enter'],
152
+ enterActive: styles_js_1.default['iui-dialog-animation-enter-active'],
153
+ enterDone: styles_js_1.default['iui-dialog-visible'],
153
154
  }, timeout: { exit: 600 },
154
155
  // Focuses dialog when opened
155
156
  onEntered: () => {
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import type { PolymorphicForwardRefComponent } from '../utils/index.js';
3
2
  type HeaderLogoOwnProps = {
4
3
  /**
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import type { PolymorphicForwardRefComponent } from '../utils/index.js';
3
2
  export type ListItemOwnProps = {
4
3
  /**
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  /**
3
2
  * Divider between menu items. Should be used inside `Menu`.
4
3
  * @example
@@ -316,10 +316,19 @@ const Table = (props) => {
316
316
  instance.selectedFlatRows,
317
317
  selectionMode,
318
318
  ]);
319
+ const headerRef = React.useRef(null);
320
+ const bodyRef = React.useRef(null);
319
321
  const { scrollToIndex, tableRowRef } = (0, index_js_3.useScrollToRow)({ ...props, page });
320
322
  const columnRefs = React.useRef({});
321
323
  const previousTableWidth = React.useRef(0);
322
324
  const onTableResize = React.useCallback(({ width }) => {
325
+ // Handle header properties, regardless of whether the table is resizable
326
+ setHeaderScrollWidth(headerRef.current?.scrollWidth ?? 0);
327
+ setHeaderClientWidth(headerRef.current?.clientWidth ?? 0);
328
+ // Handle table properties, but only when table is resizable
329
+ if (!isResizable) {
330
+ return;
331
+ }
323
332
  instance.tableWidth = width;
324
333
  if (width === previousTableWidth.current) {
325
334
  return;
@@ -337,8 +346,16 @@ const Table = (props) => {
337
346
  return;
338
347
  }
339
348
  dispatch({ type: exports.tableResizeStartAction });
340
- }, [dispatch, state.columnResizing.columnWidths, flatHeaders, instance]);
349
+ }, [
350
+ dispatch,
351
+ state.columnResizing.columnWidths,
352
+ flatHeaders,
353
+ instance,
354
+ isResizable,
355
+ ]);
341
356
  const [resizeRef] = (0, index_js_1.useResizeObserver)(onTableResize);
357
+ const [headerScrollWidth, setHeaderScrollWidth] = React.useState(0);
358
+ const [headerClientWidth, setHeaderClientWidth] = React.useState(0);
342
359
  // Flexbox handles columns resize so we take new column widths before browser repaints.
343
360
  (0, index_js_1.useIsomorphicLayoutEffect)(() => {
344
361
  if (state.isTableResizing) {
@@ -352,8 +369,6 @@ const Table = (props) => {
352
369
  dispatch({ type: tableResizeEndAction, columnWidths: newColumnWidths });
353
370
  }
354
371
  });
355
- const headerRef = React.useRef(null);
356
- const bodyRef = React.useRef(null);
357
372
  const getPreparedRow = React.useCallback((index) => {
358
373
  const row = page[index];
359
374
  prepareRow(row);
@@ -403,9 +418,7 @@ const Table = (props) => {
403
418
  return (React.createElement(React.Fragment, null,
404
419
  React.createElement(index_js_1.Box, { ref: (element) => {
405
420
  ownerDocument.current = element?.ownerDocument;
406
- if (isResizable) {
407
- resizeRef(element);
408
- }
421
+ resizeRef(element);
409
422
  }, id: id, ...getTableProps({
410
423
  className: (0, classnames_1.default)('iui-table', className),
411
424
  style: {
@@ -497,12 +510,12 @@ const Table = (props) => {
497
510
  }, tabIndex: -1, "aria-multiselectable": (isSelectable && selectionMode === 'multi') || undefined },
498
511
  React.createElement(ShadowTemplate, null,
499
512
  React.createElement("slot", null),
500
- React.createElement("div", { "aria-hidden": true, style: {
513
+ rows.length === 0 && headerScrollWidth > headerClientWidth && (React.createElement("div", { "aria-hidden": true, style: {
501
514
  // This ensures that the table-body is always the same width as the table-header,
502
515
  // even if the table has no rows. See https://github.com/iTwin/iTwinUI/pull/1725
503
- width: headerRef.current?.scrollWidth,
516
+ width: headerScrollWidth,
504
517
  height: 0.1,
505
- } })),
518
+ } }))),
506
519
  data.length !== 0 && (React.createElement(React.Fragment, null, enableVirtualization ? (React.createElement(VirtualScroll_js_1.default, { itemsLength: page.length, itemRenderer: virtualizedItemRenderer, scrollToIndex: scrollToIndex })) : (page.map((_, index) => getPreparedRow(index))))),
507
520
  isLoading && data.length === 0 && (React.createElement(index_js_1.Box, { as: 'div', ...emptyTableContentProps, className: (0, classnames_1.default)('iui-table-empty', emptyTableContentProps?.className) },
508
521
  React.createElement(ProgressRadial_js_1.ProgressRadial, { indeterminate: true }))),
@@ -160,8 +160,8 @@ const FallbackStyles = ({ root }) => {
160
160
  if (getComputedStyle(root).getPropertyValue('--_iui-v3-loaded') === 'yes') {
161
161
  return;
162
162
  }
163
- // bail if jest because it doesn't care about CSS 🤷
164
- if (index_js_1.isJest) {
163
+ // bail if isUnitTest because unit tests don't care about CSS 🤷
164
+ if (index_js_1.isUnitTest) {
165
165
  return;
166
166
  }
167
167
  (async () => {
@@ -1,4 +1,4 @@
1
- declare const isJest: boolean;
1
+ declare const isUnitTest: boolean;
2
2
  declare let isDev: boolean;
3
3
  /**
4
4
  * Logs message one time only in dev environments.
@@ -8,4 +8,4 @@ declare let isDev: boolean;
8
8
  * logWarningInDev("please don't use this")
9
9
  */
10
10
  declare const createWarningLogger: () => (message: string) => void;
11
- export { isJest, isDev, createWarningLogger };
11
+ export { isUnitTest, isDev, createWarningLogger };
@@ -1,17 +1,23 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createWarningLogger = exports.isDev = exports.isJest = void 0;
4
2
  /*---------------------------------------------------------------------------------------------
5
3
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
6
4
  * See LICENSE.md in the project root for license terms and full copyright notice.
7
5
  *--------------------------------------------------------------------------------------------*/
8
- const isJest = typeof jest !== 'undefined';
9
- exports.isJest = isJest;
6
+ /* eslint-disable @typescript-eslint/no-explicit-any */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.createWarningLogger = exports.isDev = exports.isUnitTest = void 0;
9
+ const isJest = typeof globalThis.jest !== 'undefined';
10
+ const isMocha = typeof globalThis.beforeEach !== 'undefined' &&
11
+ `${globalThis.beforeEach}`.replace(/\s/g, '') ===
12
+ 'function(name,fn){suites[0].beforeEach(name,fn);}';
13
+ const isVitest = typeof globalThis.__vitest_index__ !== 'undefined';
14
+ const isUnitTest = isJest || isVitest || isMocha;
15
+ exports.isUnitTest = isUnitTest;
10
16
  let isDev = false;
11
17
  exports.isDev = isDev;
12
18
  // wrapping in try-catch because process might be undefined
13
19
  try {
14
- exports.isDev = isDev = process.env.NODE_ENV !== 'production' && !isJest;
20
+ exports.isDev = isDev = process.env.NODE_ENV !== 'production' && !isUnitTest;
15
21
  }
16
22
  catch { }
17
23
  /**
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  /**
3
2
  * Get document if it is defined.
4
3
  * Used to support SSR/SSG applications.
@@ -50,7 +50,18 @@ const useResizeObserver = (onResize) => {
50
50
  }
51
51
  resizeObserver.current?.disconnect?.();
52
52
  if (element) {
53
- resizeObserver.current = new ResizeObserver(([{ contentRect }]) => onResize(contentRect));
53
+ resizeObserver.current = new ResizeObserver((entries) => {
54
+ // We wrap onResize with requestAnimationFrame to avoid this error - ResizeObserver loop limit exceeded
55
+ // See: https://github.com/iTwin/iTwinUI/issues/1317
56
+ // See: https://stackoverflow.com/a/58701523/11547064
57
+ window.requestAnimationFrame(() => {
58
+ if (!Array.isArray(entries) || !entries.length) {
59
+ return;
60
+ }
61
+ const [{ contentRect }] = entries;
62
+ return onResize(contentRect);
63
+ });
64
+ });
54
65
  resizeObserver.current?.observe?.(element);
55
66
  }
56
67
  }, [onResize]);
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { SoftBackgrounds } from '../utils/index.js';
3
2
  import type { AnyString, PolymorphicForwardRefComponent } from '../utils/index.js';
4
3
  export type AvatarStatus = 'online' | 'busy' | 'away' | 'offline';
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import type { ButtonProps } from './Button.js';
3
2
  import type { DropdownMenuProps } from '../DropdownMenu/DropdownMenu.js';
4
3
  import type { PolymorphicForwardRefComponent } from '../utils/index.js';
@@ -9,6 +9,7 @@ import { useDialogContext } from './DialogContext.js';
9
9
  import { CSSTransition } from 'react-transition-group';
10
10
  import { DialogDragContext } from './DialogDragContext.js';
11
11
  import useDragAndDrop from '../utils/hooks/useDragAndDrop.js';
12
+ import styles from '../../styles.js';
12
13
  /**
13
14
  * Dialog component which can wrap any content.
14
15
  * @example
@@ -104,7 +105,6 @@ export const DialogMain = React.forwardRef((props, ref) => {
104
105
  const content = (React.createElement(Box, { className: cx('iui-dialog', {
105
106
  'iui-dialog-default': styleType === 'default',
106
107
  'iui-dialog-full-page': styleType === 'fullPage',
107
- 'iui-dialog-visible': isOpen,
108
108
  'iui-dialog-draggable': isDraggable,
109
109
  }, className), role: 'dialog', ref: useMergedRefs(dialogRef, ref), onKeyDown: handleKeyDown, tabIndex: -1, "data-iui-placement": placement, style: {
110
110
  transform,
@@ -119,8 +119,9 @@ export const DialogMain = React.forwardRef((props, ref) => {
119
119
  }, onResizeEnd: setResizeStyle })),
120
120
  children));
121
121
  return (React.createElement(CSSTransition, { in: isOpen, classNames: {
122
- enter: 'iui-dialog-animation-enter',
123
- enterActive: 'iui-dialog-animation-enter-active',
122
+ enter: styles['iui-dialog-animation-enter'],
123
+ enterActive: styles['iui-dialog-animation-enter-active'],
124
+ enterDone: styles['iui-dialog-visible'],
124
125
  }, timeout: { exit: 600 },
125
126
  // Focuses dialog when opened
126
127
  onEntered: () => {
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import type { PolymorphicForwardRefComponent } from '../utils/index.js';
3
2
  type HeaderLogoOwnProps = {
4
3
  /**
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import type { PolymorphicForwardRefComponent } from '../utils/index.js';
3
2
  export type ListItemOwnProps = {
4
3
  /**
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  /**
3
2
  * Divider between menu items. Should be used inside `Menu`.
4
3
  * @example
@@ -287,10 +287,19 @@ export const Table = (props) => {
287
287
  instance.selectedFlatRows,
288
288
  selectionMode,
289
289
  ]);
290
+ const headerRef = React.useRef(null);
291
+ const bodyRef = React.useRef(null);
290
292
  const { scrollToIndex, tableRowRef } = useScrollToRow({ ...props, page });
291
293
  const columnRefs = React.useRef({});
292
294
  const previousTableWidth = React.useRef(0);
293
295
  const onTableResize = React.useCallback(({ width }) => {
296
+ // Handle header properties, regardless of whether the table is resizable
297
+ setHeaderScrollWidth(headerRef.current?.scrollWidth ?? 0);
298
+ setHeaderClientWidth(headerRef.current?.clientWidth ?? 0);
299
+ // Handle table properties, but only when table is resizable
300
+ if (!isResizable) {
301
+ return;
302
+ }
294
303
  instance.tableWidth = width;
295
304
  if (width === previousTableWidth.current) {
296
305
  return;
@@ -308,8 +317,16 @@ export const Table = (props) => {
308
317
  return;
309
318
  }
310
319
  dispatch({ type: tableResizeStartAction });
311
- }, [dispatch, state.columnResizing.columnWidths, flatHeaders, instance]);
320
+ }, [
321
+ dispatch,
322
+ state.columnResizing.columnWidths,
323
+ flatHeaders,
324
+ instance,
325
+ isResizable,
326
+ ]);
312
327
  const [resizeRef] = useResizeObserver(onTableResize);
328
+ const [headerScrollWidth, setHeaderScrollWidth] = React.useState(0);
329
+ const [headerClientWidth, setHeaderClientWidth] = React.useState(0);
313
330
  // Flexbox handles columns resize so we take new column widths before browser repaints.
314
331
  useIsomorphicLayoutEffect(() => {
315
332
  if (state.isTableResizing) {
@@ -323,8 +340,6 @@ export const Table = (props) => {
323
340
  dispatch({ type: tableResizeEndAction, columnWidths: newColumnWidths });
324
341
  }
325
342
  });
326
- const headerRef = React.useRef(null);
327
- const bodyRef = React.useRef(null);
328
343
  const getPreparedRow = React.useCallback((index) => {
329
344
  const row = page[index];
330
345
  prepareRow(row);
@@ -374,9 +389,7 @@ export const Table = (props) => {
374
389
  return (React.createElement(React.Fragment, null,
375
390
  React.createElement(Box, { ref: (element) => {
376
391
  ownerDocument.current = element?.ownerDocument;
377
- if (isResizable) {
378
- resizeRef(element);
379
- }
392
+ resizeRef(element);
380
393
  }, id: id, ...getTableProps({
381
394
  className: cx('iui-table', className),
382
395
  style: {
@@ -468,12 +481,12 @@ export const Table = (props) => {
468
481
  }, tabIndex: -1, "aria-multiselectable": (isSelectable && selectionMode === 'multi') || undefined },
469
482
  React.createElement(ShadowTemplate, null,
470
483
  React.createElement("slot", null),
471
- React.createElement("div", { "aria-hidden": true, style: {
484
+ rows.length === 0 && headerScrollWidth > headerClientWidth && (React.createElement("div", { "aria-hidden": true, style: {
472
485
  // This ensures that the table-body is always the same width as the table-header,
473
486
  // even if the table has no rows. See https://github.com/iTwin/iTwinUI/pull/1725
474
- width: headerRef.current?.scrollWidth,
487
+ width: headerScrollWidth,
475
488
  height: 0.1,
476
- } })),
489
+ } }))),
477
490
  data.length !== 0 && (React.createElement(React.Fragment, null, enableVirtualization ? (React.createElement(VirtualScroll, { itemsLength: page.length, itemRenderer: virtualizedItemRenderer, scrollToIndex: scrollToIndex })) : (page.map((_, index) => getPreparedRow(index))))),
478
491
  isLoading && data.length === 0 && (React.createElement(Box, { as: 'div', ...emptyTableContentProps, className: cx('iui-table-empty', emptyTableContentProps?.className) },
479
492
  React.createElement(ProgressRadial, { indeterminate: true }))),
@@ -5,7 +5,7 @@
5
5
  import * as React from 'react';
6
6
  import * as ReactDOM from 'react-dom';
7
7
  import cx from 'classnames';
8
- import { useMediaQuery, useMergedRefs, Box, useIsomorphicLayoutEffect, useControlledState, useLatestRef, importCss, isJest, } from '../utils/index.js';
8
+ import { useMediaQuery, useMergedRefs, Box, useIsomorphicLayoutEffect, useControlledState, useLatestRef, importCss, isUnitTest, } from '../utils/index.js';
9
9
  import { ThemeContext } from './ThemeContext.js';
10
10
  import { ToastProvider, Toaster } from '../Toast/Toaster.js';
11
11
  /**
@@ -131,8 +131,8 @@ const FallbackStyles = ({ root }) => {
131
131
  if (getComputedStyle(root).getPropertyValue('--_iui-v3-loaded') === 'yes') {
132
132
  return;
133
133
  }
134
- // bail if jest because it doesn't care about CSS 🤷
135
- if (isJest) {
134
+ // bail if isUnitTest because unit tests don't care about CSS 🤷
135
+ if (isUnitTest) {
136
136
  return;
137
137
  }
138
138
  (async () => {
@@ -1,4 +1,4 @@
1
- declare const isJest: boolean;
1
+ declare const isUnitTest: boolean;
2
2
  declare let isDev: boolean;
3
3
  /**
4
4
  * Logs message one time only in dev environments.
@@ -8,4 +8,4 @@ declare let isDev: boolean;
8
8
  * logWarningInDev("please don't use this")
9
9
  */
10
10
  declare const createWarningLogger: () => (message: string) => void;
11
- export { isJest, isDev, createWarningLogger };
11
+ export { isUnitTest, isDev, createWarningLogger };
@@ -2,11 +2,17 @@
2
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
- const isJest = typeof jest !== 'undefined';
5
+ /* eslint-disable @typescript-eslint/no-explicit-any */
6
+ const isJest = typeof globalThis.jest !== 'undefined';
7
+ const isMocha = typeof globalThis.beforeEach !== 'undefined' &&
8
+ `${globalThis.beforeEach}`.replace(/\s/g, '') ===
9
+ 'function(name,fn){suites[0].beforeEach(name,fn);}';
10
+ const isVitest = typeof globalThis.__vitest_index__ !== 'undefined';
11
+ const isUnitTest = isJest || isVitest || isMocha;
6
12
  let isDev = false;
7
13
  // wrapping in try-catch because process might be undefined
8
14
  try {
9
- isDev = process.env.NODE_ENV !== 'production' && !isJest;
15
+ isDev = process.env.NODE_ENV !== 'production' && !isUnitTest;
10
16
  }
11
17
  catch { }
12
18
  /**
@@ -27,4 +33,4 @@ const createWarningLogger = !isDev
27
33
  }
28
34
  };
29
35
  };
30
- export { isJest, isDev, createWarningLogger };
36
+ export { isUnitTest, isDev, createWarningLogger };
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  /**
3
2
  * Get document if it is defined.
4
3
  * Used to support SSR/SSG applications.
@@ -24,7 +24,18 @@ export const useResizeObserver = (onResize) => {
24
24
  }
25
25
  resizeObserver.current?.disconnect?.();
26
26
  if (element) {
27
- resizeObserver.current = new ResizeObserver(([{ contentRect }]) => onResize(contentRect));
27
+ resizeObserver.current = new ResizeObserver((entries) => {
28
+ // We wrap onResize with requestAnimationFrame to avoid this error - ResizeObserver loop limit exceeded
29
+ // See: https://github.com/iTwin/iTwinUI/issues/1317
30
+ // See: https://stackoverflow.com/a/58701523/11547064
31
+ window.requestAnimationFrame(() => {
32
+ if (!Array.isArray(entries) || !entries.length) {
33
+ return;
34
+ }
35
+ const [{ contentRect }] = entries;
36
+ return onResize(contentRect);
37
+ });
38
+ });
28
39
  resizeObserver.current?.observe?.(element);
29
40
  }
30
41
  }, [onResize]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/itwinui-react",
3
- "version": "3.3.2",
3
+ "version": "3.3.4",
4
4
  "author": "Bentley Systems",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -64,7 +64,7 @@
64
64
  "clean:coverage": "rimraf coverage",
65
65
  "clean": "rimraf .turbo && yarn clean:coverage && yarn clean:build && rimraf node_modules",
66
66
  "test": "yarn test:types && yarn test:unit",
67
- "test:unit": "dotenv -v NODE_OPTIONS=--experimental-vm-modules -- npx jest",
67
+ "test:unit": "vitest run",
68
68
  "test:unit:watch": "yarn test:unit --watch",
69
69
  "test:types": "tsc -p tsconfig.test.json --noEmit",
70
70
  "format": "prettier --config .prettierrc **/*.{tsx,ts,js} --ignore-path .gitignore --write",
@@ -77,42 +77,38 @@
77
77
  "dev:styles": "yarn build:styles --watch"
78
78
  },
79
79
  "dependencies": {
80
- "@itwin/itwinui-illustrations-react": "^2.1.0",
81
80
  "@floating-ui/react": "^0.26.3",
81
+ "@itwin/itwinui-illustrations-react": "^2.1.0",
82
82
  "classnames": "^2.3.2",
83
+ "jsdom": "^24.0.0",
83
84
  "react-table": "^7.8.0",
84
85
  "react-transition-group": "^4.4.5",
85
86
  "tslib": "^2.6.0"
86
87
  },
87
88
  "devDependencies": {
88
- "@itwin/itwinui-css": "^2.2.1",
89
+ "@itwin/itwinui-css": "^2.2.2",
89
90
  "@itwin/itwinui-variables": "3.0.0",
90
91
  "@swc/cli": "^0.1.62",
91
92
  "@swc/core": "^1.3.68",
92
- "@testing-library/jest-dom": "^5.16.4",
93
+ "@testing-library/jest-dom": "^6.3.0",
93
94
  "@testing-library/react": "^13.2.0",
94
95
  "@testing-library/user-event": "^14.5.1",
95
- "@types/jest": "^29.0.0",
96
96
  "@types/node": "^18.0.0",
97
97
  "@types/react": "^18.2.0",
98
98
  "@types/react-dom": "^18.2.0",
99
99
  "@types/react-transition-group": "^4.4.10",
100
100
  "@typescript-eslint/eslint-plugin": "^5.60.0",
101
101
  "@typescript-eslint/parser": "^5.60.0",
102
+ "@vitest/coverage-v8": "^1.2.1",
102
103
  "concurrently": "^5.3.0",
103
104
  "eslint": "^8.43.0",
104
105
  "eslint-config-prettier": "^8.8.0",
105
106
  "eslint-plugin-require-extensions": "^0.1.3",
106
- "jest": "^29.0.0",
107
- "jest-cli": "^29.0.0",
108
- "jest-environment-jsdom": "^29.0.0",
109
- "jest-junit": "^13.2.0",
110
107
  "react": "^18.0.0",
111
108
  "react-dom": "^18.0.0",
112
- "ts-jest": "^29.0.0",
113
- "ts-node": "^10.0.0",
114
109
  "typescript": "~5.1.6",
115
- "vite": "^5.0.12"
110
+ "vite": "^5.0.12",
111
+ "vitest": "^1.2.1"
116
112
  },
117
113
  "peerDependencies": {
118
114
  "react": ">= 17.0.0 < 19.0.0",
package/styles.css CHANGED
@@ -699,14 +699,14 @@
699
699
  }
700
700
 
701
701
  @layer itwinui.v3{
702
- ._iui3-progress-indicator-radial :is(svg,img){inline-size:var(--iui-size-m);block-size:var(--iui-size-m);fill:var(--iui-color-icon);flex-shrink:0;display:flex}._iui3-progress-indicator-radial[data-iui-status=positive]{color:var(--iui-color-text-positive)}._iui3-progress-indicator-radial[data-iui-status=positive]:after{background-color:var(--iui-color-border-positive)}._iui3-progress-indicator-radial[data-iui-status=positive] :is(svg,img){fill:var(--iui-color-icon-positive)}._iui3-progress-indicator-radial[data-iui-status=negative]{color:var(--iui-color-text-negative)}._iui3-progress-indicator-radial[data-iui-status=negative]:after{background-color:var(--iui-color-border-negative)}._iui3-progress-indicator-radial[data-iui-status=negative] :is(svg,img){fill:var(--iui-color-icon-negative)}._iui3-progress-indicator-radial[data-iui-size=x-small]{--_iui-progress-indicator-radial-size:var(--iui-size-m)}._iui3-progress-indicator-radial[data-iui-size=x-small]:before,._iui3-progress-indicator-radial[data-iui-size=x-small]:after{border-width:var(--iui-size-3xs)}._iui3-progress-indicator-radial[data-iui-size=x-small]>*{display:none}._iui3-progress-indicator-radial[data-iui-size=small]{--_iui-progress-indicator-radial-size:calc(1.5*var(--iui-size-m))}._iui3-progress-indicator-radial[data-iui-size=small]:before,._iui3-progress-indicator-radial[data-iui-size=small]:after{border-width:calc(var(--iui-size-3xs)*1.5)}._iui3-progress-indicator-radial[data-iui-size=large]{--_iui-progress-indicator-radial-size:calc(3*var(--iui-size-m));font-size:var(--iui-font-size-2)}._iui3-progress-indicator-radial[data-iui-size=large]:before,._iui3-progress-indicator-radial[data-iui-size=large]:after{border-width:calc(var(--iui-size-2xs)*1.5)}._iui3-progress-indicator-radial[data-iui-size=large] :is(svg,img){inline-size:calc(1.5*var(--iui-size-m));block-size:calc(1.5*var(--iui-size-m));flex-shrink:0;display:flex}._iui3-progress-indicator-radial:where(:not([data-iui-indeterminate=true])):after{-webkit-mask-image:conic-gradient(#000 var(--iui-progress-percentage,100%),#0000 var(--iui-progress-percentage,100%)),linear-gradient(#000 0 0);mask-image:conic-gradient(#000 var(--iui-progress-percentage,100%),#0000 var(--iui-progress-percentage,100%)),linear-gradient(#000 0 0)}._iui3-progress-indicator-radial:where([data-iui-indeterminate=true]):after{animation:.8s cubic-bezier(.6,.4,.4,.6) infinite _iui3-uu03qka;-webkit-mask-image:conic-gradient(#0000,#000),linear-gradient(#000 0 0);mask-image:conic-gradient(#0000,#000),linear-gradient(#000 0 0)}@keyframes _iui3-uu03qka{to{transform:rotate(360deg)}}._iui3-progress-indicator-linear-label{font-size:var(--iui-font-size-0);color:var(--_iui-progress-indicator-linear-label-color);--iui-svg-fill:var(--_iui-progress-indicator-linear-label-fill);justify-content:space-between;align-items:center;display:flex}._iui3-progress-indicator-linear-label>:only-child{margin-inline:auto}._iui3-progress-indicator-linear{gap:var(--iui-size-2xs);display:grid}._iui3-progress-indicator-linear:before{content:"";block-size:var(--iui-size-2xs);background-color:var(--iui-color-border);background-image:linear-gradient(90deg,var(--_iui-progress-indicator-track-fill,var(--iui-color-border-accent))0% 100%);background-repeat:no-repeat;background-size:var(--iui-progress-percentage,100%)100%;forced-color-adjust:none}
702
+ ._iui3-progress-indicator-radial :is(svg,img){inline-size:var(--iui-size-m);block-size:var(--iui-size-m);fill:var(--iui-color-icon);flex-shrink:0;display:flex}._iui3-progress-indicator-radial[data-iui-status=positive]{color:var(--iui-color-text-positive)}._iui3-progress-indicator-radial[data-iui-status=positive]:after{background-color:var(--iui-color-border-positive)}._iui3-progress-indicator-radial[data-iui-status=positive] :is(svg,img){fill:var(--iui-color-icon-positive)}._iui3-progress-indicator-radial[data-iui-status=negative]{color:var(--iui-color-text-negative)}._iui3-progress-indicator-radial[data-iui-status=negative]:after{background-color:var(--iui-color-border-negative)}._iui3-progress-indicator-radial[data-iui-status=negative] :is(svg,img){fill:var(--iui-color-icon-negative)}._iui3-progress-indicator-radial[data-iui-size=x-small]{--_iui-progress-indicator-radial-size:var(--iui-size-m)}._iui3-progress-indicator-radial[data-iui-size=x-small]:before,._iui3-progress-indicator-radial[data-iui-size=x-small]:after{border-width:var(--iui-size-3xs)}._iui3-progress-indicator-radial[data-iui-size=x-small]>*{display:none}._iui3-progress-indicator-radial[data-iui-size=small]{--_iui-progress-indicator-radial-size:calc(1.5*var(--iui-size-m))}._iui3-progress-indicator-radial[data-iui-size=small]:before,._iui3-progress-indicator-radial[data-iui-size=small]:after{border-width:calc(var(--iui-size-3xs)*1.5)}._iui3-progress-indicator-radial[data-iui-size=large]{--_iui-progress-indicator-radial-size:calc(3*var(--iui-size-m));font-size:var(--iui-font-size-2)}._iui3-progress-indicator-radial[data-iui-size=large]:before,._iui3-progress-indicator-radial[data-iui-size=large]:after{border-width:calc(var(--iui-size-2xs)*1.5)}._iui3-progress-indicator-radial[data-iui-size=large] :is(svg,img){inline-size:calc(1.5*var(--iui-size-m));block-size:calc(1.5*var(--iui-size-m));flex-shrink:0;display:flex}._iui3-progress-indicator-radial:where(:not([data-iui-indeterminate=true])):after{-webkit-mask-image:conic-gradient(#000 var(--iui-progress-percentage,100%),#0000 var(--iui-progress-percentage,100%)),linear-gradient(#000 0 0);mask-image:conic-gradient(#000 var(--iui-progress-percentage,100%),#0000 var(--iui-progress-percentage,100%)),linear-gradient(#000 0 0)}._iui3-progress-indicator-radial:where([data-iui-indeterminate=true]):after{animation:.8s cubic-bezier(.6,.4,.4,.6) infinite _iui3-uf33jja;-webkit-mask-image:conic-gradient(#0000,#000),linear-gradient(#000 0 0);mask-image:conic-gradient(#0000,#000),linear-gradient(#000 0 0)}@keyframes _iui3-uf33jja{to{transform:rotate(360deg)}}._iui3-progress-indicator-linear-label{font-size:var(--iui-font-size-0);color:var(--_iui-progress-indicator-linear-label-color);--iui-svg-fill:var(--_iui-progress-indicator-linear-label-fill);justify-content:space-between;align-items:center;display:flex}._iui3-progress-indicator-linear-label>:only-child{margin-inline:auto}._iui3-progress-indicator-linear{gap:var(--iui-size-2xs);display:grid}._iui3-progress-indicator-linear:before{content:"";block-size:var(--iui-size-2xs);background-color:var(--iui-color-border);background-image:linear-gradient(90deg,var(--_iui-progress-indicator-track-fill,var(--iui-color-border-accent))0% 100%);background-repeat:no-repeat;background-size:var(--iui-progress-percentage,100%)100%;forced-color-adjust:none}
703
703
  }
704
704
 
705
705
  @layer itwinui.v3{@media (forced-colors:active){._iui3-progress-indicator-linear:before{background-color:#0000;background-image:linear-gradient(90deg,CanvasText 0% 100%);border:.5px solid}}
706
706
  }
707
707
 
708
708
  @layer itwinui.v3{
709
- ._iui3-progress-indicator-linear[data-iui-status=positive]{--_iui-progress-indicator-track-fill:var(--iui-color-border-positive);--_iui-progress-indicator-linear-label-color:var(--iui-color-text-positive);--_iui-progress-indicator-linear-label-fill:var(--iui-color-icon-positive)}._iui3-progress-indicator-linear[data-iui-status=positive]::selection,._iui3-progress-indicator-linear[data-iui-status=positive] ::selection{background-color:hsl(var(--iui-color-positive-hsl)/var(--iui-opacity-5))}._iui3-progress-indicator-linear[data-iui-status=negative]{--_iui-progress-indicator-track-fill:var(--iui-color-border-negative);--_iui-progress-indicator-linear-label-color:var(--iui-color-text-negative);--_iui-progress-indicator-linear-label-fill:var(--iui-color-icon-negative)}._iui3-progress-indicator-linear[data-iui-status=negative]::selection,._iui3-progress-indicator-linear[data-iui-status=negative] ::selection{background-color:hsl(var(--iui-color-negative-hsl)/var(--iui-opacity-5))}._iui3-progress-indicator-linear:where([data-iui-animated=true]:not([data-iui-indeterminate=true])):before{transition:background-size 1s ease-in-out}._iui3-progress-indicator-linear:where([data-iui-indeterminate=true]):before{animation:1.5s linear infinite _iui3-uu03qkn}@keyframes _iui3-uu03qkn{0%{background-position:-60% 0;background-size:30% 100%}40%{background-position:-40% 0;background-size:40% 100%}to{background-position:200% 0;background-size:50% 100%}}._iui3-radio-wrapper{vertical-align:baseline;font-size:var(--iui-font-size-1);-webkit-user-select:none;user-select:none;cursor:pointer;color:var(--iui-color-text);align-items:center;gap:var(--iui-size-xs);border:none;inline-size:-moz-fit-content;inline-size:fit-content;margin:0;padding:0;display:flex;position:relative}._iui3-radio-wrapper._iui3-loading{cursor:progress;color:var(--iui-color-text-disabled);font-style:italic}._iui3-radio-wrapper>._iui3-checkbox-label,._iui3-radio-wrapper>._iui3-radio-label{line-height:var(--iui-size-l)}._iui3-radio-wrapper>._iui3-checkbox-label svg,._iui3-radio-wrapper>._iui3-radio-label svg{inline-size:var(--iui-size-m);block-size:var(--iui-size-m);vertical-align:middle;fill:var(--iui-color-icon);flex-shrink:0;display:flex}._iui3-radio-wrapper._iui3-disabled{cursor:not-allowed;color:var(--iui-color-text-disabled)}._iui3-radio-wrapper._iui3-disabled svg{fill:var(--iui-color-icon-disabled)}._iui3-radio-wrapper._iui3-positive{color:var(--iui-color-text-positive)}._iui3-radio-wrapper._iui3-warning{color:var(--iui-color-text-warning)}._iui3-radio-wrapper._iui3-negative{color:var(--iui-color-text-negative)}._iui3-radio{--_iui-checkbox-checkmark-svg:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"m6.5 12.5-4.5-4.5 1.5-1.5 3 3 6-6 1.5 1.5z\" /></svg>");--_iui-checkbox-indeterminate-svg:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"m2.75 6.875h10.5v2.25h-10.5z\" /></svg>");--_iui-checkbox-unchecked-svg:url("data:image/svg+xml;utf8,<svg viewBox=\"0 0 16 16\"></svg>");--_iui-checkbox-svg-color:var(--iui-color-icon-accent);--_iui-checkbox-border-color:var(--iui-color-border-foreground);--_iui-checkbox-background-color:var(--iui-color-background);--_iui-checkbox-mask-image:initial;inline-size:var(--iui-size-m);block-size:var(--iui-size-m);appearance:none;border-radius:var(--iui-border-radius-1);background-color:var(--_iui-checkbox-background-color);cursor:pointer;transition:outline-color var(--iui-duration-1)ease-out;outline:solid 1px var(--_iui-checkbox-border-color);outline-offset:-1px;border-radius:50%;flex-shrink:0;margin:0;display:flex;position:relative}._iui3-radio:before{content:"";inset:calc((var(--iui-checkbox-target-size,24px) - 16px)/-2);position:absolute}._iui3-radio:after{content:"";background-color:var(--_iui-checkbox-svg-color);-webkit-mask:var(--_iui-checkbox-mask-image)no-repeat center;mask:var(--_iui-checkbox-mask-image)no-repeat center;position:absolute;inset:0}._iui3-radio:not(:checked){--_iui-checkbox-mask-image:var(--_iui-checkbox-unchecked-svg)}._iui3-radio:indeterminate{--_iui-checkbox-mask-image:var(--_iui-checkbox-indeterminate-svg)}._iui3-radio:hover{--_iui-checkbox-border-color:var(--iui-color-border-foreground-hover)}._iui3-radio:focus-visible{outline:2px solid var(--iui-color-border-accent);outline-offset:-1px}@supports not selector(*:focus-visible){._iui3-radio:focus{outline:2px solid var(--iui-color-border-accent);outline-offset:-1px}}._iui3-radio:disabled{--_iui-checkbox-svg-color:var(--iui-color-icon-disabled);--_iui-checkbox-border-color:var(--iui-color-border-disabled);--_iui-checkbox-background-color:var(--iui-color-background-disabled);cursor:not-allowed}._iui3-radio._iui3-checkbox-visibility{--_iui-checkbox-checkmark-svg:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"m8 2.99051a8.81883 8.81883 0 0 0 -8 4.95062 8.74664 8.74664 0 0 0 8 5.06836 8.63266 8.63266 0 0 0 8-5.06836 8.83631 8.83631 0 0 0 -8-4.95062zm-1.31445 1.86981a1.47663 1.47663 0 1 1 -1.47663 1.47668 1.47665 1.47665 0 0 1 1.47663-1.47668zm1.31445 6.64917a7.17486 7.17486 0 0 1 -6.30475-3.55237 7.4952 7.4952 0 0 1 2.81475-2.6336 3.83956 3.83956 0 1 0 6.98126.00244 7.522 7.522 0 0 1 2.81774 2.63916 7.09785 7.09785 0 0 1 -6.309 3.54437z\" /></svg>");--_iui-checkbox-indeterminate-svg:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"m8 3v7.9a4.01179 4.01179 0 0 0 4-4 6.7509 6.7509 0 0 0 -.2-1.4l.1.1a6.89429 6.89429 0 0 1 2.4 2.4 8.39088 8.39088 0 0 1 -2.3 2.3 6.89412 6.89412 0 0 1 -3.9 1.2c-.03345 0-.06653-.00677-.1-.0072v1.5072a8.90686 8.90686 0 0 0 8-5 8.90686 8.90686 0 0 0 -8-5z\" opacity=\".33\" /><path d=\"m8 0a1 1 0 0 0 -1 1v2.07135a8.91637 8.91637 0 0 0 -7 4.92865 8.91637 8.91637 0 0 0 7 4.92865v2.07135a1 1 0 0 0 2 0v-14a1 1 0 0 0 -1-1zm-1.5 4.9a1.55426 1.55426 0 0 1 .5.087v2.81451a1.40746 1.40746 0 0 1 -.5.09849 1.538 1.538 0 0 1 -1.5-1.5 1.53794 1.53794 0 0 1 1.5-1.5zm-2.3 5.4a6.97279 6.97279 0 0 1 -2.5-2.3 6.89429 6.89429 0 0 1 2.4-2.4c.1 0 .1-.1.2-.1a3.194 3.194 0 0 0 -.3 1.4 4.0047 4.0047 0 0 0 3 3.857v.65289a6.37491 6.37491 0 0 1 -2.8-1.10989z\" /></svg>");--_iui-checkbox-unchecked-svg:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"m1.70671 12.879 11.17218-11.17219 1.4142 1.4142-11.17218 11.17218zm.99329-1.679 1.1-1.1a5.06317 5.06317 0 0 1 -2-2.1 7.48268 7.48268 0 0 1 6.2-3.5 4.86877 4.86877 0 0 1 1.2.1l1.3-1.3a10.07431 10.07431 0 0 0 -2.5-.3 8.84129 8.84129 0 0 0 -8 5 8.42455 8.42455 0 0 0 2.7 3.2zm10.7-6.4-1.1 1.1a7.08625 7.08625 0 0 1 2 2.1 7.50323 7.50323 0 0 1 -6.2 3.5 8.31665 8.31665 0 0 1 -1.3-.2l-1.3 1.3a8.909 8.909 0 0 0 6.4-.5 9.04344 9.04344 0 0 0 4.1-4.1 9.168 9.168 0 0 0 -2.6-3.2z\" /></svg>");--_iui-checkbox-border-color:transparent;--_iui-checkbox-background-color:transparent;outline-width:1px}._iui3-radio._iui3-checkbox-visibility:where(:not(:checked):not(:indeterminate)){--_iui-checkbox-svg-color:var(--iui-color-icon)}._iui3-radio._iui3-checkbox-visibility:where(:hover){--_iui-checkbox-border-color:transparent;--_iui-checkbox-background-color:var(--iui-color-background-transparent-hover)}._iui3-radio._iui3-checkbox-visibility:where(:disabled){--_iui-checkbox-svg-color:var(--iui-color-icon-disabled);--_iui-checkbox-background-color:var(--iui-color-background-disabled)}._iui3-radio._iui3-loading{--_iui-checkbox-border-color:transparent;--_iui-checkbox-background-color:transparent;opacity:0;cursor:wait;position:absolute}._iui3-radio:checked{--_iui-checkbox-mask-image:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" ><circle cx=\"8\" cy=\"8\" r=\"4\" /></svg>")}._iui3-radio:not(:checked),._iui3-radio:indeterminate{--_iui-checkbox-mask-image:var(--_iui-checkbox-unchecked-svg)}._iui3-radio-tile{-webkit-tap-highlight-color:hsl(var(--iui-color-accent-hsl)/var(--iui-opacity-6));inline-size:calc(var(--iui-size-xl)*5);padding:var(--iui-size-xs);z-index:1;outline:1px solid var(--iui-color-border);background-color:var(--iui-color-background);transition:outline-color var(--iui-duration-1)ease-out;align-content:center;justify-items:center;display:grid;position:relative}._iui3-radio-tile:where(:hover){z-index:2;outline-color:var(--iui-color-border-hover)}._iui3-radio-tile:where(:hover) ._iui3-radio-tile-icon svg{fill:var(--iui-color-icon-hover)}._iui3-radio-tile:where(:has(input:disabled),[data-iui-disabled=true]){outline-color:var(--iui-color-border-disabled);background-color:var(--iui-color-background-disabled)}._iui3-radio-tile-container{-webkit-user-select:none;user-select:none;isolation:isolate;flex-wrap:wrap;gap:1px;display:inline-flex;position:relative}._iui3-radio-tile-input{z-index:1;appearance:none;cursor:pointer;margin:0;position:absolute;inset:0}._iui3-radio-tile-input:checked{z-index:3;outline:2px solid var(--iui-color-border-accent);outline-offset:-2px}
709
+ ._iui3-progress-indicator-linear[data-iui-status=positive]{--_iui-progress-indicator-track-fill:var(--iui-color-border-positive);--_iui-progress-indicator-linear-label-color:var(--iui-color-text-positive);--_iui-progress-indicator-linear-label-fill:var(--iui-color-icon-positive)}._iui3-progress-indicator-linear[data-iui-status=positive]::selection,._iui3-progress-indicator-linear[data-iui-status=positive] ::selection{background-color:hsl(var(--iui-color-positive-hsl)/var(--iui-opacity-5))}._iui3-progress-indicator-linear[data-iui-status=negative]{--_iui-progress-indicator-track-fill:var(--iui-color-border-negative);--_iui-progress-indicator-linear-label-color:var(--iui-color-text-negative);--_iui-progress-indicator-linear-label-fill:var(--iui-color-icon-negative)}._iui3-progress-indicator-linear[data-iui-status=negative]::selection,._iui3-progress-indicator-linear[data-iui-status=negative] ::selection{background-color:hsl(var(--iui-color-negative-hsl)/var(--iui-opacity-5))}._iui3-progress-indicator-linear:where([data-iui-animated=true]:not([data-iui-indeterminate=true])):before{transition:background-size 1s ease-in-out}._iui3-progress-indicator-linear:where([data-iui-indeterminate=true]):before{animation:1.5s linear infinite _iui3-uf33jjz}@keyframes _iui3-uf33jjz{0%{background-position:-60% 0;background-size:30% 100%}40%{background-position:-40% 0;background-size:40% 100%}to{background-position:200% 0;background-size:50% 100%}}._iui3-radio-wrapper{vertical-align:baseline;font-size:var(--iui-font-size-1);-webkit-user-select:none;user-select:none;cursor:pointer;color:var(--iui-color-text);align-items:center;gap:var(--iui-size-xs);border:none;inline-size:-moz-fit-content;inline-size:fit-content;margin:0;padding:0;display:flex;position:relative}._iui3-radio-wrapper._iui3-loading{cursor:progress;color:var(--iui-color-text-disabled);font-style:italic}._iui3-radio-wrapper>._iui3-checkbox-label,._iui3-radio-wrapper>._iui3-radio-label{line-height:var(--iui-size-l)}._iui3-radio-wrapper>._iui3-checkbox-label svg,._iui3-radio-wrapper>._iui3-radio-label svg{inline-size:var(--iui-size-m);block-size:var(--iui-size-m);vertical-align:middle;fill:var(--iui-color-icon);flex-shrink:0;display:flex}._iui3-radio-wrapper._iui3-disabled{cursor:not-allowed;color:var(--iui-color-text-disabled)}._iui3-radio-wrapper._iui3-disabled svg{fill:var(--iui-color-icon-disabled)}._iui3-radio-wrapper._iui3-positive{color:var(--iui-color-text-positive)}._iui3-radio-wrapper._iui3-warning{color:var(--iui-color-text-warning)}._iui3-radio-wrapper._iui3-negative{color:var(--iui-color-text-negative)}._iui3-radio{--_iui-checkbox-checkmark-svg:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"m6.5 12.5-4.5-4.5 1.5-1.5 3 3 6-6 1.5 1.5z\" /></svg>");--_iui-checkbox-indeterminate-svg:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"m2.75 6.875h10.5v2.25h-10.5z\" /></svg>");--_iui-checkbox-unchecked-svg:url("data:image/svg+xml;utf8,<svg viewBox=\"0 0 16 16\"></svg>");--_iui-checkbox-svg-color:var(--iui-color-icon-accent);--_iui-checkbox-border-color:var(--iui-color-border-foreground);--_iui-checkbox-background-color:var(--iui-color-background);--_iui-checkbox-mask-image:initial;inline-size:var(--iui-size-m);block-size:var(--iui-size-m);appearance:none;border-radius:var(--iui-border-radius-1);background-color:var(--_iui-checkbox-background-color);cursor:pointer;transition:outline-color var(--iui-duration-1)ease-out;outline:solid 1px var(--_iui-checkbox-border-color);outline-offset:-1px;border-radius:50%;flex-shrink:0;margin:0;display:flex;position:relative}._iui3-radio:before{content:"";inset:calc((var(--iui-checkbox-target-size,24px) - 16px)/-2);position:absolute}._iui3-radio:after{content:"";background-color:var(--_iui-checkbox-svg-color);-webkit-mask:var(--_iui-checkbox-mask-image)no-repeat center;mask:var(--_iui-checkbox-mask-image)no-repeat center;position:absolute;inset:0}._iui3-radio:not(:checked){--_iui-checkbox-mask-image:var(--_iui-checkbox-unchecked-svg)}._iui3-radio:indeterminate{--_iui-checkbox-mask-image:var(--_iui-checkbox-indeterminate-svg)}._iui3-radio:hover{--_iui-checkbox-border-color:var(--iui-color-border-foreground-hover)}._iui3-radio:focus-visible{outline:2px solid var(--iui-color-border-accent);outline-offset:-1px}@supports not selector(*:focus-visible){._iui3-radio:focus{outline:2px solid var(--iui-color-border-accent);outline-offset:-1px}}._iui3-radio:disabled{--_iui-checkbox-svg-color:var(--iui-color-icon-disabled);--_iui-checkbox-border-color:var(--iui-color-border-disabled);--_iui-checkbox-background-color:var(--iui-color-background-disabled);cursor:not-allowed}._iui3-radio._iui3-checkbox-visibility{--_iui-checkbox-checkmark-svg:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"m8 2.99051a8.81883 8.81883 0 0 0 -8 4.95062 8.74664 8.74664 0 0 0 8 5.06836 8.63266 8.63266 0 0 0 8-5.06836 8.83631 8.83631 0 0 0 -8-4.95062zm-1.31445 1.86981a1.47663 1.47663 0 1 1 -1.47663 1.47668 1.47665 1.47665 0 0 1 1.47663-1.47668zm1.31445 6.64917a7.17486 7.17486 0 0 1 -6.30475-3.55237 7.4952 7.4952 0 0 1 2.81475-2.6336 3.83956 3.83956 0 1 0 6.98126.00244 7.522 7.522 0 0 1 2.81774 2.63916 7.09785 7.09785 0 0 1 -6.309 3.54437z\" /></svg>");--_iui-checkbox-indeterminate-svg:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"m8 3v7.9a4.01179 4.01179 0 0 0 4-4 6.7509 6.7509 0 0 0 -.2-1.4l.1.1a6.89429 6.89429 0 0 1 2.4 2.4 8.39088 8.39088 0 0 1 -2.3 2.3 6.89412 6.89412 0 0 1 -3.9 1.2c-.03345 0-.06653-.00677-.1-.0072v1.5072a8.90686 8.90686 0 0 0 8-5 8.90686 8.90686 0 0 0 -8-5z\" opacity=\".33\" /><path d=\"m8 0a1 1 0 0 0 -1 1v2.07135a8.91637 8.91637 0 0 0 -7 4.92865 8.91637 8.91637 0 0 0 7 4.92865v2.07135a1 1 0 0 0 2 0v-14a1 1 0 0 0 -1-1zm-1.5 4.9a1.55426 1.55426 0 0 1 .5.087v2.81451a1.40746 1.40746 0 0 1 -.5.09849 1.538 1.538 0 0 1 -1.5-1.5 1.53794 1.53794 0 0 1 1.5-1.5zm-2.3 5.4a6.97279 6.97279 0 0 1 -2.5-2.3 6.89429 6.89429 0 0 1 2.4-2.4c.1 0 .1-.1.2-.1a3.194 3.194 0 0 0 -.3 1.4 4.0047 4.0047 0 0 0 3 3.857v.65289a6.37491 6.37491 0 0 1 -2.8-1.10989z\" /></svg>");--_iui-checkbox-unchecked-svg:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\"><path d=\"m1.70671 12.879 11.17218-11.17219 1.4142 1.4142-11.17218 11.17218zm.99329-1.679 1.1-1.1a5.06317 5.06317 0 0 1 -2-2.1 7.48268 7.48268 0 0 1 6.2-3.5 4.86877 4.86877 0 0 1 1.2.1l1.3-1.3a10.07431 10.07431 0 0 0 -2.5-.3 8.84129 8.84129 0 0 0 -8 5 8.42455 8.42455 0 0 0 2.7 3.2zm10.7-6.4-1.1 1.1a7.08625 7.08625 0 0 1 2 2.1 7.50323 7.50323 0 0 1 -6.2 3.5 8.31665 8.31665 0 0 1 -1.3-.2l-1.3 1.3a8.909 8.909 0 0 0 6.4-.5 9.04344 9.04344 0 0 0 4.1-4.1 9.168 9.168 0 0 0 -2.6-3.2z\" /></svg>");--_iui-checkbox-border-color:transparent;--_iui-checkbox-background-color:transparent;outline-width:1px}._iui3-radio._iui3-checkbox-visibility:where(:not(:checked):not(:indeterminate)){--_iui-checkbox-svg-color:var(--iui-color-icon)}._iui3-radio._iui3-checkbox-visibility:where(:hover){--_iui-checkbox-border-color:transparent;--_iui-checkbox-background-color:var(--iui-color-background-transparent-hover)}._iui3-radio._iui3-checkbox-visibility:where(:disabled){--_iui-checkbox-svg-color:var(--iui-color-icon-disabled);--_iui-checkbox-background-color:var(--iui-color-background-disabled)}._iui3-radio._iui3-loading{--_iui-checkbox-border-color:transparent;--_iui-checkbox-background-color:transparent;opacity:0;cursor:wait;position:absolute}._iui3-radio:checked{--_iui-checkbox-mask-image:url("data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" ><circle cx=\"8\" cy=\"8\" r=\"4\" /></svg>")}._iui3-radio:not(:checked),._iui3-radio:indeterminate{--_iui-checkbox-mask-image:var(--_iui-checkbox-unchecked-svg)}._iui3-radio-tile{-webkit-tap-highlight-color:hsl(var(--iui-color-accent-hsl)/var(--iui-opacity-6));inline-size:calc(var(--iui-size-xl)*5);padding:var(--iui-size-xs);z-index:1;outline:1px solid var(--iui-color-border);background-color:var(--iui-color-background);transition:outline-color var(--iui-duration-1)ease-out;align-content:center;justify-items:center;display:grid;position:relative}._iui3-radio-tile:where(:hover){z-index:2;outline-color:var(--iui-color-border-hover)}._iui3-radio-tile:where(:hover) ._iui3-radio-tile-icon svg{fill:var(--iui-color-icon-hover)}._iui3-radio-tile:where(:has(input:disabled),[data-iui-disabled=true]){outline-color:var(--iui-color-border-disabled);background-color:var(--iui-color-background-disabled)}._iui3-radio-tile-container{-webkit-user-select:none;user-select:none;isolation:isolate;flex-wrap:wrap;gap:1px;display:inline-flex;position:relative}._iui3-radio-tile-input{z-index:1;appearance:none;cursor:pointer;margin:0;position:absolute;inset:0}._iui3-radio-tile-input:checked{z-index:3;outline:2px solid var(--iui-color-border-accent);outline-offset:-2px}
710
710
  }
711
711
 
712
712
  @layer itwinui.v3{@media (forced-colors:active){._iui3-radio-tile-input:checked{outline-color:Highlight}}
@@ -842,7 +842,7 @@
842
842
  }
843
843
 
844
844
  @layer itwinui.v3{
845
- ._iui3-status-message{gap:var(--iui-size-2xs);font-size:var(--iui-font-size-0);color:var(--iui-color-text-muted);align-items:center;display:flex}._iui3-status-message[data-iui-status=positive]{color:var(--iui-color-text-positive);--_iui-svg-fill:var(--iui-color-icon-positive)}._iui3-status-message[data-iui-status=positive] a{color:var(--iui-color-text-positive);text-decoration:underline}._iui3-status-message[data-iui-status=positive] a:hover{color:var(--iui-color-text-positive-hover);text-decoration:none}._iui3-status-message[data-iui-status=warning]{color:var(--iui-color-text-warning);--_iui-svg-fill:var(--iui-color-icon-warning)}._iui3-status-message[data-iui-status=warning] a{color:var(--iui-color-text-warning);text-decoration:underline}._iui3-status-message[data-iui-status=warning] a:hover{color:var(--iui-color-text-warning-hover);text-decoration:none}._iui3-status-message[data-iui-status=negative]{color:var(--iui-color-text-negative);--_iui-svg-fill:var(--iui-color-icon-negative)}._iui3-status-message[data-iui-status=negative] a{color:var(--iui-color-text-negative);text-decoration:underline}._iui3-status-message[data-iui-status=negative] a:hover{color:var(--iui-color-text-negative-hover);text-decoration:none}._iui3-stepper{row-gap:calc(var(--iui-size-s)*.5);flex-direction:column;display:flex}._iui3-stepper>ol{vertical-align:baseline;border:none;justify-content:space-around;align-items:flex-start;inline-size:100%;margin:0;padding:0;display:flex}._iui3-stepper-step{--_iui-stepper-step-background-color:var(--iui-color-background);--_iui-stepper-step-border-color:var(--iui-color-border-positive);--_iui-stepper-step-number-color:var(--iui-color-text-positive);--_iui-stepper-step-text-color:var(--iui-color-text-positive);--_iui-stepper-step-track-before-color:var(--iui-color-border-positive);--_iui-stepper-step-track-after-color:var(--iui-color-border-positive);gap:var(--iui-size-3xs);vertical-align:baseline;font-size:var(--iui-font-size-0);font-weight:var(--iui-font-weight-normal);color:var(--_iui-stepper-step-text-color);border:none;flex-direction:column;flex:1;align-items:center;margin:0;padding:0;display:flex}._iui3-stepper-step._iui3-current{--_iui-stepper-step-background-color:var(--iui-color-background-positive);--_iui-stepper-step-border-color:var(--iui-color-background-positive);--_iui-stepper-step-number-color:var(--iui-color-white);--_iui-stepper-step-track-after-color:var(--iui-color-border);font-weight:var(--iui-font-weight-semibold)}._iui3-stepper-step._iui3-current~._iui3-stepper-step{--_iui-stepper-step-background-color:var(--iui-color-background);--_iui-stepper-step-border-color:var(--iui-color-border);--_iui-stepper-step-number-color:var(--iui-color-text-muted);--_iui-stepper-step-text-color:var(--iui-color-text-muted);--_iui-stepper-step-track-before-color:var(--iui-color-border)}._iui3-stepper-step._iui3-current~._iui3-stepper-step:not(:last-of-type){--_iui-stepper-step-track-after-color:var(--iui-color-border)}._iui3-stepper-step._iui3-clickable:focus{outline:0}._iui3-stepper-step:first-of-type{--_iui-stepper-step-track-before-color:transparent}._iui3-stepper-step:last-of-type{--_iui-stepper-step-track-after-color:transparent}._iui3-stepper-circle{border-radius:var(--iui-border-radius-round);inline-size:var(--iui-size-l);block-size:var(--iui-size-l);overflow-wrap:break-word;-webkit-user-select:none;user-select:none;border:1px solid var(--_iui-stepper-step-border-color);background-color:var(--_iui-stepper-step-background-color);color:var(--_iui-stepper-step-number-color);justify-content:center;align-items:center;display:flex}._iui3-clickable ._iui3-stepper-circle{cursor:pointer;transition:background-color var(--iui-duration-1)ease-out,border-color var(--iui-duration-1)ease-out,color var(--iui-duration-1)ease-out}._iui3-clickable ._iui3-stepper-circle:hover{--_iui-stepper-step-background-color:var(--iui-color-background-positive);--_iui-stepper-step-border-color:var(--iui-color-background-positive);--_iui-stepper-step-number-color:var(--iui-color-white)}._iui3-clickable:focus ._iui3-stepper-circle{outline:2px solid var(--iui-color-border-positive);outline-offset:-1px}._iui3-clickable:focus:not(:focus-visible) ._iui3-stepper-circle{outline:none}._iui3-stepper-track-content{align-items:center;inline-size:100%;display:flex}._iui3-stepper-track-content:before,._iui3-stepper-track-content:after{content:"";block-size:var(--iui-size-3xs);flex:1 2 auto}._iui3-stepper-track-content:before{background-color:var(--_iui-stepper-step-track-before-color)}._iui3-stepper-track-content:after{background-color:var(--_iui-stepper-step-track-after-color)}._iui3-stepper-step-name{text-align:center;-webkit-user-select:all;user-select:all;color:var(--_iui-stepper-step-text-color)}._iui3-stepper-steps-label{font-size:var(--iui-font-size-3);text-align:center;display:block}._iui3-stepper-steps-label-count{-webkit-user-select:none;user-select:none;color:var(--iui-color-text-muted);margin-inline-end:var(--iui-size-xs)}._iui3-surface{--iui-surface-border:1px solid var(--iui-color-border-subtle);--iui-surface-elevation:var(--iui-shadow-1);background-color:var(--iui-color-background);border:var(--iui-surface-border);border-radius:var(--iui-border-radius-1);box-shadow:var(--iui-surface-elevation);color:var(--iui-color-text)}._iui3-surface:where(:has(._iui3-surface-body),:has(._iui3-surface-header),[data-iui-layout=true]){flex-direction:column;display:flex}._iui3-popover-surface{--iui-surface-border:1px solid var(--iui-color-border);--iui-surface-elevation:var(--iui-shadow-2);background-color:var(--iui-color-background);border:var(--iui-surface-border);border-radius:var(--iui-border-radius-1);box-shadow:var(--iui-surface-elevation);color:var(--iui-color-text)}._iui3-surface-header{border-block-end:1px solid var(--iui-color-border-subtle);padding-inline:var(--iui-size-s);min-block-size:var(--iui-component-height);flex-shrink:0;align-items:center;display:flex;overflow:hidden}._iui3-surface-body{flex-grow:1;overflow:hidden auto}._iui3-surface-body[data-iui-padded=true]{scrollbar-gutter:stable both-edges;padding-inline:var(--iui-size-2xs);padding-block:var(--iui-size-s)}@supports not (scrollbar-gutter:stable){._iui3-surface-body[data-iui-padded=true]{padding-inline:var(--iui-size-s)}}._iui3-table{vertical-align:baseline;isolation:isolate;--_iui-table-header-size:calc(var(--iui-size-s)*5);--_iui-table-row-size:calc(var(--iui-size-s)*5 + 2px);border:none;flex-direction:column;margin:0;padding:0;display:flex}._iui3-table ._iui3-table-cell-end-icon,._iui3-table ._iui3-table-cell-start-icon{fill:var(--_iui-table-cell-icon-fill);flex-shrink:0;justify-content:center;align-items:center;display:flex}._iui3-table ._iui3-table-cell-end-icon svg,._iui3-table ._iui3-table-cell-start-icon svg{inline-size:var(--iui-size-m);block-size:var(--iui-size-m);flex-shrink:0;display:flex}._iui3-table ._iui3-table-cell-start-icon{margin-inline-end:var(--iui-size-xs)}._iui3-table ._iui3-table-cell-end-icon{inline-size:var(--iui-size-l);block-size:var(--iui-size-l);margin-inline-start:auto;margin-inline-end:var(--iui-size-s)}._iui3-table ._iui3-table-cell-end-icon :where(svg){fill:var(--_iui-table-cell-icon-fill)}._iui3-table[data-iui-size=condensed]{--_iui-table-header-size:calc(var(--iui-size-s)*4);--_iui-table-row-size:calc(var(--iui-size-s)*4 + 2px)}._iui3-table[data-iui-size=extra-condensed]{--_iui-table-header-size:calc(var(--iui-size-s)*3);--_iui-table-row-size:calc(var(--iui-size-s)*3 + 2px)}._iui3-table[data-iui-size=extra-condensed] ._iui3-table-header ._iui3-table-cell{padding-block:calc(var(--iui-size-s)*.25)}._iui3-table ._iui3-table-header,._iui3-table ._iui3-table-paginator{min-block-size:var(--_iui-table-header-size)}._iui3-table ._iui3-table-body ._iui3-table-cell{min-block-size:var(--_iui-table-row-size)}._iui3-table-header-wrapper{scrollbar-gutter:stable;background-color:var(--iui-color-background);border-start-start-radius:var(--iui-border-radius-1);border-start-end-radius:var(--iui-border-radius-1);flex-shrink:0;display:flex;overflow:hidden scroll}._iui3-table-header{-webkit-user-select:none;user-select:none;font-weight:var(--iui-font-weight-semibold);border-block-end:1px solid var(--iui-color-border);flex-shrink:0;min-inline-size:100%;display:flex}._iui3-table-header ._iui3-table-cell{background-color:var(--iui-color-background)}._iui3-table-header ._iui3-table-cell:not(._iui3-slot){column-gap:var(--iui-size-2xs);padding-block:calc(var(--iui-size-s)*.5)}._iui3-table-header ._iui3-table-cell:not(._iui3-slot):focus-visible{outline:1px solid var(--iui-color-border-accent);outline-offset:-1px}@supports not selector(*:focus-visible){._iui3-table-header ._iui3-table-cell:not(._iui3-slot):focus{outline:1px solid var(--iui-color-border-accent);outline-offset:-1px}}._iui3-table-header ._iui3-table-cell:not(._iui3-slot)._iui3-actionable{cursor:pointer}._iui3-table-header ._iui3-table-cell:not(._iui3-slot)._iui3-grabbing{cursor:grabbing}._iui3-table-header ._iui3-table-cell:not(._iui3-slot) ._iui3-table-filter-button:not([data-iui-active=true]){opacity:0}._iui3-table-header ._iui3-table-cell:not(._iui3-slot)>._iui3-table-resizer{inline-size:var(--iui-size-m);touch-action:none;cursor:ew-resize;z-index:1;opacity:0;block-size:100%;position:absolute;inset-block-start:0;inset-inline-end:0;transform:translate(50%)}._iui3-table-header ._iui3-table-cell:not(._iui3-slot)>._iui3-table-resizer>._iui3-table-resizer-bar{inline-size:var(--iui-size-3xs);transition:background-color var(--iui-duration-1)ease-out,width var(--iui-duration-1)ease-out;background-color:var(--iui-color-border);block-size:100%;margin-inline:auto}._iui3-table-header ._iui3-table-cell:not(._iui3-slot)>._iui3-table-resizer:hover>._iui3-table-resizer-bar{inline-size:var(--iui-size-2xs);background-color:var(--iui-color-border-accent)}._iui3-table-header ._iui3-table-cell:not(._iui3-slot):hover>._iui3-table-resizer{opacity:1}._iui3-table-header ._iui3-table-cell:not(._iui3-slot):is(:hover,:focus-visible,:has(:focus-visible)){background-color:var(--iui-color-background-hover)}._iui3-table-header ._iui3-table-cell:not(._iui3-slot):is(:hover,:focus-visible,:has(:focus-visible)) :is(._iui3-table-sort,._iui3-table-filter-button){opacity:1}@supports not selector(:has(+ *)){._iui3-table-header ._iui3-table-cell:not(._iui3-slot):focus-within{background-color:var(--iui-color-background-hover)}._iui3-table-header ._iui3-table-cell:not(._iui3-slot):focus-within :is(._iui3-table-sort,._iui3-table-filter-button){opacity:1}}._iui3-table-header ._iui3-table-reorder-bar{inline-size:var(--iui-size-3xs);block-size:100%;position:absolute}._iui3-table-header ._iui3-table-reorder-column-right>._iui3-table-reorder-bar{inset-inline-end:0}._iui3-table-header ._iui3-table-reorder-column-left>._iui3-table-reorder-bar{inset-inline-start:0}._iui3-table-header ._iui3-table-reorder-column-left>._iui3-table-reorder-bar,._iui3-table-header ._iui3-table-reorder-column-right>._iui3-table-reorder-bar{background-color:var(--iui-color-border-accent)}._iui3-table-header ._iui3-table-sort{opacity:0;--_iui-table-cell-icon-fill:var(--iui-color-icon-muted)}._iui3-table-header ._iui3-sorted{background-color:var(--iui-color-background-hover)}._iui3-table-header ._iui3-sorted ._iui3-table-sort{opacity:1;--_iui-table-cell-icon-fill:var(--iui-color-icon)}._iui3-table-row{--_iui-table-cell-icon-fill:var(--iui-color-icon-muted);min-inline-size:100%;display:flex}._iui3-table-row:last-of-type{border-radius:inherit}._iui3-table-row[data-iui-loading=true]{position:sticky;inset-inline-start:0}._iui3-table-row[data-iui-loading=true] ._iui3-table-cell{justify-content:center}._iui3-table-header ._iui3-table-row{flex-grow:1}._iui3-table-body ._iui3-table-row ._iui3-table-cell{border-block:1px solid #0000;border-block-end-color:var(--iui-color-border);background-color:var(--iui-color-background);transition:border var(--iui-duration-1)ease-out}._iui3-table-body ._iui3-table-row>._iui3-slot>._iui3-table-more-options{opacity:0}._iui3-table-body ._iui3-table-row:where(:hover,:focus-within)>._iui3-slot>._iui3-table-more-options{opacity:1}._iui3-table-body ._iui3-table-row:where(:hover:not(._iui3-loading):not([aria-disabled=true])) ._iui3-table-cell{background-color:var(--iui-color-background-hover)}
845
+ ._iui3-status-message{gap:var(--iui-size-2xs);font-size:var(--iui-font-size-0);color:var(--iui-color-text-muted);align-items:center;display:flex}._iui3-status-message[data-iui-status=positive]{color:var(--iui-color-text-positive);--_iui-svg-fill:var(--iui-color-icon-positive)}._iui3-status-message[data-iui-status=positive] a{color:var(--iui-color-text-positive);text-decoration:underline}._iui3-status-message[data-iui-status=positive] a:hover{color:var(--iui-color-text-positive-hover);text-decoration:none}._iui3-status-message[data-iui-status=warning]{color:var(--iui-color-text-warning);--_iui-svg-fill:var(--iui-color-icon-warning)}._iui3-status-message[data-iui-status=warning] a{color:var(--iui-color-text-warning);text-decoration:underline}._iui3-status-message[data-iui-status=warning] a:hover{color:var(--iui-color-text-warning-hover);text-decoration:none}._iui3-status-message[data-iui-status=negative]{color:var(--iui-color-text-negative);--_iui-svg-fill:var(--iui-color-icon-negative)}._iui3-status-message[data-iui-status=negative] a{color:var(--iui-color-text-negative);text-decoration:underline}._iui3-status-message[data-iui-status=negative] a:hover{color:var(--iui-color-text-negative-hover);text-decoration:none}._iui3-stepper{row-gap:calc(var(--iui-size-s)*.5);flex-direction:column;display:flex}._iui3-stepper>ol{vertical-align:baseline;border:none;justify-content:space-around;align-items:flex-start;inline-size:100%;margin:0;padding:0;display:flex}._iui3-stepper-step{--_iui-stepper-step-background-color:var(--iui-color-background);--_iui-stepper-step-border-color:var(--iui-color-border-positive);--_iui-stepper-step-number-color:var(--iui-color-text-positive);--_iui-stepper-step-text-color:var(--iui-color-text-positive);--_iui-stepper-step-track-before-color:var(--iui-color-border-positive);--_iui-stepper-step-track-after-color:var(--iui-color-border-positive);gap:var(--iui-size-3xs);vertical-align:baseline;font-size:var(--iui-font-size-0);font-weight:var(--iui-font-weight-normal);color:var(--_iui-stepper-step-text-color);border:none;flex-direction:column;flex:1;align-items:center;margin:0;padding:0;display:flex}._iui3-stepper-step._iui3-current{--_iui-stepper-step-background-color:var(--iui-color-background-positive);--_iui-stepper-step-border-color:var(--iui-color-background-positive);--_iui-stepper-step-number-color:var(--iui-color-white);--_iui-stepper-step-track-after-color:var(--iui-color-border);font-weight:var(--iui-font-weight-semibold)}._iui3-stepper-step._iui3-current~._iui3-stepper-step{--_iui-stepper-step-background-color:var(--iui-color-background);--_iui-stepper-step-border-color:var(--iui-color-border);--_iui-stepper-step-number-color:var(--iui-color-text-muted);--_iui-stepper-step-text-color:var(--iui-color-text-muted);--_iui-stepper-step-track-before-color:var(--iui-color-border)}._iui3-stepper-step._iui3-current~._iui3-stepper-step:not(:last-of-type){--_iui-stepper-step-track-after-color:var(--iui-color-border)}._iui3-stepper-step._iui3-clickable:focus{outline:0}._iui3-stepper-step:first-of-type{--_iui-stepper-step-track-before-color:transparent}._iui3-stepper-step:last-of-type{--_iui-stepper-step-track-after-color:transparent}._iui3-stepper-circle{border-radius:var(--iui-border-radius-round);inline-size:var(--iui-size-l);block-size:var(--iui-size-l);overflow-wrap:break-word;-webkit-user-select:none;user-select:none;border:1px solid var(--_iui-stepper-step-border-color);background-color:var(--_iui-stepper-step-background-color);color:var(--_iui-stepper-step-number-color);justify-content:center;align-items:center;display:flex}._iui3-clickable ._iui3-stepper-circle{cursor:pointer;transition:background-color var(--iui-duration-1)ease-out,border-color var(--iui-duration-1)ease-out,color var(--iui-duration-1)ease-out}._iui3-clickable ._iui3-stepper-circle:hover{--_iui-stepper-step-background-color:var(--iui-color-background-positive);--_iui-stepper-step-border-color:var(--iui-color-background-positive);--_iui-stepper-step-number-color:var(--iui-color-white)}._iui3-clickable:focus ._iui3-stepper-circle{outline:2px solid var(--iui-color-border-positive);outline-offset:-1px}._iui3-clickable:focus:not(:focus-visible) ._iui3-stepper-circle{outline:none}._iui3-stepper-track-content{align-items:center;inline-size:100%;display:flex}._iui3-stepper-track-content:before,._iui3-stepper-track-content:after{content:"";block-size:var(--iui-size-3xs);flex:1 2 auto}._iui3-stepper-track-content:before{background-color:var(--_iui-stepper-step-track-before-color)}._iui3-stepper-track-content:after{background-color:var(--_iui-stepper-step-track-after-color)}._iui3-stepper-step-name{text-align:center;-webkit-user-select:all;user-select:all;color:var(--_iui-stepper-step-text-color)}._iui3-stepper-steps-label{font-size:var(--iui-font-size-3);text-align:center;display:block}._iui3-stepper-steps-label-count{-webkit-user-select:none;user-select:none;color:var(--iui-color-text-muted);margin-inline-end:var(--iui-size-xs)}._iui3-surface{--iui-surface-border:1px solid var(--iui-color-border-subtle);--iui-surface-elevation:var(--iui-shadow-1);background-color:var(--iui-color-background);border:var(--iui-surface-border);border-radius:var(--iui-border-radius-1);box-shadow:var(--iui-surface-elevation);color:var(--iui-color-text)}._iui3-surface:where(:has(._iui3-surface-body),:has(._iui3-surface-header),[data-iui-layout=true]){flex-direction:column;display:flex}._iui3-popover-surface{--iui-surface-border:1px solid var(--iui-color-border);--iui-surface-elevation:var(--iui-shadow-2);background-color:var(--iui-color-background);border:var(--iui-surface-border);border-radius:var(--iui-border-radius-1);box-shadow:var(--iui-surface-elevation);color:var(--iui-color-text)}._iui3-surface-header{border-block-end:1px solid var(--iui-color-border-subtle);padding-inline:var(--iui-size-s);min-block-size:var(--iui-component-height);flex-shrink:0;align-items:center;display:flex;overflow:hidden}._iui3-surface-body{flex-grow:1;overflow:hidden auto}._iui3-surface-body[data-iui-padded=true]{padding:var(--iui-size-s);scrollbar-gutter:stable;padding-inline-end:var(--iui-size-2xs)}._iui3-table{vertical-align:baseline;isolation:isolate;--_iui-table-header-size:calc(var(--iui-size-s)*5);--_iui-table-row-size:calc(var(--iui-size-s)*5 + 2px);border:none;flex-direction:column;margin:0;padding:0;display:flex}._iui3-table ._iui3-table-cell-end-icon,._iui3-table ._iui3-table-cell-start-icon{fill:var(--_iui-table-cell-icon-fill);flex-shrink:0;justify-content:center;align-items:center;display:flex}._iui3-table ._iui3-table-cell-end-icon svg,._iui3-table ._iui3-table-cell-start-icon svg{inline-size:var(--iui-size-m);block-size:var(--iui-size-m);flex-shrink:0;display:flex}._iui3-table ._iui3-table-cell-start-icon{margin-inline-end:var(--iui-size-xs)}._iui3-table ._iui3-table-cell-end-icon{inline-size:var(--iui-size-l);block-size:var(--iui-size-l);margin-inline-start:auto;margin-inline-end:var(--iui-size-s)}._iui3-table ._iui3-table-cell-end-icon :where(svg){fill:var(--_iui-table-cell-icon-fill)}._iui3-table[data-iui-size=condensed]{--_iui-table-header-size:calc(var(--iui-size-s)*4);--_iui-table-row-size:calc(var(--iui-size-s)*4 + 2px)}._iui3-table[data-iui-size=extra-condensed]{--_iui-table-header-size:calc(var(--iui-size-s)*3);--_iui-table-row-size:calc(var(--iui-size-s)*3 + 2px)}._iui3-table[data-iui-size=extra-condensed] ._iui3-table-header ._iui3-table-cell{padding-block:calc(var(--iui-size-s)*.25)}._iui3-table ._iui3-table-header,._iui3-table ._iui3-table-paginator{min-block-size:var(--_iui-table-header-size)}._iui3-table ._iui3-table-body ._iui3-table-cell{min-block-size:var(--_iui-table-row-size)}._iui3-table-header-wrapper{scrollbar-gutter:stable;scrollbar-color:transparent transparent;background-color:var(--iui-color-background);border-start-start-radius:var(--iui-border-radius-1);border-start-end-radius:var(--iui-border-radius-1);flex-shrink:0;display:flex;overflow:hidden scroll}._iui3-table-header{-webkit-user-select:none;user-select:none;font-weight:var(--iui-font-weight-semibold);border-block-end:1px solid var(--iui-color-border);flex-shrink:0;min-inline-size:100%;display:flex}._iui3-table-header ._iui3-table-cell{background-color:var(--iui-color-background)}._iui3-table-header ._iui3-table-cell:not(._iui3-slot){column-gap:var(--iui-size-2xs);padding-block:calc(var(--iui-size-s)*.5)}._iui3-table-header ._iui3-table-cell:not(._iui3-slot):focus-visible{outline:1px solid var(--iui-color-border-accent);outline-offset:-1px}@supports not selector(*:focus-visible){._iui3-table-header ._iui3-table-cell:not(._iui3-slot):focus{outline:1px solid var(--iui-color-border-accent);outline-offset:-1px}}._iui3-table-header ._iui3-table-cell:not(._iui3-slot)._iui3-actionable{cursor:pointer}._iui3-table-header ._iui3-table-cell:not(._iui3-slot)._iui3-grabbing{cursor:grabbing}._iui3-table-header ._iui3-table-cell:not(._iui3-slot) ._iui3-table-filter-button:not([data-iui-active=true]){opacity:0}._iui3-table-header ._iui3-table-cell:not(._iui3-slot)>._iui3-table-resizer{inline-size:var(--iui-size-m);touch-action:none;cursor:ew-resize;z-index:1;opacity:0;block-size:100%;position:absolute;inset-block-start:0;inset-inline-end:0;transform:translate(50%)}._iui3-table-header ._iui3-table-cell:not(._iui3-slot)>._iui3-table-resizer>._iui3-table-resizer-bar{inline-size:var(--iui-size-3xs);transition:background-color var(--iui-duration-1)ease-out,width var(--iui-duration-1)ease-out;background-color:var(--iui-color-border);block-size:100%;margin-inline:auto}._iui3-table-header ._iui3-table-cell:not(._iui3-slot)>._iui3-table-resizer:hover>._iui3-table-resizer-bar{inline-size:var(--iui-size-2xs);background-color:var(--iui-color-border-accent)}._iui3-table-header ._iui3-table-cell:not(._iui3-slot):hover>._iui3-table-resizer{opacity:1}._iui3-table-header ._iui3-table-cell:not(._iui3-slot):is(:hover,:focus-visible,:has(:focus-visible)){background-color:var(--iui-color-background-hover)}._iui3-table-header ._iui3-table-cell:not(._iui3-slot):is(:hover,:focus-visible,:has(:focus-visible)) :is(._iui3-table-sort,._iui3-table-filter-button){opacity:1}@supports not selector(:has(+ *)){._iui3-table-header ._iui3-table-cell:not(._iui3-slot):focus-within{background-color:var(--iui-color-background-hover)}._iui3-table-header ._iui3-table-cell:not(._iui3-slot):focus-within :is(._iui3-table-sort,._iui3-table-filter-button){opacity:1}}._iui3-table-header ._iui3-table-reorder-bar{inline-size:var(--iui-size-3xs);block-size:100%;position:absolute}._iui3-table-header ._iui3-table-reorder-column-right>._iui3-table-reorder-bar{inset-inline-end:0}._iui3-table-header ._iui3-table-reorder-column-left>._iui3-table-reorder-bar{inset-inline-start:0}._iui3-table-header ._iui3-table-reorder-column-left>._iui3-table-reorder-bar,._iui3-table-header ._iui3-table-reorder-column-right>._iui3-table-reorder-bar{background-color:var(--iui-color-border-accent)}._iui3-table-header ._iui3-table-sort{opacity:0;--_iui-table-cell-icon-fill:var(--iui-color-icon-muted)}._iui3-table-header ._iui3-sorted{background-color:var(--iui-color-background-hover)}._iui3-table-header ._iui3-sorted ._iui3-table-sort{opacity:1;--_iui-table-cell-icon-fill:var(--iui-color-icon)}._iui3-table-row{--_iui-table-cell-icon-fill:var(--iui-color-icon-muted);min-inline-size:100%;display:flex}._iui3-table-row:last-of-type{border-radius:inherit}._iui3-table-row[data-iui-loading=true]{position:sticky;inset-inline-start:0}._iui3-table-row[data-iui-loading=true] ._iui3-table-cell{justify-content:center}._iui3-table-header ._iui3-table-row{flex-grow:1}._iui3-table-body ._iui3-table-row ._iui3-table-cell{border-block:1px solid #0000;border-block-end-color:var(--iui-color-border);background-color:var(--iui-color-background);transition:border var(--iui-duration-1)ease-out}._iui3-table-body ._iui3-table-row>._iui3-slot>._iui3-table-more-options{opacity:0}._iui3-table-body ._iui3-table-row:where(:hover,:focus-within)>._iui3-slot>._iui3-table-more-options{opacity:1}._iui3-table-body ._iui3-table-row:where(:hover:not(._iui3-loading):not([aria-disabled=true])) ._iui3-table-cell{background-color:var(--iui-color-background-hover)}
846
846
  }
847
847
 
848
848
  @layer itwinui.v3{@media (prefers-reduced-motion:no-preference){._iui3-table-body ._iui3-table-row ._iui3-table-row-expander>._iui3-button-icon{transition:transform var(--iui-duration-1)ease-out}}